extract spritesheets into .2bpp files

hg-commit-id: 294542bfff57
This commit is contained in:
Bryan Bishop 2012-01-29 21:44:52 -06:00
parent 18053c4dd0
commit 25df78ecf3
68 changed files with 775 additions and 17 deletions

View file

@ -1,11 +1,10 @@
from extract_maps import *
spacing = " "
load_rom()
load_map_pointers()
read_all_map_headers()
import extract_maps
spacing = "\t"
#provided by sawakita
constants = {
#these were originally used for making the initial_icon_constants
#but the label names in constants.asm have since been edited
initial_icon_constants = {
0x01: ["Hiro", ""],
0x02: ["Rival", ""],
0x03: ["Oak", ""],
@ -80,6 +79,85 @@ constants = {
0x48: ["lying old man", ""],
}
#somewhat more recent sprite labels
sprite_constants = {
0x01: "SPRITE_RED",
0x02: "SPRITE_BLUE",
0x03: "SPRITE_OAK",
0x04: "SPRITE_BUG_CATCHER",
0x05: "SPRITE_SLOWBRO",
0x06: "SPRITE_LASS",
0x07: "SPRITE_BLACK_HAIR_BOY_1",
0x08: "SPRITE_LITTLE_GIRL",
0x09: "SPRITE_BIRD",
0x0a: "SPRITE_FAT_BALD_GUY",
0x0b: "SPRITE_GAMBLER",
0x0c: "SPRITE_BLACK_HAIR_BOY_2",
0x0d: "SPRITE_GIRL",
0x0e: "SPRITE_HIKER",
0x0f: "SPRITE_FOULARD_WOMAN",
0x10: "SPRITE_GENTLEMAN",
0x11: "SPRITE_DAISY",
0x12: "SPRITE_BIKER",
0x13: "SPRITE_SAILOR",
0x14: "SPRITE_COOK",
0x15: "SPRITE_BIKE_SHOP_GUY",
0x16: "SPRITE_MR_FUJI",
0x17: "SPRITE_GIOVANNI",
0x18: "SPRITE_ROCKET",
0x19: "SPRITE_MEDIUM",
0x1a: "SPRITE_WAITER",
0x1b: "SPRITE_ERIKA",
0x1c: "SPRITE_MOM_GEISHA",
0x1d: "SPRITE_BRUNETTE_GIRL",
0x1e: "SPRITE_LANCE",
0x1f: "SPRITE_OAK_SCIENTIST_AIDE",
0x20: "SPRITE_OAK_AIDE",
0x21: "SPRITE_ROCKER",
0x22: "SPRITE_SWIMMER",
0x23: "SPRITE_WHITE_PLAYER",
0x24: "SPRITE_GYM_HELPER",
0x25: "SPRITE_OLD_PERSON",
0x26: "SPRITE_MART_GUY",
0x27: "SPRITE_FISHER",
0x28: "SPRITE_OLD_MEDIUM_WOMAN",
0x29: "SPRITE_NURSE",
0x2a: "SPRITE_CABLE_CLUB_WOMAN",
0x2b: "SPRITE_MR_MASTERBALL",
0x2c: "SPRITE_LAPRAS_GIVER",
0x2d: "SPRITE_WARDEN",
0x2e: "SPRITE_SS_CAPTAIN",
0x2f: "SPRITE_FISHER2",
0x30: "SPRITE_BLACKBELT",
0x31: "SPRITE_GUARD",
0x32: "SPRITE_____NOT____USED____",
0x33: "SPRITE_MOM",
0x34: "SPRITE_BALDING_GUY",
0x35: "SPRITE_YOUNG_BOY",
0x36: "SPRITE_GAMEBOY_KID",
0x37: "SPRITE_GAMEBOY_KID_COPY",
0x38: "SPRITE_CLEFAIRY",
0x39: "SPRITE_AGATHA",
0x3a: "SPRITE_BRUNO",
0x3b: "SPRITE_LORELEI",
0x3c: "SPRITE_SEEL",
0x3d: "SPRITE_BALL",
0x3e: "SPRITE_OMANYTE",
0x3f: "SPRITE_BOULDER",
0x40: "SPRITE_PAPER_SHEET",
0x41: "SPRITE_BOOK_MAP_DEX",
0x42: "SPRITE_CLIPBOARD",
0x43: "SPRITE_SNORLAX",
0x44: "SPRITE_OLD_AMBER_COPY",
0x45: "SPRITE_OLD_AMBER",
0x46: "SPRITE_LYING_OLD_MAN_UNUSED_1",
0x47: "SPRITE_LYING_OLD_MAN_UNUSED_2",
0x48: "SPRITE_LYING_OLD_MAN",
}
dont_use = [0x32, 0x44, 0x46, 0x47, 0x37]
#sprites after 0x23 have only one image
#SPRITE_BIKE_SHOP_GUY only has 1
icons = {}
unique_icons = set()
todo_sprites = {}
@ -111,8 +189,8 @@ def print_appearances():
icon = icons[icon_id]
possible_name = ""
if icon_id in constants.keys():
possible_name = " (sawakita suggests: " + constants[icon_id][0] + ")"
if icon_id in initial_icon_constants.keys():
possible_name = " (sawakita suggests: " + initial_icon_constants[icon_id][0] + ")"
output += "sprite " + hex(icon_id) + possible_name + ":\n"
for appearance in icon:
@ -127,9 +205,9 @@ def insert_todo_sprites():
load_icons()
counter = 1
for icon in unique_icons:
if icon not in constants:
if icon not in initial_icon_constants:
todo_sprites[icon] = counter
constants[icon] = None
initial_icon_constants[icon] = None
counter += 1
def sprite_name_cleaner(badname):
@ -148,8 +226,8 @@ def sprite_namer():
"makes up better constant names for each sprite"
insert_todo_sprites()
for sprite_id in constants:
suggestions = constants[sprite_id]
for sprite_id in initial_icon_constants:
suggestions = initial_icon_constants[sprite_id]
if suggestions == None:
sprites[sprite_id] = "SPRITE_TODO_" + str(todo_sprites[sprite_id])
continue #next please
@ -161,6 +239,8 @@ def sprite_namer():
sprites[sprite_id] = result
def sprite_printer():
"""prints out a list of sprite constants to put into constants.asm
it's deprecated- use the names from the current file instead."""
for key in sprites:
line_length = len(sprites[key]) + len(" EQU $") + 2
@ -173,9 +253,150 @@ def sprite_printer():
print sprites[key] + extra + " EQU $" + value
sprite_namer()
def parse_sprite_sheet_pointer_table():
"""parses the bytes making up the pointer table
first two bytes are the pointer
third byte is the number of bytes (1 * 4 tiles * 16 bytes each, or 3 * 4 tiles * 16 bytes per tile)
1 = 1 pose
3 = 3 poses, possibly 6 immediately after
$C0 or $40
fourth byte is the rom bank
so a quick estimation is that, if it has 3, and there's no other pointer that points to the one after the 3rd & next 3, then assume those next 3 are the 4th, 5th and 6th
"""
rom = extract_maps.rom
ptable_address = 0x17b27 #5:7b27
ptable_pointers = []
ptable_sheet_data = {}
#load up pointers please
for sprite_id in sprite_constants.keys():
pointer_offset = 0x17b27 + ((sprite_id -1) * 4)
pointer_byte1 = ord(rom[pointer_offset])
pointer_byte2 = ord(rom[pointer_offset+1])
partial_pointer = (pointer_byte1 + (pointer_byte2 << 8))
bank = ord(rom[pointer_offset+3])
pointer = extract_maps.calculate_pointer(partial_pointer, bank)
ptable_pointers.append(pointer)
#72 sprite pointers, we're not using id=$32
for sprite_id in sprite_constants.keys():
sprite_name = sprite_constants[sprite_id]
#some basic information about this sprite first
data_entry = {"sprite_id": sprite_id, "sprite_name": sprite_name}
#calculate where it is in the 0x17b27 pointer table
pointer_offset = 0x17b27 + ((sprite_id -1) * 4)
data_entry["sprite_ptr_table_entry_address"] = pointer_offset
#actual sprite pointer
pointer_byte1 = ord(rom[pointer_offset])
pointer_byte2 = ord(rom[pointer_offset+1])
partial_pointer = (pointer_byte1 + (pointer_byte2 << 8))
bank = ord(rom[pointer_offset+3])
pointer = extract_maps.calculate_pointer(partial_pointer, bank)
data_entry["pointer"] = pointer
data_entry["bank"] = bank
byte_count = ord(rom[pointer_offset+2])
data_entry["byte_count"] = byte_count
has_more_text = ""
data_entry["poses"] = 1
if byte_count == 0xc0: #has at least 3 poses
setter1, setter2, setter3 = False, False, False
data_entry["poses"] = 3
#let's check if there's possibly more
if not ((byte_count + pointer) in ptable_pointers): #yep, probably (#4)
data_entry["poses"] += 1
data_entry["byte_count"] += 64
setter1 = True
if setter1 and not ((byte_count + pointer + 64) in ptable_pointers): #has another (#5)
data_entry["poses"] += 1
data_entry["byte_count"] += 64
setter2 = True
if setter2 and not ((byte_count + pointer + 64 + 64) in ptable_pointers): #has a #6
data_entry["poses"] += 1
data_entry["byte_count"] += 64
setter3 = True
print ("$%.2x " % (sprite_id)) + sprite_name + " has $%.2x bytes" % (byte_count) + " pointing to 0x%.x" % (pointer) + " bank is $%.2x" % (bank) + " with pose_count=" + str(data_entry["poses"])
ptable_sheet_data[sprite_id] = data_entry
return ptable_sheet_data
def pretty_print_sheet_incbins(ptable_sheet_data):
"""make things look less awful"""
output = ""
used_addresses = []
for sheet_id in ptable_sheet_data:
sheet_data = ptable_sheet_data[sheet_id]
name = sheet_data["sprite_name"].split("SPRITE_")[1].lower().title()
clean_name = name.replace("_", "")
address = sheet_data["pointer"]
byte_count = sheet_data["byte_count"]
#if not (0x10000 <= address <= 0x12e7f): continue #skip
#if not (0x14180 <= address <= 0x17840): continue #skip
if address in used_addresses: continue #skip
used_addresses.append(address)
output += clean_name + "Sprite: ; 0x%.x" % (address) + "\n"
#output += spacing + "INCBIN \"baserom.gbc\",$%.x,$%.x - $%.x" % (address, address + byte_count, address) + "\n"
output += spacing + "INCBIN \"gfx/sprites/" + name.lower() + ".2bpp\" ; was $%.x" % (address) + "\n"
filename = "../gfx/sprites/" + name.lower() + ".2bpp"
#fh = open(filename, "w")
#fh.write(extract_maps.rom[address : address + byte_count])
#fh.close()
return output
def pretty_print_sheet_data(ptable_sheet_data):
"""make the pointer table not suck so much"""
output = "SpriteSheetPointerTable: ; 0x17b27\n"
used_addresses = []
for sheet_id in ptable_sheet_data:
sheet_data = ptable_sheet_data[sheet_id]
address = sheet_data["pointer"]
checker = False
for x in used_addresses:
if not checker and x[0] == address:
checker = True
clean_name = x[1]
if not checker:
name = sheet_data["sprite_name"].split("SPRITE_")[1].lower().title()
clean_name = name.replace("_", "")
clean_name += "Sprite"
byte_count = sheet_data["byte_count"]
if byte_count > 0x40:
byte_count = 0xc0
output += "\n\t; " + sprite_constants[sheet_data["sprite_id"]] + "\n"
output += spacing + "dw " + clean_name + "\n"
output += spacing + "db $%.2x ; byte count\n" % (byte_count)
output += spacing + "db BANK(" + clean_name + ")\n"
used_addresses.append((address, clean_name))
output += "; 0x17c47"
return output
if __name__ == "__main__":
extract_maps.load_rom()
#extract_maps.load_map_pointers()
#extract_maps.read_all_map_headers()
#sprite_namer()
#load_icons()
#print_appearances()
sprite_printer()
#sprite_printer()
ptable_sheet_data = parse_sprite_sheet_pointer_table()
print pretty_print_sheet_incbins(ptable_sheet_data)
print pretty_print_sheet_data(ptable_sheet_data)

BIN
gfx/sprites/agatha.2bpp Normal file

Binary file not shown.

View file

@ -0,0 +1,3 @@
?0PFBààððØ8èü þ
þbþB?0>9OyN0?ü |œþòžr üøøøøpp????WSoPÀÀððøøüüüüþêþÊö
p?8w_p_8?ü üîúúüøøøøpp ÀÀððøø|üü|ü|üLøH ðà`Ððð0ð0ððààÀÀ

BIN
gfx/sprites/ball.2bpp Normal file

Binary file not shown.

View file

@ -0,0 +1 @@
????{q^~_ààøøüüüüþÞþŽþz~ò/>>1O}N;<ô||Œþò¾rÜ<øøøpp????__ààøøüüüüþþþþþúþú?3?<[X69üÌü<þÚþlœøxøøppààððøøüüüüüüüüüœ   øðpððø(ð0ððààÀÀ

2
gfx/sprites/biker.2bpp Normal file
View file

@ -0,0 +1,2 @@
???:?0ToR<6F><52>ِِ<D990><D990><EFBFBD><EFBFBD><EFBFBD>\<5C> <0C>*<2A>J?0?'<'<01> x<><78>ل<لظxب<78>ِِ<D990><D990>??????_o_<6F><5F>ِِ<D990><D990><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?0?/</<01> <0C><18><><<3C>ظ<EFBFBD><D8B8><EFBFBD>ِِ<D990><D990> 
ِِ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E><<3C>$?9gc??<1C>ِ0<D990><30><EFBFBD><EFBFBD>ك<EFBFBD>c<EFBFBD><63><EFBFBD>??t`<60><><EFBFBD>¤<EFBFBD><C2A4>ــِِ<D990><D990><EFBFBD><EFBFBD><EFBFBD><18><54>`<3OxO?<<03>ِ0<D990>بxب<78>ِ<EFBFBD>ِِِ``??<7F>؟<EFBFBD>؟<EFBFBD><D89F>ــِِ<D990><D990><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٌ<EFBFBD>`?0_x_7???<03>ِ0<D990>وxو<78>ِِِِِ``???7?4ــِِ<D990><D990><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>H+</3<73>ا<EFBFBD>~99ِـ`<60><><EFBFBD><EFBFBD>ئ<EFBFBD>ئ<EFBFBD>|<7C><><EFBFBD>

BIN
gfx/sprites/bird.2bpp Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
gfx/sprites/blackbelt.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/blue.2bpp Normal file

Binary file not shown.

Binary file not shown.

2
gfx/sprites/boulder.2bpp Normal file
View file

@ -0,0 +1,2 @@
? @@<40><EFBFBD>€ώ<E282AC>ΰΰψόώώο<11>ύΏΐί <CEAF>ΥUjB}%?ωυ α
ώTόΈψΰΰ

Binary file not shown.

BIN
gfx/sprites/bruno.2bpp Normal file

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1 @@
  ?"?'=OxŸâÀÀ0ðøüDüä¼òùG<C3B9>òny ñOvžøèøèøØðð<C3B0>ð``  ? ? ?@€ÿÀÀ0ðøüüüþÿ€ÿh ÿþ8èøèøøðð<C3B0>ð``(?>3ÀÀ àðøøüþÂ> Â~Äüøøà`ààààÀÀÀÀ

BIN
gfx/sprites/clefairy.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/clipboard.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/cook.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/daisy.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/erika.2bpp Normal file

Binary file not shown.

Binary file not shown.

1
gfx/sprites/fisher.2bpp Normal file
View file

@ -0,0 +1 @@
 <70>pOoRÀÀð0øþñþþòöJ?0>9wO~I6?ü |œîò~øøøpp <70>pOoWÀÀð0øþñþþòöê?3?8WwX0?üÌüþêî üøøøpp?0pO?0ààðøü òü üüÜ, øðpÐðÐðð0à ààÀÀ

BIN
gfx/sprites/fisher2.2bpp Normal file

Binary file not shown.

Binary file not shown.

BIN
gfx/sprites/gambler.2bpp Normal file

Binary file not shown.

View file

@ -0,0 +1 @@
?7S@oRְְננרררר<D7A8>לֺצJ?3  <0E>ּp°ר¨ר(נ0ָרˆרpp????_Oo_אאננרר<D7A8><D7A8><EFBFBD><EFBFBD>תעצת;7</?+<0E>ל<פ<>װרננטרˆרpp???9ְְננרררר<D7A8><D7A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>  רָp°ר¨ר(נ0ָרˆרpp

BIN
gfx/sprites/gentleman.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/giovanni.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/girl.2bpp Normal file

Binary file not shown.

2
gfx/sprites/guard.2bpp Normal file
View file

@ -0,0 +1,2 @@
8??7RBððøxøxøüüìþJþB?0??gyN?ü x˜üüæþžrüðøøxx????xW@ððøøøøøøüüüüêþ?0??x?ü øøüüþþþüøøøxx#?G>1ððøøøøøøøøøÈøè8 
ð0À@ààà` `à`ÀÀ€€

View file

@ -0,0 +1 @@
?&?9V@ààððø¸øüdüœþjþ.1=&?'tŒø¼düäXøøøððpp????o_uOààððøøøøüüüüöú^ò?0????ü Ø8üüüü(øøøøøppààððøøøøüü¼|üüøX ðà`ààà à ààààÀÀ

BIN
gfx/sprites/hiker.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/lance.2bpp Normal file

Binary file not shown.

View file

@ -0,0 +1,2 @@
???7P@oVְְננרררר<D7A8>
צj?0>9OyO<?<0E> |<7C>ע<E2808F>ע<<3C>ררררpp????_Oo_ְְננרררר<D7A8><D7A8>תעצת?7?8_p_8?<0E>ל<EFBFBD>‏תת<1C>ררררpp??€€אאננרררר¸נ נP `אאנננ0נ0ננאא

BIN
gfx/sprites/lass.2bpp Normal file

Binary file not shown.

Binary file not shown.

BIN
gfx/sprites/lorelei.2bpp Normal file

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1 @@
?0VIoYÀÀððøØø˜ü þjþöš?6>9OyO<?ül|œþòžò<üèøˆøpp??_OoSÀÀððøøøøüüþúþòöÊ?0?8_p_0?ü üþúú üÈøˆøpp?3?<ààððøøøøüüüüü<ü< ø8ðpÐðPðð0à ààÀÀ

BIN
gfx/sprites/medium.2bpp Normal file

Binary file not shown.

1
gfx/sprites/mom.2bpp Normal file
View file

@ -0,0 +1 @@
??;<78bְְננרר¸ר|¼<>Fr~yw<'?( N~<7E>מ<ה<>ָ8׀0אא??????ְְננרx<D7A8><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??:-<E2808F><E2808F>\´ˆxH¸נאא7;=3?4ְְננרָ<D7A8><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <E2808F><E2808F><EFBFBD><EFBFBD>רָװ¬<04>ראא

View file

@ -0,0 +1 @@
;>?8рр№№јјшјм|ќјHјH ?/?(?<p<>№№јшќєќќ<ј8јј;?=?ррp№ИјијмќМќxјјш?/_X~јјќєўњўў~јИјј>?=3РРрјшќьўьўьў№ќќќ јx№pрр№№№<E28496>јјјј№№;>?8рр№№јјшјм|ќјHјH ?/?(?<p<>№№јшќєќќ<ј8рр;?=?ррp№ИјијмќМќxјјш?/_X~јшќєќќјјx№Арр7?=7?1ќЬіўћџћџћџћџїџџ<D19F>ў№0рр`раp<D0B0>рррр

7
gfx/sprites/mr_fuji.2bpp Normal file
View file

@ -0,0 +1,7 @@
 (7P@oR€€à`0Ðøìþ
þöJ?0/9M~^??9???ü ôœ²~zþüüøœüüü /0PP@€€à`0Ðøô þ
þ
þ?0_xW~Os?39?>>ü úê~òÎüÌ8øœü||>!? ? ?(ÀÀà p<>øüüüdü? ü¸øäœäüüøðð (7P@oR€€à`0Ðøìþ
þöJ?0Oy_~??ü òžú~üüøø8ø0ðÀÀ /0P@oP€€à`0Ðøô þ
þö
?0_x_~Os?3ü úú~òÎüÌ8ø0ðÀÀ #<}B@@P€€À@à ðøøøÈø(@>1=#ø(ðÐpð àp<C3A0>ð<EFBFBD>pðàà

View file

@ -0,0 +1 @@
?6yoYF>1аариьlюћцљюb|Њxяџюџ?????/юящщююьььььфxx??_O?0ааршььюююъють wxяїяї?????/ояэяэююьььььфxxааршь<ь|ьььь   шрршшш8ш8рраааа

BIN
gfx/sprites/nurse.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/oak.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/oak_aide.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/old_amber.2bpp Normal file

Binary file not shown.

View file

@ -0,0 +1,2 @@
 ? ?!?&_x?&<26><><EFBFBD>08<30><38><04><><EFBFBD>d<EFBFBD><1E>d  </?'<1F>p<><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<<3C><><EFBFBD><EFBFBD><EFBFBD> ? ? ? _`? <20><><EFBFBD>08<30><38><04><04><04><06> 
</?'<1F><08>0<EFBFBD><30>P<EFBFBD>X<EFBFBD><<3C><><EFBFBD><EFBFBD><EFBFBD> ? ?,?3?0<1C><><EFBFBD>08<30><38><04><04><04><><EFBFBD><EFBFBD> ?#<1F><18>0<EFBFBD><30> <20><><EFBFBD>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD>

View file

@ -0,0 +1,3 @@
 (7oVIoYְְנ08ָרלצjצ<E28099>?6?9_~_??9?>><3E>l<EFBFBD><6C>ת~ת<D7AA><E2808F>ר<><D7A8>|| /0PP@ְְנ08ָרפ
?0_xW~Os?39?>><3E> תך~ע־<D7A2>ּ8ר<38><D7A8>|| >!?8<'?$ְְנ0xˆר<08><04><04>d|”?8<07>xט¸רה<>ה<EFBFBD><D794>רננ

BIN
gfx/sprites/omanyte.2bpp Normal file

Binary file not shown.

Binary file not shown.

BIN
gfx/sprites/red.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/rocker.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/rocket.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/sailor.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/seel.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/slowbro.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/snorlax.2bpp Normal file

Binary file not shown.

View file

@ -0,0 +1 @@
7???wXFððxøxøøìüüüîþb>1=:LL?:|Œ¼\þ2þ2ü\øÈøøpp0???p_pOððøøøøøø üüüúò87?8__??ìüþúþúüüøˆøøpp????ððøøøøøøøøøøø   h˜ðà`ððð0ð0ððàà

BIN
gfx/sprites/swimmer.2bpp Normal file

Binary file not shown.

BIN
gfx/sprites/waiter.2bpp Normal file

Binary file not shown.

1
gfx/sprites/warden.2bpp Normal file
View file

@ -0,0 +1 @@
?6poR@>1ààðèülþöJþxÿ—ÿ|3?,?3/þÿéÿ‰þ>Ìü4üÌôxx??_O?0ààðøüüþþþúþòü wxÿ¯ÿ |3?>?3/îÿõÿþ>Ìü|üœôxxààðøü<ü|ü|üü  øððøÈø(ø(Ððàà à

View file

@ -0,0 +1,3 @@
;<?7PBאאנר<38><<3C>ל
B?0>9OI?8<0E> |<7C>ע<E2808F>טxˆרpp?0?8_Oאאנרר<08> <0C>‏ת‏ע?7?8_P?8<0E>ל<EFBFBD>‏ת‏
<EFBFBD>טxˆרpp;4}B??אאנרר<08><1C><><EFBFBD><EFBFBD>ר˜ נא`נ׀נ0נ0ננ אְְ

BIN
gfx/sprites/young_boy.2bpp Normal file

Binary file not shown.

504
main.asm
View file

@ -13640,7 +13640,62 @@ UnnamedText_fc45: ; 0xfc45
SECTION "bank4",DATA,BANK[$4]
INCBIN "baserom.gbc",$10000,$12e7f - $10000
OakAideSprite: ; 0x10000
INCBIN "gfx/sprites/oak_aide.2bpp" ; was $10000
RockerSprite: ; 0x10180
INCBIN "gfx/sprites/rocker.2bpp" ; was $10180
SwimmerSprite: ; 0x10300
INCBIN "gfx/sprites/swimmer.2bpp" ; was $10300
WhitePlayerSprite: ; 0x10480
INCBIN "gfx/sprites/white_player.2bpp" ; was $10480
GymHelperSprite: ; 0x10540
INCBIN "gfx/sprites/gym_helper.2bpp" ; was $10540
OldPersonSprite: ; 0x10600
INCBIN "gfx/sprites/old_person.2bpp" ; was $10600
MartGuySprite: ; 0x106c0
INCBIN "gfx/sprites/mart_guy.2bpp" ; was $106c0
FisherSprite: ; 0x10780
INCBIN "gfx/sprites/fisher.2bpp" ; was $10780
OldMediumWomanSprite: ; 0x10840
INCBIN "gfx/sprites/old_medium_woman.2bpp" ; was $10840
NurseSprite: ; 0x10900
INCBIN "gfx/sprites/nurse.2bpp" ; was $10900
CableClubWomanSprite: ; 0x109c0
INCBIN "gfx/sprites/cable_club_woman.2bpp" ; was $109c0
MrMasterballSprite: ; 0x10a80
INCBIN "gfx/sprites/mr_masterball.2bpp" ; was $10a80
LaprasGiverSprite: ; 0x10b40
INCBIN "gfx/sprites/lapras_giver.2bpp" ; was $10b40
WardenSprite: ; 0x10c00
INCBIN "gfx/sprites/warden.2bpp" ; was $10c00
SsCaptainSprite: ; 0x10cc0
INCBIN "gfx/sprites/ss_captain.2bpp" ; was $10cc0
Fisher2Sprite: ; 0x10d80
INCBIN "gfx/sprites/fisher2.2bpp" ; was $10d80
BlackbeltSprite: ; 0x10f00
INCBIN "gfx/sprites/blackbelt.2bpp" ; was $10f00
GuardSprite: ; 0x11080
INCBIN "gfx/sprites/guard.2bpp" ; was $11080
BallSprite: ; 0x11140
INCBIN "gfx/sprites/ball.2bpp" ; was $11140
OmanyteSprite: ; 0x11180
INCBIN "gfx/sprites/omanyte.2bpp" ; was $11180
BoulderSprite: ; 0x111c0
INCBIN "gfx/sprites/boulder.2bpp" ; was $111c0
PaperSheetSprite: ; 0x11200
INCBIN "gfx/sprites/paper_sheet.2bpp" ; was $11200
BookMapDexSprite: ; 0x11240
INCBIN "gfx/sprites/book_map_dex.2bpp" ; was $11240
ClipboardSprite: ; 0x11280
INCBIN "gfx/sprites/clipboard.2bpp" ; was $11280
SnorlaxSprite: ; 0x112c0
INCBIN "gfx/sprites/snorlax.2bpp" ; was $112c0
OldAmberSprite: ; 0x11300
INCBIN "gfx/sprites/old_amber.2bpp" ; was $11300
LyingOldManSprite: ; 0x11340
INCBIN "gfx/sprites/lying_old_man.2bpp" ; was $11340
INCBIN "baserom.gbc",$11380,$12e7f - $11380
UnnamedText_12e7f: ; 0x12e7f
TX_FAR _UnnamedText_12e7f
@ -13871,7 +13926,452 @@ GenRandom_: ; 7A8F
SECTION "bank5",DATA,BANK[$5]
INCBIN "baserom.gbc",$14000,$17e1d - $14000
INCBIN "baserom.gbc",$14000,$14180 - $14000
RedSprite: ; 0x14180
INCBIN "gfx/sprites/red.2bpp" ; was $14180
BlueSprite: ; 0x14300
INCBIN "gfx/sprites/blue.2bpp" ; was $14300
OakSprite: ; 0x14480
INCBIN "gfx/sprites/oak.2bpp" ; was $14480
BugCatcherSprite: ; 0x14600
INCBIN "gfx/sprites/bug_catcher.2bpp" ; was $14600
SlowbroSprite: ; 0x14780
INCBIN "gfx/sprites/slowbro.2bpp" ; was $14780
LassSprite: ; 0x14900
INCBIN "gfx/sprites/lass.2bpp" ; was $14900
BlackHairBoy1Sprite: ; 0x14a80
INCBIN "gfx/sprites/black_hair_boy_1.2bpp" ; was $14a80
LittleGirlSprite: ; 0x14c00
INCBIN "gfx/sprites/little_girl.2bpp" ; was $14c00
BirdSprite: ; 0x14d80
INCBIN "gfx/sprites/bird.2bpp" ; was $14d80
FatBaldGuySprite: ; 0x14f00
INCBIN "gfx/sprites/fat_bald_guy.2bpp" ; was $14f00
GamblerSprite: ; 0x15080
INCBIN "gfx/sprites/gambler.2bpp" ; was $15080
BlackHairBoy2Sprite: ; 0x15200
INCBIN "gfx/sprites/black_hair_boy_2.2bpp" ; was $15200
GirlSprite: ; 0x15380
INCBIN "gfx/sprites/girl.2bpp" ; was $15380
HikerSprite: ; 0x15500
INCBIN "gfx/sprites/hiker.2bpp" ; was $15500
FoulardWomanSprite: ; 0x15680
INCBIN "gfx/sprites/foulard_woman.2bpp" ; was $15680
GentlemanSprite: ; 0x15800
INCBIN "gfx/sprites/gentleman.2bpp" ; was $15800
DaisySprite: ; 0x15980
INCBIN "gfx/sprites/daisy.2bpp" ; was $15980
BikerSprite: ; 0x15b00
INCBIN "gfx/sprites/biker.2bpp" ; was $15b00
SailorSprite: ; 0x15c80
INCBIN "gfx/sprites/sailor.2bpp" ; was $15c80
CookSprite: ; 0x15e00
INCBIN "gfx/sprites/cook.2bpp" ; was $15e00
BikeShopGuySprite: ; 0x15f80
INCBIN "gfx/sprites/bike_shop_guy.2bpp" ; was $15f80
MrFujiSprite: ; 0x16040
INCBIN "gfx/sprites/mr_fuji.2bpp" ; was $16040
GiovanniSprite: ; 0x161c0
INCBIN "gfx/sprites/giovanni.2bpp" ; was $161c0
RocketSprite: ; 0x16340
INCBIN "gfx/sprites/rocket.2bpp" ; was $16340
MediumSprite: ; 0x164c0
INCBIN "gfx/sprites/medium.2bpp" ; was $164c0
WaiterSprite: ; 0x16640
INCBIN "gfx/sprites/waiter.2bpp" ; was $16640
ErikaSprite: ; 0x167c0
INCBIN "gfx/sprites/erika.2bpp" ; was $167c0
MomGeishaSprite: ; 0x16940
INCBIN "gfx/sprites/mom_geisha.2bpp" ; was $16940
BrunetteGirlSprite: ; 0x16ac0
INCBIN "gfx/sprites/brunette_girl.2bpp" ; was $16ac0
LanceSprite: ; 0x16c40
INCBIN "gfx/sprites/lance.2bpp" ; was $16c40
MomSprite: ; 0x16dc0
INCBIN "gfx/sprites/mom.2bpp" ; was $16dc0
BaldingGuySprite: ; 0x16e80
INCBIN "gfx/sprites/balding_guy.2bpp" ; was $16e80
YoungBoySprite: ; 0x16f40
INCBIN "gfx/sprites/young_boy.2bpp" ; was $16f40
GameboyKidSprite: ; 0x17000
INCBIN "gfx/sprites/gameboy_kid.2bpp" ; was $17000
ClefairySprite: ; 0x170c0
INCBIN "gfx/sprites/clefairy.2bpp" ; was $170c0
AgathaSprite: ; 0x17240
INCBIN "gfx/sprites/agatha.2bpp" ; was $17240
BrunoSprite: ; 0x173c0
INCBIN "gfx/sprites/bruno.2bpp" ; was $173c0
LoreleiSprite: ; 0x17540
INCBIN "gfx/sprites/lorelei.2bpp" ; was $17540
SeelSprite: ; 0x176c0
INCBIN "gfx/sprites/seel.2bpp" ; was $176c0
INCBIN "baserom.gbc",$17840,$17b27 - $17840
SpriteSheetPointerTable: ; 0x17b27
; SPRITE_RED
dw RedSprite
db $c0 ; byte count
db BANK(RedSprite)
; SPRITE_BLUE
dw BlueSprite
db $c0 ; byte count
db BANK(BlueSprite)
; SPRITE_OAK
dw OakSprite
db $c0 ; byte count
db BANK(OakSprite)
; SPRITE_BUG_CATCHER
dw BugCatcherSprite
db $c0 ; byte count
db BANK(BugCatcherSprite)
; SPRITE_SLOWBRO
dw SlowbroSprite
db $c0 ; byte count
db BANK(SlowbroSprite)
; SPRITE_LASS
dw LassSprite
db $c0 ; byte count
db BANK(LassSprite)
; SPRITE_BLACK_HAIR_BOY_1
dw BlackHairBoy1Sprite
db $c0 ; byte count
db BANK(BlackHairBoy1Sprite)
; SPRITE_LITTLE_GIRL
dw LittleGirlSprite
db $c0 ; byte count
db BANK(LittleGirlSprite)
; SPRITE_BIRD
dw BirdSprite
db $c0 ; byte count
db BANK(BirdSprite)
; SPRITE_FAT_BALD_GUY
dw FatBaldGuySprite
db $c0 ; byte count
db BANK(FatBaldGuySprite)
; SPRITE_GAMBLER
dw GamblerSprite
db $c0 ; byte count
db BANK(GamblerSprite)
; SPRITE_BLACK_HAIR_BOY_2
dw BlackHairBoy2Sprite
db $c0 ; byte count
db BANK(BlackHairBoy2Sprite)
; SPRITE_GIRL
dw GirlSprite
db $c0 ; byte count
db BANK(GirlSprite)
; SPRITE_HIKER
dw HikerSprite
db $c0 ; byte count
db BANK(HikerSprite)
; SPRITE_FOULARD_WOMAN
dw FoulardWomanSprite
db $c0 ; byte count
db BANK(FoulardWomanSprite)
; SPRITE_GENTLEMAN
dw GentlemanSprite
db $c0 ; byte count
db BANK(GentlemanSprite)
; SPRITE_DAISY
dw DaisySprite
db $c0 ; byte count
db BANK(DaisySprite)
; SPRITE_BIKER
dw BikerSprite
db $c0 ; byte count
db BANK(BikerSprite)
; SPRITE_SAILOR
dw SailorSprite
db $c0 ; byte count
db BANK(SailorSprite)
; SPRITE_COOK
dw CookSprite
db $c0 ; byte count
db BANK(CookSprite)
; SPRITE_BIKE_SHOP_GUY
dw BikeShopGuySprite
db $c0 ; byte count
db BANK(BikeShopGuySprite)
; SPRITE_MR_FUJI
dw MrFujiSprite
db $c0 ; byte count
db BANK(MrFujiSprite)
; SPRITE_GIOVANNI
dw GiovanniSprite
db $c0 ; byte count
db BANK(GiovanniSprite)
; SPRITE_ROCKET
dw RocketSprite
db $c0 ; byte count
db BANK(RocketSprite)
; SPRITE_MEDIUM
dw MediumSprite
db $c0 ; byte count
db BANK(MediumSprite)
; SPRITE_WAITER
dw WaiterSprite
db $c0 ; byte count
db BANK(WaiterSprite)
; SPRITE_ERIKA
dw ErikaSprite
db $c0 ; byte count
db BANK(ErikaSprite)
; SPRITE_MOM_GEISHA
dw MomGeishaSprite
db $c0 ; byte count
db BANK(MomGeishaSprite)
; SPRITE_BRUNETTE_GIRL
dw BrunetteGirlSprite
db $c0 ; byte count
db BANK(BrunetteGirlSprite)
; SPRITE_LANCE
dw LanceSprite
db $c0 ; byte count
db BANK(LanceSprite)
; SPRITE_OAK_SCIENTIST_AIDE
dw OakAideSprite
db $c0 ; byte count
db BANK(OakAideSprite)
; SPRITE_OAK_AIDE
dw OakAideSprite
db $c0 ; byte count
db BANK(OakAideSprite)
; SPRITE_ROCKER
dw RockerSprite
db $c0 ; byte count
db BANK(RockerSprite)
; SPRITE_SWIMMER
dw SwimmerSprite
db $c0 ; byte count
db BANK(SwimmerSprite)
; SPRITE_WHITE_PLAYER
dw WhitePlayerSprite
db $c0 ; byte count
db BANK(WhitePlayerSprite)
; SPRITE_GYM_HELPER
dw GymHelperSprite
db $c0 ; byte count
db BANK(GymHelperSprite)
; SPRITE_OLD_PERSON
dw OldPersonSprite
db $c0 ; byte count
db BANK(OldPersonSprite)
; SPRITE_MART_GUY
dw MartGuySprite
db $c0 ; byte count
db BANK(MartGuySprite)
; SPRITE_FISHER
dw FisherSprite
db $c0 ; byte count
db BANK(FisherSprite)
; SPRITE_OLD_MEDIUM_WOMAN
dw OldMediumWomanSprite
db $c0 ; byte count
db BANK(OldMediumWomanSprite)
; SPRITE_NURSE
dw NurseSprite
db $c0 ; byte count
db BANK(NurseSprite)
; SPRITE_CABLE_CLUB_WOMAN
dw CableClubWomanSprite
db $c0 ; byte count
db BANK(CableClubWomanSprite)
; SPRITE_MR_MASTERBALL
dw MrMasterballSprite
db $c0 ; byte count
db BANK(MrMasterballSprite)
; SPRITE_LAPRAS_GIVER
dw LaprasGiverSprite
db $c0 ; byte count
db BANK(LaprasGiverSprite)
; SPRITE_WARDEN
dw WardenSprite
db $c0 ; byte count
db BANK(WardenSprite)
; SPRITE_SS_CAPTAIN
dw SsCaptainSprite
db $c0 ; byte count
db BANK(SsCaptainSprite)
; SPRITE_FISHER2
dw Fisher2Sprite
db $c0 ; byte count
db BANK(Fisher2Sprite)
; SPRITE_BLACKBELT
dw BlackbeltSprite
db $c0 ; byte count
db BANK(BlackbeltSprite)
; SPRITE_GUARD
dw GuardSprite
db $c0 ; byte count
db BANK(GuardSprite)
; $32
dw GuardSprite
db $c0 ; byte count
db BANK(GuardSprite)
; SPRITE_MOM
dw MomSprite
db $c0 ; byte count
db BANK(MomSprite)
; SPRITE_BALDING_GUY
dw BaldingGuySprite
db $c0 ; byte count
db BANK(BaldingGuySprite)
; SPRITE_YOUNG_BOY
dw YoungBoySprite
db $c0 ; byte count
db BANK(YoungBoySprite)
; SPRITE_GAMEBOY_KID
dw GameboyKidSprite
db $c0 ; byte count
db BANK(GameboyKidSprite)
; SPRITE_GAMEBOY_KID_COPY
dw GameboyKidSprite
db $c0 ; byte count
db BANK(GameboyKidSprite)
; SPRITE_CLEFAIRY
dw ClefairySprite
db $c0 ; byte count
db BANK(ClefairySprite)
; SPRITE_AGATHA
dw AgathaSprite
db $c0 ; byte count
db BANK(AgathaSprite)
; SPRITE_BRUNO
dw BrunoSprite
db $c0 ; byte count
db BANK(BrunoSprite)
; SPRITE_LORELEI
dw LoreleiSprite
db $c0 ; byte count
db BANK(LoreleiSprite)
; SPRITE_SEEL
dw SeelSprite
db $c0 ; byte count
db BANK(SeelSprite)
; SPRITE_BALL
dw BallSprite
db $40 ; byte count
db BANK(BallSprite)
; SPRITE_OMANYTE
dw OmanyteSprite
db $40 ; byte count
db BANK(OmanyteSprite)
; SPRITE_BOULDER
dw BoulderSprite
db $40 ; byte count
db BANK(BoulderSprite)
; SPRITE_PAPER_SHEET
dw PaperSheetSprite
db $40 ; byte count
db BANK(PaperSheetSprite)
; SPRITE_BOOK_MAP_DEX
dw BookMapDexSprite
db $40 ; byte count
db BANK(BookMapDexSprite)
; SPRITE_CLIPBOARD
dw ClipboardSprite
db $40 ; byte count
db BANK(ClipboardSprite)
; SPRITE_SNORLAX
dw SnorlaxSprite
db $40 ; byte count
db BANK(SnorlaxSprite)
; SPRITE_OLD_AMBER_COPY
dw OldAmberSprite
db $40 ; byte count
db BANK(OldAmberSprite)
; SPRITE_OLD_AMBER
dw OldAmberSprite
db $40 ; byte count
db BANK(OldAmberSprite)
; SPRITE_LYING_OLD_MAN_UNUSED_1
dw LyingOldManSprite
db $40 ; byte count
db BANK(LyingOldManSprite)
; SPRITE_LYING_OLD_MAN_UNUSED_2
dw LyingOldManSprite
db $40 ; byte count
db BANK(LyingOldManSprite)
; SPRITE_LYING_OLD_MAN
dw LyingOldManSprite
db $40 ; byte count
db BANK(LyingOldManSprite)
; 0x17c47
INCBIN "baserom.gbc",$17c47,$17e1d - $17c47
UnnamedText_17e1d: ; 0x17e1d
TX_FAR _UnnamedText_17e1d