From fe886f40d29a831bb7d7a33ab401eb6d4e35cf3f Mon Sep 17 00:00:00 2001 From: ElectroDeoxys Date: Fri, 5 May 2023 11:21:37 +0100 Subject: [PATCH] Disassemble more banks, more constants --- output.asm | 0 src/audio/music1.asm | 272 +- src/audio/music2.asm | 2 +- src/audio/music3.asm | 2 +- src/audio/music4.asm | 2 +- src/audio/music5.asm | 2 +- src/audio/music6.asm | 2 +- src/audio/music7.asm | 2 +- src/audio/sfx1.asm | 12 +- src/audio/sfx2.asm | 12 +- src/constants.asm | 8 + src/constants/card_data_constants.asm | 20 +- src/constants/credits_constants.asm | 47 + src/constants/deck_constants.asm | 136 + src/constants/map_constants.asm | 137 + src/constants/menu_constants.asm | 28 + src/constants/misc_constants.asm | 5 + src/constants/name_constants.asm | 17 +- src/constants/ow_anim_constants.asm | 500 ++++ src/constants/ow_object_constants.asm | 430 +++ src/constants/portrait_constants.asm | 103 + src/constants/script_constants.asm | 256 ++ src/constants/sfx_constants.asm | 251 ++ src/constants/sprite_anim_constants.asm | 36 +- src/data/credits.asm | 604 ++++ src/data/gfx_pointers/gfx_unknown1.asm | 91 - src/data/gfx_pointers/gfx_unknown2.asm | 903 ------ src/data/gfx_pointers/ow_animations.asm | 45 + src/data/gfx_pointers/ow_tile_frames.asm | 452 +++ src/data/map_gfx.asm | 245 ++ src/data/ow_animations.asm | 1200 ++++++++ src/data/ow_tile_frames1.asm | 2636 +++++++++++++++++ src/data/ow_tile_frames2.asm | 107 + src/engine/bank01.asm | 44 +- src/engine/bank02.asm | 47 + src/engine/bank03.asm | 1183 +++++--- src/engine/bank04.asm | 2154 +++++++++++++- src/engine/bank06.asm | 1275 ++++++++ src/engine/bank07.asm | 1309 +++++++- src/engine/bank09.asm | 1422 +++++++++ src/engine/bank0f.asm | 204 ++ src/engine/bank10.asm | 243 ++ src/engine/bank11.asm | 74 +- src/engine/bank4b.asm | 562 +++- src/engine/bank4c.asm | 403 +++ src/engine/credits.asm | 55 + src/engine/credits_commands.asm | 445 +++ src/engine/game_loop.asm | 3 +- src/gfx.asm | 24 +- src/gfx/hand_cards.png | Bin 0 -> 145 bytes .../tileset145.png | Bin .../tileset146.png | Bin .../tileset147.png | Bin src/home/card_collection.asm | 4 +- src/home/duel.asm | 10 +- src/home/load_deck.asm | 2 +- src/home/menus.asm | 20 +- src/home/text_box.asm | 4 +- src/home/unsorted.asm | 587 ++-- src/layout.link | 39 +- src/macros/credits_commands.asm | 227 ++ src/macros/data.asm | 34 +- src/macros/wram.asm | 13 +- src/main.asm | 25 +- src/sram.asm | 51 +- src/wram.asm | 415 ++- 66 files changed, 17418 insertions(+), 2025 deletions(-) create mode 100644 output.asm create mode 100644 src/constants/credits_constants.asm create mode 100644 src/constants/deck_constants.asm create mode 100644 src/constants/map_constants.asm create mode 100644 src/constants/ow_anim_constants.asm create mode 100644 src/constants/ow_object_constants.asm create mode 100644 src/constants/portrait_constants.asm create mode 100644 src/constants/script_constants.asm create mode 100644 src/constants/sfx_constants.asm create mode 100644 src/data/credits.asm delete mode 100644 src/data/gfx_pointers/gfx_unknown1.asm delete mode 100644 src/data/gfx_pointers/gfx_unknown2.asm create mode 100644 src/data/gfx_pointers/ow_animations.asm create mode 100644 src/data/gfx_pointers/ow_tile_frames.asm create mode 100644 src/data/map_gfx.asm create mode 100644 src/data/ow_animations.asm create mode 100644 src/data/ow_tile_frames1.asm create mode 100644 src/data/ow_tile_frames2.asm create mode 100644 src/engine/bank02.asm create mode 100644 src/engine/bank06.asm create mode 100644 src/engine/bank09.asm create mode 100644 src/engine/bank0f.asm create mode 100644 src/engine/bank10.asm create mode 100644 src/engine/bank4c.asm create mode 100644 src/engine/credits.asm create mode 100644 src/engine/credits_commands.asm create mode 100644 src/gfx/hand_cards.png rename src/gfx/{tilesets => overworld_sprites}/tileset145.png (100%) rename src/gfx/{tilesets => overworld_sprites}/tileset146.png (100%) rename src/gfx/{tilesets => overworld_sprites}/tileset147.png (100%) create mode 100644 src/macros/credits_commands.asm diff --git a/output.asm b/output.asm new file mode 100644 index 0000000..e69de29 diff --git a/src/audio/music1.asm b/src/audio/music1.asm index 9ca539c..4dc9ca0 100644 --- a/src/audio/music1.asm +++ b/src/audio/music1.asm @@ -22,8 +22,8 @@ _AssertSFXFinished:: Music1_f4015:: jp Music1_f4066 -Music1_f4018:: - jp Music1_f406f +_SetVolume:: + jp Music1_SetVolume _PauseSong:: jp Music1_PauseSong @@ -108,7 +108,7 @@ Music1_f4066: call Music1_UnloadAudioWRAMBank ret -Music1_f406f: +Music1_SetVolume: call Music1_LoadAudioWRAMBank push bc push af @@ -144,7 +144,7 @@ Music1_Init: ld [wMusicPanning], a xor a ld [wdd8c], a - ld [wde53], a + ld [wd0eb], a ld [wMusicWaveChange], a ld [wddef], a ld [wddf0], a @@ -2371,22 +2371,254 @@ INCLUDE "audio/presets.asm" ; all real SFX have the same priority (SFX_STOP does not use this table) Music1_SFXPriorities: - db $00, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a - db $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a + db $00 ; SFX_STOP + db $0a ; SFX_01 + db $0a ; SFX_02 + db $0a ; SFX_03 + db $0a ; SFX_04 + db $0a ; SFX_05 + db $0a ; SFX_06 + db $0a ; SFX_07 + db $0a ; SFX_08 + db $0a ; SFX_09 + db $0a ; SFX_0A + db $0a ; SFX_0B + db $0a ; SFX_0C + db $0a ; SFX_0D + db $0a ; SFX_0E + db $0a ; SFX_0F + db $0a ; SFX_10 + db $0a ; SFX_11 + db $0a ; SFX_12 + db $0a ; SFX_13 + db $0a ; SFX_14 + db $0a ; SFX_15 + db $0a ; SFX_16 + db $0a ; SFX_17 + db $0a ; SFX_18 + db $0a ; SFX_19 + db $0a ; SFX_1A + db $0a ; SFX_1B + db $0a ; SFX_1C + db $0a ; SFX_1D + db $0a ; SFX_1E + db $0a ; SFX_1F + db $0a ; SFX_20 + db $0a ; SFX_21 + db $0a ; SFX_22 + db $0a ; SFX_23 + db $0a ; SFX_24 + db $0a ; SFX_25 + db $0a ; SFX_26 + db $0a ; SFX_27 + db $0a ; SFX_28 + db $0a ; SFX_29 + db $0a ; SFX_2A + db $0a ; SFX_2B + db $0a ; SFX_2C + db $0a ; SFX_2D + db $0a ; SFX_2E + db $0a ; SFX_2F + db $0a ; SFX_30 + db $0a ; SFX_31 + db $0a ; SFX_32 + db $0a ; SFX_33 + db $0a ; SFX_34 + db $0a ; SFX_35 + db $0a ; SFX_36 + db $0a ; SFX_37 + db $0a ; SFX_38 + db $0a ; SFX_39 + db $0a ; SFX_3A + db $0a ; SFX_3B + db $0a ; SFX_3C + db $0a ; SFX_3D + db $0a ; SFX_3E + db $0a ; SFX_3F + db $0a ; SFX_40 + db $0a ; SFX_41 + db $0a ; SFX_42 + db $0a ; SFX_43 + db $0a ; SFX_44 + db $0a ; SFX_45 + db $0a ; SFX_46 + db $0a ; SFX_47 + db $0a ; SFX_48 + db $0a ; SFX_49 + db $0a ; SFX_4A + db $0a ; SFX_4B + db $0a ; SFX_4C + db $0a ; SFX_4D + db $0a ; SFX_4E + db $0a ; SFX_4F + db $0a ; SFX_50 + db $0a ; SFX_51 + db $0a ; SFX_52 + db $0a ; SFX_53 + db $0a ; SFX_54 + db $0a ; SFX_55 + db $0a ; SFX_56 + db $0a ; SFX_57 + db $0a ; SFX_58 + db $0a ; SFX_59 + db $0a ; SFX_5A + db $0a ; SFX_5B + db $0a ; SFX_5C + db $0a ; SFX_5D + db $0a ; SFX_5E + db $0a ; SFX_5F + db $0a ; SFX_60 + db $0a ; SFX_61 + db $0a ; SFX_62 + db $0a ; SFX_63 + db $0a ; SFX_64 + db $0a ; SFX_65 + db $0a ; SFX_66 + db $0a ; SFX_67 + db $0a ; SFX_68 + db $0a ; SFX_69 + db $0a ; SFX_6A + db $0a ; SFX_6B + db $0a ; SFX_6C + db $0a ; SFX_6D + db $0a ; SFX_6E + db $0a ; SFX_6F + db $0a ; SFX_70 + db $0a ; SFX_71 + db $0a ; SFX_72 + db $0a ; SFX_73 + db $0a ; SFX_74 + db $0a ; SFX_75 + db $0a ; SFX_76 + db $0a ; SFX_77 + db $0a ; SFX_78 + db $0a ; SFX_79 + db $0a ; SFX_7A + db $0a ; SFX_7B + db $0a ; SFX_7C + db $0a ; SFX_7D + db $0a ; SFX_7E + db $0a ; SFX_7F + db $0a ; SFX_80 + db $0a ; SFX_81 + db $0a ; SFX_82 + db $0a ; SFX_83 + db $0a ; SFX_84 + db $0a ; SFX_85 + db $0a ; SFX_86 + db $0a ; SFX_87 + db $0a ; SFX_88 + db $0a ; SFX_89 + db $0a ; SFX_8A + db $0a ; SFX_8B + db $0a ; SFX_8C + db $0a ; SFX_8D + db $0a ; SFX_8E + db $0a ; SFX_8F + db $0a ; SFX_90 + db $0a ; SFX_91 + db $0a ; SFX_92 + db $0a ; SFX_93 + db $0a ; SFX_94 + db $0a ; SFX_95 + db $0a ; SFX_96 + db $0a ; SFX_97 + db $0a ; SFX_98 + db $0a ; SFX_99 + db $0a ; SFX_9A + db $0a ; SFX_9B + db $0a ; SFX_9C + db $0a ; SFX_9D + db $0a ; SFX_9E + db $0a ; SFX_9F + db $0a ; SFX_A0 + db $0a ; SFX_A1 + db $0a ; SFX_A2 + db $0a ; SFX_A3 + db $0a ; SFX_A4 + db $0a ; SFX_A5 + db $0a ; SFX_A6 + db $0a ; SFX_A7 + db $0a ; SFX_A8 + db $0a ; SFX_A9 + db $0a ; SFX_AA + db $0a ; SFX_AB + db $0a ; SFX_AC + db $0a ; SFX_AD + db $0a ; SFX_AE + db $0a ; SFX_AF + db $0a ; SFX_B0 + db $0a ; SFX_B1 + db $0a ; SFX_B2 + db $0a ; SFX_B3 + db $0a ; SFX_B4 + db $0a ; SFX_B5 + db $0a ; SFX_B6 + db $0a ; SFX_B7 + db $0a ; SFX_B8 + db $0a ; SFX_B9 + db $0a ; SFX_BA + db $0a ; SFX_BB + db $0a ; SFX_BC + db $0a ; SFX_BD + db $0a ; SFX_BE + db $0a ; SFX_BF + db $0a ; SFX_C0 + db $0a ; SFX_C1 + db $0a ; SFX_C2 + db $0a ; SFX_C3 + db $0a ; SFX_C4 + db $0a ; SFX_C5 + db $0a ; SFX_C6 + db $0a ; SFX_C7 + db $0a ; SFX_C8 + db $0a ; SFX_C9 + db $0a ; SFX_CA + db $0a ; SFX_CB + db $0a ; SFX_CC + db $0a ; SFX_CD + db $0a ; SFX_CE + db $0a ; SFX_CF + db $0a ; SFX_D0 + db $0a ; SFX_D1 + db $0a ; SFX_D2 + db $0a ; SFX_D3 + db $0a ; SFX_D4 + db $0a ; SFX_D5 + db $0a ; SFX_D6 + db $0a ; SFX_D7 + db $0a ; SFX_D8 + db $0a ; SFX_D9 + db $0a ; SFX_DA + db $0a ; SFX_DB + db $0a ; SFX_DC + db $0a ; SFX_DD + db $0a ; SFX_DE + db $0a ; SFX_DF + db $0a ; SFX_E0 + db $0a ; SFX_E1 + db $0a ; SFX_E2 + db $0a ; SFX_E3 + db $0a ; SFX_E4 + db $0a ; SFX_E5 + db $0a ; SFX_E6 + db $0a ; SFX_E7 + db $0a ; SFX_E8 + db $0a ; SFX_E9 + db $0a ; SFX_EA + db $0a ; SFX_EB + db $0a ; SFX_EC + db $0a ; SFX_ED + db $0a ; SFX_EE + db $0a ; SFX_EF + db $0a ; SFX_F0 + db $0a ; SFX_F1 + db $0a ; SFX_F2 + db $0a ; SFX_F3 + db $0a ; SFX_F4 + db $0a ; SFX_F5 + db $0a ; SFX_F6 + db $0a ; SFX_F7 INCLUDE "audio/music1_headers.asm" diff --git a/src/audio/music2.asm b/src/audio/music2.asm index 9776ef6..41fa38a 100644 --- a/src/audio/music2.asm +++ b/src/audio/music2.asm @@ -144,7 +144,7 @@ Music2_Init: ld [wMusicPanning], a xor a ld [wdd8c], a - ld [wde53], a + ld [wd0eb], a ld [wMusicWaveChange], a ld [wddef], a ld [wddf0], a diff --git a/src/audio/music3.asm b/src/audio/music3.asm index 399dd5f..a4c49a8 100644 --- a/src/audio/music3.asm +++ b/src/audio/music3.asm @@ -144,7 +144,7 @@ Music3_Init: ld [wMusicPanning], a xor a ld [wdd8c], a - ld [wde53], a + ld [wd0eb], a ld [wMusicWaveChange], a ld [wddef], a ld [wddf0], a diff --git a/src/audio/music4.asm b/src/audio/music4.asm index 0114543..05dbdcc 100644 --- a/src/audio/music4.asm +++ b/src/audio/music4.asm @@ -144,7 +144,7 @@ Music4_Init: ld [wMusicPanning], a xor a ld [wdd8c], a - ld [wde53], a + ld [wd0eb], a ld [wMusicWaveChange], a ld [wddef], a ld [wddf0], a diff --git a/src/audio/music5.asm b/src/audio/music5.asm index dc07249..ec69142 100644 --- a/src/audio/music5.asm +++ b/src/audio/music5.asm @@ -144,7 +144,7 @@ Music5_Init: ld [wMusicPanning], a xor a ld [wdd8c], a - ld [wde53], a + ld [wd0eb], a ld [wMusicWaveChange], a ld [wddef], a ld [wddf0], a diff --git a/src/audio/music6.asm b/src/audio/music6.asm index b10954b..91af105 100644 --- a/src/audio/music6.asm +++ b/src/audio/music6.asm @@ -144,7 +144,7 @@ Music6_Init: ld [wMusicPanning], a xor a ld [wdd8c], a - ld [wde53], a + ld [wd0eb], a ld [wMusicWaveChange], a ld [wddef], a ld [wddf0], a diff --git a/src/audio/music7.asm b/src/audio/music7.asm index 1fed36a..8a1790d 100644 --- a/src/audio/music7.asm +++ b/src/audio/music7.asm @@ -144,7 +144,7 @@ Music7_Init: ld [wMusicPanning], a xor a ld [wdd8c], a - ld [wde53], a + ld [wd0eb], a ld [wMusicWaveChange], a ld [wddef], a ld [wddf0], a diff --git a/src/audio/sfx1.asm b/src/audio/sfx1.asm index 2a7c100..b14457c 100644 --- a/src/audio/sfx1.asm +++ b/src/audio/sfx1.asm @@ -15,7 +15,7 @@ SFX_Play: add hl, bc ld c, l ld b, h - ld a, [wde53] + ld a, [wd0eb] or a jr z, .asm_1f805a ld a, [wdd8c] @@ -53,7 +53,7 @@ SFX_Play: ldh [rNR44], a .asm_1f805a ld a, $1 - ld [wde53], a + ld [wd0eb], a ld hl, SFXHeaderPointers1 add hl, bc ld a, [hli] @@ -64,7 +64,7 @@ SFX_Play: ld a, [hli] ld [wdd8c], a ld [wde54], a - ld de, wde4b + ld de, wd0e3 ld c, $0 ld b, $0 .asm_fc031 @@ -134,7 +134,7 @@ SFX_Update: call Func_fc18d jr .asm_fc08d .asm_fc082 - ld hl, wde4b + ld hl, wd0e3 add hl, bc add hl, bc ld a, [hli] @@ -234,7 +234,7 @@ SFX_0: ld [hl], d pop de Func_fc105: - ld hl, wde4b + ld hl, wd0e3 add hl, bc add hl, bc ld [hl], e @@ -527,7 +527,7 @@ SFX_end: Func_fc26c: xor a - ld [wde53], a + ld [wd0eb], a ld [wSfxPriority], a ld [wAudio_d005], a ret diff --git a/src/audio/sfx2.asm b/src/audio/sfx2.asm index f3bd947..b531a8e 100644 --- a/src/audio/sfx2.asm +++ b/src/audio/sfx2.asm @@ -15,7 +15,7 @@ SFX2_Play: add hl, bc ld c, l ld b, h - ld a, [wde53] + ld a, [wd0eb] or a jr z, .asm_1f805a ld a, [wdd8c] @@ -53,7 +53,7 @@ SFX2_Play: ldh [rNR44], a .asm_1f805a ld a, $1 - ld [wde53], a + ld [wd0eb], a ld hl, SFXHeaderPointers2 add hl, bc ld a, [hli] @@ -64,7 +64,7 @@ SFX2_Play: ld a, [hli] ld [wdd8c], a ld [wde54], a - ld de, wde4b + ld de, wd0e3 ld c, $0 ld b, $0 .asm_fc031 @@ -134,7 +134,7 @@ SFX2_Update: call Func_fc18d_2 jr .asm_fc08d .asm_fc082 - ld hl, wde4b + ld hl, wd0e3 add hl, bc add hl, bc ld a, [hli] @@ -234,7 +234,7 @@ SFX2_0: ld [hl], d pop de Func_fc105_2: - ld hl, wde4b + ld hl, wd0e3 add hl, bc add hl, bc ld [hl], e @@ -527,7 +527,7 @@ SFX2_end: Func_fc26c_2: xor a - ld [wde53], a + ld [wd0eb], a ld [wSfxPriority], a ld [wAudio_d005], a ret diff --git a/src/constants.asm b/src/constants.asm index 95608e5..15309bd 100644 --- a/src/constants.asm +++ b/src/constants.asm @@ -1,14 +1,22 @@ INCLUDE "constants/card_constants.asm" INCLUDE "constants/card_data_constants.asm" +INCLUDE "constants/credits_constants.asm" +INCLUDE "constants/deck_constants.asm" INCLUDE "constants/deck_ai_constants.asm" INCLUDE "constants/duel_constants.asm" INCLUDE "constants/gfx_constants.asm" INCLUDE "constants/hardware_constants.asm" INCLUDE "constants/intro_constants.asm" +INCLUDE "constants/map_constants.asm" INCLUDE "constants/misc_constants.asm" INCLUDE "constants/name_constants.asm" +INCLUDE "constants/portrait_constants.asm" +INCLUDE "constants/script_constants.asm" +INCLUDE "constants/sfx_constants.asm" INCLUDE "constants/sgb_constants.asm" INCLUDE "constants/text_constants.asm" +INCLUDE "constants/ow_anim_constants.asm" +INCLUDE "constants/ow_object_constants.asm" INCLUDE "constants/attack_animation_constants.asm" INCLUDE "constants/charmaps.asm" INCLUDE "constants/menu_constants.asm" diff --git a/src/constants/card_data_constants.asm b/src/constants/card_data_constants.asm index cdd345b..8472eae 100644 --- a/src/constants/card_data_constants.asm +++ b/src/constants/card_data_constants.asm @@ -8,15 +8,17 @@ DEF CARD_NOT_OWNED EQU 1 << CARD_NOT_OWNED_F DEF CARD_COUNT_MASK EQU $7f ; sDeck* and generic deck constants -DEF NUM_DECKS EQU 4 -DEF DECK_NAME_SIZE EQU 24 -DEF DECK_NAME_SIZE_WO_SUFFIX EQU 21 ; name part before "deck" -DEF DECK_SIZE EQU 60 -DEF DECK_SIZE_BYTES EQU DECK_SIZE * 2 -DEF DECK_STRUCT_SIZE EQU DECK_NAME_SIZE + DECK_SIZE_BYTES -DEF DECK_CONFIG_BUFFER_SIZE EQU 80 -DEF MAX_NUM_SAME_NAME_CARDS EQU 4 -DEF MAX_UNNAMED_DECK_NUM EQU 999 +DEF NUM_DECKS EQU 4 +DEF DECK_NAME_SIZE EQU 24 +DEF DECK_NAME_SIZE_WO_SUFFIX EQU 21 ; name part before "deck" +DEF DECK_SIZE EQU 60 +DEF DECK_SIZE_BYTES EQU DECK_SIZE * 2 +DEF DECK_STRUCT_SIZE EQU DECK_NAME_SIZE + DECK_SIZE_BYTES +DEF DECK_COMPRESSED_SIZE EQU ((DECK_SIZE + 7) / 8 + 1) * 8 +DEF DECK_COMPRESSED_STRUCT_SIZE EQU DECK_NAME_SIZE + DECK_COMPRESSED_SIZE +DEF DECK_CONFIG_BUFFER_SIZE EQU 80 +DEF MAX_NUM_SAME_NAME_CARDS EQU 4 +DEF MAX_UNNAMED_DECK_NUM EQU 999 ; card data offsets (data/cards.asm and card_data_struct) diff --git a/src/constants/credits_constants.asm b/src/constants/credits_constants.asm new file mode 100644 index 0000000..0b6d955 --- /dev/null +++ b/src/constants/credits_constants.asm @@ -0,0 +1,47 @@ + const_def + const CREDITSCMD_RESET ; $00 + const CREDITSCMD_WAIT ; $01 + const CREDITSCMD_DRAW_BOX ; $02 + const CREDITSCMD_FADE_OUT ; $03 + const CREDITSCMD_FADE_IN ; $04 + const CREDITSCMD_SET_MUSIC ; $05 + const CREDITSCMD_STOP_MUSIC ; $06 + const CREDITSCMD_SHOW_COMPANIES ; $07 + const CREDITSCMD_SHOW_TITLE ; $08 + const CREDITSCMD_SHOW_CARD ; $09 + const CREDITSCMD_SHOW_SET ; $0a + const CREDITSCMD_SHOW_PORTRAIT ; $0b + const CREDITSCMD_PRINT_HEADER ; $0c + const CREDITSCMD_PRINT_TEXT ; $0d + const CREDITSCMD_SCROLL ; $0e + const CREDITSCMD_WAIT_INPUT ; $0f + const CREDITSCMD_MUSIC_FADE_OUT ; $10 + const CREDITSCMD_SET_VOLUME ; $11 + const CREDITSCMD_LOAD_MAP ; $12 + const CREDITSCMD_INIT_OW ; $13 + const CREDITSCMD_DEINIT_OW ; $14 + const CREDITSCMD_LOAD_TILEMAP ; $15 + const CREDITSCMD_LOAD_OW_OBJ ; $16 + const CREDITSCMD_LOAD_OW_OBJ_IN_MAP ; $17 + const CREDITSCMD_SHOW_TILE ; $18 + + const_def $ff + const CREDITS_END ; $ff + +; constants for Func_138c6 +; used to select what is affected by +; fade in/out credits commands + const_def + const CREDITS_FADE_ALL ; $0 + const CREDITS_FADE_BACKGROUND ; $1 + const CREDITS_FADE_HEADER ; $2 (unused) + const CREDITS_FADE_TEXT ; $3 + const CREDITS_FADE_HEADER_TEXT ; $4 + const CREDITS_FADE_BACKGROUND_TEXT ; $5 + +; constants to use with credits_show_set + const_def + const CREDITS_BASE_SET ; $0 + const CREDITS_JUNGLE ; $1 + const CREDITS_FOSSIL ; $2 + const CREDITS_TEAM_ROCKET ; $3 diff --git a/src/constants/deck_constants.asm b/src/constants/deck_constants.asm new file mode 100644 index 0000000..cf8d751 --- /dev/null +++ b/src/constants/deck_constants.asm @@ -0,0 +1,136 @@ +MACRO deck_const + IF const_value >= 3 + DEF \1_ID EQU const_value - 3 + ENDC + const \1 +ENDM + +; Both *_DECK and *_DECK_ID constants are defined here. +; *_DECK constants are to be used with LoadDeck and related routines. +; *_DECK_ID constants are specific to be loaded into wOpponentDeckID. +; Always, *_DECK_ID = *_DECK - 3. UNKNOWN_POISON_STORM_DECK_ID, +; GB1_STRANGE_PSYSHOCK_DECK_ID and UNKNOWN_SAMS_PRACTICE_DECK_ID do not exist. + const_def + deck_const UNKNOWN_POISON_STORM_DECK ; $00 + deck_const GB1_STRANGE_PSYSHOCK_DECK ; $01 + deck_const UNKNOWN_SAMS_PRACTICE_DECK ; $02 + deck_const PLAYER_PRACTICE_DECK ; $03 + deck_const STARTER_DECK ; $04 + deck_const SWEAT_ANTI_GR1_DECK ; $05 + deck_const GIVE_IN_ANTI_GR2_DECK ; $06 + deck_const VENGEFUL_ANTI_GR3_DECK ; $07 + deck_const UNFORGIVING_ANTI_GR4_DECK ; $08 + deck_const SAMS_PRACTICE_DECK ; $09 + deck_const AARON_PRACTICE_DECK1 ; $0a + deck_const AARONS_STEP1_DECK ; $0b + deck_const AARON_PRACTICE_DECK2 ; $0c + deck_const AARONS_STEP2_DECK ; $0d + deck_const AARON_PRACTICE_DECK3 ; $0e + deck_const AARONS_STEP3_DECK ; $0f + deck_const BRICK_WALK_DECK ; $10 + deck_const BENCH_TRAP_DECK ; $11 + deck_const SKY_SPARK_DECK ; $12 + deck_const ELECTRIC_SELFDESTRUCT_DECK ; $13 + deck_const OVERFLOW_DECK ; $14 + deck_const TRIPLE_ZAPDOS_DECK ; $15 + deck_const I_LOVE_PIKACHU_DECK ; $16 + deck_const TEN_THOUSAND_VOLTS_DECK ; $17 + deck_const HAND_OVER_GR_DECK ; $18 + deck_const PSYCHIC_ELITE_DECK ; $19 + deck_const PSYCHOKINESIS_DECK ; $1a + deck_const PHANTOM_DECK ; $1b + deck_const PUPPET_MASTER_DECK ; $1c + deck_const EVEN3_YEARS_ON_A_ROCK_DECK ; $1d + deck_const ROLLING_STONE_DECK ; $1e + deck_const GREAT_EARTHQUAKE_DECK ; $1f + deck_const AWESOME_FOSSIL_DECK ; $20 + deck_const RAGING_BILLOW_OF_FISTS_DECK ; $21 + deck_const YOU_CAN_DO_IT_MACHOP_DECK ; $22 + deck_const NEW_MACHOKE_DECK ; $23 + deck_const SKILLED_WARRIOR_DECK ; $24 + deck_const I_LOVE_TO_FIGHT_DECK ; $25 + deck_const MAX_ENERGY_DECK ; $26 + deck_const REMAINING_GREEN_DECK ; $27 + deck_const POISON_CURSE_DECK ; $28 + deck_const GLITTERING_SCALES_DECK ; $29 + deck_const STEADY_INCREASE_DECK ; $2a + deck_const DARK_SCIENCE_DECK ; $2b + deck_const NATURAL_SCIENCE_DECK ; $2c + deck_const POISONOUS_SWAMP_DECK ; $2d + deck_const GATHERING_NIDORAN_DECK ; $2e + deck_const RAIN_DANCE_CONFUSION_DECK ; $2f + deck_const CONSERVING_WATER_DECK ; $30 + deck_const ENERGY_REMOVAL_DECK ; $31 + deck_const SPLASHING_ABOUT_DECK ; $32 + deck_const BEACH_DECK ; $33 + deck_const GO_ARCANINE_DECK ; $34 + deck_const FLAME_FESTIVAL_DECK ; $35 + deck_const IMMORTAL_FLAME_DECK ; $36 + deck_const ELECTRIC_CURRENT_SHOCK_DECK ; $37 + deck_const GREAT_ROCKET4_DECK ; $38 + deck_const GREAT_ROCKET1_DECK ; $39 + deck_const GREAT_ROCKET2_DECK ; $3a + deck_const GREAT_ROCKET3_DECK ; $3b + deck_const GRAND_FIRE_DECK ; $3c + deck_const LEGENDARY_FOSSIL_DECK ; $3d + deck_const WATER_LEGEND_DECK ; $3e + deck_const GREAT_DRAGON_DECK ; $3f + deck_const BUG_COLLECTING_DECK ; $40 + deck_const DEMONIC_FOREST_DECK ; $41 + deck_const STICKY_POISON_GAS_DECK ; $42 + deck_const MAD_PETALS_DECK ; $43 + deck_const DANGEROUS_BENCH_DECK ; $44 + deck_const CHAIN_LIGHTNING_BY_PIKACHU_DECK ; $45 + deck_const THIS_IS_THE_POWER_OF_ELECTRICITY_DECK ; $46 + deck_const QUICK_ATTACK_DECK ; $47 + deck_const COMPLETE_COMBUSTION_DECK ; $48 + deck_const FIREBALL_DECK ; $49 + deck_const EEVEE_SHOWDOWN_DECK ; $4a + deck_const GAZE_UPON_THE_POWER_OF_FIRE_DECK ; $4b + deck_const WHIRLPOOL_SHOWER_DECK ; $4c + deck_const PARALYZED_PARALYZED_DECK ; $4d + deck_const BENCH_CALL_DECK ; $4e + deck_const WATER_STREAM_DECK ; $4f + deck_const ROCK_BLAST_DECK ; $50 + deck_const FULL_STRENGTH_DECK ; $51 + deck_const RUNNING_WILD_DECK ; $52 + deck_const DIRECT_HIT_DECK ; $53 + deck_const SUPERDESTRUCTIVE_POWER_DECK ; $54 + deck_const BAD_DREAM_DECK ; $55 + deck_const POKEMON_POWER_DECK ; $56 + deck_const SPIRITED_AWAY_DECK ; $57 + deck_const SNORLAX_GUARD_DECK ; $58 + deck_const EYE_OF_THE_STORM_DECK ; $59 + deck_const SUDDEN_GROWTH_DECK ; $5a + deck_const VERY_RARE_CARD_DECK ; $5b + deck_const BAD_GUYS_DECK ; $5c + deck_const POISON_MIST_DECK ; $5d + deck_const ULTRA_REMOVAL_DECK ; $5e + deck_const PSYCHIC_BATTLE_DECK ; $5f + deck_const STOP_LIFE_DECK ; $60 + deck_const SCORCHER_DECK ; $61 + deck_const TSUNAMI_STARTER_DECK ; $62 + deck_const SMASH_TO_MINCEMEAT_DECK ; $63 + deck_const TEST_YOUR_LUCK_DECK ; $64 + deck_const PROTOHISTORIC_DECK ; $65 + deck_const TEXTURE_TUNER7_DECK ; $66 + deck_const COLORLESS_ENERGY_DECK ; $67 + deck_const POWERFUL_POKEMON_DECK ; $68 + deck_const WEIRD_DECK ; $69 + deck_const STRANGE_DECK ; $6a + deck_const RONALDS_UNCOOL_DECK ; $6b + deck_const RONALDS_GRX_DECK ; $6c + deck_const RONALDS_POWER_DECK ; $6d + deck_const RONALDS_PSYCHIC_DECK ; $6e + deck_const RONALDS_ULTRA_DECK ; $6f + deck_const EVERYBODYS_FRIEND_DECK ; $70 + deck_const IMMORTAL_POKEMON_DECK ; $71 + deck_const TORRENTIAL_FLOOD_DECK ; $72 + deck_const TRAINER_IMPRISON_DECK ; $73 + deck_const BLAZING_FLAME_DECK ; $74 + deck_const DAMAGE_CHAOS_DECK ; $75 + deck_const BIG_THUNDER_DECK ; $76 + deck_const POWER_OF_DARKNESS_DECK ; $77 + deck_const POISON_STORM_DECK ; $78 + deck_const DECK_7269 ; $79 +DEF NUM_DECK_IDS EQU const_value - 3 diff --git a/src/constants/map_constants.asm b/src/constants/map_constants.asm new file mode 100644 index 0000000..fa4c34f --- /dev/null +++ b/src/constants/map_constants.asm @@ -0,0 +1,137 @@ + const_def + const OVERWORLD_MAP ; $00 + const MAP_01 ; $01 + const MAP_02 ; $02 + const MAP_03 ; $03 + const MAP_04 ; $04 + const MAP_05 ; $05 + const MAP_06 ; $06 + const MAP_07 ; $07 + const MAP_08 ; $08 + const MAP_09 ; $09 + const MAP_0A ; $0a + const MAP_0B ; $0b + const MAP_0C ; $0c + const MAP_0D ; $0d + const MAP_0E ; $0e + const MAP_0F ; $0f + const MAP_10 ; $10 + const MAP_11 ; $11 + const MAP_12 ; $12 + const MAP_13 ; $13 + const MAP_14 ; $14 + const MAP_15 ; $15 + const MAP_16 ; $16 + const MAP_17 ; $17 + const MAP_18 ; $18 + const MAP_19 ; $19 + const MAP_1A ; $1a + const MAP_1B ; $1b + const MAP_1C ; $1c + const MAP_1D ; $1d + const MAP_1E ; $1e + const MAP_1F ; $1f + const MAP_20 ; $20 + const MAP_21 ; $21 + const MAP_22 ; $22 + const MAP_23 ; $23 + const MAP_24 ; $24 + const MAP_25 ; $25 + const MAP_26 ; $26 + const MAP_27 ; $27 + const MAP_28 ; $28 + const MAP_29 ; $29 + const MAP_2A ; $2a + const MAP_2B ; $2b + const MAP_2C ; $2c + const MAP_2D ; $2d + const MAP_2E ; $2e + const MAP_2F ; $2f + const MAP_30 ; $30 + const MAP_31 ; $31 + const MAP_32 ; $32 + const MAP_33 ; $33 + const MAP_34 ; $34 + const MAP_35 ; $35 + const MAP_36 ; $36 + const MAP_37 ; $37 + const MAP_38 ; $38 + const MAP_39 ; $39 + const MAP_3A ; $3a + const MAP_3B ; $3b + const MAP_3C ; $3c + const MAP_3D ; $3d + const MAP_3E ; $3e + const MAP_3F ; $3f + const MAP_40 ; $40 + const MAP_41 ; $41 + const MAP_42 ; $42 + const MAP_43 ; $43 + const MAP_44 ; $44 + const MAP_45 ; $45 + const MAP_46 ; $46 + const MAP_47 ; $47 + const MAP_48 ; $48 + const MAP_49 ; $49 + const MAP_4A ; $4a + const MAP_4B ; $4b + const MAP_4C ; $4c + const MAP_4D ; $4d + const MAP_4E ; $4e + const MAP_4F ; $4f + const MAP_50 ; $50 + const MAP_51 ; $51 + const MAP_52 ; $52 + const MAP_53 ; $53 + const MAP_54 ; $54 + const MAP_55 ; $55 + const MAP_56 ; $56 + const MAP_57 ; $57 + const MAP_58 ; $58 + const MAP_59 ; $59 + const MAP_5A ; $5a + const MAP_5B ; $5b + const MAP_5C ; $5c + const MAP_5D ; $5d + const MAP_5E ; $5e + const MAP_5F ; $5f + const MAP_60 ; $60 + const MAP_61 ; $61 + const MAP_62 ; $62 + const MAP_63 ; $63 + const MAP_64 ; $64 + const MAP_65 ; $65 + const MAP_66 ; $66 + const MAP_67 ; $67 + const MAP_68 ; $68 + const MAP_69 ; $69 + const MAP_6A ; $6a + const MAP_6B ; $6b + const MAP_6C ; $6c + const MAP_6D ; $6d + const MAP_6E ; $6e + const MAP_6F ; $6f + const MAP_70 ; $70 + const MAP_71 ; $71 + const MAP_72 ; $72 + const MAP_73 ; $73 + const MAP_74 ; $74 + const MAP_75 ; $75 + +DEF NUM_OW_ANIMATED_TILES EQU 25 + +; OW location constants + const_def + const OWMAP_MASON_LABORATORY ; $0 + const OWMAP_ISHIHARAS_HOUSE ; $1 + const OWMAP_LIGHTNING_CLUB ; $2 + const OWMAP_PSYCHIC_CLUB ; $3 + const OWMAP_ROCK_CLUB ; $4 + const OWMAP_FIGHTING_CLUB ; $5 + const OWMAP_GRASS_CLUB ; $6 + const OWMAP_SCIENCE_CLUB ; $7 + const OWMAP_WATER_CLUB ; $8 + const OWMAP_FIRE_CLUB ; $9 + const OWMAP_AIRPORT ; $a + const OWMAP_CHALLENGE_HALL ; $b + const OWMAP_POKEMON_DOME ; $c diff --git a/src/constants/menu_constants.asm b/src/constants/menu_constants.asm index 660eb00..845da84 100644 --- a/src/constants/menu_constants.asm +++ b/src/constants/menu_constants.asm @@ -1,6 +1,34 @@ +; start menu configurations + const_def + + ; New Game + const STARTMENU_CONFIG_0 ; 0 + + ; Continue From Diary + ; New Game + const STARTMENU_CONFIG_1 ; 1 + + ; Card Pop! + ; Continue From Diary + ; New Game + const STARTMENU_CONFIG_2 ; 2 + + ; Card Pop! + ; Continue From Diary + ; New Game + ; Continue Duel + const STARTMENU_CONFIG_3 ; 3 + + ; Continue From Diary + ; New Game + ; Continue Duel + const STARTMENU_CONFIG_4 ; 4 + ; start menu options const_def const STARTMENU_CARD_POP ; 0 const STARTMENU_CONTINUE_FROM_DIARY ; 1 const STARTMENU_NEW_GAME ; 2 const STARTMENU_CONTINUE_DUEL ; 3 + +DEF NUM_DECK_SAVE_MACHINE_SLOTS EQU 50 diff --git a/src/constants/misc_constants.asm b/src/constants/misc_constants.asm index 92f8bb9..44d2447 100644 --- a/src/constants/misc_constants.asm +++ b/src/constants/misc_constants.asm @@ -38,3 +38,8 @@ DEF NULL EQU $0000 DEF FALSE EQU 0 DEF TRUE EQU 1 + +; max number of player names that +; can be written to sCardPopNameList +DEF CARDPOP_NAME_LIST_MAX_ELEMS EQU 16 +DEF CARDPOP_NAME_LIST_SIZE EQUS "CARDPOP_NAME_LIST_MAX_ELEMS * NAME_BUFFER_LENGTH" diff --git a/src/constants/name_constants.asm b/src/constants/name_constants.asm index 10c5a72..05b6898 100644 --- a/src/constants/name_constants.asm +++ b/src/constants/name_constants.asm @@ -1,6 +1,21 @@ DEF NAME_BUFFER_LENGTH EQU 16 -DEF MAX_PLAYER_NAME_LENGTH EQU 6 * 2 +DEF MAX_PLAYER_NAME_CHARS EQU 6 +DEF MAX_PLAYER_NAME_LENGTH EQU MAX_PLAYER_NAME_CHARS * 2 DEF MAX_DECK_NAME_LENGTH EQU 20 * 1 ; note that its unit is byte! DEF NAMING_SCREEN_BUFFER_LENGTH EQU 24 + + const_def + const NAME_MODE_HIRAGANA ; $0 + const NAME_MODE_KATAKANA ; $1 + const NAME_MODE_UPPER_ABC ; $2 + const NAME_MODE_LOWER_ABC ; $3 +DEF NUM_NAME_MODES EQU const_value + + const_def $06 + const KEYBOARD_UNKNOWN ; $06 + const KEYBOARD_TOGGLE_KATAKANA ; $07 + const KEYBOARD_TOGGLE_UPPER_ABC ; $08 + const KEYBOARD_TOGGLE_LOWER_ABC ; $09 + const KEYBOARD_DONE ; $0a diff --git a/src/constants/ow_anim_constants.asm b/src/constants/ow_anim_constants.asm new file mode 100644 index 0000000..44d7526 --- /dev/null +++ b/src/constants/ow_anim_constants.asm @@ -0,0 +1,500 @@ + const_def + const OW_ANIM_00 ; $00 + const OW_ANIM_01 ; $01 + const OW_ANIM_02 ; $02 + const OW_ANIM_03 ; $03 + const OW_ANIM_04 ; $04 + const OW_ANIM_05 ; $05 + const OW_ANIM_06 ; $06 + const OW_ANIM_07 ; $07 + const OW_ANIM_08 ; $08 + const OW_ANIM_09 ; $09 + const OW_ANIM_0A ; $0a + const OW_ANIM_0B ; $0b + const OW_ANIM_0C ; $0c + const OW_ANIM_0D ; $0d + const OW_ANIM_0E ; $0e + const OW_ANIM_0F ; $0f + const OW_ANIM_10 ; $10 + const OW_ANIM_11 ; $11 + const OW_ANIM_12 ; $12 + const OW_ANIM_13 ; $13 + const OW_ANIM_14 ; $14 + const OW_ANIM_15 ; $15 + const OW_ANIM_16 ; $16 + const OW_ANIM_17 ; $17 + const OW_ANIM_18 ; $18 + const OW_ANIM_19 ; $19 + const OW_ANIM_1A ; $1a + const OW_ANIM_1B ; $1b + const OW_ANIM_1C ; $1c + const OW_ANIM_1D ; $1d + const OW_ANIM_1E ; $1e + const OW_ANIM_1F ; $1f + const OW_ANIM_20 ; $20 + const OW_ANIM_21 ; $21 + const OW_ANIM_22 ; $22 + const OW_ANIM_23 ; $23 + const OW_ANIM_24 ; $24 + const OW_ANIM_25 ; $25 + const OW_ANIM_26 ; $26 + const OW_ANIM_27 ; $27 + const OW_ANIM_28 ; $28 + const OW_ANIM_29 ; $29 + const OW_ANIM_2A ; $2a + const OW_ANIM_2B ; $2b +const_value = $ff + const OW_ANIM_NONE ; $ff + + const_def + const OW_FRAMES_000 ; $000 + const OW_FRAMES_001 ; $001 + const OW_FRAMES_002 ; $002 + const OW_FRAMES_003 ; $003 + const OW_FRAMES_004 ; $004 + const OW_FRAMES_005 ; $005 + const OW_FRAMES_006 ; $006 + const OW_FRAMES_007 ; $007 + const OW_FRAMES_008 ; $008 + const OW_FRAMES_009 ; $009 + const OW_FRAMES_00A ; $00a + const OW_FRAMES_00B ; $00b + const OW_FRAMES_00C ; $00c + const OW_FRAMES_00D ; $00d + const OW_FRAMES_00E ; $00e + const OW_FRAMES_00F ; $00f + const OW_FRAMES_010 ; $010 + const OW_FRAMES_011 ; $011 + const OW_FRAMES_012 ; $012 + const OW_FRAMES_013 ; $013 + const OW_FRAMES_014 ; $014 + const OW_FRAMES_015 ; $015 + const OW_FRAMES_016 ; $016 + const OW_FRAMES_017 ; $017 + const OW_FRAMES_018 ; $018 + const OW_FRAMES_019 ; $019 + const OW_FRAMES_01A ; $01a + const OW_FRAMES_01B ; $01b + const OW_FRAMES_01C ; $01c + const OW_FRAMES_01D ; $01d + const OW_FRAMES_01E ; $01e + const OW_FRAMES_01F ; $01f + const OW_FRAMES_020 ; $020 + const OW_FRAMES_021 ; $021 + const OW_FRAMES_022 ; $022 + const OW_FRAMES_023 ; $023 + const OW_FRAMES_024 ; $024 + const OW_FRAMES_025 ; $025 + const OW_FRAMES_026 ; $026 + const OW_FRAMES_027 ; $027 + const OW_FRAMES_028 ; $028 + const OW_FRAMES_029 ; $029 + const OW_FRAMES_02A ; $02a + const OW_FRAMES_02B ; $02b + const OW_FRAMES_02C ; $02c + const OW_FRAMES_02D ; $02d + const OW_FRAMES_02E ; $02e + const OW_FRAMES_02F ; $02f + const OW_FRAMES_030 ; $030 + const OW_FRAMES_031 ; $031 + const OW_FRAMES_032 ; $032 + const OW_FRAMES_033 ; $033 + const OW_FRAMES_034 ; $034 + const OW_FRAMES_035 ; $035 + const OW_FRAMES_036 ; $036 + const OW_FRAMES_037 ; $037 + const OW_FRAMES_038 ; $038 + const OW_FRAMES_039 ; $039 + const OW_FRAMES_03A ; $03a + const OW_FRAMES_03B ; $03b + const OW_FRAMES_03C ; $03c + const OW_FRAMES_03D ; $03d + const OW_FRAMES_03E ; $03e + const OW_FRAMES_03F ; $03f + const OW_FRAMES_040 ; $040 + const OW_FRAMES_041 ; $041 + const OW_FRAMES_042 ; $042 + const OW_FRAMES_043 ; $043 + const OW_FRAMES_044 ; $044 + const OW_FRAMES_045 ; $045 + const OW_FRAMES_046 ; $046 + const OW_FRAMES_047 ; $047 + const OW_FRAMES_048 ; $048 + const OW_FRAMES_049 ; $049 + const OW_FRAMES_04A ; $04a + const OW_FRAMES_04B ; $04b + const OW_FRAMES_04C ; $04c + const OW_FRAMES_04D ; $04d + const OW_FRAMES_04E ; $04e + const OW_FRAMES_04F ; $04f + const OW_FRAMES_050 ; $050 + const OW_FRAMES_051 ; $051 + const OW_FRAMES_052 ; $052 + const OW_FRAMES_053 ; $053 + const OW_FRAMES_054 ; $054 + const OW_FRAMES_055 ; $055 + const OW_FRAMES_056 ; $056 + const OW_FRAMES_057 ; $057 + const OW_FRAMES_058 ; $058 + const OW_FRAMES_059 ; $059 + const OW_FRAMES_05A ; $05a + const OW_FRAMES_05B ; $05b + const OW_FRAMES_05C ; $05c + const OW_FRAMES_05D ; $05d + const OW_FRAMES_05E ; $05e + const OW_FRAMES_05F ; $05f + const OW_FRAMES_060 ; $060 + const OW_FRAMES_061 ; $061 + const OW_FRAMES_062 ; $062 + const OW_FRAMES_063 ; $063 + const OW_FRAMES_064 ; $064 + const OW_FRAMES_065 ; $065 + const OW_FRAMES_066 ; $066 + const OW_FRAMES_067 ; $067 + const OW_FRAMES_068 ; $068 + const OW_FRAMES_069 ; $069 + const OW_FRAMES_06A ; $06a + const OW_FRAMES_06B ; $06b + const OW_FRAMES_06C ; $06c + const OW_FRAMES_06D ; $06d + const OW_FRAMES_06E ; $06e + const OW_FRAMES_06F ; $06f + const OW_FRAMES_070 ; $070 + const OW_FRAMES_071 ; $071 + const OW_FRAMES_072 ; $072 + const OW_FRAMES_073 ; $073 + const OW_FRAMES_074 ; $074 + const OW_FRAMES_075 ; $075 + const OW_FRAMES_076 ; $076 + const OW_FRAMES_077 ; $077 + const OW_FRAMES_078 ; $078 + const OW_FRAMES_079 ; $079 + const OW_FRAMES_07A ; $07a + const OW_FRAMES_07B ; $07b + const OW_FRAMES_07C ; $07c + const OW_FRAMES_07D ; $07d + const OW_FRAMES_07E ; $07e + const OW_FRAMES_07F ; $07f + const OW_FRAMES_080 ; $080 + const OW_FRAMES_081 ; $081 + const OW_FRAMES_082 ; $082 + const OW_FRAMES_083 ; $083 + const OW_FRAMES_084 ; $084 + const OW_FRAMES_085 ; $085 + const OW_FRAMES_086 ; $086 + const OW_FRAMES_087 ; $087 + const OW_FRAMES_088 ; $088 + const OW_FRAMES_089 ; $089 + const OW_FRAMES_08A ; $08a + const OW_FRAMES_08B ; $08b + const OW_FRAMES_08C ; $08c + const OW_FRAMES_08D ; $08d + const OW_FRAMES_08E ; $08e + const OW_FRAMES_08F ; $08f + const OW_FRAMES_090 ; $090 + const OW_FRAMES_091 ; $091 + const OW_FRAMES_092 ; $092 + const OW_FRAMES_093 ; $093 + const OW_FRAMES_094 ; $094 + const OW_FRAMES_095 ; $095 + const OW_FRAMES_096 ; $096 + const OW_FRAMES_097 ; $097 + const OW_FRAMES_098 ; $098 + const OW_FRAMES_099 ; $099 + const OW_FRAMES_09A ; $09a + const OW_FRAMES_09B ; $09b + const OW_FRAMES_09C ; $09c + const OW_FRAMES_09D ; $09d + const OW_FRAMES_09E ; $09e + const OW_FRAMES_09F ; $09f + const OW_FRAMES_0A0 ; $0a0 + const OW_FRAMES_0A1 ; $0a1 + const OW_FRAMES_0A2 ; $0a2 + const OW_FRAMES_0A3 ; $0a3 + const OW_FRAMES_0A4 ; $0a4 + const OW_FRAMES_0A5 ; $0a5 + const OW_FRAMES_0A6 ; $0a6 + const OW_FRAMES_0A7 ; $0a7 + const OW_FRAMES_0A8 ; $0a8 + const OW_FRAMES_0A9 ; $0a9 + const OW_FRAMES_0AA ; $0aa + const OW_FRAMES_0AB ; $0ab + const OW_FRAMES_0AC ; $0ac + const OW_FRAMES_0AD ; $0ad + const OW_FRAMES_0AE ; $0ae + const OW_FRAMES_0AF ; $0af + const OW_FRAMES_0B0 ; $0b0 + const OW_FRAMES_0B1 ; $0b1 + const OW_FRAMES_0B2 ; $0b2 + const OW_FRAMES_0B3 ; $0b3 + const OW_FRAMES_0B4 ; $0b4 + const OW_FRAMES_0B5 ; $0b5 + const OW_FRAMES_0B6 ; $0b6 + const OW_FRAMES_0B7 ; $0b7 + const OW_FRAMES_0B8 ; $0b8 + const OW_FRAMES_0B9 ; $0b9 + const OW_FRAMES_0BA ; $0ba + const OW_FRAMES_0BB ; $0bb + const OW_FRAMES_0BC ; $0bc + const OW_FRAMES_0BD ; $0bd + const OW_FRAMES_0BE ; $0be + const OW_FRAMES_0BF ; $0bf + const OW_FRAMES_0C0 ; $0c0 + const OW_FRAMES_0C1 ; $0c1 + const OW_FRAMES_0C2 ; $0c2 + const OW_FRAMES_0C3 ; $0c3 + const OW_FRAMES_0C4 ; $0c4 + const OW_FRAMES_0C5 ; $0c5 + const OW_FRAMES_0C6 ; $0c6 + const OW_FRAMES_0C7 ; $0c7 + const OW_FRAMES_0C8 ; $0c8 + const OW_FRAMES_0C9 ; $0c9 + const OW_FRAMES_0CA ; $0ca + const OW_FRAMES_0CB ; $0cb + const OW_FRAMES_0CC ; $0cc + const OW_FRAMES_0CD ; $0cd + const OW_FRAMES_0CE ; $0ce + const OW_FRAMES_0CF ; $0cf + const OW_FRAMES_0D0 ; $0d0 + const OW_FRAMES_0D1 ; $0d1 + const OW_FRAMES_0D2 ; $0d2 + const OW_FRAMES_0D3 ; $0d3 + const OW_FRAMES_0D4 ; $0d4 + const OW_FRAMES_0D5 ; $0d5 + const OW_FRAMES_0D6 ; $0d6 + const OW_FRAMES_0D7 ; $0d7 + const OW_FRAMES_0D8 ; $0d8 + const OW_FRAMES_0D9 ; $0d9 + const OW_FRAMES_0DA ; $0da + const OW_FRAMES_0DB ; $0db + const OW_FRAMES_0DC ; $0dc + const OW_FRAMES_0DD ; $0dd + const OW_FRAMES_0DE ; $0de + const OW_FRAMES_0DF ; $0df + const OW_FRAMES_0E0 ; $0e0 + const OW_FRAMES_0E1 ; $0e1 + const OW_FRAMES_0E2 ; $0e2 + const OW_FRAMES_0E3 ; $0e3 + const OW_FRAMES_0E4 ; $0e4 + const OW_FRAMES_0E5 ; $0e5 + const OW_FRAMES_0E6 ; $0e6 + const OW_FRAMES_0E7 ; $0e7 + const OW_FRAMES_0E8 ; $0e8 + const OW_FRAMES_0E9 ; $0e9 + const OW_FRAMES_0EA ; $0ea + const OW_FRAMES_0EB ; $0eb + const OW_FRAMES_0EC ; $0ec + const OW_FRAMES_0ED ; $0ed + const OW_FRAMES_0EE ; $0ee + const OW_FRAMES_0EF ; $0ef + const OW_FRAMES_0F0 ; $0f0 + const OW_FRAMES_0F1 ; $0f1 + const OW_FRAMES_0F2 ; $0f2 + const OW_FRAMES_0F3 ; $0f3 + const OW_FRAMES_0F4 ; $0f4 + const OW_FRAMES_0F5 ; $0f5 + const OW_FRAMES_0F6 ; $0f6 + const OW_FRAMES_0F7 ; $0f7 + const OW_FRAMES_0F8 ; $0f8 + const OW_FRAMES_0F9 ; $0f9 + const OW_FRAMES_0FA ; $0fa + const OW_FRAMES_0FB ; $0fb + const OW_FRAMES_0FC ; $0fc + const OW_FRAMES_0FD ; $0fd + const OW_FRAMES_0FE ; $0fe + const OW_FRAMES_0FF ; $0ff + const OW_FRAMES_100 ; $100 + const OW_FRAMES_101 ; $101 + const OW_FRAMES_102 ; $102 + const OW_FRAMES_103 ; $103 + const OW_FRAMES_104 ; $104 + const OW_FRAMES_105 ; $105 + const OW_FRAMES_106 ; $106 + const OW_FRAMES_107 ; $107 + const OW_FRAMES_108 ; $108 + const OW_FRAMES_109 ; $109 + const OW_FRAMES_10A ; $10a + const OW_FRAMES_10B ; $10b + const OW_FRAMES_10C ; $10c + const OW_FRAMES_10D ; $10d + const OW_FRAMES_10E ; $10e + const OW_FRAMES_10F ; $10f + const OW_FRAMES_110 ; $110 + const OW_FRAMES_111 ; $111 + const OW_FRAMES_112 ; $112 + const OW_FRAMES_113 ; $113 + const OW_FRAMES_114 ; $114 + const OW_FRAMES_115 ; $115 + const OW_FRAMES_116 ; $116 + const OW_FRAMES_117 ; $117 + const OW_FRAMES_118 ; $118 + const OW_FRAMES_119 ; $119 + const OW_FRAMES_11A ; $11a + const OW_FRAMES_11B ; $11b + const OW_FRAMES_11C ; $11c + const OW_FRAMES_11D ; $11d + const OW_FRAMES_11E ; $11e + const OW_FRAMES_11F ; $11f + const OW_FRAMES_120 ; $120 + const OW_FRAMES_121 ; $121 + const OW_FRAMES_122 ; $122 + const OW_FRAMES_123 ; $123 + const OW_FRAMES_124 ; $124 + const OW_FRAMES_125 ; $125 + const OW_FRAMES_126 ; $126 + const OW_FRAMES_127 ; $127 + const OW_FRAMES_128 ; $128 + const OW_FRAMES_129 ; $129 + const OW_FRAMES_12A ; $12a + const OW_FRAMES_12B ; $12b + const OW_FRAMES_12C ; $12c + const OW_FRAMES_12D ; $12d + const OW_FRAMES_12E ; $12e + const OW_FRAMES_12F ; $12f + const OW_FRAMES_130 ; $130 + const OW_FRAMES_131 ; $131 + const OW_FRAMES_132 ; $132 + const OW_FRAMES_133 ; $133 + const OW_FRAMES_134 ; $134 + const OW_FRAMES_135 ; $135 + const OW_FRAMES_136 ; $136 + const OW_FRAMES_137 ; $137 + const OW_FRAMES_138 ; $138 + const OW_FRAMES_139 ; $139 + const OW_FRAMES_13A ; $13a + const OW_FRAMES_13B ; $13b + const OW_FRAMES_13C ; $13c + const OW_FRAMES_13D ; $13d + const OW_FRAMES_13E ; $13e + const OW_FRAMES_13F ; $13f + const OW_FRAMES_140 ; $140 + const OW_FRAMES_141 ; $141 + const OW_FRAMES_142 ; $142 + const OW_FRAMES_143 ; $143 + const OW_FRAMES_144 ; $144 + const OW_FRAMES_145 ; $145 + const OW_FRAMES_146 ; $146 + const OW_FRAMES_147 ; $147 + const OW_FRAMES_148 ; $148 + const OW_FRAMES_149 ; $149 + const OW_FRAMES_14A ; $14a + const OW_FRAMES_14B ; $14b + const OW_FRAMES_14C ; $14c + const OW_FRAMES_14D ; $14d + const OW_FRAMES_14E ; $14e + const OW_FRAMES_14F ; $14f + const OW_FRAMES_150 ; $150 + const OW_FRAMES_151 ; $151 + const OW_FRAMES_152 ; $152 + const OW_FRAMES_153 ; $153 + const OW_FRAMES_154 ; $154 + const OW_FRAMES_155 ; $155 + const OW_FRAMES_156 ; $156 + const OW_FRAMES_157 ; $157 + const OW_FRAMES_158 ; $158 + const OW_FRAMES_159 ; $159 + const OW_FRAMES_15A ; $15a + const OW_FRAMES_15B ; $15b + const OW_FRAMES_15C ; $15c + const OW_FRAMES_15D ; $15d + const OW_FRAMES_15E ; $15e + const OW_FRAMES_15F ; $15f + const OW_FRAMES_160 ; $160 + const OW_FRAMES_161 ; $161 + const OW_FRAMES_162 ; $162 + const OW_FRAMES_163 ; $163 + const OW_FRAMES_164 ; $164 + const OW_FRAMES_165 ; $165 + const OW_FRAMES_166 ; $166 + const OW_FRAMES_167 ; $167 + const OW_FRAMES_168 ; $168 + const OW_FRAMES_169 ; $169 + const OW_FRAMES_16A ; $16a + const OW_FRAMES_16B ; $16b + const OW_FRAMES_16C ; $16c + const OW_FRAMES_16D ; $16d + const OW_FRAMES_16E ; $16e + const OW_FRAMES_16F ; $16f + const OW_FRAMES_170 ; $170 + const OW_FRAMES_171 ; $171 + const OW_FRAMES_172 ; $172 + const OW_FRAMES_173 ; $173 + const OW_FRAMES_174 ; $174 + const OW_FRAMES_175 ; $175 + const OW_FRAMES_176 ; $176 + const OW_FRAMES_177 ; $177 + const OW_FRAMES_178 ; $178 + const OW_FRAMES_179 ; $179 + const OW_FRAMES_17A ; $17a + const OW_FRAMES_17B ; $17b + const OW_FRAMES_17C ; $17c + const OW_FRAMES_17D ; $17d + const OW_FRAMES_17E ; $17e + const OW_FRAMES_17F ; $17f + const OW_FRAMES_180 ; $180 + const OW_FRAMES_181 ; $181 + const OW_FRAMES_182 ; $182 + const OW_FRAMES_183 ; $183 + const OW_FRAMES_184 ; $184 + const OW_FRAMES_185 ; $185 + const OW_FRAMES_186 ; $186 + const OW_FRAMES_187 ; $187 + const OW_FRAMES_188 ; $188 + const OW_FRAMES_189 ; $189 + const OW_FRAMES_18A ; $18a + const OW_FRAMES_18B ; $18b + const OW_FRAMES_18C ; $18c + const OW_FRAMES_18D ; $18d + const OW_FRAMES_18E ; $18e + const OW_FRAMES_18F ; $18f + const OW_FRAMES_190 ; $190 + const OW_FRAMES_191 ; $191 + const OW_FRAMES_192 ; $192 + const OW_FRAMES_193 ; $193 + const OW_FRAMES_194 ; $194 + const OW_FRAMES_195 ; $195 + const OW_FRAMES_196 ; $196 + const OW_FRAMES_197 ; $197 + const OW_FRAMES_198 ; $198 + const OW_FRAMES_199 ; $199 + const OW_FRAMES_19A ; $19a + const OW_FRAMES_19B ; $19b + const OW_FRAMES_19C ; $19c + const OW_FRAMES_19D ; $19d + const OW_FRAMES_19E ; $19e + const OW_FRAMES_19F ; $19f + const OW_FRAMES_1A0 ; $1a0 + const OW_FRAMES_1A1 ; $1a1 + const OW_FRAMES_1A2 ; $1a2 + const OW_FRAMES_1A3 ; $1a3 + const OW_FRAMES_1A4 ; $1a4 + const OW_FRAMES_1A5 ; $1a5 + const OW_FRAMES_1A6 ; $1a6 + const OW_FRAMES_1A7 ; $1a7 + const OW_FRAMES_1A8 ; $1a8 + const OW_FRAMES_1A9 ; $1a9 + const OW_FRAMES_1AA ; $1aa + const OW_FRAMES_1AB ; $1ab + const OW_FRAMES_1AC ; $1ac + const OW_FRAMES_1AD ; $1ad + const OW_FRAMES_1AE ; $1ae + const OW_FRAMES_1AF ; $1af + const OW_FRAMES_1B0 ; $1b0 + const OW_FRAMES_1B1 ; $1b1 + const OW_FRAMES_1B2 ; $1b2 + const OW_FRAMES_1B3 ; $1b3 + const OW_FRAMES_1B4 ; $1b4 + const OW_FRAMES_1B5 ; $1b5 + const OW_FRAMES_1B6 ; $1b6 + const OW_FRAMES_1B7 ; $1b7 + const OW_FRAMES_1B8 ; $1b8 + const OW_FRAMES_1B9 ; $1b9 + const OW_FRAMES_1BA ; $1ba + const OW_FRAMES_1BB ; $1bb + const OW_FRAMES_1BC ; $1bc + const OW_FRAMES_1BD ; $1bd + const OW_FRAMES_1BE ; $1be + const OW_FRAMES_1BF ; $1bf + const OW_FRAMES_1C0 ; $1c0 + const OW_FRAMES_1C1 ; $1c1 + const OW_FRAMES_1C2 ; $1c2 diff --git a/src/constants/ow_object_constants.asm b/src/constants/ow_object_constants.asm new file mode 100644 index 0000000..95df0c4 --- /dev/null +++ b/src/constants/ow_object_constants.asm @@ -0,0 +1,430 @@ + const_def + const OW_PLAYERM ; $00 + const OW_PLAYERF ; $01 + const OW_DRMASON ; $02 + const OW_RONALD ; $03 + const OW_ISHIHARA ; $04 + const OW_IMAKUNI1 ; $05 + const OW_TECH1 ; $06 + const OW_TECH2 ; $07 + const OW_PAPPY1 ; $08 + const OW_GENE ; $09 + const OW_MANIA1 ; $0a + const OW_YOUNGSTER1 ; $0b + const OW_MAN1 ; $0c + const OW_MITCH ; $0d + const OW_MANIA2 ; $0e + const OW_MANIA3 ; $0f + const OW_LASS1 ; $10 + const OW_NIKKI ; $11 + const OW_GIRL1 ; $12 + const OW_LASS2 ; $13 + const OW_LASS3 ; $14 + const OW_RICK ; $15 + const OW_TECH3 ; $16 + const OW_TECH4 ; $17 + const OW_TECH5 ; $18 + const OW_AMY1 ; $19 + const OW_AMY2 ; $1a + const OW_JOSHUA1 ; $1b + const OW_SARA ; $1c + const OW_AMANDA ; $1d + const OW_KEN ; $1e + const OW_LAD1 ; $1f + const OW_SPECS1 ; $20 + const OW_YOUNGSTER2 ; $21 + const OW_ISAAC ; $22 + const OW_GIRL2 ; $23 + const OW_HOOD1 ; $24 + const OW_HOOD2 ; $25 + const OW_MURRAY ; $26 + const OW_YOUNGSTER3 ; $27 + const OW_LAD2 ; $28 + const OW_GIRL3 ; $29 + const OW_COURTNEY ; $2a + const OW_STEVE1 ; $2b + const OW_JACK ; $2c + const OW_ROD ; $2d + const OW_UNK_2E ; $2e + const OW_UNK_2F ; $2f + const OW_UNK_30 ; $30 + const OW_UNK_31 ; $31 + const OW_UNK_32 ; $32 + const OW_GRYOUNGSTER1 ; $33 + const OW_UNK_34 ; $34 + const OW_UNK_35 ; $35 + const OW_UNK_36 ; $36 + const OW_UNK_37 ; $37 + const OW_GRLASS1 ; $38 + const OW_UNK_39 ; $39 + const OW_UNK_3A ; $3a + const OW_UNK_3B ; $3b + const OW_GRGRANNY1 ; $3c + const OW_UNK_3D ; $3d + const OW_UNK_3E ; $3e + const OW_UNK_3F ; $3f + const OW_UNK_40 ; $40 + const OW_UNK_41 ; $41 + const OW_SPECS2 ; $42 + const OW_UNK_43 ; $43 + const OW_JOSHUA2 ; $44 + const OW_UNK_45 ; $45 + const OW_UNK_46 ; $46 + const OW_UNK_47 ; $47 + const OW_UNK_48 ; $48 + const OW_UNK_49 ; $49 + const OW_GAL1 ; $4a + const OW_UNK_4B ; $4b + const OW_UNK_4C ; $4c + const OW_UNK_4D ; $4d + const OW_UNK_4E ; $4e + const OW_UNK_4F ; $4f + const OW_UNK_50 ; $50 + const OW_UNK_51 ; $51 + const OW_UNK_52 ; $52 + const OW_UNK_53 ; $53 + const OW_UNK_54 ; $54 + const OW_UNK_55 ; $55 + const OW_UNK_56 ; $56 + const OW_STEVE2 ; $57 + const OW_UNK_58 ; $58 + const OW_STEVE3 ; $59 + const OW_UNK_5A ; $5a + const OW_UNK_5B ; $5b + const OW_STEVE4 ; $5c + const OW_UNK_5D ; $5d + const OW_UNK_5E ; $5e + const OW_UNK_5F ; $5f + const OW_UNK_60 ; $60 + const OW_UNK_61 ; $61 + const OW_UNK_62 ; $62 + const OW_UNK_63 ; $63 + const OW_CLERK1 ; $64 + const OW_CLERK2 ; $65 + const OW_GRCLERK1 ; $66 + const OW_GRCLERK2 ; $67 + const OW_GRCLERK3 ; $68 + const OW_GRCLERK4 ; $69 + const OW_LASS4 ; $6a + const OW_WOMAN ; $6b + const OW_CHAP1 ; $6c + const OW_LAD3 ; $6d + const OW_PAPPY2 ; $6e + const OW_SPECS3 ; $6f + const OW_LAD4 ; $70 + const OW_GIRL4 ; $71 + const OW_GRANNY ; $72 + const OW_LASS5 ; $73 + const OW_GIRL5 ; $74 + const OW_MAN2 ; $75 + const OW_LAD5 ; $76 + const OW_SPECS4 ; $77 + const OW_TECH6 ; $78 + const OW_PAPPY3 ; $79 + const OW_LASS6 ; $7a + const OW_LASS7 ; $7b + const OW_HOOD3 ; $7c + const OW_MANIA4 ; $7d + const OW_GAL2 ; $7e + const OW_LASS8 ; $7f + const OW_HOOD4 ; $80 + const OW_LASS9 ; $81 + const OW_CHAP2 ; $82 + const OW_SPECS5 ; $83 + const OW_LASS10 ; $84 + const OW_LAD6 ; $85 + const OW_GRLASS2 ; $86 + const OW_GRCLERK5 ; $87 + const OW_GRGAL1 ; $88 + const OW_MANIA5 ; $89 + const OW_CLERK3 ; $8a + const OW_CHAP3 ; $8b + const OW_GAL3 ; $8c + const OW_HOOD5 ; $8d + const OW_MAN3 ; $8e + const OW_PAPPY4 ; $8f + const OW_TECH7 ; $90 + const OW_GIRL6 ; $91 + const OW_LASS11 ; $92 + const OW_LASS12 ; $93 + const OW_GRCLERK6 ; $94 + const OW_UNK_95 ; $95 + const OW_GRLASS3 ; $96 + const OW_GRCLERK7 ; $97 + const OW_GRYOUNGSTER2 ; $98 + const OW_UNK_99 ; $99 + const OW_GRLASS4 ; $9a + const OW_GRCLERK8 ; $9b + const OW_GRWOMAN1 ; $9c + const OW_BUTCH1 ; $9d + const OW_CHAP4 ; $9e + const OW_GRCLERK9 ; $9f + const OW_YOUNGSTER4 ; $a0 + const OW_GRCLERK10 ; $a1 + const OW_GRGRANNY2 ; $a2 + const OW_GRGAL2 ; $a3 + const OW_GRCLERK11 ; $a4 + const OW_GRCLERK12 ; $a5 + const OW_MANIA6 ; $a6 + const OW_GRLASS5 ; $a7 + const OW_GRCLERK13 ; $a8 + const OW_TECH8 ; $a9 + const OW_GRLASS6 ; $aa + const OW_UNK_AB ; $ab + const OW_UNK_AC ; $ac + const OW_UNK_AD ; $ad + const OW_UNK_AE ; $ae + const OW_UNK_AF ; $af + const OW_LASS13 ; $b0 + const OW_IMAKUNI2 ; $b1 + const OW_BUTCH2 ; $b2 + const OW_TECH9 ; $b3 + const OW_TECH10 ; $b4 + const OW_TECH11 ; $b5 + const OW_TECH12 ; $b6 + const OW_TECH13 ; $b7 + const OW_TECH14 ; $b8 + const OW_TECH15 ; $b9 + const OW_TECH16 ; $ba + const OW_TECH17 ; $bb + const OW_GRCLERK14 ; $bc + const OW_GRCLERK15 ; $bd + const OW_GRCLERK16 ; $be + const OW_GRCLERK17 ; $bf + const OW_UNK_C0 ; $c0 + const OW_UNK_C1 ; $c1 + const OW_UNK_C2 ; $c2 + const OW_UNK_C3 ; $c3 + const OW_UNK_C4 ; $c4 + const OW_UNK_C5 ; $c5 + const OW_UNK_C6 ; $c6 + const OW_UNK_C7 ; $c7 + const OW_UNK_C8 ; $c8 + const OW_UNK_C9 ; $c9 + const OW_UNK_CA ; $ca + const OW_UNK_CB ; $cb + const OW_UNK_CC ; $cc + const OW_UNK_CD ; $cd + const OW_UNK_CE ; $ce + const OW_UNK_CF ; $cf + const OW_GRSHIPBEAM ; $d0 + const OW_GRSHIP ; $d1 + const OW_UNK_D2 ; $d2 + const OW_GRYOUNGSTER3 ; $d3 + const OW_GRLASS7 ; $d4 + const OW_GRLASS8 ; $d5 + const OW_YOUNGSTER5 ; $d6 + const OW_SWIMMER ; $d7 + const OW_GRGAL3 ; $d8 + const OW_BUTCH3 ; $d9 + const OW_MANIA7 ; $da + const OW_UNK_DB ; $db + const OW_GRWOMAN2 ; $dc + const OW_GRGAL4 ; $dd + const OW_GRCLERK18 ; $de + const OW_UNK_DF ; $df + const OW_GRWOMAN3 ; $e0 + const OW_UNK_E1 ; $e1 + const OW_LASS14 ; $e2 + const OW_LASS15 ; $e3 + const OW_UNK_E4 ; $e4 + const OW_UNK_E5 ; $e5 + const OW_UNK_E6 ; $e6 + const OW_UNK_E7 ; $e7 + const OW_UNK_E8 ; $e8 + +; OW sprites represent what graphics +; are associated with an OW object + const_def + const OWSPRITE_PLAYERM ; $00 + const OWSPRITE_PLAYERF ; $01 + const OWSPRITE_DRMASON ; $02 + const OWSPRITE_RONALD ; $03 + const OWSPRITE_ISHIHARA ; $04 + const OWSPRITE_IMAKUNI1 ; $05 + const OWSPRITE_IMAKUNI2 ; $06 + const OWSPRITE_ISAAC ; $07 + const OWSPRITE_MURRAY ; $08 + const OWSPRITE_GENE ; $09 + const OWSPRITE_MITCH ; $0a + const OWSPRITE_NIKKI ; $0b + const OWSPRITE_RICK ; $0c + const OWSPRITE_AMY1 ; $0d + const OWSPRITE_AMY2 ; $0e + const OWSPRITE_SARA ; $0f + const OWSPRITE_AMANDA ; $10 + const OWSPRITE_KEN ; $11 + const OWSPRITE_COURTNEY ; $12 + const OWSPRITE_STEVE1 ; $13 + const OWSPRITE_JACK ; $14 + const OWSPRITE_ROD ; $15 + const OWSPRITE_STEVE2 ; $16 + const OWSPRITE_17 ; $17 + const OWSPRITE_STEVE3 ; $18 + const OWSPRITE_19 ; $19 + const OWSPRITE_1A ; $1a + const OWSPRITE_STEVE4 ; $1b + const OWSPRITE_1C ; $1c + const OWSPRITE_1D ; $1d + const OWSPRITE_1E ; $1e + const OWSPRITE_1F ; $1f + const OWSPRITE_20 ; $20 + const OWSPRITE_21 ; $21 + const OWSPRITE_22 ; $22 + const OWSPRITE_23 ; $23 + const OWSPRITE_24 ; $24 + const OWSPRITE_25 ; $25 + const OWSPRITE_26 ; $26 + const OWSPRITE_27 ; $27 + const OWSPRITE_28 ; $28 + const OWSPRITE_29 ; $29 + const OWSPRITE_2A ; $2a + const OWSPRITE_2B ; $2b + const OWSPRITE_2C ; $2c + const OWSPRITE_2D ; $2d + const OWSPRITE_2E ; $2e + const OWSPRITE_2F ; $2f + const OWSPRITE_30 ; $30 + const OWSPRITE_31 ; $31 + const OWSPRITE_32 ; $32 + const OWSPRITE_33 ; $33 + const OWSPRITE_34 ; $34 + const OWSPRITE_35 ; $35 + const OWSPRITE_36 ; $36 + const OWSPRITE_37 ; $37 + const OWSPRITE_38 ; $38 + const OWSPRITE_39 ; $39 + const OWSPRITE_3A ; $3a + const OWSPRITE_3B ; $3b + const OWSPRITE_3C ; $3c + const OWSPRITE_3D ; $3d + const OWSPRITE_3E ; $3e + const OWSPRITE_3F ; $3f + const OWSPRITE_40 ; $40 + const OWSPRITE_41 ; $41 + const OWSPRITE_YOUNGSTER ; $42 + const OWSPRITE_LAD ; $43 + const OWSPRITE_SPECS ; $44 + const OWSPRITE_BUTCH ; $45 + const OWSPRITE_MANIA ; $46 + const OWSPRITE_JOSHUA ; $47 + const OWSPRITE_HOOD ; $48 + const OWSPRITE_TECH ; $49 + const OWSPRITE_CHAP ; $4a + const OWSPRITE_MAN ; $4b + const OWSPRITE_PAPPY ; $4c + const OWSPRITE_4D ; $4d + const OWSPRITE_GRYOUNGSTER ; $4e + const OWSPRITE_4F ; $4f + const OWSPRITE_50 ; $50 + const OWSPRITE_51 ; $51 + const OWSPRITE_52 ; $52 + const OWSPRITE_53 ; $53 + const OWSPRITE_GIRL ; $54 + const OWSPRITE_LASS1 ; $55 + const OWSPRITE_LASS2 ; $56 + const OWSPRITE_LASS3 ; $57 + const OWSPRITE_SWIMMER ; $58 + const OWSPRITE_GAL ; $59 + const OWSPRITE_WOMAN ; $5a + const OWSPRITE_GRANNY ; $5b + const OWSPRITE_5C ; $5c + const OWSPRITE_GRLASS1 ; $5d + const OWSPRITE_GRGAL ; $5e + const OWSPRITE_GRWOMAN ; $5f + const OWSPRITE_GRGRANNY ; $60 + const OWSPRITE_61 ; $61 + const OWSPRITE_62 ; $62 + const OWSPRITE_CLERK ; $63 + const OWSPRITE_GRCLERK ; $64 + const OWSPRITE_65 ; $65 + const OWSPRITE_66 ; $66 + const OWSPRITE_67 ; $67 + const OWSPRITE_68 ; $68 + const OWSPRITE_GRSHIP ; $69 + const OWSPRITE_GRSHIPBEAM ; $6a + const OWSPRITE_6B ; $6b + const OWSPRITE_6C ; $6c + const OWSPRITE_6D ; $6d + const OWSPRITE_6E ; $6e + const OWSPRITE_6F ; $6f + const OWSPRITE_70 ; $70 + const OWSPRITE_71 ; $71 + const OWSPRITE_72 ; $72 + const OWSPRITE_73 ; $73 + const OWSPRITE_74 ; $74 + const OWSPRITE_75 ; $75 + const OWSPRITE_76 ; $76 + const OWSPRITE_77 ; $77 + const OWSPRITE_78 ; $78 + + const_def + const OWFRAMEGROUP_00 ; $00 + const OWFRAMEGROUP_01 ; $01 + const OWFRAMEGROUP_02 ; $02 + const OWFRAMEGROUP_03 ; $03 + const OWFRAMEGROUP_04 ; $04 + const OWFRAMEGROUP_05 ; $05 + const OWFRAMEGROUP_06 ; $06 + const OWFRAMEGROUP_07 ; $07 + const OWFRAMEGROUP_08 ; $08 + const OWFRAMEGROUP_09 ; $09 + const OWFRAMEGROUP_0A ; $0a + const OWFRAMEGROUP_0B ; $0b + const OWFRAMEGROUP_0C ; $0c + const OWFRAMEGROUP_0D ; $0d + const OWFRAMEGROUP_0E ; $0e + const OWFRAMEGROUP_0F ; $0f + const OWFRAMEGROUP_10 ; $10 + const OWFRAMEGROUP_11 ; $11 + const OWFRAMEGROUP_12 ; $12 + const OWFRAMEGROUP_13 ; $13 + const OWFRAMEGROUP_14 ; $14 + const OWFRAMEGROUP_15 ; $15 + const OWFRAMEGROUP_16 ; $16 + const OWFRAMEGROUP_17 ; $17 + const OWFRAMEGROUP_18 ; $18 + const OWFRAMEGROUP_19 ; $19 + const OWFRAMEGROUP_1A ; $1a + const OWFRAMEGROUP_1B ; $1b + const OWFRAMEGROUP_1C ; $1c + const OWFRAMEGROUP_1D ; $1d + const OWFRAMEGROUP_1E ; $1e + const OWFRAMEGROUP_1F ; $1f + const OWFRAMEGROUP_20 ; $20 + const OWFRAMEGROUP_21 ; $21 + const OWFRAMEGROUP_22 ; $22 + const OWFRAMEGROUP_23 ; $23 + const OWFRAMEGROUP_24 ; $24 + const OWFRAMEGROUP_25 ; $25 + const OWFRAMEGROUP_26 ; $26 + const OWFRAMEGROUP_27 ; $27 + const OWFRAMEGROUP_28 ; $28 + const OWFRAMEGROUP_29 ; $29 + const OWFRAMEGROUP_2A ; $2a + const OWFRAMEGROUP_2B ; $2b + const OWFRAMEGROUP_2C ; $2c + const OWFRAMEGROUP_2D ; $2d + const OWFRAMEGROUP_2E ; $2e + const OWFRAMEGROUP_2F ; $2f + const OWFRAMEGROUP_30 ; $30 + const OWFRAMEGROUP_31 ; $31 + const OWFRAMEGROUP_32 ; $32 + const OWFRAMEGROUP_33 ; $33 + +DEF MAX_NUM_OW_OBJECTS EQU 10 + +RSRESET +OWOBJSTRUCT_FLAGS RB ; $0 +OWOBJSTRUCT_ID RB ; $1 +OWOBJSTRUCT_ANIM_PTR RW ; $2 +OWOBJSTRUCT_4 RB ; $4 +OWOBJSTRUCT_5 RB ; $5 +OWOBJSTRUCT_6 RW ; $6 +DEF OWOBJSTRUCT_LENGTH EQU _RS + +; OWOBJSTRUCT_FLAGS bit flags + const_def 7 + const ACTIVE_OBJ_F ; 7 + +ACTIVE_OBJ EQU 1 << ACTIVE_OBJ_F diff --git a/src/constants/portrait_constants.asm b/src/constants/portrait_constants.asm new file mode 100644 index 0000000..665cd40 --- /dev/null +++ b/src/constants/portrait_constants.asm @@ -0,0 +1,103 @@ + const_def + const PORTRAIT_00 ; $00 + const PORTRAIT_01 ; $01 + const PORTRAIT_02 ; $02 + const PORTRAIT_03 ; $03 + const PORTRAIT_04 ; $04 + const PORTRAIT_05 ; $05 + const PORTRAIT_06 ; $06 + const PORTRAIT_07 ; $07 + const PORTRAIT_08 ; $08 + const PORTRAIT_09 ; $09 + const PORTRAIT_0A ; $0a + const PORTRAIT_0B ; $0b + const PORTRAIT_0C ; $0c + const PORTRAIT_0D ; $0d + const PORTRAIT_0E ; $0e + const PORTRAIT_0F ; $0f + const PORTRAIT_10 ; $10 + const PORTRAIT_11 ; $11 + const PORTRAIT_12 ; $12 + const PORTRAIT_13 ; $13 + const PORTRAIT_14 ; $14 + const PORTRAIT_15 ; $15 + const PORTRAIT_16 ; $16 + const PORTRAIT_17 ; $17 + const PORTRAIT_18 ; $18 + const PORTRAIT_19 ; $19 + const PORTRAIT_1A ; $1a + const PORTRAIT_1B ; $1b + const PORTRAIT_1C ; $1c + const PORTRAIT_1D ; $1d + const PORTRAIT_1E ; $1e + const PORTRAIT_1F ; $1f + const PORTRAIT_20 ; $20 + const PORTRAIT_21 ; $21 + const PORTRAIT_22 ; $22 + const PORTRAIT_23 ; $23 + const PORTRAIT_24 ; $24 + const PORTRAIT_25 ; $25 + const PORTRAIT_26 ; $26 + const PORTRAIT_27 ; $27 + const PORTRAIT_28 ; $28 + const PORTRAIT_29 ; $29 + const PORTRAIT_2A ; $2a + const PORTRAIT_2B ; $2b + const PORTRAIT_2C ; $2c + const PORTRAIT_2D ; $2d + const PORTRAIT_2E ; $2e + const PORTRAIT_2F ; $2f + const PORTRAIT_30 ; $30 + const PORTRAIT_31 ; $31 + const PORTRAIT_32 ; $32 + const PORTRAIT_33 ; $33 + const PORTRAIT_34 ; $34 + const PORTRAIT_35 ; $35 + const PORTRAIT_36 ; $36 + const PORTRAIT_37 ; $37 + const PORTRAIT_38 ; $38 + const PORTRAIT_39 ; $39 + const PORTRAIT_3A ; $3a + const PORTRAIT_3B ; $3b + const PORTRAIT_3C ; $3c + const PORTRAIT_3D ; $3d + const PORTRAIT_3E ; $3e + const PORTRAIT_3F ; $3f + const PORTRAIT_40 ; $40 + const PORTRAIT_41 ; $41 + const PORTRAIT_42 ; $42 + const PORTRAIT_43 ; $43 + const PORTRAIT_44 ; $44 + const PORTRAIT_45 ; $45 + const PORTRAIT_46 ; $46 + const PORTRAIT_47 ; $47 + const PORTRAIT_48 ; $48 + const PORTRAIT_49 ; $49 + const PORTRAIT_4A ; $4a + const PORTRAIT_4B ; $4b + const PORTRAIT_4C ; $4c + const PORTRAIT_4D ; $4d + const PORTRAIT_4E ; $4e + const PORTRAIT_4F ; $4f + const PORTRAIT_50 ; $50 + const PORTRAIT_51 ; $51 + const PORTRAIT_52 ; $52 + const PORTRAIT_53 ; $53 + const PORTRAIT_54 ; $54 + const PORTRAIT_55 ; $55 + const PORTRAIT_56 ; $56 + const PORTRAIT_57 ; $57 + const PORTRAIT_58 ; $58 + const PORTRAIT_59 ; $59 + const PORTRAIT_5A ; $5a + const PORTRAIT_5B ; $5b + const PORTRAIT_5C ; $5c + const PORTRAIT_5D ; $5d + const PORTRAIT_5E ; $5e + const PORTRAIT_5F ; $5f + +; each portrait has 3 variants + const_def + const PORTRAITVARIANT_NORMAL ; $0 + const PORTRAITVARIANT_HAPPY ; $1 + const PORTRAITVARIANT_SAD ; $2 diff --git a/src/constants/script_constants.asm b/src/constants/script_constants.asm new file mode 100644 index 0000000..d6433e8 --- /dev/null +++ b/src/constants/script_constants.asm @@ -0,0 +1,256 @@ + const_def + const EVENT_PLAYER_GENDER ; $00 + const EVENT_01 ; $01 + const EVENT_02 ; $02 + const EVENT_03 ; $03 + const EVENT_04 ; $04 + const EVENT_05 ; $05 + const EVENT_06 ; $06 + const EVENT_07 ; $07 + const EVENT_08 ; $08 + const EVENT_09 ; $09 + const EVENT_0A ; $0a + const EVENT_0B ; $0b + const EVENT_0C ; $0c + const EVENT_0D ; $0d + const EVENT_0E ; $0e + const EVENT_0F ; $0f + const EVENT_10 ; $10 + const EVENT_11 ; $11 + const EVENT_12 ; $12 + const EVENT_13 ; $13 + const EVENT_14 ; $14 + const EVENT_15 ; $15 + const EVENT_16 ; $16 + const EVENT_17 ; $17 + const EVENT_18 ; $18 + const EVENT_19 ; $19 + const EVENT_1A ; $1a + const EVENT_1B ; $1b + const EVENT_1C ; $1c + const EVENT_1D ; $1d + const EVENT_1E ; $1e + const EVENT_1F ; $1f + const EVENT_20 ; $20 + const EVENT_21 ; $21 + const EVENT_22 ; $22 + const EVENT_23 ; $23 + const EVENT_24 ; $24 + const EVENT_25 ; $25 + const EVENT_26 ; $26 + const EVENT_27 ; $27 + const EVENT_28 ; $28 + const EVENT_29 ; $29 + const EVENT_2A ; $2a + const EVENT_2B ; $2b + const EVENT_2C ; $2c + const EVENT_2D ; $2d + const EVENT_2E ; $2e + const EVENT_2F ; $2f + const EVENT_30 ; $30 + const EVENT_31 ; $31 + const EVENT_32 ; $32 + const EVENT_33 ; $33 + const EVENT_34 ; $34 + const EVENT_35 ; $35 + const EVENT_36 ; $36 + const EVENT_37 ; $37 + const EVENT_38 ; $38 + const EVENT_39 ; $39 + const EVENT_3A ; $3a + const EVENT_3B ; $3b + const EVENT_3C ; $3c + const EVENT_3D ; $3d + const EVENT_3E ; $3e + const EVENT_3F ; $3f + const EVENT_40 ; $40 + const EVENT_41 ; $41 + const EVENT_42 ; $42 + const EVENT_43 ; $43 + const EVENT_44 ; $44 + const EVENT_45 ; $45 + const EVENT_46 ; $46 + const EVENT_47 ; $47 + const EVENT_48 ; $48 + const EVENT_49 ; $49 + const EVENT_4A ; $4a + const EVENT_4B ; $4b + const EVENT_4C ; $4c + const EVENT_4D ; $4d + const EVENT_4E ; $4e + const EVENT_4F ; $4f + const EVENT_50 ; $50 + const EVENT_51 ; $51 + const EVENT_52 ; $52 + const EVENT_53 ; $53 + const EVENT_54 ; $54 + const EVENT_55 ; $55 + const EVENT_56 ; $56 + const EVENT_57 ; $57 + const EVENT_58 ; $58 + const EVENT_59 ; $59 + const EVENT_5A ; $5a + const EVENT_5B ; $5b + const EVENT_5C ; $5c + const EVENT_5D ; $5d + const EVENT_5E ; $5e + const EVENT_5F ; $5f + const EVENT_60 ; $60 + const EVENT_61 ; $61 + const EVENT_62 ; $62 + const EVENT_63 ; $63 + const EVENT_64 ; $64 + const EVENT_65 ; $65 + const EVENT_66 ; $66 + const EVENT_67 ; $67 + const EVENT_68 ; $68 + const EVENT_69 ; $69 + const EVENT_6A ; $6a + const EVENT_6B ; $6b + const EVENT_6C ; $6c + const EVENT_6D ; $6d + const EVENT_6E ; $6e + const EVENT_6F ; $6f + const EVENT_70 ; $70 + const EVENT_71 ; $71 + const EVENT_72 ; $72 + const EVENT_73 ; $73 + const EVENT_74 ; $74 + const EVENT_75 ; $75 + const EVENT_76 ; $76 + const EVENT_77 ; $77 + const EVENT_78 ; $78 + const EVENT_79 ; $79 + const EVENT_7A ; $7a + const EVENT_7B ; $7b + const EVENT_7C ; $7c + const EVENT_7D ; $7d + const EVENT_7E ; $7e + const EVENT_7F ; $7f + const EVENT_80 ; $80 + const EVENT_81 ; $81 + const EVENT_82 ; $82 + const EVENT_83 ; $83 + const EVENT_84 ; $84 + const EVENT_85 ; $85 + const EVENT_86 ; $86 + const EVENT_87 ; $87 + const EVENT_88 ; $88 + const EVENT_89 ; $89 + const EVENT_8A ; $8a + const EVENT_8B ; $8b + const EVENT_8C ; $8c + const EVENT_8D ; $8d + const EVENT_8E ; $8e + const EVENT_8F ; $8f + const EVENT_90 ; $90 + const EVENT_91 ; $91 + const EVENT_92 ; $92 + const EVENT_93 ; $93 + const EVENT_94 ; $94 + const EVENT_95 ; $95 + const EVENT_96 ; $96 + const EVENT_97 ; $97 + const EVENT_98 ; $98 + const EVENT_99 ; $99 + const EVENT_9A ; $9a + const EVENT_9B ; $9b + const EVENT_9C ; $9c + const EVENT_9D ; $9d + const EVENT_9E ; $9e + const EVENT_9F ; $9f + const EVENT_A0 ; $a0 + const EVENT_A1 ; $a1 + const EVENT_A2 ; $a2 + const EVENT_A3 ; $a3 + const EVENT_A4 ; $a4 + const EVENT_A5 ; $a5 + const EVENT_A6 ; $a6 + const EVENT_A7 ; $a7 + const EVENT_A8 ; $a8 + const EVENT_A9 ; $a9 + const EVENT_AA ; $aa + const EVENT_AB ; $ab + const EVENT_AC ; $ac + const EVENT_AD ; $ad + const EVENT_AE ; $ae + const EVENT_AF ; $af + const EVENT_B0 ; $b0 + const EVENT_B1 ; $b1 + const EVENT_B2 ; $b2 + const EVENT_B3 ; $b3 + const EVENT_B4 ; $b4 + const EVENT_B5 ; $b5 + const EVENT_B6 ; $b6 + const EVENT_B7 ; $b7 + const EVENT_B8 ; $b8 + const EVENT_B9 ; $b9 + const EVENT_BA ; $ba + const EVENT_BB ; $bb + const EVENT_BC ; $bc + const EVENT_BD ; $bd + const EVENT_BE ; $be + const EVENT_BF ; $bf + const EVENT_C0 ; $c0 + const EVENT_C1 ; $c1 + const EVENT_C2 ; $c2 + const EVENT_C3 ; $c3 + const EVENT_C4 ; $c4 + const EVENT_C5 ; $c5 + const EVENT_C6 ; $c6 + const EVENT_C7 ; $c7 + const EVENT_C8 ; $c8 + const EVENT_C9 ; $c9 + const EVENT_CA ; $ca + const EVENT_CB ; $cb + const EVENT_CC ; $cc + const EVENT_CD ; $cd + const EVENT_CE ; $ce + const EVENT_CF ; $cf + const EVENT_D0 ; $d0 + const EVENT_D1 ; $d1 + const EVENT_D2 ; $d2 + const EVENT_D3 ; $d3 + const EVENT_D4 ; $d4 + const EVENT_D5 ; $d5 + const EVENT_D6 ; $d6 + const EVENT_D7 ; $d7 + const EVENT_D8 ; $d8 + const EVENT_D9 ; $d9 + const EVENT_DA ; $da + const EVENT_DB ; $db + const EVENT_DC ; $dc + const EVENT_DD ; $dd + const EVENT_DE ; $de + const EVENT_DF ; $df + const EVENT_E0 ; $e0 + const EVENT_E1 ; $e1 + const EVENT_E2 ; $e2 + const EVENT_E3 ; $e3 + const EVENT_E4 ; $e4 + const EVENT_E5 ; $e5 + const EVENT_E6 ; $e6 + const EVENT_E7 ; $e7 + const EVENT_E8 ; $e8 + const EVENT_E9 ; $e9 + const EVENT_EA ; $ea + const EVENT_EB ; $eb + const EVENT_EC ; $ec + const EVENT_ED ; $ed + const EVENT_EE ; $ee + const EVENT_EF ; $ef + const EVENT_F0 ; $f0 + const EVENT_F1 ; $f1 + const EVENT_F2 ; $f2 + const EVENT_F3 ; $f3 + const EVENT_F4 ; $f4 + const EVENT_F5 ; $f5 +DEF NUM_EVENT_FLAGS EQU const_value + +DEF PLAYER_MALE EQU $0 +DEF PLAYER_FEMALE EQU $1 + +DEF NORTH EQU $00 +DEF EAST EQU $01 +DEF SOUTH EQU $02 +DEF WEST EQU $03 diff --git a/src/constants/sfx_constants.asm b/src/constants/sfx_constants.asm new file mode 100644 index 0000000..fbf6ed4 --- /dev/null +++ b/src/constants/sfx_constants.asm @@ -0,0 +1,251 @@ + const_def + const SFX_STOP ; $00 + const SFX_01 ; $01 + const SFX_02 ; $02 + const SFX_03 ; $03 + const SFX_04 ; $04 + const SFX_05 ; $05 + const SFX_06 ; $06 + const SFX_07 ; $07 + const SFX_08 ; $08 + const SFX_09 ; $09 + const SFX_0A ; $0a + const SFX_0B ; $0b + const SFX_0C ; $0c + const SFX_0D ; $0d + const SFX_0E ; $0e + const SFX_0F ; $0f + const SFX_10 ; $10 + const SFX_11 ; $11 + const SFX_12 ; $12 + const SFX_13 ; $13 + const SFX_14 ; $14 + const SFX_15 ; $15 + const SFX_16 ; $16 + const SFX_17 ; $17 + const SFX_18 ; $18 + const SFX_19 ; $19 + const SFX_1A ; $1a + const SFX_1B ; $1b + const SFX_1C ; $1c + const SFX_1D ; $1d + const SFX_1E ; $1e + const SFX_1F ; $1f + const SFX_20 ; $20 + const SFX_21 ; $21 + const SFX_22 ; $22 + const SFX_23 ; $23 + const SFX_24 ; $24 + const SFX_25 ; $25 + const SFX_26 ; $26 + const SFX_27 ; $27 + const SFX_28 ; $28 + const SFX_29 ; $29 + const SFX_2A ; $2a + const SFX_2B ; $2b + const SFX_2C ; $2c + const SFX_2D ; $2d + const SFX_2E ; $2e + const SFX_2F ; $2f + const SFX_30 ; $30 + const SFX_31 ; $31 + const SFX_32 ; $32 + const SFX_33 ; $33 + const SFX_34 ; $34 + const SFX_35 ; $35 + const SFX_36 ; $36 + const SFX_37 ; $37 + const SFX_38 ; $38 + const SFX_39 ; $39 + const SFX_3A ; $3a + const SFX_3B ; $3b + const SFX_3C ; $3c + const SFX_3D ; $3d + const SFX_3E ; $3e + const SFX_3F ; $3f + const SFX_40 ; $40 + const SFX_41 ; $41 + const SFX_42 ; $42 + const SFX_43 ; $43 + const SFX_44 ; $44 + const SFX_45 ; $45 + const SFX_46 ; $46 + const SFX_47 ; $47 + const SFX_48 ; $48 + const SFX_49 ; $49 + const SFX_4A ; $4a + const SFX_4B ; $4b + const SFX_4C ; $4c + const SFX_4D ; $4d + const SFX_4E ; $4e + const SFX_4F ; $4f + const SFX_50 ; $50 + const SFX_51 ; $51 + const SFX_52 ; $52 + const SFX_53 ; $53 + const SFX_54 ; $54 + const SFX_55 ; $55 + const SFX_56 ; $56 + const SFX_57 ; $57 + const SFX_58 ; $58 + const SFX_59 ; $59 + const SFX_5A ; $5a + const SFX_5B ; $5b + const SFX_5C ; $5c + const SFX_5D ; $5d + const SFX_5E ; $5e + const SFX_5F ; $5f + const SFX_60 ; $60 + const SFX_61 ; $61 + const SFX_62 ; $62 + const SFX_63 ; $63 + const SFX_64 ; $64 + const SFX_65 ; $65 + const SFX_66 ; $66 + const SFX_67 ; $67 + const SFX_68 ; $68 + const SFX_69 ; $69 + const SFX_6A ; $6a + const SFX_6B ; $6b + const SFX_6C ; $6c + const SFX_6D ; $6d + const SFX_6E ; $6e + const SFX_6F ; $6f + const SFX_70 ; $70 + const SFX_71 ; $71 + const SFX_72 ; $72 + const SFX_73 ; $73 + const SFX_74 ; $74 + const SFX_75 ; $75 + const SFX_76 ; $76 + const SFX_77 ; $77 + const SFX_78 ; $78 + const SFX_79 ; $79 + const SFX_7A ; $7a + const SFX_7B ; $7b + const SFX_7C ; $7c + const SFX_7D ; $7d + const SFX_7E ; $7e + const SFX_7F ; $7f + const SFX_80 ; $80 + const SFX_81 ; $81 + const SFX_82 ; $82 + const SFX_83 ; $83 + const SFX_84 ; $84 + const SFX_85 ; $85 + const SFX_86 ; $86 + const SFX_87 ; $87 + const SFX_88 ; $88 + const SFX_89 ; $89 + const SFX_8A ; $8a + const SFX_8B ; $8b + const SFX_8C ; $8c + const SFX_8D ; $8d + const SFX_8E ; $8e + const SFX_8F ; $8f + const SFX_90 ; $90 + const SFX_91 ; $91 + const SFX_92 ; $92 + const SFX_93 ; $93 + const SFX_94 ; $94 + const SFX_95 ; $95 + const SFX_96 ; $96 + const SFX_97 ; $97 + const SFX_98 ; $98 + const SFX_99 ; $99 + const SFX_9A ; $9a + const SFX_9B ; $9b + const SFX_9C ; $9c + const SFX_9D ; $9d + const SFX_9E ; $9e + const SFX_9F ; $9f + const SFX_A0 ; $a0 + const SFX_A1 ; $a1 + const SFX_A2 ; $a2 + const SFX_A3 ; $a3 + const SFX_A4 ; $a4 + const SFX_A5 ; $a5 + const SFX_A6 ; $a6 + const SFX_A7 ; $a7 + const SFX_A8 ; $a8 + const SFX_A9 ; $a9 + const SFX_AA ; $aa + const SFX_AB ; $ab + const SFX_AC ; $ac + const SFX_AD ; $ad + const SFX_AE ; $ae + const SFX_AF ; $af + const SFX_B0 ; $b0 + const SFX_B1 ; $b1 + const SFX_B2 ; $b2 + const SFX_B3 ; $b3 + const SFX_B4 ; $b4 + const SFX_B5 ; $b5 + const SFX_B6 ; $b6 + const SFX_B7 ; $b7 + const SFX_B8 ; $b8 + const SFX_B9 ; $b9 + const SFX_BA ; $ba + const SFX_BB ; $bb + const SFX_BC ; $bc + const SFX_BD ; $bd + const SFX_BE ; $be + const SFX_BF ; $bf + const SFX_C0 ; $c0 + const SFX_C1 ; $c1 + const SFX_C2 ; $c2 + const SFX_C3 ; $c3 + const SFX_C4 ; $c4 + const SFX_C5 ; $c5 + const SFX_C6 ; $c6 + const SFX_C7 ; $c7 + const SFX_C8 ; $c8 + const SFX_C9 ; $c9 + const SFX_CA ; $ca + const SFX_CB ; $cb + const SFX_CC ; $cc + const SFX_CD ; $cd + const SFX_CE ; $ce + const SFX_CF ; $cf + const SFX_D0 ; $d0 + const SFX_D1 ; $d1 + const SFX_D2 ; $d2 + const SFX_D3 ; $d3 + const SFX_D4 ; $d4 + const SFX_D5 ; $d5 + const SFX_D6 ; $d6 + const SFX_D7 ; $d7 + const SFX_D8 ; $d8 + const SFX_D9 ; $d9 + const SFX_DA ; $da + const SFX_DB ; $db + const SFX_DC ; $dc + const SFX_DD ; $dd + const SFX_DE ; $de + const SFX_DF ; $df + const SFX_E0 ; $e0 + const SFX_E1 ; $e1 + const SFX_E2 ; $e2 + const SFX_E3 ; $e3 + const SFX_E4 ; $e4 + const SFX_E5 ; $e5 + const SFX_E6 ; $e6 + const SFX_E7 ; $e7 + const SFX_E8 ; $e8 + const SFX_E9 ; $e9 + const SFX_EA ; $ea + const SFX_EB ; $eb + const SFX_EC ; $ec + const SFX_ED ; $ed + const SFX_EE ; $ee + const SFX_EF ; $ef + const SFX_F0 ; $f0 + const SFX_F1 ; $f1 + const SFX_F2 ; $f2 + const SFX_F3 ; $f3 + const SFX_F4 ; $f4 + const SFX_F5 ; $f5 + const SFX_F6 ; $f6 + const SFX_F7 ; $f7 + +DEF NUM_SFX EQU const_value diff --git a/src/constants/sprite_anim_constants.asm b/src/constants/sprite_anim_constants.asm index 208ab52..a2c4ad1 100644 --- a/src/constants/sprite_anim_constants.asm +++ b/src/constants/sprite_anim_constants.asm @@ -1,35 +1,35 @@ DEF NUM_SPRITE_ANIM_STRUCTS EQU 10 RSRESET -SPRITEANIMSTRUCT_FLAGS RB ; $0 -SPRITEANIMSTRUCT_1 RB ; $1 -SPRITEANIMSTRUCT_2 RB ; $2 -SPRITEANIMSTRUCT_X_POS RB ; $3 -SPRITEANIMSTRUCT_Y_POS RB ; $4 +SPRITEANIMSTRUCT_FLAGS RB ; $0 +SPRITEANIMSTRUCT_1 RB ; $1 +SPRITEANIMSTRUCT_2 RB ; $2 +SPRITEANIMSTRUCT_X_POS RB ; $3 +SPRITEANIMSTRUCT_Y_POS RB ; $4 SPRITEANIMSTRUCT_FRAME_INDEX RB ; $5 SPRITEANIMSTRUCT_FRAMESET_ID RW ; $6 -SPRITEANIMSTRUCT_FRAME_DURATION RB ; $8 +SPRITEANIMSTRUCT_FRAME_DURATION RB ; $8 SPRITEANIMSTRUCT_TILE_OFFSET RB ; $9 -SPRITEANIMSTRUCT_ANIM_ID RW ; $a -SPRITEANIMSTRUCT_C RB ; $c +SPRITEANIMSTRUCT_ANIM_ID RW ; $a +SPRITEANIMSTRUCT_C RB ; $c SPRITEANIMSTRUCT_START_DELAY RB ; $d -SPRITEANIMSTRUCT_E RW ; $e +SPRITEANIMSTRUCT_OW_FRAMEGROUP RW ; $e DEF SPRITEANIMSTRUCT_LENGTH EQU _RS ; flags for SPRITEANIMSTRUCT_FLAGS const_def - const SPRITEANIMSTRUCT_SPEED_F ; $0 + const SPRITEANIMSTRUCT_SPEED_F ; 0 const_value = 4 - const SPRITEANIMSTRUCT_ANIMATING_F ; $4 - const SPRITEANIMSTRUCT_MOVE_F ; $5 - const SPRITEANIMSTRUCT_FLAG6_F ; $6 - const SPRITEANIMSTRUCT_ACTIVE_F ; $7 + const SPRITEANIMSTRUCT_ANIMATING_F ; 4 + const SPRITEANIMSTRUCT_MOVE_F ; 5 + const SPRITEANIMSTRUCT_FLAG6_F ; 6 + const SPRITEANIMSTRUCT_ACTIVE_F ; 7 -DEF SPRITEANIMSTRUCT_SPEED EQU (1 << SPRITEANIMSTRUCT_SPEED_F) ; $01 +DEF SPRITEANIMSTRUCT_SPEED EQU (1 << SPRITEANIMSTRUCT_SPEED_F) ; $01 DEF SPRITEANIMSTRUCT_ANIMATING EQU (1 << SPRITEANIMSTRUCT_ANIMATING_F) ; $10 -DEF SPRITEANIMSTRUCT_MOVE EQU (1 << SPRITEANIMSTRUCT_MOVE_F) ; $20 -DEF SPRITEANIMSTRUCT_FLAG6 EQU (1 << SPRITEANIMSTRUCT_FLAG6_F) ; $40 -DEF SPRITEANIMSTRUCT_ACTIVE EQU (1 << SPRITEANIMSTRUCT_ACTIVE_F) ; $80 +DEF SPRITEANIMSTRUCT_MOVE EQU (1 << SPRITEANIMSTRUCT_MOVE_F) ; $20 +DEF SPRITEANIMSTRUCT_FLAG6 EQU (1 << SPRITEANIMSTRUCT_FLAG6_F) ; $40 +DEF SPRITEANIMSTRUCT_ACTIVE EQU (1 << SPRITEANIMSTRUCT_ACTIVE_F) ; $80 ; direction value of animation ; 000 = up diff --git a/src/data/credits.asm b/src/data/credits.asm new file mode 100644 index 0000000..950689c --- /dev/null +++ b/src/data/credits.asm @@ -0,0 +1,604 @@ +INCLUDE "macros/credits_commands.asm" + +Credits: + credits_music_fade_out + credits_stop_music + credits_wait 120 + credits_set_volume 7 + credits_set_music MUSIC_CREDITS + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 60 + + credits_draw_box 0, 0, 20, 18 + credits_show_title + credits_fade_in CREDITS_FADE_ALL, $0f + credits_wait 120 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $0f + credits_wait 120 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_portrait $07, 2, 6, PORTRAITVARIANT_NORMAL + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_show_portrait $07, 2, 6, PORTRAITVARIANT_HAPPY + credits_print_header 7, 2, 2, Text07aa + credits_print_text 10, 6, Text07ab + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_portrait $06, 2, 6, PORTRAITVARIANT_NORMAL + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_show_portrait $06, 2, 6, PORTRAITVARIANT_HAPPY + credits_print_header 7, 2, 2, Text07ac + credits_print_text 10, 8, Text07ad + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_portrait $51, 2, 6, PORTRAITVARIANT_NORMAL + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_show_portrait $51, 2, 6, PORTRAITVARIANT_HAPPY + credits_print_header 4, 2, 2, Text07ae + credits_print_text 10, 8, Text07af + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_portrait $46, 2, 6, PORTRAITVARIANT_HAPPY + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_show_portrait $46, 2, 6, PORTRAITVARIANT_HAPPY + credits_print_header 5, 2, 2, Text07b0 + credits_print_text 10, 8, Text07b1 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_portrait $5e, 2, 6, PORTRAITVARIANT_NORMAL + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 5, 2, 2, Text07b2 + credits_print_text 10, 8, Text07b3 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 18, 6 + credits_show_card 1, 6, PIKACHU_LV13 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 11, 6, Text07b4 + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 20 + credits_draw_box 10, 6, 10, 6 + credits_print_text 11, 8, Text07b5 + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, TOGEPI + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 12, 2, 2, Text07b6 + credits_print_text 10, 8, Text07b7 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 20 + credits_draw_box 10, 6, 10, 6 + credits_print_text 10, 7, Text07b8 + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 1, 6, 8, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_card 1, 6, MARILL + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 6, Text07b9 + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 20 + credits_draw_box 10, 6, 10, 8 + credits_print_text 11, 8, Text07ba + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, JIGGLYPUFF_LV13 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 11, 2, 2, Text07bb + credits_print_text 10, 8, Text07bc + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, WIGGLYTUFF_LV40 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 6, 2, 2, Text07bd + credits_print_text 10, 8, Text07be + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, LAPRAS_LV24 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 11, 2, 2, Text07bf + credits_print_text 12, 8, Text07c0 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, DARK_MAROWAK + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 9, 2, 2, Text07c1 + credits_print_text 10, 7, Text07c2 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, ZUBAT_LV10 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 8, 2, 2, Text07c3 + credits_print_text 10, 7, Text07c4 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_portrait $26, 2, 6, PORTRAITVARIANT_NORMAL + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 10, 2, 2, Text07c5 + credits_print_text 10, 8, Text07c6 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 6, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_portrait $5f, 2, 6, PORTRAITVARIANT_HAPPY + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 8, Text07c7 + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 6, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_portrait $0e, 2, 6, PORTRAITVARIANT_NORMAL + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 8, Text07c8 + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, EEVEE_LV9 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 12, 2, 2, Text07c9 + credits_print_text 10, 6, Text07ca + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 8, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_card 1, 6, MEOWTH_LV17 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 6, Text07cb + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 8, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_card 1, 6, DARK_PERSIAN_LV28 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 6, Text07cc + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 8, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_card 1, 6, OMASTAR_LV36 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 6, Text07cd + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 8, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_card 1, 6, DARK_GENGAR + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 6, Text07ce + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 8, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_card 1, 6, DRAGONITE_LV43 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 6, Text07cf + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 150 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_portrait $09, 2, 6, PORTRAITVARIANT_SAD + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 12, 2, 2, Text07d0 + credits_print_text 9, 6, Text07d1 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, DARK_RAICHU + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 6, 2, 2, Text07d2 + credits_print_text 11, 8, Text07d3 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, HERE_COMES_TEAM_ROCKET + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 9, 2, 2, Text07d4 + credits_print_text 10, 7, Text07d5 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_set CREDITS_BASE_SET, 1, 4 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 9, 2, 2, Text07d6 + credits_print_text 10, 9, Text07d7 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_set CREDITS_JUNGLE, 1, 4 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 11, 2, 2, Text07d8 + credits_print_text 10, 9, Text07d9 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_set CREDITS_FOSSIL, 1, 4 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 13, 2, 2, Text07da + credits_print_text 11, 9, Text07db + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_set CREDITS_TEAM_ROCKET, 1, 4 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 10, 2, 2, Text07dc + credits_print_text 11, 7, Text07dd + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, DARK_MAGNETON + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 6, 2, 2, Text07de + credits_print_text 10, 6, Text07df + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 8, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_card 1, 6, DODRIO_LV25 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 11, 7, Text07e0 + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 8, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_card 1, 6, DARK_WEEZING + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 7, Text07e1 + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 8, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_card 1, 6, DUGTRIO_LV40 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 7, Text07e2 + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 8, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_card 1, 6, KANGASKHAN_LV38 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 7, Text07e3 + credits_print_text 10, 10, Text07e4 + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_BACKGROUND_TEXT, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 2, 6, 8, 6 + credits_draw_box 10, 6, 10, 6 + credits_show_card 1, 6, THE_ROCKETS_TRAP + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_text 10, 7, Text07e5 + credits_print_text 10, 8, Text07e6 + credits_print_text 10, 9, Text07e7 + credits_print_text 10, 10, Text07e8 + credits_fade_in CREDITS_FADE_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, DARK_CLEFABLE + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 12, 2, 2, Text07e9 + credits_print_text 10, 8, Text07ea + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, VENUSAUR_LV64 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 8, 2, 2, Text07eb + credits_print_text 11, 8, Text07ec + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, LUGIA + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 14, 2, 2, Text07ed + credits_print_text 10, 8, Text07ee + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_card 1, 6, MEW_LV15 + credits_fade_in CREDITS_FADE_BACKGROUND, $0a + credits_wait 60 + credits_print_header 7, 2, 2, Text07ef + credits_print_text 11, 8, Text07f0 + credits_fade_in CREDITS_FADE_HEADER_TEXT, $05 + credits_wait 30 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_show_companies + credits_fade_in CREDITS_FADE_ALL, $0a + credits_wait 60 + credits_wait 140 + credits_fade_out CREDITS_FADE_ALL, $05 + credits_wait 30 + credits_wait 20 + + credits_draw_box 0, 0, 20, 18 + credits_init_ow + credits_load_map OVERWORLD_MAP + credits_load_tilemap TILEMAP_100, 0, 0 + credits_load_ow_obj OW_PLAYERM, SOUTH, $34, $30 + credits_fade_in CREDITS_FADE_ALL, $0a + credits_wait 60 + credits_draw_box 19, 0, 1, 18 + credits_draw_box 0, 17, 20, 1 + credits_wait 8 + credits_draw_box 18, 0, 1, 17 + credits_draw_box 0, 16, 19, 1 + credits_wait 8 + credits_draw_box 17, 0, 1, 16 + credits_draw_box 0, 15, 18, 1 + credits_wait 4 + credits_draw_box 16, 0, 1, 15 + credits_draw_box 0, 14, 17, 1 + credits_wait 4 + credits_draw_box 0, 0, 1, 14 + credits_draw_box 0, 0, 16, 1 + credits_draw_box 15, 0, 1, 14 + credits_draw_box 0, 13, 16, 1 + credits_wait 2 + credits_draw_box 14, 0, 1, 14 + credits_draw_box 0, 12, 16, 1 + credits_wait 4 + credits_wait 30 + credits_show_tile $03, $10, $0f, $00 + credits_print_text 4, 16, Text07f1 + credits_wait 120 + credits_wait_input A_BUTTON | START + credits_stop_music + credits_fade_out CREDITS_FADE_ALL, $0f + credits_wait 120 + credits_deinit_ow + credits_end diff --git a/src/data/gfx_pointers/gfx_unknown1.asm b/src/data/gfx_pointers/gfx_unknown1.asm deleted file mode 100644 index 455bdfd..0000000 --- a/src/data/gfx_pointers/gfx_unknown1.asm +++ /dev/null @@ -1,91 +0,0 @@ -GfxUnknown1: - dbw $2b, $4000 ; $00 - db $0 - dbw $2b, $4047 ; $01 - db $0 - dbw $2b, $40ac ; $02 - db $0 - dbw $2b, $4139 ; $03 - db $0 - dbw $2b, $41da ; $04 - db $0 - dbw $2b, $41ea ; $05 - db $0 - dbw $2b, $4213 ; $06 - db $0 - dbw $2b, $4273 ; $07 - db $0 - dbw $2b, $4283 ; $08 - db $0 - dbw $2b, $42cf ; $09 - db $0 - dbw $2b, $430c ; $0a - db $0 - dbw $2b, $4335 ; $0b - db $0 - dbw $2b, $4354 ; $0c - db $0 - dbw $2b, $438c ; $0d - db $0 - dbw $2b, $43dd ; $0e - db $0 - dbw $2b, $43f7 ; $0f - db $0 - dbw $13, $7ff9 ; $10 - db $0 - dbw $2b, $4498 ; $11 - db $0 - dbw $2b, $44a3 ; $12 - db $0 - dbw $2b, $44d6 ; $13 - db $0 - dbw $2b, $44ff ; $14 - db $0 - dbw $2b, $4528 ; $15 - db $0 - dbw $2b, $458d ; $16 - db $0 - dbw $2b, $45d4 ; $17 - db $0 - dbw $2b, $464d ; $18 - db $0 - dbw $2b, $46e9 ; $19 - db $0 - dbw $2b, $46fe ; $1a - db $0 - dbw $2b, $4709 ; $1b - db $0 - dbw $2b, $471e ; $1c - db $0 - dbw $2b, $4729 ; $1d - db $0 - dbw $2b, $473e ; $1e - db $0 - dbw $2b, $4753 ; $1f - db $0 - dbw $2b, $4772 ; $20 - db $0 - dbw $2b, $4787 ; $21 - db $0 - dbw $2b, $47a6 ; $22 - db $0 - dbw $2b, $47c5 ; $23 - db $0 - dbw $2b, $47da ; $24 - db $0 - dbw $2b, $47ea ; $25 - db $0 - dbw $2b, $4804 ; $26 - db $0 - dbw $2b, $4832 ; $27 - db $0 - dbw $2b, $485b ; $28 - db $0 - dbw $2b, $4898 ; $29 - db $0 - dbw $2b, $48ad ; $2a - db $0 - dbw $2b, $48e0 ; $2b - db $0 - dbw $00, $0000 ; $2c - db $0 diff --git a/src/data/gfx_pointers/gfx_unknown2.asm b/src/data/gfx_pointers/gfx_unknown2.asm deleted file mode 100644 index f38c018..0000000 --- a/src/data/gfx_pointers/gfx_unknown2.asm +++ /dev/null @@ -1,903 +0,0 @@ -GfxUnknown2: - dbw $2a, $67dc ; $000 - db $0 - dbw $2a, $67ea ; $001 - db $0 - dbw $2a, $67f8 ; $002 - db $0 - dbw $2a, $6806 ; $003 - db $0 - dbw $2a, $6814 ; $004 - db $0 - dbw $2a, $6822 ; $005 - db $0 - dbw $2a, $6830 ; $006 - db $0 - dbw $2a, $683e ; $007 - db $0 - dbw $2a, $684c ; $008 - db $0 - dbw $2a, $685a ; $009 - db $0 - dbw $2a, $6868 ; $00a - db $0 - dbw $2a, $6876 ; $00b - db $0 - dbw $2a, $6884 ; $00c - db $0 - dbw $2a, $6892 ; $00d - db $0 - dbw $2a, $68a0 ; $00e - db $0 - dbw $2a, $68aa ; $00f - db $0 - dbw $2a, $68b4 ; $010 - db $0 - dbw $2a, $68be ; $011 - db $0 - dbw $2a, $68c8 ; $012 - db $0 - dbw $2a, $68d2 ; $013 - db $0 - dbw $2a, $68dc ; $014 - db $0 - dbw $2a, $68e6 ; $015 - db $0 - dbw $2a, $68f0 ; $016 - db $0 - dbw $2a, $68fa ; $017 - db $0 - dbw $2a, $6904 ; $018 - db $0 - dbw $2a, $690e ; $019 - db $0 - dbw $2a, $6918 ; $01a - db $0 - dbw $2a, $6922 ; $01b - db $0 - dbw $2a, $692c ; $01c - db $0 - dbw $2a, $6936 ; $01d - db $0 - dbw $2a, $6940 ; $01e - db $0 - dbw $2a, $694a ; $01f - db $0 - dbw $2a, $6954 ; $020 - db $0 - dbw $2a, $695e ; $021 - db $0 - dbw $2a, $6968 ; $022 - db $0 - dbw $2a, $6976 ; $023 - db $0 - dbw $2a, $6984 ; $024 - db $0 - dbw $2a, $6992 ; $025 - db $0 - dbw $2a, $69a0 ; $026 - db $0 - dbw $2a, $69ae ; $027 - db $0 - dbw $2a, $69bc ; $028 - db $0 - dbw $2a, $69ca ; $029 - db $0 - dbw $2a, $69d8 ; $02a - db $0 - dbw $2a, $69e6 ; $02b - db $0 - dbw $2a, $69f4 ; $02c - db $0 - dbw $2a, $6a02 ; $02d - db $0 - dbw $2a, $6a10 ; $02e - db $0 - dbw $2a, $6a1e ; $02f - db $0 - dbw $2a, $6a2c ; $030 - db $0 - dbw $2a, $6a3a ; $031 - db $0 - dbw $2a, $6a48 ; $032 - db $0 - dbw $2a, $6a56 ; $033 - db $0 - dbw $2a, $6a64 ; $034 - db $0 - dbw $2a, $6a72 ; $035 - db $0 - dbw $2a, $6a80 ; $036 - db $0 - dbw $2a, $6a8e ; $037 - db $0 - dbw $2a, $6a9c ; $038 - db $0 - dbw $2a, $6aaa ; $039 - db $0 - dbw $2a, $6ab8 ; $03a - db $0 - dbw $2a, $6ac6 ; $03b - db $0 - dbw $2a, $6ad4 ; $03c - db $0 - dbw $2a, $6ae2 ; $03d - db $0 - dbw $2a, $6af0 ; $03e - db $0 - dbw $2a, $6afa ; $03f - db $0 - dbw $2a, $6b04 ; $040 - db $0 - dbw $2a, $6b0e ; $041 - db $0 - dbw $2a, $6b18 ; $042 - db $0 - dbw $2a, $6b22 ; $043 - db $0 - dbw $2a, $6b2c ; $044 - db $0 - dbw $2a, $6b36 ; $045 - db $0 - dbw $2a, $6b40 ; $046 - db $0 - dbw $2a, $6b4a ; $047 - db $0 - dbw $2a, $6b54 ; $048 - db $0 - dbw $2a, $6b5e ; $049 - db $0 - dbw $2a, $6b68 ; $04a - db $0 - dbw $2a, $6b72 ; $04b - db $0 - dbw $2a, $6b7c ; $04c - db $0 - dbw $2a, $6b86 ; $04d - db $0 - dbw $2a, $6b90 ; $04e - db $0 - dbw $2a, $6b9a ; $04f - db $0 - dbw $2a, $6ba4 ; $050 - db $0 - dbw $2a, $6bae ; $051 - db $0 - dbw $2a, $6bb8 ; $052 - db $0 - dbw $2a, $6bc2 ; $053 - db $0 - dbw $2a, $6bcc ; $054 - db $0 - dbw $2a, $6bd6 ; $055 - db $0 - dbw $2a, $6be0 ; $056 - db $0 - dbw $2a, $6bea ; $057 - db $0 - dbw $2a, $6bf4 ; $058 - db $0 - dbw $2a, $6bfe ; $059 - db $0 - dbw $2a, $6c08 ; $05a - db $0 - dbw $2a, $6c12 ; $05b - db $0 - dbw $2a, $6c1c ; $05c - db $0 - dbw $2a, $6c26 ; $05d - db $0 - dbw $2a, $6c30 ; $05e - db $0 - dbw $2a, $6c3a ; $05f - db $0 - dbw $2a, $6c44 ; $060 - db $0 - dbw $2a, $6c4e ; $061 - db $0 - dbw $2a, $6c58 ; $062 - db $0 - dbw $2a, $6c62 ; $063 - db $0 - dbw $2a, $6c6c ; $064 - db $0 - dbw $2a, $6c76 ; $065 - db $0 - dbw $2a, $6c80 ; $066 - db $0 - dbw $2a, $6c8a ; $067 - db $0 - dbw $2a, $6c94 ; $068 - db $0 - dbw $2a, $6c9e ; $069 - db $0 - dbw $2a, $6cac ; $06a - db $0 - dbw $2a, $6cba ; $06b - db $0 - dbw $2a, $6cc8 ; $06c - db $0 - dbw $2a, $6cd6 ; $06d - db $0 - dbw $2a, $6ce4 ; $06e - db $0 - dbw $2a, $6cf2 ; $06f - db $0 - dbw $2a, $6d00 ; $070 - db $0 - dbw $2a, $6d0e ; $071 - db $0 - dbw $2a, $6d1c ; $072 - db $0 - dbw $2a, $6d2a ; $073 - db $0 - dbw $2a, $6d38 ; $074 - db $0 - dbw $2a, $6d46 ; $075 - db $0 - dbw $2a, $6d54 ; $076 - db $0 - dbw $2a, $6d62 ; $077 - db $0 - dbw $2a, $6d70 ; $078 - db $0 - dbw $2a, $6d7e ; $079 - db $0 - dbw $2a, $6d90 ; $07a - db $0 - dbw $2a, $6da2 ; $07b - db $0 - dbw $2a, $6db4 ; $07c - db $0 - dbw $2a, $6dc6 ; $07d - db $0 - dbw $2a, $6dd8 ; $07e - db $0 - dbw $2a, $6dea ; $07f - db $0 - dbw $2a, $6dfc ; $080 - db $0 - dbw $2a, $6e0e ; $081 - db $0 - dbw $2a, $6e1c ; $082 - db $0 - dbw $2a, $6e2a ; $083 - db $0 - dbw $2a, $6e38 ; $084 - db $0 - dbw $2a, $6e46 ; $085 - db $0 - dbw $2a, $6e54 ; $086 - db $0 - dbw $2a, $6e62 ; $087 - db $0 - dbw $2a, $6e74 ; $088 - db $0 - dbw $2a, $6e86 ; $089 - db $0 - dbw $2a, $6e98 ; $08a - db $0 - dbw $2a, $6ea6 ; $08b - db $0 - dbw $2a, $6eb4 ; $08c - db $0 - dbw $2a, $6ec2 ; $08d - db $0 - dbw $2a, $6ed0 ; $08e - db $0 - dbw $2a, $6ede ; $08f - db $0 - dbw $2a, $6eec ; $090 - db $0 - dbw $2a, $6efa ; $091 - db $0 - dbw $2a, $6f08 ; $092 - db $0 - dbw $2a, $6f16 ; $093 - db $0 - dbw $2a, $6f24 ; $094 - db $0 - dbw $2a, $6f32 ; $095 - db $0 - dbw $2a, $6f40 ; $096 - db $0 - dbw $2a, $6f4e ; $097 - db $0 - dbw $2a, $6f5c ; $098 - db $0 - dbw $2a, $6f6a ; $099 - db $0 - dbw $2a, $6f78 ; $09a - db $0 - dbw $2a, $6f86 ; $09b - db $0 - dbw $2a, $6f94 ; $09c - db $0 - dbw $2a, $6fa2 ; $09d - db $0 - dbw $2a, $6fb0 ; $09e - db $0 - dbw $2a, $6fbe ; $09f - db $0 - dbw $2a, $6fcc ; $0a0 - db $0 - dbw $2a, $6fda ; $0a1 - db $0 - dbw $2a, $6fe8 ; $0a2 - db $0 - dbw $2a, $6ff6 ; $0a3 - db $0 - dbw $2a, $7004 ; $0a4 - db $0 - dbw $2a, $7012 ; $0a5 - db $0 - dbw $2a, $7020 ; $0a6 - db $0 - dbw $2a, $702e ; $0a7 - db $0 - dbw $2a, $703c ; $0a8 - db $0 - dbw $2a, $7046 ; $0a9 - db $0 - dbw $2a, $7050 ; $0aa - db $0 - dbw $2a, $705e ; $0ab - db $0 - dbw $2a, $706c ; $0ac - db $0 - dbw $2a, $707a ; $0ad - db $0 - dbw $2a, $7088 ; $0ae - db $0 - dbw $2a, $7096 ; $0af - db $0 - dbw $2a, $70a4 ; $0b0 - db $0 - dbw $2a, $70b2 ; $0b1 - db $0 - dbw $2a, $70bc ; $0b2 - db $0 - dbw $2a, $70c6 ; $0b3 - db $0 - dbw $2a, $70d0 ; $0b4 - db $0 - dbw $2a, $70da ; $0b5 - db $0 - dbw $2a, $70e4 ; $0b6 - db $0 - dbw $2a, $70ee ; $0b7 - db $0 - dbw $2a, $70f8 ; $0b8 - db $0 - dbw $2a, $7102 ; $0b9 - db $0 - dbw $2a, $710c ; $0ba - db $0 - dbw $2a, $7116 ; $0bb - db $0 - dbw $2a, $7120 ; $0bc - db $0 - dbw $2a, $712a ; $0bd - db $0 - dbw $2a, $7134 ; $0be - db $0 - dbw $2a, $713e ; $0bf - db $0 - dbw $2a, $7148 ; $0c0 - db $0 - dbw $2a, $7152 ; $0c1 - db $0 - dbw $2a, $715c ; $0c2 - db $0 - dbw $2a, $7166 ; $0c3 - db $0 - dbw $2a, $7178 ; $0c4 - db $0 - dbw $2a, $718a ; $0c5 - db $0 - dbw $2a, $7194 ; $0c6 - db $0 - dbw $2a, $719e ; $0c7 - db $0 - dbw $2a, $71a8 ; $0c8 - db $0 - dbw $2a, $71ba ; $0c9 - db $0 - dbw $2a, $71cc ; $0ca - db $0 - dbw $2a, $71d6 ; $0cb - db $0 - dbw $2a, $71ec ; $0cc - db $0 - dbw $2a, $7202 ; $0cd - db $0 - dbw $2a, $7218 ; $0ce - db $0 - dbw $2a, $722e ; $0cf - db $0 - dbw $2a, $724c ; $0d0 - db $0 - dbw $2a, $726a ; $0d1 - db $0 - dbw $2a, $7284 ; $0d2 - db $0 - dbw $2a, $729e ; $0d3 - db $0 - dbw $2a, $72b8 ; $0d4 - db $0 - dbw $2a, $72d2 ; $0d5 - db $0 - dbw $2a, $72e0 ; $0d6 - db $0 - dbw $2a, $72ee ; $0d7 - db $0 - dbw $2a, $72fc ; $0d8 - db $0 - dbw $2a, $730a ; $0d9 - db $0 - dbw $2a, $7318 ; $0da - db $0 - dbw $2a, $7326 ; $0db - db $0 - dbw $2a, $7334 ; $0dc - db $0 - dbw $2a, $7342 ; $0dd - db $0 - dbw $2a, $7350 ; $0de - db $0 - dbw $2a, $735e ; $0df - db $0 - dbw $2a, $736c ; $0e0 - db $0 - dbw $2a, $737a ; $0e1 - db $0 - dbw $2a, $7388 ; $0e2 - db $0 - dbw $2a, $7396 ; $0e3 - db $0 - dbw $2a, $73a4 ; $0e4 - db $0 - dbw $2a, $73b2 ; $0e5 - db $0 - dbw $2a, $73c4 ; $0e6 - db $0 - dbw $2a, $73d6 ; $0e7 - db $0 - dbw $2a, $73e8 ; $0e8 - db $0 - dbw $2a, $73fa ; $0e9 - db $0 - dbw $2a, $7408 ; $0ea - db $0 - dbw $2a, $7416 ; $0eb - db $0 - dbw $2a, $7424 ; $0ec - db $0 - dbw $2a, $7432 ; $0ed - db $0 - dbw $2a, $7440 ; $0ee - db $0 - dbw $2a, $744e ; $0ef - db $0 - dbw $2a, $745c ; $0f0 - db $0 - dbw $2a, $7466 ; $0f1 - db $0 - dbw $2a, $7470 ; $0f2 - db $0 - dbw $2a, $747a ; $0f3 - db $0 - dbw $2a, $7484 ; $0f4 - db $0 - dbw $2a, $748e ; $0f5 - db $0 - dbw $2a, $7498 ; $0f6 - db $0 - dbw $2a, $74a2 ; $0f7 - db $0 - dbw $2a, $74b0 ; $0f8 - db $0 - dbw $2a, $74ba ; $0f9 - db $0 - dbw $2a, $74c8 ; $0fa - db $0 - dbw $2a, $74d6 ; $0fb - db $0 - dbw $2a, $74e4 ; $0fc - db $0 - dbw $2a, $74f2 ; $0fd - db $0 - dbw $2a, $7500 ; $0fe - db $0 - dbw $2a, $750e ; $0ff - db $0 - dbw $2a, $751c ; $100 - db $0 - dbw $2a, $752a ; $101 - db $0 - dbw $2a, $7538 ; $102 - db $0 - dbw $2a, $7546 ; $103 - db $0 - dbw $2a, $7554 ; $104 - db $0 - dbw $2a, $7562 ; $105 - db $0 - dbw $2a, $7570 ; $106 - db $0 - dbw $2a, $757e ; $107 - db $0 - dbw $2a, $7590 ; $108 - db $0 - dbw $2a, $75a2 ; $109 - db $0 - dbw $2a, $75b4 ; $10a - db $0 - dbw $2a, $75c6 ; $10b - db $0 - dbw $2a, $75d8 ; $10c - db $0 - dbw $2a, $75ea ; $10d - db $0 - dbw $2a, $75fc ; $10e - db $0 - dbw $2a, $7606 ; $10f - db $0 - dbw $2a, $7610 ; $110 - db $0 - dbw $2a, $761a ; $111 - db $0 - dbw $2a, $7624 ; $112 - db $0 - dbw $2a, $762e ; $113 - db $0 - dbw $2a, $7638 ; $114 - db $0 - dbw $2a, $7642 ; $115 - db $0 - dbw $2a, $764c ; $116 - db $0 - dbw $2a, $7656 ; $117 - db $0 - dbw $2a, $7660 ; $118 - db $0 - dbw $2a, $766a ; $119 - db $0 - dbw $2a, $767c ; $11a - db $0 - dbw $2a, $768e ; $11b - db $0 - dbw $2a, $76a0 ; $11c - db $0 - dbw $2a, $76b2 ; $11d - db $0 - dbw $2a, $76c4 ; $11e - db $0 - dbw $2a, $76d6 ; $11f - db $0 - dbw $2a, $76e4 ; $120 - db $0 - dbw $2a, $76f2 ; $121 - db $0 - dbw $2a, $7700 ; $122 - db $0 - dbw $2a, $770e ; $123 - db $0 - dbw $2a, $771c ; $124 - db $0 - dbw $2a, $772a ; $125 - db $0 - dbw $2a, $7738 ; $126 - db $0 - dbw $2a, $7746 ; $127 - db $0 - dbw $2a, $7754 ; $128 - db $0 - dbw $2a, $7762 ; $129 - db $0 - dbw $2a, $7770 ; $12a - db $0 - dbw $2a, $777e ; $12b - db $0 - dbw $2a, $778c ; $12c - db $0 - dbw $2a, $779a ; $12d - db $0 - dbw $2a, $77a8 ; $12e - db $0 - dbw $2a, $77b6 ; $12f - db $0 - dbw $2a, $77c4 ; $130 - db $0 - dbw $2a, $77d2 ; $131 - db $0 - dbw $2a, $77e0 ; $132 - db $0 - dbw $2a, $77ee ; $133 - db $0 - dbw $2a, $77fc ; $134 - db $0 - dbw $2a, $780a ; $135 - db $0 - dbw $2a, $7818 ; $136 - db $0 - dbw $2a, $7826 ; $137 - db $0 - dbw $2a, $7834 ; $138 - db $0 - dbw $2a, $7842 ; $139 - db $0 - dbw $2a, $7850 ; $13a - db $0 - dbw $2a, $785e ; $13b - db $0 - dbw $2a, $786c ; $13c - db $0 - dbw $2a, $787a ; $13d - db $0 - dbw $2a, $7888 ; $13e - db $0 - dbw $2a, $7896 ; $13f - db $0 - dbw $2a, $78a4 ; $140 - db $0 - dbw $2a, $78b2 ; $141 - db $0 - dbw $2a, $78c0 ; $142 - db $0 - dbw $2a, $78ca ; $143 - db $0 - dbw $2a, $78d4 ; $144 - db $0 - dbw $2a, $78de ; $145 - db $0 - dbw $2a, $78e8 ; $146 - db $0 - dbw $2a, $78f2 ; $147 - db $0 - dbw $2a, $78fc ; $148 - db $0 - dbw $2a, $7906 ; $149 - db $0 - dbw $2a, $7910 ; $14a - db $0 - dbw $2a, $791a ; $14b - db $0 - dbw $2a, $7924 ; $14c - db $0 - dbw $2a, $792e ; $14d - db $0 - dbw $2a, $7938 ; $14e - db $0 - dbw $2a, $794a ; $14f - db $0 - dbw $2a, $795c ; $150 - db $0 - dbw $2a, $796e ; $151 - db $0 - dbw $2a, $7980 ; $152 - db $0 - dbw $2a, $798e ; $153 - db $0 - dbw $2a, $799c ; $154 - db $0 - dbw $2a, $79aa ; $155 - db $0 - dbw $2a, $79b8 ; $156 - db $0 - dbw $2a, $79c6 ; $157 - db $0 - dbw $2a, $79d4 ; $158 - db $0 - dbw $2a, $79e2 ; $159 - db $0 - dbw $2a, $79f0 ; $15a - db $0 - dbw $2a, $79fe ; $15b - db $0 - dbw $2a, $7a0c ; $15c - db $0 - dbw $2a, $7a1a ; $15d - db $0 - dbw $2a, $7a28 ; $15e - db $0 - dbw $2a, $7a36 ; $15f - db $0 - dbw $2a, $7a44 ; $160 - db $0 - dbw $2a, $7a52 ; $161 - db $0 - dbw $2a, $7a60 ; $162 - db $0 - dbw $2a, $7a6e ; $163 - db $0 - dbw $2a, $7a7c ; $164 - db $0 - dbw $2a, $7a8a ; $165 - db $0 - dbw $2a, $7a98 ; $166 - db $0 - dbw $2a, $7aa6 ; $167 - db $0 - dbw $2a, $7ab4 ; $168 - db $0 - dbw $2a, $7ac2 ; $169 - db $0 - dbw $2a, $7ad0 ; $16a - db $0 - dbw $2a, $7ade ; $16b - db $0 - dbw $2a, $7aec ; $16c - db $0 - dbw $2a, $7afe ; $16d - db $0 - dbw $2a, $7b10 ; $16e - db $0 - dbw $2a, $7b22 ; $16f - db $0 - dbw $2a, $7b34 ; $170 - db $0 - dbw $2a, $7b46 ; $171 - db $0 - dbw $2a, $7b58 ; $172 - db $0 - dbw $2a, $7b6a ; $173 - db $0 - dbw $2a, $7b7c ; $174 - db $0 - dbw $2a, $7b8e ; $175 - db $0 - dbw $2a, $7ba0 ; $176 - db $0 - dbw $2a, $7bb2 ; $177 - db $0 - dbw $2a, $7bc4 ; $178 - db $0 - dbw $2a, $7bd6 ; $179 - db $0 - dbw $2a, $7be8 ; $17a - db $0 - dbw $2a, $7bfa ; $17b - db $0 - dbw $2a, $7c0c ; $17c - db $0 - dbw $2a, $7c1e ; $17d - db $0 - dbw $2a, $7c2c ; $17e - db $0 - dbw $2a, $7c3a ; $17f - db $0 - dbw $2a, $7c48 ; $180 - db $0 - dbw $2a, $7c56 ; $181 - db $0 - dbw $2a, $7c64 ; $182 - db $0 - dbw $2a, $7c72 ; $183 - db $0 - dbw $2a, $7c80 ; $184 - db $0 - dbw $2a, $7c8e ; $185 - db $0 - dbw $2a, $7c9c ; $186 - db $0 - dbw $2a, $7caa ; $187 - db $0 - dbw $2a, $7cb8 ; $188 - db $0 - dbw $2a, $7cc6 ; $189 - db $0 - dbw $2a, $7cd4 ; $18a - db $0 - dbw $2a, $7ce2 ; $18b - db $0 - dbw $2a, $7cf0 ; $18c - db $0 - dbw $2a, $7cfe ; $18d - db $0 - dbw $2a, $7d0c ; $18e - db $0 - dbw $2a, $7d1a ; $18f - db $0 - dbw $2a, $7d28 ; $190 - db $0 - dbw $2a, $7d36 ; $191 - db $0 - dbw $2a, $7d44 ; $192 - db $0 - dbw $2a, $7d52 ; $193 - db $0 - dbw $2a, $7d5c ; $194 - db $0 - dbw $2a, $7d66 ; $195 - db $0 - dbw $2a, $7d74 ; $196 - db $0 - dbw $2a, $7d82 ; $197 - db $0 - dbw $2a, $7d90 ; $198 - db $0 - dbw $2a, $7d9e ; $199 - db $0 - dbw $2a, $7dac ; $19a - db $0 - dbw $2a, $7dba ; $19b - db $0 - dbw $2a, $7dc8 ; $19c - db $0 - dbw $2a, $7dd6 ; $19d - db $0 - dbw $2a, $7de4 ; $19e - db $0 - dbw $2a, $7df2 ; $19f - db $0 - dbw $2a, $7e00 ; $1a0 - db $0 - dbw $2a, $7e0e ; $1a1 - db $0 - dbw $2a, $7e18 ; $1a2 - db $0 - dbw $2a, $7e22 ; $1a3 - db $0 - dbw $2a, $7e3c ; $1a4 - db $0 - dbw $2a, $7e56 ; $1a5 - db $0 - dbw $2a, $7e70 ; $1a6 - db $0 - dbw $2a, $7e8a ; $1a7 - db $0 - dbw $2a, $7ea4 ; $1a8 - db $0 - dbw $2a, $7ebe ; $1a9 - db $0 - dbw $2a, $7ed8 ; $1aa - db $0 - dbw $2a, $7ef2 ; $1ab - db $0 - dbw $2a, $7f0c ; $1ac - db $0 - dbw $2a, $7f26 ; $1ad - db $0 - dbw $2a, $7f40 ; $1ae - db $0 - dbw $2a, $7f5a ; $1af - db $0 - dbw $2a, $7f74 ; $1b0 - db $0 - dbw $2a, $7f8e ; $1b1 - db $0 - dbw $2a, $7fb0 ; $1b2 - db $0 - dbw $2a, $7fd2 ; $1b3 - db $0 - dbw $2b, $48f5 ; $1b4 - db $0 - dbw $2b, $4917 ; $1b5 - db $0 - dbw $2b, $4931 ; $1b6 - db $0 - dbw $2b, $494b ; $1b7 - db $0 - dbw $2b, $4965 ; $1b8 - db $0 - dbw $2b, $497f ; $1b9 - db $0 - dbw $2b, $4991 ; $1ba - db $0 - dbw $2b, $49a3 ; $1bb - db $0 - dbw $2b, $49b5 ; $1bc - db $0 - dbw $2b, $49c7 ; $1bd - db $0 - dbw $2b, $49d9 ; $1be - db $0 - dbw $2b, $49eb ; $1bf - db $0 - dbw $2b, $49fd ; $1c0 - db $0 - dbw $2a, $7ff4 ; $1c1 - db $0 - dbw $2b, $4a0f ; $1c2 - db $0 diff --git a/src/data/gfx_pointers/ow_animations.asm b/src/data/gfx_pointers/ow_animations.asm new file mode 100644 index 0000000..7ba5a61 --- /dev/null +++ b/src/data/gfx_pointers/ow_animations.asm @@ -0,0 +1,45 @@ +OWAnimations: + gfx_ptr OWAnimation00 ; OW_ANIM_00 + gfx_ptr OWAnimation01 ; OW_ANIM_01 + gfx_ptr OWAnimation02 ; OW_ANIM_02 + gfx_ptr OWAnimation03 ; OW_ANIM_03 + gfx_ptr OWAnimation04 ; OW_ANIM_04 + gfx_ptr OWAnimation05 ; OW_ANIM_05 + gfx_ptr OWAnimation06 ; OW_ANIM_06 + gfx_ptr OWAnimation07 ; OW_ANIM_07 + gfx_ptr OWAnimation08 ; OW_ANIM_08 + gfx_ptr OWAnimation09 ; OW_ANIM_09 + gfx_ptr OWAnimation0A ; OW_ANIM_0A + gfx_ptr OWAnimation0B ; OW_ANIM_0B + gfx_ptr OWAnimation0C ; OW_ANIM_0C + gfx_ptr OWAnimation0D ; OW_ANIM_0D + gfx_ptr OWAnimation0E ; OW_ANIM_0E + gfx_ptr OWAnimation0F ; OW_ANIM_0F + gfx_ptr OWAnimation10 ; OW_ANIM_10 + gfx_ptr OWAnimation11 ; OW_ANIM_11 + gfx_ptr OWAnimation12 ; OW_ANIM_12 + gfx_ptr OWAnimation13 ; OW_ANIM_13 + gfx_ptr OWAnimation14 ; OW_ANIM_14 + gfx_ptr OWAnimation15 ; OW_ANIM_15 + gfx_ptr OWAnimation16 ; OW_ANIM_16 + gfx_ptr OWAnimation17 ; OW_ANIM_17 + gfx_ptr OWAnimation18 ; OW_ANIM_18 + gfx_ptr OWAnimation19 ; OW_ANIM_19 + gfx_ptr OWAnimation1A ; OW_ANIM_1A + gfx_ptr OWAnimation1B ; OW_ANIM_1B + gfx_ptr OWAnimation1C ; OW_ANIM_1C + gfx_ptr OWAnimation1D ; OW_ANIM_1D + gfx_ptr OWAnimation1E ; OW_ANIM_1E + gfx_ptr OWAnimation1F ; OW_ANIM_1F + gfx_ptr OWAnimation20 ; OW_ANIM_20 + gfx_ptr OWAnimation21 ; OW_ANIM_21 + gfx_ptr OWAnimation22 ; OW_ANIM_22 + gfx_ptr OWAnimation23 ; OW_ANIM_23 + gfx_ptr OWAnimation24 ; OW_ANIM_24 + gfx_ptr OWAnimation25 ; OW_ANIM_25 + gfx_ptr OWAnimation26 ; OW_ANIM_26 + gfx_ptr OWAnimation27 ; OW_ANIM_27 + gfx_ptr OWAnimation28 ; OW_ANIM_28 + gfx_ptr OWAnimation29 ; OW_ANIM_29 + gfx_ptr OWAnimation2A ; OW_ANIM_2A + gfx_ptr OWAnimation2B ; OW_ANIM_2B diff --git a/src/data/gfx_pointers/ow_tile_frames.asm b/src/data/gfx_pointers/ow_tile_frames.asm new file mode 100644 index 0000000..307d210 --- /dev/null +++ b/src/data/gfx_pointers/ow_tile_frames.asm @@ -0,0 +1,452 @@ +GfxUnknown2: + gfx_ptr OWTileFrames000 ; OW_FRAMES_000 + gfx_ptr OWTileFrames001 ; OW_FRAMES_001 + gfx_ptr OWTileFrames002 ; OW_FRAMES_002 + gfx_ptr OWTileFrames003 ; OW_FRAMES_003 + gfx_ptr OWTileFrames004 ; OW_FRAMES_004 + gfx_ptr OWTileFrames005 ; OW_FRAMES_005 + gfx_ptr OWTileFrames006 ; OW_FRAMES_006 + gfx_ptr OWTileFrames007 ; OW_FRAMES_007 + gfx_ptr OWTileFrames008 ; OW_FRAMES_008 + gfx_ptr OWTileFrames009 ; OW_FRAMES_009 + gfx_ptr OWTileFrames00A ; OW_FRAMES_00A + gfx_ptr OWTileFrames00B ; OW_FRAMES_00B + gfx_ptr OWTileFrames00C ; OW_FRAMES_00C + gfx_ptr OWTileFrames00D ; OW_FRAMES_00D + gfx_ptr OWTileFrames00E ; OW_FRAMES_00E + gfx_ptr OWTileFrames00F ; OW_FRAMES_00F + gfx_ptr OWTileFrames010 ; OW_FRAMES_010 + gfx_ptr OWTileFrames011 ; OW_FRAMES_011 + gfx_ptr OWTileFrames012 ; OW_FRAMES_012 + gfx_ptr OWTileFrames013 ; OW_FRAMES_013 + gfx_ptr OWTileFrames014 ; OW_FRAMES_014 + gfx_ptr OWTileFrames015 ; OW_FRAMES_015 + gfx_ptr OWTileFrames016 ; OW_FRAMES_016 + gfx_ptr OWTileFrames017 ; OW_FRAMES_017 + gfx_ptr OWTileFrames018 ; OW_FRAMES_018 + gfx_ptr OWTileFrames019 ; OW_FRAMES_019 + gfx_ptr OWTileFrames01A ; OW_FRAMES_01A + gfx_ptr OWTileFrames01B ; OW_FRAMES_01B + gfx_ptr OWTileFrames01C ; OW_FRAMES_01C + gfx_ptr OWTileFrames01D ; OW_FRAMES_01D + gfx_ptr OWTileFrames01E ; OW_FRAMES_01E + gfx_ptr OWTileFrames01F ; OW_FRAMES_01F + gfx_ptr OWTileFrames020 ; OW_FRAMES_020 + gfx_ptr OWTileFrames021 ; OW_FRAMES_021 + gfx_ptr OWTileFrames022 ; OW_FRAMES_022 + gfx_ptr OWTileFrames023 ; OW_FRAMES_023 + gfx_ptr OWTileFrames024 ; OW_FRAMES_024 + gfx_ptr OWTileFrames025 ; OW_FRAMES_025 + gfx_ptr OWTileFrames026 ; OW_FRAMES_026 + gfx_ptr OWTileFrames027 ; OW_FRAMES_027 + gfx_ptr OWTileFrames028 ; OW_FRAMES_028 + gfx_ptr OWTileFrames029 ; OW_FRAMES_029 + gfx_ptr OWTileFrames02A ; OW_FRAMES_02A + gfx_ptr OWTileFrames02B ; OW_FRAMES_02B + gfx_ptr OWTileFrames02C ; OW_FRAMES_02C + gfx_ptr OWTileFrames02D ; OW_FRAMES_02D + gfx_ptr OWTileFrames02E ; OW_FRAMES_02E + gfx_ptr OWTileFrames02F ; OW_FRAMES_02F + gfx_ptr OWTileFrames030 ; OW_FRAMES_030 + gfx_ptr OWTileFrames031 ; OW_FRAMES_031 + gfx_ptr OWTileFrames032 ; OW_FRAMES_032 + gfx_ptr OWTileFrames033 ; OW_FRAMES_033 + gfx_ptr OWTileFrames034 ; OW_FRAMES_034 + gfx_ptr OWTileFrames035 ; OW_FRAMES_035 + gfx_ptr OWTileFrames036 ; OW_FRAMES_036 + gfx_ptr OWTileFrames037 ; OW_FRAMES_037 + gfx_ptr OWTileFrames038 ; OW_FRAMES_038 + gfx_ptr OWTileFrames039 ; OW_FRAMES_039 + gfx_ptr OWTileFrames03A ; OW_FRAMES_03A + gfx_ptr OWTileFrames03B ; OW_FRAMES_03B + gfx_ptr OWTileFrames03C ; OW_FRAMES_03C + gfx_ptr OWTileFrames03D ; OW_FRAMES_03D + gfx_ptr OWTileFrames03E ; OW_FRAMES_03E + gfx_ptr OWTileFrames03F ; OW_FRAMES_03F + gfx_ptr OWTileFrames040 ; OW_FRAMES_040 + gfx_ptr OWTileFrames041 ; OW_FRAMES_041 + gfx_ptr OWTileFrames042 ; OW_FRAMES_042 + gfx_ptr OWTileFrames043 ; OW_FRAMES_043 + gfx_ptr OWTileFrames044 ; OW_FRAMES_044 + gfx_ptr OWTileFrames045 ; OW_FRAMES_045 + gfx_ptr OWTileFrames046 ; OW_FRAMES_046 + gfx_ptr OWTileFrames047 ; OW_FRAMES_047 + gfx_ptr OWTileFrames048 ; OW_FRAMES_048 + gfx_ptr OWTileFrames049 ; OW_FRAMES_049 + gfx_ptr OWTileFrames04A ; OW_FRAMES_04A + gfx_ptr OWTileFrames04B ; OW_FRAMES_04B + gfx_ptr OWTileFrames04C ; OW_FRAMES_04C + gfx_ptr OWTileFrames04D ; OW_FRAMES_04D + gfx_ptr OWTileFrames04E ; OW_FRAMES_04E + gfx_ptr OWTileFrames04F ; OW_FRAMES_04F + gfx_ptr OWTileFrames050 ; OW_FRAMES_050 + gfx_ptr OWTileFrames051 ; OW_FRAMES_051 + gfx_ptr OWTileFrames052 ; OW_FRAMES_052 + gfx_ptr OWTileFrames053 ; OW_FRAMES_053 + gfx_ptr OWTileFrames054 ; OW_FRAMES_054 + gfx_ptr OWTileFrames055 ; OW_FRAMES_055 + gfx_ptr OWTileFrames056 ; OW_FRAMES_056 + gfx_ptr OWTileFrames057 ; OW_FRAMES_057 + gfx_ptr OWTileFrames058 ; OW_FRAMES_058 + gfx_ptr OWTileFrames059 ; OW_FRAMES_059 + gfx_ptr OWTileFrames05A ; OW_FRAMES_05A + gfx_ptr OWTileFrames05B ; OW_FRAMES_05B + gfx_ptr OWTileFrames05C ; OW_FRAMES_05C + gfx_ptr OWTileFrames05D ; OW_FRAMES_05D + gfx_ptr OWTileFrames05E ; OW_FRAMES_05E + gfx_ptr OWTileFrames05F ; OW_FRAMES_05F + gfx_ptr OWTileFrames060 ; OW_FRAMES_060 + gfx_ptr OWTileFrames061 ; OW_FRAMES_061 + gfx_ptr OWTileFrames062 ; OW_FRAMES_062 + gfx_ptr OWTileFrames063 ; OW_FRAMES_063 + gfx_ptr OWTileFrames064 ; OW_FRAMES_064 + gfx_ptr OWTileFrames065 ; OW_FRAMES_065 + gfx_ptr OWTileFrames066 ; OW_FRAMES_066 + gfx_ptr OWTileFrames067 ; OW_FRAMES_067 + gfx_ptr OWTileFrames068 ; OW_FRAMES_068 + gfx_ptr OWTileFrames069 ; OW_FRAMES_069 + gfx_ptr OWTileFrames06A ; OW_FRAMES_06A + gfx_ptr OWTileFrames06B ; OW_FRAMES_06B + gfx_ptr OWTileFrames06C ; OW_FRAMES_06C + gfx_ptr OWTileFrames06D ; OW_FRAMES_06D + gfx_ptr OWTileFrames06E ; OW_FRAMES_06E + gfx_ptr OWTileFrames06F ; OW_FRAMES_06F + gfx_ptr OWTileFrames070 ; OW_FRAMES_070 + gfx_ptr OWTileFrames071 ; OW_FRAMES_071 + gfx_ptr OWTileFrames072 ; OW_FRAMES_072 + gfx_ptr OWTileFrames073 ; OW_FRAMES_073 + gfx_ptr OWTileFrames074 ; OW_FRAMES_074 + gfx_ptr OWTileFrames075 ; OW_FRAMES_075 + gfx_ptr OWTileFrames076 ; OW_FRAMES_076 + gfx_ptr OWTileFrames077 ; OW_FRAMES_077 + gfx_ptr OWTileFrames078 ; OW_FRAMES_078 + gfx_ptr OWTileFrames079 ; OW_FRAMES_079 + gfx_ptr OWTileFrames07A ; OW_FRAMES_07A + gfx_ptr OWTileFrames07B ; OW_FRAMES_07B + gfx_ptr OWTileFrames07C ; OW_FRAMES_07C + gfx_ptr OWTileFrames07D ; OW_FRAMES_07D + gfx_ptr OWTileFrames07E ; OW_FRAMES_07E + gfx_ptr OWTileFrames07F ; OW_FRAMES_07F + gfx_ptr OWTileFrames080 ; OW_FRAMES_080 + gfx_ptr OWTileFrames081 ; OW_FRAMES_081 + gfx_ptr OWTileFrames082 ; OW_FRAMES_082 + gfx_ptr OWTileFrames083 ; OW_FRAMES_083 + gfx_ptr OWTileFrames084 ; OW_FRAMES_084 + gfx_ptr OWTileFrames085 ; OW_FRAMES_085 + gfx_ptr OWTileFrames086 ; OW_FRAMES_086 + gfx_ptr OWTileFrames087 ; OW_FRAMES_087 + gfx_ptr OWTileFrames088 ; OW_FRAMES_088 + gfx_ptr OWTileFrames089 ; OW_FRAMES_089 + gfx_ptr OWTileFrames08A ; OW_FRAMES_08A + gfx_ptr OWTileFrames08B ; OW_FRAMES_08B + gfx_ptr OWTileFrames08C ; OW_FRAMES_08C + gfx_ptr OWTileFrames08D ; OW_FRAMES_08D + gfx_ptr OWTileFrames08E ; OW_FRAMES_08E + gfx_ptr OWTileFrames08F ; OW_FRAMES_08F + gfx_ptr OWTileFrames090 ; OW_FRAMES_090 + gfx_ptr OWTileFrames091 ; OW_FRAMES_091 + gfx_ptr OWTileFrames092 ; OW_FRAMES_092 + gfx_ptr OWTileFrames093 ; OW_FRAMES_093 + gfx_ptr OWTileFrames094 ; OW_FRAMES_094 + gfx_ptr OWTileFrames095 ; OW_FRAMES_095 + gfx_ptr OWTileFrames096 ; OW_FRAMES_096 + gfx_ptr OWTileFrames097 ; OW_FRAMES_097 + gfx_ptr OWTileFrames098 ; OW_FRAMES_098 + gfx_ptr OWTileFrames099 ; OW_FRAMES_099 + gfx_ptr OWTileFrames09A ; OW_FRAMES_09A + gfx_ptr OWTileFrames09B ; OW_FRAMES_09B + gfx_ptr OWTileFrames09C ; OW_FRAMES_09C + gfx_ptr OWTileFrames09D ; OW_FRAMES_09D + gfx_ptr OWTileFrames09E ; OW_FRAMES_09E + gfx_ptr OWTileFrames09F ; OW_FRAMES_09F + gfx_ptr OWTileFrames0A0 ; OW_FRAMES_0A0 + gfx_ptr OWTileFrames0A1 ; OW_FRAMES_0A1 + gfx_ptr OWTileFrames0A2 ; OW_FRAMES_0A2 + gfx_ptr OWTileFrames0A3 ; OW_FRAMES_0A3 + gfx_ptr OWTileFrames0A4 ; OW_FRAMES_0A4 + gfx_ptr OWTileFrames0A5 ; OW_FRAMES_0A5 + gfx_ptr OWTileFrames0A6 ; OW_FRAMES_0A6 + gfx_ptr OWTileFrames0A7 ; OW_FRAMES_0A7 + gfx_ptr OWTileFrames0A8 ; OW_FRAMES_0A8 + gfx_ptr OWTileFrames0A9 ; OW_FRAMES_0A9 + gfx_ptr OWTileFrames0AA ; OW_FRAMES_0AA + gfx_ptr OWTileFrames0AB ; OW_FRAMES_0AB + gfx_ptr OWTileFrames0AC ; OW_FRAMES_0AC + gfx_ptr OWTileFrames0AD ; OW_FRAMES_0AD + gfx_ptr OWTileFrames0AE ; OW_FRAMES_0AE + gfx_ptr OWTileFrames0AF ; OW_FRAMES_0AF + gfx_ptr OWTileFrames0B0 ; OW_FRAMES_0B0 + gfx_ptr OWTileFrames0B1 ; OW_FRAMES_0B1 + gfx_ptr OWTileFrames0B2 ; OW_FRAMES_0B2 + gfx_ptr OWTileFrames0B3 ; OW_FRAMES_0B3 + gfx_ptr OWTileFrames0B4 ; OW_FRAMES_0B4 + gfx_ptr OWTileFrames0B5 ; OW_FRAMES_0B5 + gfx_ptr OWTileFrames0B6 ; OW_FRAMES_0B6 + gfx_ptr OWTileFrames0B7 ; OW_FRAMES_0B7 + gfx_ptr OWTileFrames0B8 ; OW_FRAMES_0B8 + gfx_ptr OWTileFrames0B9 ; OW_FRAMES_0B9 + gfx_ptr OWTileFrames0BA ; OW_FRAMES_0BA + gfx_ptr OWTileFrames0BB ; OW_FRAMES_0BB + gfx_ptr OWTileFrames0BC ; OW_FRAMES_0BC + gfx_ptr OWTileFrames0BD ; OW_FRAMES_0BD + gfx_ptr OWTileFrames0BE ; OW_FRAMES_0BE + gfx_ptr OWTileFrames0BF ; OW_FRAMES_0BF + gfx_ptr OWTileFrames0C0 ; OW_FRAMES_0C0 + gfx_ptr OWTileFrames0C1 ; OW_FRAMES_0C1 + gfx_ptr OWTileFrames0C2 ; OW_FRAMES_0C2 + gfx_ptr OWTileFrames0C3 ; OW_FRAMES_0C3 + gfx_ptr OWTileFrames0C4 ; OW_FRAMES_0C4 + gfx_ptr OWTileFrames0C5 ; OW_FRAMES_0C5 + gfx_ptr OWTileFrames0C6 ; OW_FRAMES_0C6 + gfx_ptr OWTileFrames0C7 ; OW_FRAMES_0C7 + gfx_ptr OWTileFrames0C8 ; OW_FRAMES_0C8 + gfx_ptr OWTileFrames0C9 ; OW_FRAMES_0C9 + gfx_ptr OWTileFrames0CA ; OW_FRAMES_0CA + gfx_ptr OWTileFrames0CB ; OW_FRAMES_0CB + gfx_ptr OWTileFrames0CC ; OW_FRAMES_0CC + gfx_ptr OWTileFrames0CD ; OW_FRAMES_0CD + gfx_ptr OWTileFrames0CE ; OW_FRAMES_0CE + gfx_ptr OWTileFrames0CF ; OW_FRAMES_0CF + gfx_ptr OWTileFrames0D0 ; OW_FRAMES_0D0 + gfx_ptr OWTileFrames0D1 ; OW_FRAMES_0D1 + gfx_ptr OWTileFrames0D2 ; OW_FRAMES_0D2 + gfx_ptr OWTileFrames0D3 ; OW_FRAMES_0D3 + gfx_ptr OWTileFrames0D4 ; OW_FRAMES_0D4 + gfx_ptr OWTileFrames0D5 ; OW_FRAMES_0D5 + gfx_ptr OWTileFrames0D6 ; OW_FRAMES_0D6 + gfx_ptr OWTileFrames0D7 ; OW_FRAMES_0D7 + gfx_ptr OWTileFrames0D8 ; OW_FRAMES_0D8 + gfx_ptr OWTileFrames0D9 ; OW_FRAMES_0D9 + gfx_ptr OWTileFrames0DA ; OW_FRAMES_0DA + gfx_ptr OWTileFrames0DB ; OW_FRAMES_0DB + gfx_ptr OWTileFrames0DC ; OW_FRAMES_0DC + gfx_ptr OWTileFrames0DD ; OW_FRAMES_0DD + gfx_ptr OWTileFrames0DE ; OW_FRAMES_0DE + gfx_ptr OWTileFrames0DF ; OW_FRAMES_0DF + gfx_ptr OWTileFrames0E0 ; OW_FRAMES_0E0 + gfx_ptr OWTileFrames0E1 ; OW_FRAMES_0E1 + gfx_ptr OWTileFrames0E2 ; OW_FRAMES_0E2 + gfx_ptr OWTileFrames0E3 ; OW_FRAMES_0E3 + gfx_ptr OWTileFrames0E4 ; OW_FRAMES_0E4 + gfx_ptr OWTileFrames0E5 ; OW_FRAMES_0E5 + gfx_ptr OWTileFrames0E6 ; OW_FRAMES_0E6 + gfx_ptr OWTileFrames0E7 ; OW_FRAMES_0E7 + gfx_ptr OWTileFrames0E8 ; OW_FRAMES_0E8 + gfx_ptr OWTileFrames0E9 ; OW_FRAMES_0E9 + gfx_ptr OWTileFrames0EA ; OW_FRAMES_0EA + gfx_ptr OWTileFrames0EB ; OW_FRAMES_0EB + gfx_ptr OWTileFrames0EC ; OW_FRAMES_0EC + gfx_ptr OWTileFrames0ED ; OW_FRAMES_0ED + gfx_ptr OWTileFrames0EE ; OW_FRAMES_0EE + gfx_ptr OWTileFrames0EF ; OW_FRAMES_0EF + gfx_ptr OWTileFrames0F0 ; OW_FRAMES_0F0 + gfx_ptr OWTileFrames0F1 ; OW_FRAMES_0F1 + gfx_ptr OWTileFrames0F2 ; OW_FRAMES_0F2 + gfx_ptr OWTileFrames0F3 ; OW_FRAMES_0F3 + gfx_ptr OWTileFrames0F4 ; OW_FRAMES_0F4 + gfx_ptr OWTileFrames0F5 ; OW_FRAMES_0F5 + gfx_ptr OWTileFrames0F6 ; OW_FRAMES_0F6 + gfx_ptr OWTileFrames0F7 ; OW_FRAMES_0F7 + gfx_ptr OWTileFrames0F8 ; OW_FRAMES_0F8 + gfx_ptr OWTileFrames0F9 ; OW_FRAMES_0F9 + gfx_ptr OWTileFrames0FA ; OW_FRAMES_0FA + gfx_ptr OWTileFrames0FB ; OW_FRAMES_0FB + gfx_ptr OWTileFrames0FC ; OW_FRAMES_0FC + gfx_ptr OWTileFrames0FD ; OW_FRAMES_0FD + gfx_ptr OWTileFrames0FE ; OW_FRAMES_0FE + gfx_ptr OWTileFrames0FF ; OW_FRAMES_0FF + gfx_ptr OWTileFrames100 ; OW_FRAMES_100 + gfx_ptr OWTileFrames101 ; OW_FRAMES_101 + gfx_ptr OWTileFrames102 ; OW_FRAMES_102 + gfx_ptr OWTileFrames103 ; OW_FRAMES_103 + gfx_ptr OWTileFrames104 ; OW_FRAMES_104 + gfx_ptr OWTileFrames105 ; OW_FRAMES_105 + gfx_ptr OWTileFrames106 ; OW_FRAMES_106 + gfx_ptr OWTileFrames107 ; OW_FRAMES_107 + gfx_ptr OWTileFrames108 ; OW_FRAMES_108 + gfx_ptr OWTileFrames109 ; OW_FRAMES_109 + gfx_ptr OWTileFrames10A ; OW_FRAMES_10A + gfx_ptr OWTileFrames10B ; OW_FRAMES_10B + gfx_ptr OWTileFrames10C ; OW_FRAMES_10C + gfx_ptr OWTileFrames10D ; OW_FRAMES_10D + gfx_ptr OWTileFrames10E ; OW_FRAMES_10E + gfx_ptr OWTileFrames10F ; OW_FRAMES_10F + gfx_ptr OWTileFrames110 ; OW_FRAMES_110 + gfx_ptr OWTileFrames111 ; OW_FRAMES_111 + gfx_ptr OWTileFrames112 ; OW_FRAMES_112 + gfx_ptr OWTileFrames113 ; OW_FRAMES_113 + gfx_ptr OWTileFrames114 ; OW_FRAMES_114 + gfx_ptr OWTileFrames115 ; OW_FRAMES_115 + gfx_ptr OWTileFrames116 ; OW_FRAMES_116 + gfx_ptr OWTileFrames117 ; OW_FRAMES_117 + gfx_ptr OWTileFrames118 ; OW_FRAMES_118 + gfx_ptr OWTileFrames119 ; OW_FRAMES_119 + gfx_ptr OWTileFrames11A ; OW_FRAMES_11A + gfx_ptr OWTileFrames11B ; OW_FRAMES_11B + gfx_ptr OWTileFrames11C ; OW_FRAMES_11C + gfx_ptr OWTileFrames11D ; OW_FRAMES_11D + gfx_ptr OWTileFrames11E ; OW_FRAMES_11E + gfx_ptr OWTileFrames11F ; OW_FRAMES_11F + gfx_ptr OWTileFrames120 ; OW_FRAMES_120 + gfx_ptr OWTileFrames121 ; OW_FRAMES_121 + gfx_ptr OWTileFrames122 ; OW_FRAMES_122 + gfx_ptr OWTileFrames123 ; OW_FRAMES_123 + gfx_ptr OWTileFrames124 ; OW_FRAMES_124 + gfx_ptr OWTileFrames125 ; OW_FRAMES_125 + gfx_ptr OWTileFrames126 ; OW_FRAMES_126 + gfx_ptr OWTileFrames127 ; OW_FRAMES_127 + gfx_ptr OWTileFrames128 ; OW_FRAMES_128 + gfx_ptr OWTileFrames129 ; OW_FRAMES_129 + gfx_ptr OWTileFrames12A ; OW_FRAMES_12A + gfx_ptr OWTileFrames12B ; OW_FRAMES_12B + gfx_ptr OWTileFrames12C ; OW_FRAMES_12C + gfx_ptr OWTileFrames12D ; OW_FRAMES_12D + gfx_ptr OWTileFrames12E ; OW_FRAMES_12E + gfx_ptr OWTileFrames12F ; OW_FRAMES_12F + gfx_ptr OWTileFrames130 ; OW_FRAMES_130 + gfx_ptr OWTileFrames131 ; OW_FRAMES_131 + gfx_ptr OWTileFrames132 ; OW_FRAMES_132 + gfx_ptr OWTileFrames133 ; OW_FRAMES_133 + gfx_ptr OWTileFrames134 ; OW_FRAMES_134 + gfx_ptr OWTileFrames135 ; OW_FRAMES_135 + gfx_ptr OWTileFrames136 ; OW_FRAMES_136 + gfx_ptr OWTileFrames137 ; OW_FRAMES_137 + gfx_ptr OWTileFrames138 ; OW_FRAMES_138 + gfx_ptr OWTileFrames139 ; OW_FRAMES_139 + gfx_ptr OWTileFrames13A ; OW_FRAMES_13A + gfx_ptr OWTileFrames13B ; OW_FRAMES_13B + gfx_ptr OWTileFrames13C ; OW_FRAMES_13C + gfx_ptr OWTileFrames13D ; OW_FRAMES_13D + gfx_ptr OWTileFrames13E ; OW_FRAMES_13E + gfx_ptr OWTileFrames13F ; OW_FRAMES_13F + gfx_ptr OWTileFrames140 ; OW_FRAMES_140 + gfx_ptr OWTileFrames141 ; OW_FRAMES_141 + gfx_ptr OWTileFrames142 ; OW_FRAMES_142 + gfx_ptr OWTileFrames143 ; OW_FRAMES_143 + gfx_ptr OWTileFrames144 ; OW_FRAMES_144 + gfx_ptr OWTileFrames145 ; OW_FRAMES_145 + gfx_ptr OWTileFrames146 ; OW_FRAMES_146 + gfx_ptr OWTileFrames147 ; OW_FRAMES_147 + gfx_ptr OWTileFrames148 ; OW_FRAMES_148 + gfx_ptr OWTileFrames149 ; OW_FRAMES_149 + gfx_ptr OWTileFrames14A ; OW_FRAMES_14A + gfx_ptr OWTileFrames14B ; OW_FRAMES_14B + gfx_ptr OWTileFrames14C ; OW_FRAMES_14C + gfx_ptr OWTileFrames14D ; OW_FRAMES_14D + gfx_ptr OWTileFrames14E ; OW_FRAMES_14E + gfx_ptr OWTileFrames14F ; OW_FRAMES_14F + gfx_ptr OWTileFrames150 ; OW_FRAMES_150 + gfx_ptr OWTileFrames151 ; OW_FRAMES_151 + gfx_ptr OWTileFrames152 ; OW_FRAMES_152 + gfx_ptr OWTileFrames153 ; OW_FRAMES_153 + gfx_ptr OWTileFrames154 ; OW_FRAMES_154 + gfx_ptr OWTileFrames155 ; OW_FRAMES_155 + gfx_ptr OWTileFrames156 ; OW_FRAMES_156 + gfx_ptr OWTileFrames157 ; OW_FRAMES_157 + gfx_ptr OWTileFrames158 ; OW_FRAMES_158 + gfx_ptr OWTileFrames159 ; OW_FRAMES_159 + gfx_ptr OWTileFrames15A ; OW_FRAMES_15A + gfx_ptr OWTileFrames15B ; OW_FRAMES_15B + gfx_ptr OWTileFrames15C ; OW_FRAMES_15C + gfx_ptr OWTileFrames15D ; OW_FRAMES_15D + gfx_ptr OWTileFrames15E ; OW_FRAMES_15E + gfx_ptr OWTileFrames15F ; OW_FRAMES_15F + gfx_ptr OWTileFrames160 ; OW_FRAMES_160 + gfx_ptr OWTileFrames161 ; OW_FRAMES_161 + gfx_ptr OWTileFrames162 ; OW_FRAMES_162 + gfx_ptr OWTileFrames163 ; OW_FRAMES_163 + gfx_ptr OWTileFrames164 ; OW_FRAMES_164 + gfx_ptr OWTileFrames165 ; OW_FRAMES_165 + gfx_ptr OWTileFrames166 ; OW_FRAMES_166 + gfx_ptr OWTileFrames167 ; OW_FRAMES_167 + gfx_ptr OWTileFrames168 ; OW_FRAMES_168 + gfx_ptr OWTileFrames169 ; OW_FRAMES_169 + gfx_ptr OWTileFrames16A ; OW_FRAMES_16A + gfx_ptr OWTileFrames16B ; OW_FRAMES_16B + gfx_ptr OWTileFrames16C ; OW_FRAMES_16C + gfx_ptr OWTileFrames16D ; OW_FRAMES_16D + gfx_ptr OWTileFrames16E ; OW_FRAMES_16E + gfx_ptr OWTileFrames16F ; OW_FRAMES_16F + gfx_ptr OWTileFrames170 ; OW_FRAMES_170 + gfx_ptr OWTileFrames171 ; OW_FRAMES_171 + gfx_ptr OWTileFrames172 ; OW_FRAMES_172 + gfx_ptr OWTileFrames173 ; OW_FRAMES_173 + gfx_ptr OWTileFrames174 ; OW_FRAMES_174 + gfx_ptr OWTileFrames175 ; OW_FRAMES_175 + gfx_ptr OWTileFrames176 ; OW_FRAMES_176 + gfx_ptr OWTileFrames177 ; OW_FRAMES_177 + gfx_ptr OWTileFrames178 ; OW_FRAMES_178 + gfx_ptr OWTileFrames179 ; OW_FRAMES_179 + gfx_ptr OWTileFrames17A ; OW_FRAMES_17A + gfx_ptr OWTileFrames17B ; OW_FRAMES_17B + gfx_ptr OWTileFrames17C ; OW_FRAMES_17C + gfx_ptr OWTileFrames17D ; OW_FRAMES_17D + gfx_ptr OWTileFrames17E ; OW_FRAMES_17E + gfx_ptr OWTileFrames17F ; OW_FRAMES_17F + gfx_ptr OWTileFrames180 ; OW_FRAMES_180 + gfx_ptr OWTileFrames181 ; OW_FRAMES_181 + gfx_ptr OWTileFrames182 ; OW_FRAMES_182 + gfx_ptr OWTileFrames183 ; OW_FRAMES_183 + gfx_ptr OWTileFrames184 ; OW_FRAMES_184 + gfx_ptr OWTileFrames185 ; OW_FRAMES_185 + gfx_ptr OWTileFrames186 ; OW_FRAMES_186 + gfx_ptr OWTileFrames187 ; OW_FRAMES_187 + gfx_ptr OWTileFrames188 ; OW_FRAMES_188 + gfx_ptr OWTileFrames189 ; OW_FRAMES_189 + gfx_ptr OWTileFrames18A ; OW_FRAMES_18A + gfx_ptr OWTileFrames18B ; OW_FRAMES_18B + gfx_ptr OWTileFrames18C ; OW_FRAMES_18C + gfx_ptr OWTileFrames18D ; OW_FRAMES_18D + gfx_ptr OWTileFrames18E ; OW_FRAMES_18E + gfx_ptr OWTileFrames18F ; OW_FRAMES_18F + gfx_ptr OWTileFrames190 ; OW_FRAMES_190 + gfx_ptr OWTileFrames191 ; OW_FRAMES_191 + gfx_ptr OWTileFrames192 ; OW_FRAMES_192 + gfx_ptr OWTileFrames193 ; OW_FRAMES_193 + gfx_ptr OWTileFrames194 ; OW_FRAMES_194 + gfx_ptr OWTileFrames195 ; OW_FRAMES_195 + gfx_ptr OWTileFrames196 ; OW_FRAMES_196 + gfx_ptr OWTileFrames197 ; OW_FRAMES_197 + gfx_ptr OWTileFrames198 ; OW_FRAMES_198 + gfx_ptr OWTileFrames199 ; OW_FRAMES_199 + gfx_ptr OWTileFrames19A ; OW_FRAMES_19A + gfx_ptr OWTileFrames19B ; OW_FRAMES_19B + gfx_ptr OWTileFrames19C ; OW_FRAMES_19C + gfx_ptr OWTileFrames19D ; OW_FRAMES_19D + gfx_ptr OWTileFrames19E ; OW_FRAMES_19E + gfx_ptr OWTileFrames19F ; OW_FRAMES_19F + gfx_ptr OWTileFrames1A0 ; OW_FRAMES_1A0 + gfx_ptr OWTileFrames1A1 ; OW_FRAMES_1A1 + gfx_ptr OWTileFrames1A2 ; OW_FRAMES_1A2 + gfx_ptr OWTileFrames1A3 ; OW_FRAMES_1A3 + gfx_ptr OWTileFrames1A4 ; OW_FRAMES_1A4 + gfx_ptr OWTileFrames1A5 ; OW_FRAMES_1A5 + gfx_ptr OWTileFrames1A6 ; OW_FRAMES_1A6 + gfx_ptr OWTileFrames1A7 ; OW_FRAMES_1A7 + gfx_ptr OWTileFrames1A8 ; OW_FRAMES_1A8 + gfx_ptr OWTileFrames1A9 ; OW_FRAMES_1A9 + gfx_ptr OWTileFrames1AA ; OW_FRAMES_1AA + gfx_ptr OWTileFrames1AB ; OW_FRAMES_1AB + gfx_ptr OWTileFrames1AC ; OW_FRAMES_1AC + gfx_ptr OWTileFrames1AD ; OW_FRAMES_1AD + gfx_ptr OWTileFrames1AE ; OW_FRAMES_1AE + gfx_ptr OWTileFrames1AF ; OW_FRAMES_1AF + gfx_ptr OWTileFrames1B0 ; OW_FRAMES_1B0 + gfx_ptr OWTileFrames1B1 ; OW_FRAMES_1B1 + gfx_ptr OWTileFrames1B2 ; OW_FRAMES_1B2 + gfx_ptr OWTileFrames1B3 ; OW_FRAMES_1B3 + gfx_ptr OWTileFrames1B4 ; OW_FRAMES_1B4 + gfx_ptr OWTileFrames1B5 ; OW_FRAMES_1B5 + gfx_ptr OWTileFrames1B6 ; OW_FRAMES_1B6 + gfx_ptr OWTileFrames1B7 ; OW_FRAMES_1B7 + gfx_ptr OWTileFrames1B8 ; OW_FRAMES_1B8 + gfx_ptr OWTileFrames1B9 ; OW_FRAMES_1B9 + gfx_ptr OWTileFrames1BA ; OW_FRAMES_1BA + gfx_ptr OWTileFrames1BB ; OW_FRAMES_1BB + gfx_ptr OWTileFrames1BC ; OW_FRAMES_1BC + gfx_ptr OWTileFrames1BD ; OW_FRAMES_1BD + gfx_ptr OWTileFrames1BE ; OW_FRAMES_1BE + gfx_ptr OWTileFrames1BF ; OW_FRAMES_1BF + gfx_ptr OWTileFrames1C0 ; OW_FRAMES_1C0 + gfx_ptr OWTileFrames1C1 ; OW_FRAMES_1C1 + gfx_ptr OWTileFrames1C2 ; OW_FRAMES_1C2 diff --git a/src/data/map_gfx.asm b/src/data/map_gfx.asm new file mode 100644 index 0000000..5fc5c9d --- /dev/null +++ b/src/data/map_gfx.asm @@ -0,0 +1,245 @@ +MACRO map_gfx + dw \1 ; tilemap + dw \2 ; tileset + dw \3 ; palette 1 + db \4 ; OW animation + dw \5 ; palette 2 +ENDM + +MapGfx: + ; OVERWORLD_MAP + map_gfx TILEMAP_000, TILESET_000, PALETTE_000, OW_ANIM_00, PALETTE_166 + ; MAP_01 + map_gfx TILEMAP_003, TILESET_002, PALETTE_001, OW_ANIM_16, PALETTE_166 + ; MAP_02 + map_gfx TILEMAP_005, TILESET_004, PALETTE_002, OW_ANIM_2B, PALETTE_161 + ; MAP_03 + map_gfx TILEMAP_007, TILESET_005, PALETTE_003, OW_ANIM_0D, PALETTE_161 + ; MAP_04 + map_gfx TILEMAP_009, TILESET_006, PALETTE_004, OW_ANIM_NONE, PALETTE_161 + ; MAP_05 + map_gfx TILEMAP_00A, TILESET_007, PALETTE_005, OW_ANIM_NONE, PALETTE_161 + ; MAP_06 + map_gfx TILEMAP_00B, TILESET_008, PALETTE_006, OW_ANIM_1A, PALETTE_161 + ; MAP_07 + map_gfx TILEMAP_00D, TILESET_009, PALETTE_007, OW_ANIM_NONE, PALETTE_161 + ; MAP_08 + map_gfx TILEMAP_00E, TILESET_00A, PALETTE_008, OW_ANIM_NONE, PALETTE_161 + ; MAP_09 + map_gfx TILEMAP_00F, TILESET_00A, PALETTE_008, OW_ANIM_01, PALETTE_161 + ; MAP_0A + map_gfx TILEMAP_010, TILESET_00B, PALETTE_009, OW_ANIM_05, PALETTE_161 + ; MAP_0B + map_gfx TILEMAP_011, TILESET_00C, PALETTE_00A, OW_ANIM_04, PALETTE_161 + ; MAP_0C + map_gfx TILEMAP_012, TILESET_00D, PALETTE_00B, OW_ANIM_03, PALETTE_165 + ; MAP_0D + map_gfx TILEMAP_014, TILESET_00E, PALETTE_00C, OW_ANIM_NONE, PALETTE_161 + ; MAP_0E + map_gfx TILEMAP_015, TILESET_00F, PALETTE_00D, OW_ANIM_NONE, PALETTE_161 + ; MAP_0F + map_gfx TILEMAP_016, TILESET_010, PALETTE_00E, OW_ANIM_NONE, PALETTE_161 + ; MAP_10 + map_gfx TILEMAP_017, TILESET_011, PALETTE_00F, OW_ANIM_NONE, PALETTE_161 + ; MAP_11 + map_gfx TILEMAP_018, TILESET_012, PALETTE_010, OW_ANIM_NONE, PALETTE_161 + ; MAP_12 + map_gfx TILEMAP_019, TILESET_013, PALETTE_011, OW_ANIM_NONE, PALETTE_161 + ; MAP_13 + map_gfx TILEMAP_01B, TILESET_014, PALETTE_012, OW_ANIM_NONE, PALETTE_161 + ; MAP_14 + map_gfx TILEMAP_01C, TILESET_015, PALETTE_013, OW_ANIM_NONE, PALETTE_161 + ; MAP_15 + map_gfx TILEMAP_01D, TILESET_016, PALETTE_014, OW_ANIM_06, PALETTE_161 + ; MAP_16 + map_gfx TILEMAP_01F, TILESET_017, PALETTE_015, OW_ANIM_NONE, PALETTE_161 + ; MAP_17 + map_gfx TILEMAP_020, TILESET_018, PALETTE_016, OW_ANIM_NONE, PALETTE_161 + ; MAP_18 + map_gfx TILEMAP_021, TILESET_019, PALETTE_017, OW_ANIM_NONE, PALETTE_161 + ; MAP_19 + map_gfx TILEMAP_026, TILESET_01A, PALETTE_018, OW_ANIM_02, PALETTE_161 + ; MAP_1A + map_gfx TILEMAP_027, TILESET_01B, PALETTE_019, OW_ANIM_07, PALETTE_161 + ; MAP_1B + map_gfx TILEMAP_028, TILESET_01C, PALETTE_01A, OW_ANIM_08, PALETTE_161 + ; MAP_1C + map_gfx TILEMAP_02B, TILESET_01D, PALETTE_01B, OW_ANIM_0A, PALETTE_161 + ; MAP_1D + map_gfx TILEMAP_02C, TILESET_01E, PALETTE_01C, OW_ANIM_0B, PALETTE_161 + ; MAP_1E + map_gfx TILEMAP_02D, TILESET_01F, PALETTE_01D, OW_ANIM_09, PALETTE_161 + ; MAP_1F + map_gfx TILEMAP_030, TILESET_020, PALETTE_01E, OW_ANIM_NONE, PALETTE_161 + ; MAP_20 + map_gfx TILEMAP_031, TILESET_021, PALETTE_01F, OW_ANIM_NONE, PALETTE_161 + ; MAP_21 + map_gfx TILEMAP_032, TILESET_022, PALETTE_020, OW_ANIM_NONE, PALETTE_161 + ; MAP_22 + map_gfx TILEMAP_033, TILESET_023, PALETTE_021, OW_ANIM_NONE, PALETTE_161 + ; MAP_23 + map_gfx TILEMAP_034, TILESET_024, PALETTE_022, OW_ANIM_NONE, PALETTE_161 + ; MAP_24 + map_gfx TILEMAP_035, TILESET_025, PALETTE_023, OW_ANIM_NONE, PALETTE_161 + ; MAP_25 + map_gfx TILEMAP_036, TILESET_026, PALETTE_024, OW_ANIM_NONE, PALETTE_161 + ; MAP_26 + map_gfx TILEMAP_039, TILESET_027, PALETTE_025, OW_ANIM_14, PALETTE_166 + ; MAP_27 + map_gfx TILEMAP_03A, TILESET_028, PALETTE_026, OW_ANIM_NONE, PALETTE_161 + ; MAP_28 + map_gfx TILEMAP_03B, TILESET_029, PALETTE_027, OW_ANIM_NONE, PALETTE_161 + ; MAP_29 + map_gfx TILEMAP_03C, TILESET_02A, PALETTE_028, OW_ANIM_NONE, PALETTE_161 + ; MAP_2A + map_gfx TILEMAP_03D, TILESET_02B, PALETTE_029, OW_ANIM_NONE, PALETTE_161 + ; MAP_2B + map_gfx TILEMAP_03E, TILESET_02C, PALETTE_02A, OW_ANIM_1B, PALETTE_161 + ; MAP_2C + map_gfx TILEMAP_03F, TILESET_02D, PALETTE_02B, OW_ANIM_NONE, PALETTE_161 + ; MAP_2D + map_gfx TILEMAP_040, TILESET_02E, PALETTE_02C, OW_ANIM_1C, PALETTE_161 + ; MAP_2E + map_gfx TILEMAP_041, TILESET_02F, PALETTE_02D, OW_ANIM_NONE, PALETTE_161 + ; MAP_2F + map_gfx TILEMAP_042, TILESET_030, PALETTE_02E, OW_ANIM_NONE, PALETTE_161 + ; MAP_30 + map_gfx TILEMAP_045, TILESET_031, PALETTE_02F, OW_ANIM_NONE, PALETTE_161 + ; MAP_31 + map_gfx TILEMAP_048, TILESET_032, PALETTE_030, OW_ANIM_NONE, PALETTE_161 + ; MAP_32 + map_gfx TILEMAP_04B, TILESET_033, PALETTE_031, OW_ANIM_NONE, PALETTE_161 + ; MAP_33 + map_gfx TILEMAP_04E, TILESET_034, PALETTE_032, OW_ANIM_NONE, PALETTE_161 + ; MAP_34 + map_gfx TILEMAP_050, TILESET_035, PALETTE_033, OW_ANIM_1D, PALETTE_161 + ; MAP_35 + map_gfx TILEMAP_053, TILESET_036, PALETTE_034, OW_ANIM_1E, PALETTE_161 + ; MAP_36 + map_gfx TILEMAP_054, TILESET_037, PALETTE_035, OW_ANIM_NONE, PALETTE_161 + ; MAP_37 + map_gfx TILEMAP_055, TILESET_038, PALETTE_036, OW_ANIM_NONE, PALETTE_161 + ; MAP_38 + map_gfx TILEMAP_056, TILESET_039, PALETTE_037, OW_ANIM_NONE, PALETTE_161 + ; MAP_39 + map_gfx TILEMAP_058, TILESET_03A, PALETTE_038, OW_ANIM_NONE, PALETTE_161 + ; MAP_3A + map_gfx TILEMAP_059, TILESET_03B, PALETTE_039, OW_ANIM_NONE, PALETTE_161 + ; MAP_3B + map_gfx TILEMAP_05A, TILESET_03C, PALETTE_03A, OW_ANIM_NONE, PALETTE_161 + ; MAP_3C + map_gfx TILEMAP_05D, TILESET_03D, PALETTE_03C, OW_ANIM_NONE, PALETTE_161 + ; MAP_3D + map_gfx TILEMAP_060, TILESET_03E, PALETTE_03D, OW_ANIM_NONE, PALETTE_161 + ; MAP_3E + map_gfx TILEMAP_063, TILESET_03F, PALETTE_03E, OW_ANIM_1F, PALETTE_161 + ; MAP_3F + map_gfx TILEMAP_064, TILESET_040, PALETTE_03F, OW_ANIM_0E, PALETTE_161 + ; MAP_40 + map_gfx TILEMAP_067, TILESET_041, PALETTE_040, OW_ANIM_12, PALETTE_161 + ; MAP_41 + map_gfx TILEMAP_068, TILESET_042, PALETTE_041, OW_ANIM_10, PALETTE_161 + ; MAP_42 + map_gfx TILEMAP_06B, TILESET_043, PALETTE_042, OW_ANIM_11, PALETTE_163 + ; MAP_43 + map_gfx TILEMAP_071, TILESET_044, PALETTE_043, OW_ANIM_0F, PALETTE_161 + ; MAP_44 + map_gfx TILEMAP_072, TILESET_045, PALETTE_044, OW_ANIM_20, PALETTE_161 + ; MAP_45 + map_gfx TILEMAP_075, TILESET_046, PALETTE_045, OW_ANIM_21, PALETTE_161 + ; MAP_46 + map_gfx TILEMAP_076, TILESET_047, PALETTE_046, OW_ANIM_22, PALETTE_161 + ; MAP_47 + map_gfx TILEMAP_079, TILESET_048, PALETTE_047, OW_ANIM_13, PALETTE_161 + ; MAP_48 + map_gfx TILEMAP_07C, TILESET_049, PALETTE_048, OW_ANIM_23, PALETTE_161 + ; MAP_49 + map_gfx TILEMAP_081, TILESET_04A, PALETTE_049, OW_ANIM_18, PALETTE_164 + ; MAP_4A + map_gfx TILEMAP_082, TILESET_04B, PALETTE_04A, OW_ANIM_NONE, PALETTE_161 + ; MAP_4B + map_gfx TILEMAP_085, TILESET_04C, PALETTE_04B, OW_ANIM_24, PALETTE_161 + ; MAP_4C + map_gfx TILEMAP_086, TILESET_04D, PALETTE_04C, OW_ANIM_25, PALETTE_161 + ; MAP_4D + map_gfx TILEMAP_089, TILESET_04E, PALETTE_04D, OW_ANIM_17, PALETTE_161 + ; MAP_4E + map_gfx TILEMAP_08E, TILESET_04F, PALETTE_04E, OW_ANIM_26, PALETTE_161 + ; MAP_4F + map_gfx TILEMAP_091, TILESET_050, PALETTE_04F, OW_ANIM_15, PALETTE_161 + ; MAP_50 + map_gfx TILEMAP_092, TILESET_051, PALETTE_050, OW_ANIM_NONE, PALETTE_161 + ; MAP_51 + map_gfx TILEMAP_095, TILESET_052, PALETTE_051, OW_ANIM_NONE, PALETTE_161 + ; MAP_52 + map_gfx TILEMAP_098, TILESET_053, PALETTE_052, OW_ANIM_NONE, PALETTE_161 + ; MAP_53 + map_gfx TILEMAP_099, TILESET_054, PALETTE_054, OW_ANIM_NONE, PALETTE_161 + ; MAP_54 + map_gfx TILEMAP_09B, TILESET_055, PALETTE_055, OW_ANIM_NONE, PALETTE_161 + ; MAP_55 + map_gfx TILEMAP_09C, TILESET_056, PALETTE_056, OW_ANIM_NONE, PALETTE_161 + ; MAP_56 + map_gfx TILEMAP_09E, TILESET_057, PALETTE_057, OW_ANIM_NONE, PALETTE_161 + ; MAP_57 + map_gfx TILEMAP_09F, TILESET_058, PALETTE_058, OW_ANIM_NONE, PALETTE_161 + ; MAP_58 + map_gfx TILEMAP_0A0, TILESET_059, PALETTE_059, OW_ANIM_NONE, PALETTE_161 + ; MAP_59 + map_gfx TILEMAP_0A3, TILESET_05A, PALETTE_05A, OW_ANIM_NONE, PALETTE_162 + ; MAP_5A + map_gfx TILEMAP_0A4, TILESET_05B, PALETTE_05B, OW_ANIM_0C, PALETTE_161 + ; MAP_5B + map_gfx TILEMAP_0A5, TILESET_05C, PALETTE_05C, OW_ANIM_NONE, PALETTE_161 + ; MAP_5C + map_gfx TILEMAP_0A6, TILESET_05D, PALETTE_05D, OW_ANIM_19, PALETTE_161 + ; MAP_5D + map_gfx TILEMAP_0B0, TILESET_05E, PALETTE_05E, OW_ANIM_2A, PALETTE_161 + ; MAP_5E + map_gfx TILEMAP_0B1, TILESET_05F, PALETTE_060, OW_ANIM_27, PALETTE_161 + ; MAP_5F + map_gfx TILEMAP_0B2, TILESET_060, PALETTE_061, OW_ANIM_28, PALETTE_161 + ; MAP_60 + map_gfx TILEMAP_0B3, TILESET_061, PALETTE_062, OW_ANIM_NONE, PALETTE_161 + ; MAP_61 + map_gfx TILEMAP_0B6, TILESET_062, PALETTE_063, OW_ANIM_NONE, PALETTE_161 + ; MAP_62 + map_gfx TILEMAP_0B7, TILESET_063, PALETTE_064, OW_ANIM_NONE, PALETTE_161 + ; MAP_63 + map_gfx TILEMAP_0B8, TILESET_064, PALETTE_065, OW_ANIM_NONE, PALETTE_161 + ; MAP_64 + map_gfx TILEMAP_0BA, TILESET_065, PALETTE_066, OW_ANIM_NONE, PALETTE_161 + ; MAP_65 + map_gfx TILEMAP_0BB, TILESET_066, PALETTE_067, OW_ANIM_NONE, PALETTE_161 + ; MAP_66 + map_gfx TILEMAP_0BD, TILESET_067, PALETTE_068, OW_ANIM_NONE, PALETTE_161 + ; MAP_67 + map_gfx TILEMAP_0BE, TILESET_068, PALETTE_069, OW_ANIM_NONE, PALETTE_161 + ; MAP_68 + map_gfx TILEMAP_0BF, TILESET_069, PALETTE_06A, OW_ANIM_NONE, PALETTE_161 + ; MAP_69 + map_gfx TILEMAP_0C0, TILESET_06A, PALETTE_06B, OW_ANIM_NONE, PALETTE_161 + ; MAP_6A + map_gfx TILEMAP_0C2, TILESET_06B, PALETTE_06C, OW_ANIM_NONE, PALETTE_161 + ; MAP_6B + map_gfx TILEMAP_0C3, TILESET_06C, PALETTE_06D, OW_ANIM_NONE, PALETTE_161 + ; MAP_6C + map_gfx TILEMAP_0C5, TILESET_06D, PALETTE_06E, OW_ANIM_NONE, PALETTE_161 + ; MAP_6D + map_gfx TILEMAP_0C6, TILESET_06E, PALETTE_06F, OW_ANIM_NONE, PALETTE_161 + ; MAP_6E + map_gfx TILEMAP_0C8, TILESET_06F, PALETTE_070, OW_ANIM_NONE, PALETTE_161 + ; MAP_6F + map_gfx TILEMAP_0CB, TILESET_070, PALETTE_071, OW_ANIM_NONE, PALETTE_161 + ; MAP_70 + map_gfx TILEMAP_0CD, TILESET_071, PALETTE_072, OW_ANIM_NONE, PALETTE_161 + ; MAP_71 + map_gfx TILEMAP_0CE, TILESET_072, PALETTE_073, OW_ANIM_NONE, PALETTE_161 + ; MAP_72 + map_gfx TILEMAP_0CF, TILESET_073, PALETTE_074, OW_ANIM_NONE, PALETTE_161 + ; MAP_73 + map_gfx TILEMAP_0D0, TILESET_074, PALETTE_075, OW_ANIM_NONE, PALETTE_161 + ; MAP_74 + map_gfx TILEMAP_0D1, TILESET_075, PALETTE_076, OW_ANIM_NONE, PALETTE_161 + ; MAP_75 + map_gfx TILEMAP_0D2, TILESET_076, PALETTE_077, OW_ANIM_29, PALETTE_161 diff --git a/src/data/ow_animations.asm b/src/data/ow_animations.asm new file mode 100644 index 0000000..212532d --- /dev/null +++ b/src/data/ow_animations.asm @@ -0,0 +1,1200 @@ +OWAnimation00:: + db 14 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $87, 1, OW_FRAMES_000 + ow_anim $88, 1, OW_FRAMES_001 + ow_anim $89, 1, OW_FRAMES_002 + ow_anim $8a, 1, OW_FRAMES_003 + ow_anim $8b, 1, OW_FRAMES_004 + ow_anim $8c, 1, OW_FRAMES_005 + ow_anim $8d, 1, OW_FRAMES_006 + ow_anim $8e, 1, OW_FRAMES_007 + ow_anim $8f, 1, OW_FRAMES_008 + ow_anim $90, 1, OW_FRAMES_009 + ow_anim $91, 1, OW_FRAMES_00A + ow_anim $92, 1, OW_FRAMES_00B + ow_anim $ab, 1, OW_FRAMES_00C + ow_anim $ac, 1, OW_FRAMES_00D + +OWAnimation01:: + db 20 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $40, 1, OW_FRAMES_00E + ow_anim $50, 1, OW_FRAMES_00F + ow_anim $41, 1, OW_FRAMES_010 + ow_anim $51, 1, OW_FRAMES_011 + ow_anim $42, 1, OW_FRAMES_012 + ow_anim $52, 1, OW_FRAMES_013 + ow_anim $43, 1, OW_FRAMES_014 + ow_anim $53, 1, OW_FRAMES_015 + ow_anim $3c, 1, OW_FRAMES_016 + ow_anim $4c, 1, OW_FRAMES_017 + ow_anim $3d, 1, OW_FRAMES_018 + ow_anim $4d, 1, OW_FRAMES_019 + ow_anim $d2, 1, OW_FRAMES_01A + ow_anim $4e, 1, OW_FRAMES_01B + ow_anim $3e, 1, OW_FRAMES_01C + ow_anim $d4, 1, OW_FRAMES_01D + ow_anim $d3, 1, OW_FRAMES_01E + ow_anim $4f, 1, OW_FRAMES_01F + ow_anim $3f, 1, OW_FRAMES_020 + ow_anim $d5, 1, OW_FRAMES_021 + +OWAnimation02:: + db 28 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 1 + db 0 + db 0 + db 1 + db 0 + db 0 + db 1 + db 0 + db 1 + db 1 + db 2 + db 2 + db 2 + db 2 + db 3 + db 2 + db 2 + db 3 + db 2 + db 2 + db 3 + db 2 + db 3 + db 3 + + ; data + ow_anim $40, 1, OW_FRAMES_022 + ow_anim $50, 1, OW_FRAMES_023 + ow_anim $41, 1, OW_FRAMES_024 + ow_anim $51, 1, OW_FRAMES_025 + ow_anim $61, 1, OW_FRAMES_026 + ow_anim $42, 1, OW_FRAMES_027 + ow_anim $52, 1, OW_FRAMES_028 + ow_anim $62, 1, OW_FRAMES_029 + ow_anim $43, 1, OW_FRAMES_02A + ow_anim $53, 1, OW_FRAMES_02B + ow_anim $63, 1, OW_FRAMES_02C + ow_anim $54, 1, OW_FRAMES_02D + ow_anim $64, 1, OW_FRAMES_02E + ow_anim $65, 1, OW_FRAMES_02F + ow_anim $3c, 1, OW_FRAMES_030 + ow_anim $4b, 1, OW_FRAMES_031 + ow_anim $3d, 1, OW_FRAMES_032 + ow_anim $4c, 1, OW_FRAMES_033 + ow_anim $5b, 1, OW_FRAMES_034 + ow_anim $3e, 1, OW_FRAMES_035 + ow_anim $4d, 1, OW_FRAMES_036 + ow_anim $5c, 1, OW_FRAMES_037 + ow_anim $3f, 1, OW_FRAMES_038 + ow_anim $4e, 1, OW_FRAMES_039 + ow_anim $5d, 1, OW_FRAMES_03A + ow_anim $4f, 1, OW_FRAMES_03B + ow_anim $5e, 1, OW_FRAMES_03C + ow_anim $5f, 1, OW_FRAMES_03D + +OWAnimation03:: + db 32 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 2 + db 2 + db 2 + db 2 + db 31 + db 31 + db 31 + db 31 + db 33 + db 33 + db 33 + db 33 + db 60 + db 60 + db 60 + db 60 + db 62 + db 62 + db 62 + db 62 + db 91 + db 91 + db 91 + db 91 + db 93 + db 93 + db 93 + db 93 + + ; data + ow_anim $ac, 1, OW_FRAMES_03E + ow_anim $bc, 1, OW_FRAMES_03F + ow_anim $ad, 1, OW_FRAMES_040 + ow_anim $bd, 1, OW_FRAMES_041 + ow_anim $ae, 1, OW_FRAMES_042 + ow_anim $be, 1, OW_FRAMES_043 + ow_anim $af, 1, OW_FRAMES_044 + ow_anim $bf, 1, OW_FRAMES_045 + ow_anim $a8, 1, OW_FRAMES_046 + ow_anim $b8, 1, OW_FRAMES_047 + ow_anim $a9, 1, OW_FRAMES_048 + ow_anim $b9, 1, OW_FRAMES_049 + ow_anim $aa, 1, OW_FRAMES_04A + ow_anim $ba, 1, OW_FRAMES_04B + ow_anim $ab, 1, OW_FRAMES_04C + ow_anim $bb, 1, OW_FRAMES_04D + ow_anim $a4, 1, OW_FRAMES_04E + ow_anim $b4, 1, OW_FRAMES_04F + ow_anim $a5, 1, OW_FRAMES_050 + ow_anim $b5, 1, OW_FRAMES_051 + ow_anim $a6, 1, OW_FRAMES_052 + ow_anim $b6, 1, OW_FRAMES_053 + ow_anim $a7, 1, OW_FRAMES_054 + ow_anim $b7, 1, OW_FRAMES_055 + ow_anim $a0, 1, OW_FRAMES_056 + ow_anim $b0, 1, OW_FRAMES_057 + ow_anim $a1, 1, OW_FRAMES_058 + ow_anim $b1, 1, OW_FRAMES_059 + ow_anim $a2, 1, OW_FRAMES_05A + ow_anim $b2, 1, OW_FRAMES_05B + ow_anim $a3, 1, OW_FRAMES_05C + ow_anim $b3, 1, OW_FRAMES_05D + +OWAnimation04:: + db 3 ; length + + ; durations + db 0 + db 0 + db 0 + + ; data + ow_anim $67, 1, OW_FRAMES_05E + ow_anim $68, 1, OW_FRAMES_05F + ow_anim $80, 1, OW_FRAMES_060 + +OWAnimation05:: + db 8 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $0a, 1, OW_FRAMES_061 + ow_anim $1a, 1, OW_FRAMES_062 + ow_anim $0b, 1, OW_FRAMES_063 + ow_anim $1b, 1, OW_FRAMES_064 + ow_anim $0c, 1, OW_FRAMES_065 + ow_anim $1c, 1, OW_FRAMES_066 + ow_anim $0d, 1, OW_FRAMES_067 + ow_anim $1d, 1, OW_FRAMES_068 + +OWAnimation06:: + db 19 ; length + + ; durations + db 2 + db 2 + db 2 + db 0 + db 0 + db 0 + db 1 + db 1 + db 0 + db 0 + db 0 + db 1 + db 1 + db 3 + db 3 + db 3 + db 4 + db 4 + db 4 + + ; data + ow_anim $70, 1, OW_FRAMES_069 + ow_anim $80, 1, OW_FRAMES_06A + ow_anim $90, 1, OW_FRAMES_06B + ow_anim $6c, 1, OW_FRAMES_06C + ow_anim $7c, 1, OW_FRAMES_06D + ow_anim $71, 1, OW_FRAMES_06E + ow_anim $81, 1, OW_FRAMES_06F + ow_anim $91, 1, OW_FRAMES_070 + ow_anim $6d, 1, OW_FRAMES_071 + ow_anim $7d, 1, OW_FRAMES_072 + ow_anim $72, 1, OW_FRAMES_073 + ow_anim $82, 1, OW_FRAMES_074 + ow_anim $92, 1, OW_FRAMES_075 + ow_anim $73, 1, OW_FRAMES_076 + ow_anim $83, 1, OW_FRAMES_077 + ow_anim $93, 1, OW_FRAMES_078 + ow_anim $98, 1, OW_FRAMES_079 + ow_anim $99, 1, OW_FRAMES_07A + ow_anim $9a, 1, OW_FRAMES_07B + +OWAnimation07:: + db 3 ; length + + ; durations + db 0 + db 0 + db 0 + + ; data + ow_anim $80, 1, OW_FRAMES_07C + ow_anim $81, 1, OW_FRAMES_07D + ow_anim $82, 1, OW_FRAMES_07E + +OWAnimation08:: + db 15 ; length + + ; durations + db 1 + db 1 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 1 + db 1 + db 1 + db 2 + db 2 + db 2 + db 2 + + ; data + ow_anim $90, 1, OW_FRAMES_07F + ow_anim $a0, 1, OW_FRAMES_080 + ow_anim $88, 1, OW_FRAMES_081 + ow_anim $98, 1, OW_FRAMES_082 + ow_anim $89, 1, OW_FRAMES_083 + ow_anim $99, 1, OW_FRAMES_084 + ow_anim $82, 1, OW_FRAMES_085 + ow_anim $83, 1, OW_FRAMES_086 + ow_anim $76, 1, OW_FRAMES_087 + ow_anim $77, 1, OW_FRAMES_088 + ow_anim $78, 1, OW_FRAMES_089 + ow_anim $92, 1, OW_FRAMES_08A + ow_anim $93, 1, OW_FRAMES_08B + ow_anim $a4, 1, OW_FRAMES_08C + ow_anim $a5, 1, OW_FRAMES_08D + +OWAnimation09:: + db 12 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 3 + db 3 + db 3 + db 3 + db 6 + db 6 + db 6 + db 6 + + ; data + ow_anim $a0, 1, OW_FRAMES_08E + ow_anim $b0, 1, OW_FRAMES_08F + ow_anim $a1, 1, OW_FRAMES_090 + ow_anim $b1, 1, OW_FRAMES_091 + ow_anim $ac, 1, OW_FRAMES_092 + ow_anim $bc, 1, OW_FRAMES_093 + ow_anim $ad, 1, OW_FRAMES_094 + ow_anim $bd, 1, OW_FRAMES_095 + ow_anim $c8, 1, OW_FRAMES_096 + ow_anim $d8, 1, OW_FRAMES_097 + ow_anim $c9, 1, OW_FRAMES_098 + ow_anim $d9, 1, OW_FRAMES_099 + +OWAnimation0A:: + db 8 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $41, 1, OW_FRAMES_09A + ow_anim $51, 1, OW_FRAMES_09B + ow_anim $42, 1, OW_FRAMES_09C + ow_anim $52, 1, OW_FRAMES_09D + ow_anim $47, 1, OW_FRAMES_09E + ow_anim $57, 1, OW_FRAMES_09F + ow_anim $48, 1, OW_FRAMES_0A0 + ow_anim $58, 1, OW_FRAMES_0A1 + +OWAnimation0B:: + db 6 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $5f, 1, OW_FRAMES_0A2 + ow_anim $6f, 1, OW_FRAMES_0A3 + ow_anim $7f, 1, OW_FRAMES_0A4 + ow_anim $80, 1, OW_FRAMES_0A5 + ow_anim $89, 1, OW_FRAMES_0A6 + ow_anim $8a, 1, OW_FRAMES_0A7 + +OWAnimation0C:: + db 11 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $5b, 1, OW_FRAMES_0A8 + ow_anim $5c, 1, OW_FRAMES_0A9 + ow_anim $5d, 1, OW_FRAMES_0AA + ow_anim $5e, 1, OW_FRAMES_0AB + ow_anim $5f, 1, OW_FRAMES_0AC + ow_anim $60, 1, OW_FRAMES_0AD + ow_anim $61, 1, OW_FRAMES_0AE + ow_anim $62, 1, OW_FRAMES_0AF + ow_anim $63, 1, OW_FRAMES_0B0 + ow_anim $64, 1, OW_FRAMES_0B1 + ow_anim $65, 1, OW_FRAMES_0B2 + +OWAnimation0D:: + db 16 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 1 + db 1 + db 1 + db 1 + db 4 + db 5 + db 4 + db 5 + db 4 + db 5 + db 4 + db 5 + + ; data + ow_anim $30, 1, OW_FRAMES_0B3 + ow_anim $40, 1, OW_FRAMES_0B4 + ow_anim $31, 1, OW_FRAMES_0B5 + ow_anim $41, 1, OW_FRAMES_0B6 + ow_anim $32, 1, OW_FRAMES_0B7 + ow_anim $42, 1, OW_FRAMES_0B8 + ow_anim $33, 1, OW_FRAMES_0B9 + ow_anim $43, 1, OW_FRAMES_0BA + ow_anim $68, 1, OW_FRAMES_0BB + ow_anim $78, 1, OW_FRAMES_0BC + ow_anim $69, 1, OW_FRAMES_0BD + ow_anim $79, 1, OW_FRAMES_0BE + ow_anim $6a, 1, OW_FRAMES_0BF + ow_anim $7a, 1, OW_FRAMES_0C0 + ow_anim $6b, 1, OW_FRAMES_0C1 + ow_anim $7b, 1, OW_FRAMES_0C2 + +OWAnimation0E:: + db 5 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $31, 1, OW_FRAMES_0C3 + ow_anim $32, 1, OW_FRAMES_0C4 + ow_anim $37, 1, OW_FRAMES_0C5 + ow_anim $38, 1, OW_FRAMES_0C6 + ow_anim $39, 1, OW_FRAMES_0C7 + +OWAnimation0F:: + db 32 ; length + + ; durations + db 26 + db 26 + db 26 + db 26 + db 26 + db 26 + db 4 + db 4 + db 4 + db 4 + db 0 + db 0 + db 0 + db 0 + db 8 + db 8 + db 8 + db 8 + db 4 + db 4 + db 4 + db 4 + db 12 + db 12 + db 12 + db 12 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $74, 1, OW_FRAMES_1A3 + ow_anim $75, 1, OW_FRAMES_1A4 + ow_anim $84, 1, OW_FRAMES_1A5 + ow_anim $85, 1, OW_FRAMES_1A6 + ow_anim $94, 1, OW_FRAMES_1A7 + ow_anim $95, 1, OW_FRAMES_1A8 + ow_anim $78, 1, OW_FRAMES_1A9 + ow_anim $79, 1, OW_FRAMES_1AA + ow_anim $88, 1, OW_FRAMES_1AB + ow_anim $89, 1, OW_FRAMES_1AC + ow_anim $7c, 1, OW_FRAMES_1AD + ow_anim $7d, 1, OW_FRAMES_1AE + ow_anim $8c, 1, OW_FRAMES_1AF + ow_anim $8d, 1, OW_FRAMES_1B0 + ow_anim $90, 1, OW_FRAMES_1B1 + ow_anim $91, 1, OW_FRAMES_1B2 + ow_anim $a0, 1, OW_FRAMES_1B3 + ow_anim $a1, 1, OW_FRAMES_1B4 + ow_anim $98, 1, OW_FRAMES_1B5 + ow_anim $a8, 1, OW_FRAMES_1B6 + ow_anim $b4, 1, OW_FRAMES_1B7 + ow_anim $b5, 1, OW_FRAMES_1B8 + ow_anim $9e, 1, OW_FRAMES_1B9 + ow_anim $9f, 1, OW_FRAMES_1BA + ow_anim $ae, 1, OW_FRAMES_1BB + ow_anim $af, 1, OW_FRAMES_1BC + ow_anim $9a, 1, OW_FRAMES_1BD + ow_anim $9b, 1, OW_FRAMES_1BE + ow_anim $aa, 1, OW_FRAMES_1BF + ow_anim $ab, 1, OW_FRAMES_1C0 + ow_anim $a4, 1, OW_FRAMES_1C1 + ow_anim $a6, 1, OW_FRAMES_1C2 + +OWAnimation11:: + db 2 ; length + + ; durations + db 0 + db 0 + + ; data + ow_anim $99, 1, OW_FRAMES_0C9 + ow_anim $9c, 1, OW_FRAMES_0CA + +OWAnimation12:: + db 10 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 1 + db 1 + db 2 + db 2 + db 2 + db 2 + + ; data + ow_anim $52, 1, OW_FRAMES_0CB + ow_anim $53, 1, OW_FRAMES_0CC + ow_anim $62, 1, OW_FRAMES_0CD + ow_anim $63, 1, OW_FRAMES_0CE + ow_anim $56, 1, OW_FRAMES_0CF + ow_anim $57, 1, OW_FRAMES_0D0 + ow_anim $5a, 1, OW_FRAMES_0D1 + ow_anim $5b, 1, OW_FRAMES_0D2 + ow_anim $5c, 1, OW_FRAMES_0D3 + ow_anim $5d, 1, OW_FRAMES_0D4 + +OWAnimation13:: + db 8 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $3c, 1, OW_FRAMES_0D5 + ow_anim $3d, 1, OW_FRAMES_0D6 + ow_anim $4c, 1, OW_FRAMES_0D7 + ow_anim $4d, 1, OW_FRAMES_0D8 + ow_anim $36, 1, OW_FRAMES_0D9 + ow_anim $46, 1, OW_FRAMES_0DA + ow_anim $37, 1, OW_FRAMES_0DB + ow_anim $47, 1, OW_FRAMES_0DC + +OWAnimation14:: + db 8 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $3d, 1, OW_FRAMES_0DD + ow_anim $3e, 1, OW_FRAMES_0DE + ow_anim $40, 1, OW_FRAMES_0DF + ow_anim $41, 1, OW_FRAMES_0E0 + ow_anim $42, 1, OW_FRAMES_0E1 + ow_anim $43, 1, OW_FRAMES_0E2 + ow_anim $44, 1, OW_FRAMES_0E3 + ow_anim $45, 1, OW_FRAMES_0E4 + +OWAnimation15:: + db 20 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $43, 1, OW_FRAMES_0E5 + ow_anim $44, 1, OW_FRAMES_0E6 + ow_anim $45, 1, OW_FRAMES_0E7 + ow_anim $46, 1, OW_FRAMES_0E8 + ow_anim $56, 1, OW_FRAMES_0E9 + ow_anim $57, 1, OW_FRAMES_0EA + ow_anim $58, 1, OW_FRAMES_0EB + ow_anim $59, 1, OW_FRAMES_0EC + ow_anim $5a, 1, OW_FRAMES_0ED + ow_anim $5b, 1, OW_FRAMES_0EE + ow_anim $5c, 1, OW_FRAMES_0EF + ow_anim $64, 1, OW_FRAMES_0F0 + ow_anim $67, 1, OW_FRAMES_0F1 + ow_anim $6a, 1, OW_FRAMES_0F2 + ow_anim $65, 1, OW_FRAMES_0F3 + ow_anim $66, 1, OW_FRAMES_0F4 + ow_anim $68, 1, OW_FRAMES_0F5 + ow_anim $69, 1, OW_FRAMES_0F6 + ow_anim $40, 1, OW_FRAMES_0F7 + ow_anim $72, 1, OW_FRAMES_0F8 + +OWAnimation16:: + db 14 ; length + + ; durations + db 0 + db 0 + db 1 + db 1 + db 2 + db 2 + db 3 + db 3 + db 4 + db 4 + db 5 + db 5 + db 6 + db 6 + + ; data + ow_anim $a3, 1, OW_FRAMES_0F9 + ow_anim $a4, 1, OW_FRAMES_0FA + ow_anim $a5, 1, OW_FRAMES_0FB + ow_anim $a6, 1, OW_FRAMES_0FC + ow_anim $a7, 1, OW_FRAMES_0FD + ow_anim $a8, 1, OW_FRAMES_0FE + ow_anim $ae, 1, OW_FRAMES_0FF + ow_anim $a0, 1, OW_FRAMES_100 + ow_anim $a1, 1, OW_FRAMES_101 + ow_anim $a2, 1, OW_FRAMES_102 + ow_anim $a9, 1, OW_FRAMES_103 + ow_anim $aa, 1, OW_FRAMES_104 + ow_anim $ab, 1, OW_FRAMES_105 + ow_anim $ac, 1, OW_FRAMES_106 + +OWAnimation17:: + db 24 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 1 + db 1 + db 1 + db 1 + db 1 + db 1 + db 2 + db 2 + db 2 + db 2 + db 2 + db 3 + db 3 + db 3 + db 3 + db 3 + db 3 + + ; data + ow_anim $54, 1, OW_FRAMES_107 + ow_anim $55, 1, OW_FRAMES_108 + ow_anim $56, 1, OW_FRAMES_109 + ow_anim $36, 1, OW_FRAMES_10A + ow_anim $37, 1, OW_FRAMES_10B + ow_anim $38, 1, OW_FRAMES_10C + ow_anim $39, 1, OW_FRAMES_10D + ow_anim $26, 1, OW_FRAMES_10E + ow_anim $27, 1, OW_FRAMES_10F + ow_anim $2a, 1, OW_FRAMES_110 + ow_anim $2b, 1, OW_FRAMES_111 + ow_anim $2e, 1, OW_FRAMES_112 + ow_anim $2f, 1, OW_FRAMES_113 + ow_anim $20, 1, OW_FRAMES_114 + ow_anim $21, 1, OW_FRAMES_115 + ow_anim $22, 1, OW_FRAMES_116 + ow_anim $32, 1, OW_FRAMES_117 + ow_anim $33, 1, OW_FRAMES_118 + ow_anim $42, 1, OW_FRAMES_119 + ow_anim $43, 1, OW_FRAMES_11A + ow_anim $44, 1, OW_FRAMES_11B + ow_anim $45, 1, OW_FRAMES_11C + ow_anim $46, 1, OW_FRAMES_11D + ow_anim $47, 1, OW_FRAMES_11E + +OWAnimation18:: + db 31 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $3d, 1, OW_FRAMES_11F + ow_anim $46, 1, OW_FRAMES_120 + ow_anim $47, 1, OW_FRAMES_121 + ow_anim $58, 1, OW_FRAMES_122 + ow_anim $40, 1, OW_FRAMES_123 + ow_anim $41, 1, OW_FRAMES_124 + ow_anim $50, 1, OW_FRAMES_125 + ow_anim $51, 1, OW_FRAMES_126 + ow_anim $60, 1, OW_FRAMES_127 + ow_anim $70, 1, OW_FRAMES_128 + ow_anim $4c, 1, OW_FRAMES_129 + ow_anim $4d, 1, OW_FRAMES_12A + ow_anim $4e, 1, OW_FRAMES_12B + ow_anim $4f, 1, OW_FRAMES_12C + ow_anim $90, 1, OW_FRAMES_12D + ow_anim $91, 1, OW_FRAMES_12E + ow_anim $63, 1, OW_FRAMES_12F + ow_anim $64, 1, OW_FRAMES_130 + ow_anim $73, 1, OW_FRAMES_131 + ow_anim $74, 1, OW_FRAMES_132 + ow_anim $69, 1, OW_FRAMES_133 + ow_anim $79, 1, OW_FRAMES_134 + ow_anim $80, 1, OW_FRAMES_135 + ow_anim $81, 1, OW_FRAMES_136 + ow_anim $82, 1, OW_FRAMES_137 + ow_anim $7c, 1, OW_FRAMES_138 + ow_anim $7d, 1, OW_FRAMES_139 + ow_anim $89, 1, OW_FRAMES_13A + ow_anim $8a, 1, OW_FRAMES_13B + ow_anim $96, 1, OW_FRAMES_13C + ow_anim $97, 1, OW_FRAMES_13D + +OWAnimation19:: + db 4 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $16, 1, OW_FRAMES_13E + ow_anim $c1, 1, OW_FRAMES_13F + ow_anim $c0, 1, OW_FRAMES_140 + ow_anim $c2, 1, OW_FRAMES_141 + +OWAnimation1A:: + db 2 ; length + + ; durations + db 0 + db 0 + + ; data + ow_anim $4e, 1, OW_FRAMES_142 + ow_anim $4f, 1, OW_FRAMES_143 + +OWAnimation1B:: + db 4 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $42, 1, OW_FRAMES_144 + ow_anim $43, 1, OW_FRAMES_145 + ow_anim $45, 1, OW_FRAMES_146 + ow_anim $44, 1, OW_FRAMES_147 + +OWAnimation1C:: + db 2 ; length + + ; durations + db 0 + db 0 + + ; data + ow_anim $29, 1, OW_FRAMES_148 + ow_anim $2a, 1, OW_FRAMES_149 + +OWAnimation1D:: + db 4 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $28, 1, OW_FRAMES_14A + ow_anim $38, 1, OW_FRAMES_14B + ow_anim $29, 1, OW_FRAMES_14C + ow_anim $39, 1, OW_FRAMES_14D + +OWAnimation1E:: + db 4 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $89, 1, OW_FRAMES_14E + ow_anim $99, 1, OW_FRAMES_14F + ow_anim $8a, 1, OW_FRAMES_150 + ow_anim $9a, 1, OW_FRAMES_151 + +OWAnimation1F:: + db 6 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $54, 1, OW_FRAMES_152 + ow_anim $55, 1, OW_FRAMES_153 + ow_anim $56, 1, OW_FRAMES_154 + ow_anim $57, 1, OW_FRAMES_155 + ow_anim $60, 1, OW_FRAMES_156 + ow_anim $61, 1, OW_FRAMES_157 + +OWAnimation20:: + db 4 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $20, 1, OW_FRAMES_158 + ow_anim $22, 1, OW_FRAMES_159 + ow_anim $21, 1, OW_FRAMES_15A + ow_anim $23, 1, OW_FRAMES_15B + +OWAnimation21:: + db 6 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $2a, 1, OW_FRAMES_15C + ow_anim $3a, 1, OW_FRAMES_15D + ow_anim $2b, 1, OW_FRAMES_15E + ow_anim $3b, 1, OW_FRAMES_15F + ow_anim $52, 1, OW_FRAMES_160 + ow_anim $53, 1, OW_FRAMES_161 + +OWAnimation22:: + db 6 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $24, 1, OW_FRAMES_162 + ow_anim $25, 1, OW_FRAMES_163 + ow_anim $26, 1, OW_FRAMES_164 + ow_anim $27, 1, OW_FRAMES_165 + ow_anim $34, 1, OW_FRAMES_166 + ow_anim $37, 1, OW_FRAMES_167 + +OWAnimation23:: + db 4 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $32, 1, OW_FRAMES_168 + ow_anim $33, 1, OW_FRAMES_169 + ow_anim $42, 1, OW_FRAMES_16A + ow_anim $43, 1, OW_FRAMES_16B + +OWAnimation24:: + db 3 ; length + + ; durations + db 0 + db 0 + db 0 + + ; data + ow_anim $4d, 1, OW_FRAMES_16C + ow_anim $4e, 1, OW_FRAMES_16D + ow_anim $4f, 1, OW_FRAMES_16E + +OWAnimation25:: + db 5 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $2c, 1, OW_FRAMES_16F + ow_anim $2d, 1, OW_FRAMES_170 + ow_anim $2e, 1, OW_FRAMES_171 + ow_anim $35, 1, OW_FRAMES_172 + ow_anim $38, 1, OW_FRAMES_173 + +OWAnimation26:: + db 9 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $34, 1, OW_FRAMES_174 + ow_anim $35, 1, OW_FRAMES_175 + ow_anim $36, 1, OW_FRAMES_176 + ow_anim $3d, 1, OW_FRAMES_177 + ow_anim $40, 1, OW_FRAMES_178 + ow_anim $43, 1, OW_FRAMES_179 + ow_anim $44, 1, OW_FRAMES_17A + ow_anim $45, 1, OW_FRAMES_17B + ow_anim $46, 1, OW_FRAMES_17C + +OWAnimation27:: + db 8 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $24, 1, OW_FRAMES_17D + ow_anim $34, 1, OW_FRAMES_17E + ow_anim $25, 1, OW_FRAMES_17F + ow_anim $35, 1, OW_FRAMES_180 + ow_anim $2a, 1, OW_FRAMES_181 + ow_anim $3a, 1, OW_FRAMES_182 + ow_anim $2b, 1, OW_FRAMES_183 + ow_anim $3b, 1, OW_FRAMES_184 + +OWAnimation28:: + db 12 ; length + + ; durations + db 1 + db 1 + db 1 + db 1 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $40, 1, OW_FRAMES_185 + ow_anim $50, 1, OW_FRAMES_186 + ow_anim $41, 1, OW_FRAMES_187 + ow_anim $51, 1, OW_FRAMES_188 + ow_anim $64, 1, OW_FRAMES_189 + ow_anim $74, 1, OW_FRAMES_18A + ow_anim $65, 1, OW_FRAMES_18B + ow_anim $75, 1, OW_FRAMES_18C + ow_anim $6a, 1, OW_FRAMES_18D + ow_anim $7a, 1, OW_FRAMES_18E + ow_anim $6b, 1, OW_FRAMES_18F + ow_anim $7b, 1, OW_FRAMES_190 + +OWAnimation29:: + db 4 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $4e, 1, OW_FRAMES_191 + ow_anim $4f, 1, OW_FRAMES_192 + ow_anim $7e, 1, OW_FRAMES_193 + ow_anim $7f, 1, OW_FRAMES_194 + +OWAnimation2A:: + db 10 ; length + + ; durations + db 0 + db 0 + db 1 + db 1 + db 2 + db 2 + db 3 + db 3 + db 4 + db 4 + + ; data + ow_anim $99, 1, OW_FRAMES_195 + ow_anim $9a, 1, OW_FRAMES_196 + ow_anim $9b, 1, OW_FRAMES_197 + ow_anim $9c, 1, OW_FRAMES_198 + ow_anim $9d, 1, OW_FRAMES_199 + ow_anim $9e, 1, OW_FRAMES_19A + ow_anim $c0, 1, OW_FRAMES_19B + ow_anim $c1, 1, OW_FRAMES_19C + ow_anim $c7, 1, OW_FRAMES_19D + ow_anim $c8, 1, OW_FRAMES_19E + +OWAnimation2B:: + db 4 ; length + + ; durations + db 0 + db 0 + db 0 + db 0 + + ; data + ow_anim $74, 1, OW_FRAMES_19F + ow_anim $75, 1, OW_FRAMES_1A0 + ow_anim $66, 1, OW_FRAMES_1A1 + ow_anim $67, 1, OW_FRAMES_1A2 diff --git a/src/data/ow_tile_frames1.asm b/src/data/ow_tile_frames1.asm new file mode 100644 index 0000000..51297ff --- /dev/null +++ b/src/data/ow_tile_frames1.asm @@ -0,0 +1,2636 @@ +OWTileFrames000:: + ow_frame $87, 14 + ow_frame $93, 14 + ow_frame $9f, 14 + ow_frame_end + +OWTileFrames001:: + ow_frame $88, 14 + ow_frame $94, 14 + ow_frame $a0, 14 + ow_frame_end + +OWTileFrames002:: + ow_frame $89, 14 + ow_frame $95, 14 + ow_frame $a1, 14 + ow_frame_end + +OWTileFrames003:: + ow_frame $8a, 14 + ow_frame $96, 14 + ow_frame $a2, 14 + ow_frame_end + +OWTileFrames004:: + ow_frame $8b, 14 + ow_frame $97, 14 + ow_frame $a3, 14 + ow_frame_end + +OWTileFrames005:: + ow_frame $8c, 14 + ow_frame $98, 14 + ow_frame $a4, 14 + ow_frame_end + +OWTileFrames006:: + ow_frame $8d, 14 + ow_frame $99, 14 + ow_frame $a5, 14 + ow_frame_end + +OWTileFrames007:: + ow_frame $8e, 14 + ow_frame $9a, 14 + ow_frame $a6, 14 + ow_frame_end + +OWTileFrames008:: + ow_frame $8f, 14 + ow_frame $9b, 14 + ow_frame $a7, 14 + ow_frame_end + +OWTileFrames009:: + ow_frame $90, 14 + ow_frame $9c, 14 + ow_frame $a8, 14 + ow_frame_end + +OWTileFrames00A:: + ow_frame $91, 14 + ow_frame $9d, 14 + ow_frame $a9, 14 + ow_frame_end + +OWTileFrames00B:: + ow_frame $92, 14 + ow_frame $9e, 14 + ow_frame $aa, 14 + ow_frame_end + +OWTileFrames00C:: + ow_frame $ab, 14 + ow_frame $ac, 14 + ow_frame $ad, 14 + ow_frame_end + +OWTileFrames00D:: + ow_frame $ac, 14 + ow_frame $ad, 14 + ow_frame $ab, 14 + ow_frame_end + +OWTileFrames00E:: + ow_frame $44, 14 + ow_frame $40, 14 + ow_frame_end + +OWTileFrames00F:: + ow_frame $54, 14 + ow_frame $50, 14 + ow_frame_end + +OWTileFrames010:: + ow_frame $45, 14 + ow_frame $41, 14 + ow_frame_end + +OWTileFrames011:: + ow_frame $55, 14 + ow_frame $51, 14 + ow_frame_end + +OWTileFrames012:: + ow_frame $46, 14 + ow_frame $42, 14 + ow_frame_end + +OWTileFrames013:: + ow_frame $56, 14 + ow_frame $52, 14 + ow_frame_end + +OWTileFrames014:: + ow_frame $47, 14 + ow_frame $43, 14 + ow_frame_end + +OWTileFrames015:: + ow_frame $57, 14 + ow_frame $53, 14 + ow_frame_end + +OWTileFrames016:: + ow_frame $3a, 16 + ow_frame $3c, 16 + ow_frame_end + +OWTileFrames017:: + ow_frame $4a, 16 + ow_frame $4c, 16 + ow_frame_end + +OWTileFrames018:: + ow_frame $3b, 16 + ow_frame $3d, 16 + ow_frame_end + +OWTileFrames019:: + ow_frame $4b, 16 + ow_frame $4d, 16 + ow_frame_end + +OWTileFrames01A:: + ow_frame $3a, 15 + ow_frame $d2, 15 + ow_frame_end + +OWTileFrames01B:: + ow_frame $3e, 15 + ow_frame $4e, 15 + ow_frame_end + +OWTileFrames01C:: + ow_frame $4e, 15 + ow_frame $3e, 15 + ow_frame_end + +OWTileFrames01D:: + ow_frame $4a, 15 + ow_frame $d4, 15 + ow_frame_end + +OWTileFrames01E:: + ow_frame $3b, 15 + ow_frame $d3, 15 + ow_frame_end + +OWTileFrames01F:: + ow_frame $3f, 15 + ow_frame $4f, 15 + ow_frame_end + +OWTileFrames020:: + ow_frame $4f, 15 + ow_frame $3f, 15 + ow_frame_end + +OWTileFrames021:: + ow_frame $4b, 15 + ow_frame $d5, 15 + ow_frame_end + +OWTileFrames022:: + ow_frame $46, 30 + ow_frame $3c, 30 + ow_frame $40, 30 + ow_frame_end + +OWTileFrames023:: + ow_frame $56, 30 + ow_frame $4b, 30 + ow_frame $50, 30 + ow_frame_end + +OWTileFrames024:: + ow_frame $47, 30 + ow_frame $3d, 30 + ow_frame $41, 30 + ow_frame_end + +OWTileFrames025:: + ow_frame $57, 30 + ow_frame $4c, 30 + ow_frame $51, 30 + ow_frame_end + +OWTileFrames026:: + ow_frame $66, 30 + ow_frame $5b, 30 + ow_frame $61, 30 + ow_frame_end + +OWTileFrames027:: + ow_frame $48, 30 + ow_frame $3e, 30 + ow_frame $42, 30 + ow_frame_end + +OWTileFrames028:: + ow_frame $58, 30 + ow_frame $4d, 30 + ow_frame $52, 30 + ow_frame_end + +OWTileFrames029:: + ow_frame $67, 30 + ow_frame $5c, 30 + ow_frame $62, 30 + ow_frame_end + +OWTileFrames02A:: + ow_frame $49, 30 + ow_frame $3f, 30 + ow_frame $43, 30 + ow_frame_end + +OWTileFrames02B:: + ow_frame $59, 30 + ow_frame $4e, 30 + ow_frame $53, 30 + ow_frame_end + +OWTileFrames02C:: + ow_frame $4a, 30 + ow_frame $5d, 30 + ow_frame $63, 30 + ow_frame_end + +OWTileFrames02D:: + ow_frame $5a, 30 + ow_frame $4f, 30 + ow_frame $54, 30 + ow_frame_end + +OWTileFrames02E:: + ow_frame $68, 30 + ow_frame $5e, 30 + ow_frame $64, 30 + ow_frame_end + +OWTileFrames02F:: + ow_frame $69, 30 + ow_frame $5f, 30 + ow_frame $65, 30 + ow_frame_end + +OWTileFrames030:: + ow_frame $40, 30 + ow_frame $46, 30 + ow_frame $3c, 30 + ow_frame_end + +OWTileFrames031:: + ow_frame $50, 30 + ow_frame $56, 30 + ow_frame $4b, 30 + ow_frame_end + +OWTileFrames032:: + ow_frame $41, 30 + ow_frame $47, 30 + ow_frame $3d, 30 + ow_frame_end + +OWTileFrames033:: + ow_frame $51, 30 + ow_frame $57, 30 + ow_frame $4c, 30 + ow_frame_end + +OWTileFrames034:: + ow_frame $61, 30 + ow_frame $66, 30 + ow_frame $5b, 30 + ow_frame_end + +OWTileFrames035:: + ow_frame $42, 30 + ow_frame $48, 30 + ow_frame $3e, 30 + ow_frame_end + +OWTileFrames036:: + ow_frame $52, 30 + ow_frame $58, 30 + ow_frame $4d, 30 + ow_frame_end + +OWTileFrames037:: + ow_frame $62, 30 + ow_frame $67, 30 + ow_frame $5c, 30 + ow_frame_end + +OWTileFrames038:: + ow_frame $43, 30 + ow_frame $49, 30 + ow_frame $3f, 30 + ow_frame_end + +OWTileFrames039:: + ow_frame $53, 30 + ow_frame $59, 30 + ow_frame $4e, 30 + ow_frame_end + +OWTileFrames03A:: + ow_frame $63, 30 + ow_frame $4a, 30 + ow_frame $5d, 30 + ow_frame_end + +OWTileFrames03B:: + ow_frame $54, 30 + ow_frame $5a, 30 + ow_frame $4f, 30 + ow_frame_end + +OWTileFrames03C:: + ow_frame $64, 30 + ow_frame $68, 30 + ow_frame $5e, 30 + ow_frame_end + +OWTileFrames03D:: + ow_frame $65, 30 + ow_frame $69, 30 + ow_frame $5f, 30 + ow_frame_end + +OWTileFrames03E:: + ow_frame $ac, 30 + ow_frame $a2, 90 + ow_frame_end + +OWTileFrames03F:: + ow_frame $bc, 30 + ow_frame $b2, 90 + ow_frame_end + +OWTileFrames040:: + ow_frame $ad, 30 + ow_frame $a3, 90 + ow_frame_end + +OWTileFrames041:: + ow_frame $bd, 30 + ow_frame $b3, 90 + ow_frame_end + +OWTileFrames042:: + ow_frame $ae, 30 + ow_frame $6c, 90 + ow_frame_end + +OWTileFrames043:: + ow_frame $be, 30 + ow_frame $7c, 90 + ow_frame_end + +OWTileFrames044:: + ow_frame $af, 30 + ow_frame $6d, 90 + ow_frame_end + +OWTileFrames045:: + ow_frame $bf, 30 + ow_frame $7d, 90 + ow_frame_end + +OWTileFrames046:: + ow_frame $ac, 30 + ow_frame $a8, 90 + ow_frame_end + +OWTileFrames047:: + ow_frame $bc, 30 + ow_frame $b8, 90 + ow_frame_end + +OWTileFrames048:: + ow_frame $ad, 30 + ow_frame $a9, 90 + ow_frame_end + +OWTileFrames049:: + ow_frame $bd, 30 + ow_frame $b9, 90 + ow_frame_end + +OWTileFrames04A:: + ow_frame $ac, 30 + ow_frame $aa, 90 + ow_frame_end + +OWTileFrames04B:: + ow_frame $bc, 30 + ow_frame $ba, 90 + ow_frame_end + +OWTileFrames04C:: + ow_frame $ad, 30 + ow_frame $ab, 90 + ow_frame_end + +OWTileFrames04D:: + ow_frame $bd, 30 + ow_frame $bb, 90 + ow_frame_end + +OWTileFrames04E:: + ow_frame $ac, 30 + ow_frame $a4, 90 + ow_frame_end + +OWTileFrames04F:: + ow_frame $bc, 30 + ow_frame $b4, 90 + ow_frame_end + +OWTileFrames050:: + ow_frame $ad, 30 + ow_frame $a5, 90 + ow_frame_end + +OWTileFrames051:: + ow_frame $bd, 30 + ow_frame $b5, 90 + ow_frame_end + +OWTileFrames052:: + ow_frame $ac, 30 + ow_frame $a6, 90 + ow_frame_end + +OWTileFrames053:: + ow_frame $bc, 30 + ow_frame $b6, 90 + ow_frame_end + +OWTileFrames054:: + ow_frame $ad, 30 + ow_frame $a7, 90 + ow_frame_end + +OWTileFrames055:: + ow_frame $bd, 30 + ow_frame $b7, 90 + ow_frame_end + +OWTileFrames056:: + ow_frame $8a, 30 + ow_frame $a0, 90 + ow_frame_end + +OWTileFrames057:: + ow_frame $9a, 30 + ow_frame $b0, 90 + ow_frame_end + +OWTileFrames058:: + ow_frame $8b, 30 + ow_frame $a1, 90 + ow_frame_end + +OWTileFrames059:: + ow_frame $9b, 30 + ow_frame $b1, 90 + ow_frame_end + +OWTileFrames05A:: + ow_frame $ac, 30 + ow_frame $a2, 90 + ow_frame_end + +OWTileFrames05B:: + ow_frame $bc, 30 + ow_frame $b2, 90 + ow_frame_end + +OWTileFrames05C:: + ow_frame $ad, 30 + ow_frame $a3, 90 + ow_frame_end + +OWTileFrames05D:: + ow_frame $bd, 30 + ow_frame $b3, 90 + ow_frame_end + +OWTileFrames05E:: + ow_frame $67, 30 + ow_frame $7d, 30 + ow_frame_end + +OWTileFrames05F:: + ow_frame $68, 30 + ow_frame $7e, 30 + ow_frame_end + +OWTileFrames060:: + ow_frame $80, 30 + ow_frame $7f, 30 + ow_frame_end + +OWTileFrames061:: + ow_frame $0a, 30 + ow_frame $44, 30 + ow_frame_end + +OWTileFrames062:: + ow_frame $1a, 30 + ow_frame $4a, 30 + ow_frame_end + +OWTileFrames063:: + ow_frame $0b, 30 + ow_frame $45, 30 + ow_frame_end + +OWTileFrames064:: + ow_frame $1b, 30 + ow_frame $4b, 30 + ow_frame_end + +OWTileFrames065:: + ow_frame $0c, 30 + ow_frame $46, 30 + ow_frame_end + +OWTileFrames066:: + ow_frame $1c, 30 + ow_frame $4c, 30 + ow_frame_end + +OWTileFrames067:: + ow_frame $0d, 30 + ow_frame $47, 30 + ow_frame_end + +OWTileFrames068:: + ow_frame $1d, 30 + ow_frame $4d, 30 + ow_frame_end + +OWTileFrames069:: + ow_frame $74, 11 + ow_frame $68, 11 + ow_frame $70, 11 + ow_frame_end + +OWTileFrames06A:: + ow_frame $84, 11 + ow_frame $78, 11 + ow_frame $80, 11 + ow_frame_end + +OWTileFrames06B:: + ow_frame $94, 11 + ow_frame $88, 11 + ow_frame $90, 11 + ow_frame_end + +OWTileFrames06C:: + ow_frame $6e, 11 + ow_frame $8c, 11 + ow_frame $6c, 11 + ow_frame_end + +OWTileFrames06D:: + ow_frame $7e, 11 + ow_frame $8e, 11 + ow_frame $7c, 11 + ow_frame_end + +OWTileFrames06E:: + ow_frame $75, 11 + ow_frame $69, 11 + ow_frame $71, 11 + ow_frame_end + +OWTileFrames06F:: + ow_frame $85, 11 + ow_frame $79, 11 + ow_frame $81, 11 + ow_frame_end + +OWTileFrames070:: + ow_frame $95, 11 + ow_frame $89, 11 + ow_frame $91, 11 + ow_frame_end + +OWTileFrames071:: + ow_frame $6f, 11 + ow_frame $8d, 11 + ow_frame $6d, 11 + ow_frame_end + +OWTileFrames072:: + ow_frame $7f, 11 + ow_frame $8f, 11 + ow_frame $7d, 11 + ow_frame_end + +OWTileFrames073:: + ow_frame $76, 11 + ow_frame $6a, 11 + ow_frame $72, 11 + ow_frame_end + +OWTileFrames074:: + ow_frame $86, 11 + ow_frame $7a, 11 + ow_frame $82, 11 + ow_frame_end + +OWTileFrames075:: + ow_frame $92, 11 + ow_frame $8a, 11 + ow_frame $92, 11 + ow_frame_end + +OWTileFrames076:: + ow_frame $77, 11 + ow_frame $6b, 11 + ow_frame $73, 11 + ow_frame_end + +OWTileFrames077:: + ow_frame $87, 11 + ow_frame $7b, 11 + ow_frame $83, 11 + ow_frame_end + +OWTileFrames078:: + ow_frame $97, 11 + ow_frame $8b, 11 + ow_frame $93, 11 + ow_frame_end + +OWTileFrames079:: + ow_frame $9b, 20 + ow_frame $9e, 20 + ow_frame $9b, 20 + ow_frame $98, 20 + ow_frame_end + +OWTileFrames07A:: + ow_frame $9c, 20 + ow_frame $9f, 20 + ow_frame $9c, 20 + ow_frame $99, 20 + ow_frame_end + +OWTileFrames07B:: + ow_frame $9d, 20 + ow_frame $a0, 20 + ow_frame $9d, 20 + ow_frame $9a, 20 + ow_frame_end + +OWTileFrames07C:: + ow_frame $83, 20 + ow_frame $86, 20 + ow_frame $83, 20 + ow_frame $80, 20 + ow_frame_end + +OWTileFrames07D:: + ow_frame $84, 20 + ow_frame $87, 20 + ow_frame $84, 20 + ow_frame $81, 20 + ow_frame_end + +OWTileFrames07E:: + ow_frame $85, 20 + ow_frame $88, 20 + ow_frame $85, 20 + ow_frame $82, 20 + ow_frame_end + +OWTileFrames07F:: + ow_frame $91, 20 + ow_frame $90, 20 + ow_frame $a2, 20 + ow_frame $90, 20 + ow_frame_end + +OWTileFrames080:: + ow_frame $a1, 20 + ow_frame $a0, 20 + ow_frame $a3, 20 + ow_frame $a0, 20 + ow_frame_end + +OWTileFrames081:: + ow_frame $8a, 15 + ow_frame $8c, 15 + ow_frame $88, 15 + ow_frame_end + +OWTileFrames082:: + ow_frame $9a, 15 + ow_frame $9c, 15 + ow_frame $98, 15 + ow_frame_end + +OWTileFrames083:: + ow_frame $8b, 15 + ow_frame $8d, 15 + ow_frame $89, 15 + ow_frame_end + +OWTileFrames084:: + ow_frame $9b, 15 + ow_frame $9d, 15 + ow_frame $99, 15 + ow_frame_end + +OWTileFrames085:: + ow_frame $84, 15 + ow_frame $86, 15 + ow_frame $82, 15 + ow_frame_end + +OWTileFrames086:: + ow_frame $85, 15 + ow_frame $87, 15 + ow_frame $83, 15 + ow_frame_end + +OWTileFrames087:: + ow_frame $79, 20 + ow_frame $7c, 20 + ow_frame $79, 20 + ow_frame $76, 20 + ow_frame_end + +OWTileFrames088:: + ow_frame $7a, 20 + ow_frame $7d, 20 + ow_frame $7a, 20 + ow_frame $77, 20 + ow_frame_end + +OWTileFrames089:: + ow_frame $7b, 20 + ow_frame $7e, 20 + ow_frame $7b, 20 + ow_frame $78, 20 + ow_frame_end + +OWTileFrames08A:: + ow_frame $94, 15 + ow_frame $96, 15 + ow_frame $92, 15 + ow_frame_end + +OWTileFrames08B:: + ow_frame $95, 15 + ow_frame $97, 15 + ow_frame $93, 15 + ow_frame_end + +OWTileFrames08C:: + ow_frame $a6, 15 + ow_frame $a8, 15 + ow_frame $a4, 15 + ow_frame_end + +OWTileFrames08D:: + ow_frame $a7, 15 + ow_frame $a9, 15 + ow_frame $a5, 15 + ow_frame_end + +OWTileFrames08E:: + ow_frame $a0, 10 + ow_frame $a2, 10 + ow_frame $a4, 10 + ow_frame_end + +OWTileFrames08F:: + ow_frame $b0, 10 + ow_frame $b2, 10 + ow_frame $b4, 10 + ow_frame_end + +OWTileFrames090:: + ow_frame $a1, 10 + ow_frame $a3, 10 + ow_frame $a5, 10 + ow_frame_end + +OWTileFrames091:: + ow_frame $b1, 10 + ow_frame $b3, 10 + ow_frame $b5, 10 + ow_frame_end + +OWTileFrames092:: + ow_frame $ac, 10 + ow_frame $ae, 10 + ow_frame $c0, 10 + ow_frame_end + +OWTileFrames093:: + ow_frame $bc, 10 + ow_frame $be, 10 + ow_frame $d0, 10 + ow_frame_end + +OWTileFrames094:: + ow_frame $ad, 10 + ow_frame $af, 10 + ow_frame $c1, 10 + ow_frame_end + +OWTileFrames095:: + ow_frame $bd, 10 + ow_frame $bf, 10 + ow_frame $d1, 10 + ow_frame_end + +OWTileFrames096:: + ow_frame $c8, 10 + ow_frame $ca, 10 + ow_frame $cc, 10 + ow_frame_end + +OWTileFrames097:: + ow_frame $d8, 10 + ow_frame $da, 10 + ow_frame $dc, 10 + ow_frame_end + +OWTileFrames098:: + ow_frame $c9, 10 + ow_frame $cb, 10 + ow_frame $cd, 10 + ow_frame_end + +OWTileFrames099:: + ow_frame $d9, 10 + ow_frame $db, 10 + ow_frame $dd, 10 + ow_frame_end + +OWTileFrames09A:: + ow_frame $41, 8 + ow_frame $43, 8 + ow_frame $45, 8 + ow_frame_end + +OWTileFrames09B:: + ow_frame $51, 8 + ow_frame $53, 8 + ow_frame $55, 8 + ow_frame_end + +OWTileFrames09C:: + ow_frame $42, 8 + ow_frame $44, 8 + ow_frame $46, 8 + ow_frame_end + +OWTileFrames09D:: + ow_frame $52, 8 + ow_frame $54, 8 + ow_frame $56, 8 + ow_frame_end + +OWTileFrames09E:: + ow_frame $47, 8 + ow_frame $49, 8 + ow_frame $4b, 8 + ow_frame_end + +OWTileFrames09F:: + ow_frame $57, 8 + ow_frame $59, 8 + ow_frame $5b, 8 + ow_frame_end + +OWTileFrames0A0:: + ow_frame $48, 8 + ow_frame $4a, 8 + ow_frame $4c, 8 + ow_frame_end + +OWTileFrames0A1:: + ow_frame $58, 8 + ow_frame $5a, 8 + ow_frame $5c, 8 + ow_frame_end + +OWTileFrames0A2:: + ow_frame $5f, 8 + ow_frame $81, 8 + ow_frame $85, 8 + ow_frame_end + +OWTileFrames0A3:: + ow_frame $6f, 8 + ow_frame $83, 8 + ow_frame $87, 8 + ow_frame_end + +OWTileFrames0A4:: + ow_frame $7f, 8 + ow_frame $82, 8 + ow_frame $86, 8 + ow_frame_end + +OWTileFrames0A5:: + ow_frame $80, 8 + ow_frame $84, 8 + ow_frame $88, 8 + ow_frame_end + +OWTileFrames0A6:: + ow_frame $89, 8 + ow_frame $8b, 8 + ow_frame $8d, 8 + ow_frame_end + +OWTileFrames0A7:: + ow_frame $8a, 8 + ow_frame $8c, 8 + ow_frame $8e, 8 + ow_frame_end + +OWTileFrames0A8:: + ow_frame $5b, 30 + ow_frame $65, 210 + ow_frame_end + +OWTileFrames0A9:: + ow_frame $5c, 30 + ow_frame $5d, 210 + ow_frame_end + +OWTileFrames0AA:: + ow_frame $5d, 30 + ow_frame $5c, 30 + ow_frame $5d, 180 + ow_frame_end + +OWTileFrames0AB:: + ow_frame $5e, 30 + ow_frame $66, 30 + ow_frame $5e, 180 + ow_frame_end + +OWTileFrames0AC:: + ow_frame $5f, 60 + ow_frame $66, 30 + ow_frame $5f, 150 + ow_frame_end + +OWTileFrames0AD:: + ow_frame $60, 90 + ow_frame $66, 30 + ow_frame $60, 120 + ow_frame_end + +OWTileFrames0AE:: + ow_frame $61, 120 + ow_frame $66, 30 + ow_frame $61, 90 + ow_frame_end + +OWTileFrames0AF:: + ow_frame $62, 150 + ow_frame $66, 30 + ow_frame $62, 60 + ow_frame_end + +OWTileFrames0B0:: + ow_frame $63, 180 + ow_frame $66, 30 + ow_frame $63, 30 + ow_frame_end + +OWTileFrames0B1:: + ow_frame $64, 210 + ow_frame $5c, 30 + ow_frame_end + +OWTileFrames0B2:: + ow_frame $65, 210 + ow_frame $5b, 30 + ow_frame_end + +OWTileFrames0B3:: + ow_frame $60, 8 + ow_frame $64, 8 + ow_frame_end + +OWTileFrames0B4:: + ow_frame $70, 8 + ow_frame $74, 8 + ow_frame_end + +OWTileFrames0B5:: + ow_frame $61, 8 + ow_frame $65, 8 + ow_frame_end + +OWTileFrames0B6:: + ow_frame $71, 8 + ow_frame $75, 8 + ow_frame_end + +OWTileFrames0B7:: + ow_frame $62, 8 + ow_frame $66, 8 + ow_frame_end + +OWTileFrames0B8:: + ow_frame $72, 8 + ow_frame $76, 8 + ow_frame_end + +OWTileFrames0B9:: + ow_frame $63, 8 + ow_frame $67, 8 + ow_frame_end + +OWTileFrames0BA:: + ow_frame $73, 8 + ow_frame $77, 8 + ow_frame_end + +OWTileFrames0BB:: + ow_frame $6c, 8 + ow_frame $68, 8 + ow_frame_end + +OWTileFrames0BC:: + ow_frame $7c, 8 + ow_frame $78, 8 + ow_frame_end + +OWTileFrames0BD:: + ow_frame $6d, 8 + ow_frame $69, 8 + ow_frame_end + +OWTileFrames0BE:: + ow_frame $7d, 8 + ow_frame $79, 8 + ow_frame_end + +OWTileFrames0BF:: + ow_frame $5e, 8 + ow_frame $6a, 8 + ow_frame_end + +OWTileFrames0C0:: + ow_frame $6e, 8 + ow_frame $7a, 8 + ow_frame_end + +OWTileFrames0C1:: + ow_frame $5f, 8 + ow_frame $6b, 8 + ow_frame_end + +OWTileFrames0C2:: + ow_frame $6f, 8 + ow_frame $7b, 8 + ow_frame_end + +OWTileFrames0C3:: + ow_frame $33, 7 + ow_frame $31, 7 + ow_frame $35, 7 + ow_frame $31, 7 + ow_frame_end + +OWTileFrames0C4:: + ow_frame $34, 7 + ow_frame $32, 7 + ow_frame $36, 7 + ow_frame $32, 7 + ow_frame_end + +OWTileFrames0C5:: + ow_frame $3a, 9 + ow_frame $37, 9 + ow_frame_end + +OWTileFrames0C6:: + ow_frame $3b, 9 + ow_frame $38, 9 + ow_frame_end + +OWTileFrames0C7:: + ow_frame $3c, 9 + ow_frame $39, 9 + ow_frame_end + +OWTileFrames0C8:: + ow_frame $46, 7 + ow_frame $45, 7 + ow_frame $47, 7 + ow_frame $45, 7 + ow_frame_end + +OWTileFrames0C9:: + ow_frame $9a, 6 + ow_frame $9b, 6 + ow_frame $9a, 6 + ow_frame $99, 6 + ow_frame_end + +OWTileFrames0CA:: + ow_frame $9d, 10 + ow_frame $9c, 10 + ow_frame_end + +OWTileFrames0CB:: + ow_frame $52, 4 + ow_frame $54, 4 + ow_frame $52, 32 + ow_frame $54, 4 + ow_frame $52, 22 + ow_frame_end + +OWTileFrames0CC:: + ow_frame $53, 4 + ow_frame $55, 4 + ow_frame $53, 32 + ow_frame $55, 4 + ow_frame $53, 22 + ow_frame_end + +OWTileFrames0CD:: + ow_frame $62, 4 + ow_frame $64, 4 + ow_frame $62, 32 + ow_frame $64, 4 + ow_frame $62, 22 + ow_frame_end + +OWTileFrames0CE:: + ow_frame $63, 4 + ow_frame $65, 4 + ow_frame $63, 32 + ow_frame $65, 4 + ow_frame $63, 22 + ow_frame_end + +OWTileFrames0CF:: + ow_frame $56, 8 + ow_frame $58, 4 + ow_frame $56, 24 + ow_frame $58, 4 + ow_frame $56, 18 + ow_frame $58, 4 + ow_frame $56, 4 + ow_frame_end + +OWTileFrames0D0:: + ow_frame $57, 8 + ow_frame $59, 4 + ow_frame $57, 24 + ow_frame $59, 4 + ow_frame $57, 18 + ow_frame $59, 4 + ow_frame $57, 4 + ow_frame_end + +OWTileFrames0D1:: + ow_frame $5e, 4 + ow_frame $5a, 18 + ow_frame $5e, 4 + ow_frame $5a, 28 + ow_frame $5e, 4 + ow_frame $5a, 8 + ow_frame_end + +OWTileFrames0D2:: + ow_frame $5f, 4 + ow_frame $5b, 18 + ow_frame $5f, 4 + ow_frame $5b, 28 + ow_frame $5f, 4 + ow_frame $5b, 8 + ow_frame_end + +OWTileFrames0D3:: + ow_frame $66, 4 + ow_frame $5c, 18 + ow_frame $66, 4 + ow_frame $5c, 28 + ow_frame $66, 4 + ow_frame $5c, 8 + ow_frame_end + +OWTileFrames0D4:: + ow_frame $67, 4 + ow_frame $5d, 18 + ow_frame $67, 4 + ow_frame $5d, 28 + ow_frame $67, 4 + ow_frame $5d, 8 + ow_frame_end + +OWTileFrames0D5:: + ow_frame $3c, 15 + ow_frame $3e, 15 + ow_frame $42, 15 + ow_frame_end + +OWTileFrames0D6:: + ow_frame $3d, 15 + ow_frame $3f, 15 + ow_frame $43, 15 + ow_frame_end + +OWTileFrames0D7:: + ow_frame $4c, 15 + ow_frame $40, 15 + ow_frame $44, 15 + ow_frame_end + +OWTileFrames0D8:: + ow_frame $4d, 15 + ow_frame $41, 15 + ow_frame $45, 15 + ow_frame_end + +OWTileFrames0D9:: + ow_frame $36, 8 + ow_frame $38, 8 + ow_frame $3a, 8 + ow_frame_end + +OWTileFrames0DA:: + ow_frame $46, 8 + ow_frame $48, 8 + ow_frame $4a, 8 + ow_frame_end + +OWTileFrames0DB:: + ow_frame $37, 8 + ow_frame $39, 8 + ow_frame $3b, 8 + ow_frame_end + +OWTileFrames0DC:: + ow_frame $47, 8 + ow_frame $49, 8 + ow_frame $4b, 8 + ow_frame_end + +OWTileFrames0DD:: + ow_frame $3d, 12 + ow_frame $3e, 12 + ow_frame $3f, 12 + ow_frame_end + +OWTileFrames0DE:: + ow_frame $3e, 12 + ow_frame $3f, 12 + ow_frame $3d, 12 + ow_frame_end + +OWTileFrames0DF:: + ow_frame $40, 12 + ow_frame $41, 12 + ow_frame $42, 12 + ow_frame_end + +OWTileFrames0E0:: + ow_frame $41, 12 + ow_frame $42, 12 + ow_frame $40, 12 + ow_frame_end + +OWTileFrames0E1:: + ow_frame $42, 12 + ow_frame $40, 12 + ow_frame $41, 12 + ow_frame_end + +OWTileFrames0E2:: + ow_frame $43, 12 + ow_frame $44, 12 + ow_frame $45, 12 + ow_frame_end + +OWTileFrames0E3:: + ow_frame $44, 12 + ow_frame $45, 12 + ow_frame $43, 12 + ow_frame_end + +OWTileFrames0E4:: + ow_frame $45, 12 + ow_frame $43, 12 + ow_frame $44, 12 + ow_frame_end + +OWTileFrames0E5:: + ow_frame $47, 3 + ow_frame $43, 3 + ow_frame $4b, 3 + ow_frame $43, 4 + ow_frame_end + +OWTileFrames0E6:: + ow_frame $48, 3 + ow_frame $44, 3 + ow_frame $4c, 3 + ow_frame $44, 4 + ow_frame_end + +OWTileFrames0E7:: + ow_frame $49, 3 + ow_frame $45, 3 + ow_frame $4d, 3 + ow_frame $45, 4 + ow_frame_end + +OWTileFrames0E8:: + ow_frame $4a, 3 + ow_frame $46, 3 + ow_frame $4e, 3 + ow_frame $46, 4 + ow_frame_end + +OWTileFrames0E9:: + ow_frame $4f, 7 + ow_frame $5d, 8 + ow_frame $56, 8 + ow_frame_end + +OWTileFrames0EA:: + ow_frame $50, 7 + ow_frame $5e, 8 + ow_frame $57, 8 + ow_frame_end + +OWTileFrames0EB:: + ow_frame $51, 7 + ow_frame $5f, 8 + ow_frame $58, 8 + ow_frame_end + +OWTileFrames0EC:: + ow_frame $52, 7 + ow_frame $60, 8 + ow_frame $59, 8 + ow_frame_end + +OWTileFrames0ED:: + ow_frame $53, 7 + ow_frame $61, 8 + ow_frame $5a, 8 + ow_frame_end + +OWTileFrames0EE:: + ow_frame $54, 7 + ow_frame $62, 8 + ow_frame $5b, 8 + ow_frame_end + +OWTileFrames0EF:: + ow_frame $55, 7 + ow_frame $63, 8 + ow_frame $5c, 8 + ow_frame_end + +OWTileFrames0F0:: + ow_frame $6c, 6 + ow_frame $64, 5 + ow_frame_end + +OWTileFrames0F1:: + ow_frame $6d, 6 + ow_frame $67, 5 + ow_frame_end + +OWTileFrames0F2:: + ow_frame $6b, 6 + ow_frame $6a, 5 + ow_frame_end + +OWTileFrames0F3:: + ow_frame $6e, 5 + ow_frame $65, 4 + ow_frame_end + +OWTileFrames0F4:: + ow_frame $6f, 5 + ow_frame $66, 4 + ow_frame_end + +OWTileFrames0F5:: + ow_frame $70, 5 + ow_frame $68, 4 + ow_frame_end + +OWTileFrames0F6:: + ow_frame $71, 5 + ow_frame $69, 4 + ow_frame_end + +OWTileFrames0F7:: + ow_frame $41, 20 + ow_frame $42, 20 + ow_frame $40, 20 + ow_frame_end + +OWTileFrames0F8:: + ow_frame $73, 7 + ow_frame $72, 6 + ow_frame_end + +OWTileFrames0F9:: + ow_frame $a3, 14 + ow_frame $b3, 14 + ow_frame $c3, 14 + ow_frame_end + +OWTileFrames0FA:: + ow_frame $a4, 14 + ow_frame $b4, 14 + ow_frame $c4, 14 + ow_frame_end + +OWTileFrames0FB:: + ow_frame $a5, 14 + ow_frame $b5, 14 + ow_frame $c5, 14 + ow_frame_end + +OWTileFrames0FC:: + ow_frame $a6, 14 + ow_frame $b6, 14 + ow_frame $c6, 14 + ow_frame_end + +OWTileFrames0FD:: + ow_frame $a7, 14 + ow_frame $b7, 14 + ow_frame $c7, 14 + ow_frame_end + +OWTileFrames0FE:: + ow_frame $a8, 14 + ow_frame $b8, 14 + ow_frame $c8, 14 + ow_frame_end + +OWTileFrames0FF:: + ow_frame $ae, 14 + ow_frame $bc, 14 + ow_frame $be, 14 + ow_frame_end + +OWTileFrames100:: + ow_frame $a0, 14 + ow_frame $b0, 14 + ow_frame $c0, 14 + ow_frame_end + +OWTileFrames101:: + ow_frame $a1, 14 + ow_frame $b1, 14 + ow_frame $c1, 14 + ow_frame_end + +OWTileFrames102:: + ow_frame $a2, 14 + ow_frame $b2, 14 + ow_frame $c2, 14 + ow_frame_end + +OWTileFrames103:: + ow_frame $a9, 14 + ow_frame $b9, 14 + ow_frame $c9, 14 + ow_frame_end + +OWTileFrames104:: + ow_frame $aa, 14 + ow_frame $ba, 14 + ow_frame $ca, 14 + ow_frame_end + +OWTileFrames105:: + ow_frame $ab, 14 + ow_frame $ac, 14 + ow_frame $ad, 14 + ow_frame_end + +OWTileFrames106:: + ow_frame $ac, 14 + ow_frame $ad, 14 + ow_frame $ab, 14 + ow_frame_end + +OWTileFrames107:: + ow_frame $57, 20 + ow_frame $54, 20 + ow_frame $5a, 20 + ow_frame $54, 20 + ow_frame_end + +OWTileFrames108:: + ow_frame $58, 20 + ow_frame $55, 20 + ow_frame $5b, 20 + ow_frame $55, 20 + ow_frame_end + +OWTileFrames109:: + ow_frame $59, 20 + ow_frame $56, 20 + ow_frame $5c, 20 + ow_frame $56, 20 + ow_frame_end + +OWTileFrames10A:: + ow_frame $3a, 4 + ow_frame $36, 4 + ow_frame $3e, 4 + ow_frame $36, 4 + ow_frame_end + +OWTileFrames10B:: + ow_frame $3b, 4 + ow_frame $37, 4 + ow_frame $3f, 4 + ow_frame $37, 4 + ow_frame_end + +OWTileFrames10C:: + ow_frame $3c, 4 + ow_frame $38, 4 + ow_frame $40, 4 + ow_frame $38, 4 + ow_frame_end + +OWTileFrames10D:: + ow_frame $3d, 4 + ow_frame $39, 4 + ow_frame $41, 4 + ow_frame $39, 4 + ow_frame_end + +OWTileFrames10E:: + ow_frame $28, 4 + ow_frame $26, 4 + ow_frame_end + +OWTileFrames10F:: + ow_frame $29, 4 + ow_frame $27, 4 + ow_frame_end + +OWTileFrames110:: + ow_frame $2c, 4 + ow_frame $2a, 4 + ow_frame_end + +OWTileFrames111:: + ow_frame $2d, 4 + ow_frame $2b, 4 + ow_frame_end + +OWTileFrames112:: + ow_frame $30, 4 + ow_frame $2e, 4 + ow_frame_end + +OWTileFrames113:: + ow_frame $31, 4 + ow_frame $2f, 4 + ow_frame_end + +OWTileFrames114:: + ow_frame $23, 4 + ow_frame $20, 4 + ow_frame_end + +OWTileFrames115:: + ow_frame $24, 4 + ow_frame $21, 4 + ow_frame_end + +OWTileFrames116:: + ow_frame $25, 4 + ow_frame $22, 4 + ow_frame_end + +OWTileFrames117:: + ow_frame $34, 4 + ow_frame $32, 4 + ow_frame_end + +OWTileFrames118:: + ow_frame $35, 4 + ow_frame $33, 4 + ow_frame_end + +OWTileFrames119:: + ow_frame $48, 4 + ow_frame $42, 4 + ow_frame $4e, 4 + ow_frame $42, 4 + ow_frame_end + +OWTileFrames11A:: + ow_frame $49, 4 + ow_frame $43, 4 + ow_frame $4f, 4 + ow_frame $43, 4 + ow_frame_end + +OWTileFrames11B:: + ow_frame $4a, 4 + ow_frame $44, 4 + ow_frame $50, 4 + ow_frame $44, 4 + ow_frame_end + +OWTileFrames11C:: + ow_frame $4b, 4 + ow_frame $45, 4 + ow_frame $51, 4 + ow_frame $45, 4 + ow_frame_end + +OWTileFrames11D:: + ow_frame $4c, 4 + ow_frame $46, 4 + ow_frame $52, 4 + ow_frame $46, 4 + ow_frame_end + +OWTileFrames11E:: + ow_frame $4d, 4 + ow_frame $47, 4 + ow_frame $53, 4 + ow_frame $47, 4 + ow_frame_end + +OWTileFrames11F:: + ow_frame $3d, 23 + ow_frame $3e, 23 + ow_frame $3f, 23 + ow_frame_end + +OWTileFrames120:: + ow_frame $46, 23 + ow_frame $56, 23 + ow_frame $48, 23 + ow_frame_end + +OWTileFrames121:: + ow_frame $47, 23 + ow_frame $57, 23 + ow_frame $49, 23 + ow_frame_end + +OWTileFrames122:: + ow_frame $58, 23 + ow_frame $59, 23 + ow_frame $5a, 23 + ow_frame_end + +OWTileFrames123:: + ow_frame $40, 23 + ow_frame $42, 23 + ow_frame $44, 23 + ow_frame_end + +OWTileFrames124:: + ow_frame $41, 23 + ow_frame $43, 23 + ow_frame $45, 23 + ow_frame_end + +OWTileFrames125:: + ow_frame $50, 23 + ow_frame $52, 23 + ow_frame $54, 23 + ow_frame_end + +OWTileFrames126:: + ow_frame $51, 23 + ow_frame $53, 23 + ow_frame $55, 23 + ow_frame_end + +OWTileFrames127:: + ow_frame $60, 23 + ow_frame $61, 23 + ow_frame $62, 23 + ow_frame_end + +OWTileFrames128:: + ow_frame $70, 23 + ow_frame $71, 23 + ow_frame $72, 23 + ow_frame_end + +OWTileFrames129:: + ow_frame $4c, 11 + ow_frame $5c, 11 + ow_frame $6c, 11 + ow_frame_end + +OWTileFrames12A:: + ow_frame $4d, 11 + ow_frame $5d, 11 + ow_frame $6d, 11 + ow_frame_end + +OWTileFrames12B:: + ow_frame $4e, 11 + ow_frame $5e, 11 + ow_frame $6e, 11 + ow_frame_end + +OWTileFrames12C:: + ow_frame $4f, 11 + ow_frame $5f, 11 + ow_frame $6f, 11 + ow_frame_end + +OWTileFrames12D:: + ow_frame $90, 11 + ow_frame $92, 11 + ow_frame $94, 11 + ow_frame_end + +OWTileFrames12E:: + ow_frame $91, 11 + ow_frame $93, 11 + ow_frame $95, 11 + ow_frame_end + +OWTileFrames12F:: + ow_frame $63, 17 + ow_frame $65, 17 + ow_frame $67, 17 + ow_frame_end + +OWTileFrames130:: + ow_frame $64, 17 + ow_frame $66, 17 + ow_frame $68, 17 + ow_frame_end + +OWTileFrames131:: + ow_frame $73, 17 + ow_frame $75, 17 + ow_frame $77, 17 + ow_frame_end + +OWTileFrames132:: + ow_frame $74, 17 + ow_frame $76, 17 + ow_frame $78, 17 + ow_frame_end + +OWTileFrames133:: + ow_frame $69, 17 + ow_frame $6a, 17 + ow_frame $6b, 17 + ow_frame_end + +OWTileFrames134:: + ow_frame $79, 17 + ow_frame $7a, 17 + ow_frame $7b, 17 + ow_frame_end + +OWTileFrames135:: + ow_frame $80, 11 + ow_frame $83, 11 + ow_frame $86, 11 + ow_frame_end + +OWTileFrames136:: + ow_frame $81, 11 + ow_frame $84, 11 + ow_frame $87, 11 + ow_frame_end + +OWTileFrames137:: + ow_frame $82, 11 + ow_frame $85, 11 + ow_frame $88, 11 + ow_frame_end + +OWTileFrames138:: + ow_frame $7c, 11 + ow_frame $7e, 11 + ow_frame $8e, 11 + ow_frame_end + +OWTileFrames139:: + ow_frame $7d, 11 + ow_frame $7f, 11 + ow_frame $8f, 11 + ow_frame_end + +OWTileFrames13A:: + ow_frame $89, 19 + ow_frame $8b, 19 + ow_frame $8d, 19 + ow_frame_end + +OWTileFrames13B:: + ow_frame $8a, 19 + ow_frame $8c, 19 + ow_frame $4b, 19 + ow_frame_end + +OWTileFrames13C:: + ow_frame $96, 19 + ow_frame $98, 19 + ow_frame $9a, 19 + ow_frame_end + +OWTileFrames13D:: + ow_frame $97, 19 + ow_frame $99, 19 + ow_frame $5b, 19 + ow_frame_end + +OWTileFrames13E:: + ow_frame $16, 20 + ow_frame $c3, 20 + ow_frame $c7, 20 + ow_frame_end + +OWTileFrames13F:: + ow_frame $c1, 20 + ow_frame $c5, 20 + ow_frame $d1, 20 + ow_frame_end + +OWTileFrames140:: + ow_frame $c0, 20 + ow_frame $c4, 20 + ow_frame $d0, 20 + ow_frame_end + +OWTileFrames141:: + ow_frame $c2, 20 + ow_frame $c6, 20 + ow_frame $af, 20 + ow_frame_end + +OWTileFrames142:: + ow_frame $4f, 30 + ow_frame $4e, 30 + ow_frame_end + +OWTileFrames143:: + ow_frame $4e, 30 + ow_frame $4f, 30 + ow_frame_end + +OWTileFrames144:: + ow_frame $46, 15 + ow_frame $42, 15 + ow_frame_end + +OWTileFrames145:: + ow_frame $47, 15 + ow_frame $43, 15 + ow_frame_end + +OWTileFrames146:: + ow_frame $49, 15 + ow_frame $45, 15 + ow_frame_end + +OWTileFrames147:: + ow_frame $48, 15 + ow_frame $44, 15 + ow_frame_end + +OWTileFrames148:: + ow_frame $ad, 15 + ow_frame $29, 15 + ow_frame_end + +OWTileFrames149:: + ow_frame $ae, 15 + ow_frame $2a, 15 + ow_frame_end + +OWTileFrames14A:: + ow_frame $28, 5 + ow_frame $2a, 5 + ow_frame_end + +OWTileFrames14B:: + ow_frame $38, 5 + ow_frame $3a, 5 + ow_frame_end + +OWTileFrames14C:: + ow_frame $29, 5 + ow_frame $2b, 5 + ow_frame_end + +OWTileFrames14D:: + ow_frame $39, 5 + ow_frame $3b, 5 + ow_frame_end + +OWTileFrames14E:: + ow_frame $89, 5 + ow_frame $8b, 5 + ow_frame $8d, 5 + ow_frame $8b, 5 + ow_frame_end + +OWTileFrames14F:: + ow_frame $99, 5 + ow_frame $9b, 5 + ow_frame $9d, 5 + ow_frame $9b, 5 + ow_frame_end + +OWTileFrames150:: + ow_frame $8a, 5 + ow_frame $8c, 5 + ow_frame $8e, 5 + ow_frame $8c, 5 + ow_frame_end + +OWTileFrames151:: + ow_frame $9a, 5 + ow_frame $9c, 5 + ow_frame $9e, 5 + ow_frame $9c, 5 + ow_frame_end + +OWTileFrames152:: + ow_frame $58, 20 + ow_frame $5c, 20 + ow_frame $54, 20 + ow_frame_end + +OWTileFrames153:: + ow_frame $59, 20 + ow_frame $5d, 20 + ow_frame $55, 20 + ow_frame_end + +OWTileFrames154:: + ow_frame $5a, 20 + ow_frame $5e, 20 + ow_frame $56, 20 + ow_frame_end + +OWTileFrames155:: + ow_frame $5b, 20 + ow_frame $5f, 20 + ow_frame $57, 20 + ow_frame_end + +OWTileFrames156:: + ow_frame $62, 20 + ow_frame $64, 20 + ow_frame $60, 20 + ow_frame_end + +OWTileFrames157:: + ow_frame $63, 20 + ow_frame $65, 20 + ow_frame $61, 20 + ow_frame_end + +OWTileFrames158:: + ow_frame $20, 15 + ow_frame $24, 15 + ow_frame $28, 15 + ow_frame_end + +OWTileFrames159:: + ow_frame $22, 15 + ow_frame $26, 15 + ow_frame $2a, 15 + ow_frame_end + +OWTileFrames15A:: + ow_frame $21, 15 + ow_frame $25, 15 + ow_frame $29, 15 + ow_frame_end + +OWTileFrames15B:: + ow_frame $23, 15 + ow_frame $27, 15 + ow_frame $2b, 15 + ow_frame_end + +OWTileFrames15C:: + ow_frame $2a, 8 + ow_frame $2c, 8 + ow_frame $2e, 8 + ow_frame_end + +OWTileFrames15D:: + ow_frame $3a, 8 + ow_frame $3c, 8 + ow_frame $3e, 8 + ow_frame_end + +OWTileFrames15E:: + ow_frame $2b, 8 + ow_frame $2d, 8 + ow_frame $2f, 8 + ow_frame_end + +OWTileFrames15F:: + ow_frame $3b, 8 + ow_frame $3d, 8 + ow_frame $3f, 8 + ow_frame_end + +OWTileFrames160:: + ow_frame $52, 8 + ow_frame $2c, 8 + ow_frame $2e, 8 + ow_frame_end + +OWTileFrames161:: + ow_frame $53, 8 + ow_frame $2d, 8 + ow_frame $2f, 8 + ow_frame_end + +OWTileFrames162:: + ow_frame $24, 15 + ow_frame $28, 15 + ow_frame $2c, 15 + ow_frame_end + +OWTileFrames163:: + ow_frame $25, 15 + ow_frame $29, 15 + ow_frame $2d, 15 + ow_frame_end + +OWTileFrames164:: + ow_frame $26, 15 + ow_frame $2a, 15 + ow_frame $2e, 15 + ow_frame_end + +OWTileFrames165:: + ow_frame $27, 15 + ow_frame $2b, 15 + ow_frame $2f, 15 + ow_frame_end + +OWTileFrames166:: + ow_frame $34, 15 + ow_frame $35, 15 + ow_frame $36, 15 + ow_frame_end + +OWTileFrames167:: + ow_frame $37, 15 + ow_frame $38, 15 + ow_frame $39, 15 + ow_frame_end + +OWTileFrames168:: + ow_frame $32, 15 + ow_frame $34, 15 + ow_frame $36, 15 + ow_frame_end + +OWTileFrames169:: + ow_frame $33, 15 + ow_frame $35, 15 + ow_frame $37, 15 + ow_frame_end + +OWTileFrames16A:: + ow_frame $42, 15 + ow_frame $44, 15 + ow_frame $46, 15 + ow_frame_end + +OWTileFrames16B:: + ow_frame $43, 15 + ow_frame $45, 15 + ow_frame $47, 15 + ow_frame_end + +OWTileFrames16C:: + ow_frame $50, 20 + ow_frame $4d, 20 + ow_frame $53, 20 + ow_frame $4d, 20 + ow_frame_end + +OWTileFrames16D:: + ow_frame $51, 20 + ow_frame $4e, 20 + ow_frame $54, 20 + ow_frame $4e, 20 + ow_frame_end + +OWTileFrames16E:: + ow_frame $52, 20 + ow_frame $4f, 20 + ow_frame $55, 20 + ow_frame $4f, 20 + ow_frame_end + +OWTileFrames16F:: + ow_frame $2f, 20 + ow_frame $2c, 20 + ow_frame $32, 20 + ow_frame $2c, 20 + ow_frame_end + +OWTileFrames170:: + ow_frame $30, 20 + ow_frame $2d, 20 + ow_frame $33, 20 + ow_frame $2d, 20 + ow_frame_end + +OWTileFrames171:: + ow_frame $31, 20 + ow_frame $2e, 20 + ow_frame $34, 20 + ow_frame $2e, 20 + ow_frame_end + +OWTileFrames172:: + ow_frame $36, 8 + ow_frame $35, 9 + ow_frame $37, 9 + ow_frame $35, 8 + ow_frame_end + +OWTileFrames173:: + ow_frame $39, 8 + ow_frame $38, 9 + ow_frame $3a, 9 + ow_frame $38, 8 + ow_frame_end + +OWTileFrames174:: + ow_frame $37, 20 + ow_frame $34, 20 + ow_frame $3a, 20 + ow_frame $34, 20 + ow_frame_end + +OWTileFrames175:: + ow_frame $38, 20 + ow_frame $35, 20 + ow_frame $3b, 20 + ow_frame $35, 20 + ow_frame_end + +OWTileFrames176:: + ow_frame $39, 20 + ow_frame $36, 20 + ow_frame $3c, 20 + ow_frame $36, 20 + ow_frame_end + +OWTileFrames177:: + ow_frame $3e, 8 + ow_frame $3d, 9 + ow_frame $3f, 9 + ow_frame $3d, 8 + ow_frame_end + +OWTileFrames178:: + ow_frame $41, 8 + ow_frame $40, 9 + ow_frame $42, 9 + ow_frame $40, 8 + ow_frame_end + +OWTileFrames179:: + ow_frame $47, 13 + ow_frame $43, 13 + ow_frame $4b, 14 + ow_frame $43, 13 + ow_frame_end + +OWTileFrames17A:: + ow_frame $48, 13 + ow_frame $44, 13 + ow_frame $4c, 14 + ow_frame $44, 13 + ow_frame_end + +OWTileFrames17B:: + ow_frame $49, 13 + ow_frame $45, 13 + ow_frame $4d, 14 + ow_frame $45, 13 + ow_frame_end + +OWTileFrames17C:: + ow_frame $4a, 13 + ow_frame $46, 13 + ow_frame $4e, 14 + ow_frame $46, 13 + ow_frame_end + +OWTileFrames17D:: + ow_frame $24, 8 + ow_frame $26, 8 + ow_frame $28, 8 + ow_frame_end + +OWTileFrames17E:: + ow_frame $34, 8 + ow_frame $36, 8 + ow_frame $38, 8 + ow_frame_end + +OWTileFrames17F:: + ow_frame $25, 8 + ow_frame $27, 8 + ow_frame $29, 8 + ow_frame_end + +OWTileFrames180:: + ow_frame $35, 8 + ow_frame $37, 8 + ow_frame $39, 8 + ow_frame_end + +OWTileFrames181:: + ow_frame $2a, 8 + ow_frame $2c, 8 + ow_frame $2e, 8 + ow_frame_end + +OWTileFrames182:: + ow_frame $3a, 8 + ow_frame $3c, 8 + ow_frame $3e, 8 + ow_frame_end + +OWTileFrames183:: + ow_frame $2b, 8 + ow_frame $2d, 8 + ow_frame $2f, 8 + ow_frame_end + +OWTileFrames184:: + ow_frame $3b, 8 + ow_frame $3d, 8 + ow_frame $3f, 8 + ow_frame_end + +OWTileFrames185:: + ow_frame $40, 8 + ow_frame $60, 8 + ow_frame $62, 8 + ow_frame_end + +OWTileFrames186:: + ow_frame $50, 8 + ow_frame $70, 8 + ow_frame $72, 8 + ow_frame_end + +OWTileFrames187:: + ow_frame $41, 8 + ow_frame $61, 8 + ow_frame $63, 8 + ow_frame_end + +OWTileFrames188:: + ow_frame $51, 8 + ow_frame $71, 8 + ow_frame $73, 8 + ow_frame_end + +OWTileFrames189:: + ow_frame $64, 8 + ow_frame $66, 8 + ow_frame $68, 8 + ow_frame_end + +OWTileFrames18A:: + ow_frame $74, 8 + ow_frame $76, 8 + ow_frame $78, 8 + ow_frame_end + +OWTileFrames18B:: + ow_frame $65, 8 + ow_frame $67, 8 + ow_frame $69, 8 + ow_frame_end + +OWTileFrames18C:: + ow_frame $75, 8 + ow_frame $77, 8 + ow_frame $79, 8 + ow_frame_end + +OWTileFrames18D:: + ow_frame $6a, 8 + ow_frame $6c, 8 + ow_frame $6e, 8 + ow_frame_end + +OWTileFrames18E:: + ow_frame $7a, 8 + ow_frame $7c, 8 + ow_frame $7e, 8 + ow_frame_end + +OWTileFrames18F:: + ow_frame $6b, 8 + ow_frame $6d, 8 + ow_frame $6f, 8 + ow_frame_end + +OWTileFrames190:: + ow_frame $7b, 8 + ow_frame $7d, 8 + ow_frame $7f, 8 + ow_frame_end + +OWTileFrames191:: + ow_frame $a9, 8 + ow_frame $a7, 8 + ow_frame $a5, 8 + ow_frame_end + +OWTileFrames192:: + ow_frame $aa, 8 + ow_frame $a8, 8 + ow_frame $a6, 8 + ow_frame_end + +OWTileFrames193:: + ow_frame $ab, 8 + ow_frame $ad, 8 + ow_frame_end + +OWTileFrames194:: + ow_frame $ac, 8 + ow_frame $ae, 8 + ow_frame_end + +OWTileFrames195:: + ow_frame $99, 5 + ow_frame $a9, 5 + ow_frame $b9, 5 + ow_frame_end + +OWTileFrames196:: + ow_frame $9a, 5 + ow_frame $aa, 5 + ow_frame $ba, 5 + ow_frame_end + +OWTileFrames197:: + ow_frame $9b, 5 + ow_frame $ab, 5 + ow_frame $bb, 5 + ow_frame_end + +OWTileFrames198:: + ow_frame $9c, 5 + ow_frame $ac, 5 + ow_frame $bc, 5 + ow_frame_end + +OWTileFrames199:: + ow_frame $9d, 5 + ow_frame $ad, 5 + ow_frame $bd, 5 + ow_frame_end + +OWTileFrames19A:: + ow_frame $9e, 5 + ow_frame $ae, 5 + ow_frame $be, 5 + ow_frame_end + +OWTileFrames19B:: + ow_frame $c0, 5 + ow_frame $c2, 5 + ow_frame $c4, 5 + ow_frame_end + +OWTileFrames19C:: + ow_frame $c1, 5 + ow_frame $c3, 5 + ow_frame $c5, 5 + ow_frame_end + +OWTileFrames19D:: + ow_frame $c7, 5 + ow_frame $c9, 5 + ow_frame $cb, 5 + ow_frame_end + +OWTileFrames19E:: + ow_frame $c8, 5 + ow_frame $ca, 5 + ow_frame $cc, 5 + ow_frame_end + +OWTileFrames19F:: + ow_frame $92, 8 + ow_frame $8e, 8 + ow_frame $90, 8 + ow_frame_end + +OWTileFrames1A0:: + ow_frame $93, 8 + ow_frame $8f, 8 + ow_frame $91, 8 + ow_frame_end + +OWTileFrames1A1:: + ow_frame $8a, 4 + ow_frame $8c, 4 + ow_frame_end + +OWTileFrames1A2:: + ow_frame $8b, 4 + ow_frame $8d, 4 + ow_frame_end + +OWTileFrames1A3:: + ow_frame $76, 4 + ow_frame $74, 12 + ow_frame $76, 4 + ow_frame $74, 22 + ow_frame $76, 4 + ow_frame $74, 40 + ow_frame_end + +OWTileFrames1A4:: + ow_frame $77, 4 + ow_frame $75, 12 + ow_frame $77, 4 + ow_frame $75, 22 + ow_frame $77, 4 + ow_frame $75, 40 + ow_frame_end + +OWTileFrames1A5:: + ow_frame $86, 4 + ow_frame $84, 12 + ow_frame $86, 4 + ow_frame $84, 22 + ow_frame $86, 4 + ow_frame $84, 40 + ow_frame_end + +OWTileFrames1A6:: + ow_frame $87, 4 + ow_frame $85, 12 + ow_frame $87, 4 + ow_frame $85, 22 + ow_frame $87, 4 + ow_frame $85, 40 + ow_frame_end + +OWTileFrames1A7:: + ow_frame $96, 4 + ow_frame $94, 12 + ow_frame $96, 4 + ow_frame $94, 22 + ow_frame $96, 4 + ow_frame $94, 40 + ow_frame_end + +OWTileFrames1A8:: + ow_frame $97, 4 + ow_frame $95, 12 + ow_frame $97, 4 + ow_frame $95, 22 + ow_frame $97, 4 + ow_frame $95, 40 + ow_frame_end + +OWTileFrames1A9:: + ow_frame $7a, 4 + ow_frame $78, 14 + ow_frame $7a, 4 + ow_frame $78, 20 + ow_frame $7a, 4 + ow_frame $78, 40 + ow_frame_end + +OWTileFrames1AA:: + ow_frame $7b, 4 + ow_frame $79, 14 + ow_frame $7b, 4 + ow_frame $79, 20 + ow_frame $7b, 4 + ow_frame $79, 40 + ow_frame_end + +OWTileFrames1AB:: + ow_frame $8a, 4 + ow_frame $88, 14 + ow_frame $8a, 4 + ow_frame $88, 20 + ow_frame $8a, 4 + ow_frame $88, 40 + ow_frame_end + +OWTileFrames1AC:: + ow_frame $8b, 4 + ow_frame $89, 14 + ow_frame $8b, 4 + ow_frame $89, 20 + ow_frame $8b, 4 + ow_frame $89, 40 + ow_frame_end + +OWTileFrames1AD:: + ow_frame $7e, 4 + ow_frame $7c, 30 + ow_frame $7e, 4 + ow_frame $7c, 12 + ow_frame $7e, 4 + ow_frame $7c, 32 + ow_frame_end + +OWTileFrames1AE:: + ow_frame $7f, 4 + ow_frame $7d, 30 + ow_frame $7f, 4 + ow_frame $7d, 12 + ow_frame $7f, 4 + ow_frame $7d, 32 + ow_frame_end + +OWTileFrames1AF:: + ow_frame $8e, 4 + ow_frame $8c, 30 + ow_frame $8e, 4 + ow_frame $8c, 12 + ow_frame $8e, 4 + ow_frame $8c, 32 + ow_frame_end + +OWTileFrames1B0:: + ow_frame $8f, 4 + ow_frame $8d, 30 + ow_frame $8f, 4 + ow_frame $8d, 12 + ow_frame $8f, 4 + ow_frame $8d, 32 + ow_frame_end + +OWTileFrames1B1:: + ow_frame $92, 4 + ow_frame $90, 26 + ow_frame $92, 4 + ow_frame $90, 12 + ow_frame $92, 4 + ow_frame $90, 14 + ow_frame $92, 4 + ow_frame $90, 18 + ow_frame_end + +OWTileFrames1B2:: + ow_frame $93, 4 + ow_frame $91, 26 + ow_frame $93, 4 + ow_frame $91, 12 + ow_frame $93, 4 + ow_frame $91, 14 + ow_frame $93, 4 + ow_frame $91, 18 + ow_frame_end + +OWTileFrames1B3:: + ow_frame $a2, 4 + ow_frame $a0, 26 + ow_frame $a2, 4 + ow_frame $a0, 12 + ow_frame $a2, 4 + ow_frame $a0, 14 + ow_frame $a2, 4 + ow_frame $a0, 18 + ow_frame_end + +OWTileFrames1C1:: + ow_frame $a5, 30 + ow_frame $a4, 30 + ow_frame_end diff --git a/src/data/ow_tile_frames2.asm b/src/data/ow_tile_frames2.asm new file mode 100644 index 0000000..2cd6293 --- /dev/null +++ b/src/data/ow_tile_frames2.asm @@ -0,0 +1,107 @@ +OWTileFrames1B4:: + ow_frame $a3, 4 + ow_frame $a1, 26 + ow_frame $a3, 4 + ow_frame $a1, 12 + ow_frame $a3, 4 + ow_frame $a1, 14 + ow_frame $a3, 4 + ow_frame $a1, 18 + ow_frame_end + +OWTileFrames1B5:: + ow_frame $99, 4 + ow_frame $98, 8 + ow_frame $99, 4 + ow_frame $98, 14 + ow_frame $99, 4 + ow_frame $98, 18 + ow_frame_end + +OWTileFrames1B6:: + ow_frame $a9, 4 + ow_frame $a8, 8 + ow_frame $a9, 4 + ow_frame $a8, 14 + ow_frame $a9, 4 + ow_frame $a8, 18 + ow_frame_end + +OWTileFrames1B7:: + ow_frame $b6, 4 + ow_frame $b4, 8 + ow_frame $b6, 4 + ow_frame $b4, 14 + ow_frame $b6, 4 + ow_frame $b4, 18 + ow_frame_end + +OWTileFrames1B8:: + ow_frame $b7, 4 + ow_frame $b5, 8 + ow_frame $b7, 4 + ow_frame $b5, 14 + ow_frame $b7, 4 + ow_frame $b5, 18 + ow_frame_end + +OWTileFrames1B9:: + ow_frame $b0, 4 + ow_frame $9e, 22 + ow_frame $b0, 4 + ow_frame $9e, 22 + ow_frame_end + +OWTileFrames1BA:: + ow_frame $b1, 4 + ow_frame $9f, 22 + ow_frame $b1, 4 + ow_frame $9f, 22 + ow_frame_end + +OWTileFrames1BB:: + ow_frame $b2, 4 + ow_frame $ae, 22 + ow_frame $b2, 4 + ow_frame $ae, 22 + ow_frame_end + +OWTileFrames1BC:: + ow_frame $b3, 4 + ow_frame $af, 22 + ow_frame $b3, 4 + ow_frame $af, 22 + ow_frame_end + +OWTileFrames1BD:: + ow_frame $9c, 4 + ow_frame $9a, 16 + ow_frame $9c, 4 + ow_frame $9a, 28 + ow_frame_end + +OWTileFrames1BE:: + ow_frame $9d, 4 + ow_frame $9b, 16 + ow_frame $9d, 4 + ow_frame $9b, 28 + ow_frame_end + +OWTileFrames1BF:: + ow_frame $ac, 4 + ow_frame $aa, 16 + ow_frame $ac, 4 + ow_frame $aa, 28 + ow_frame_end + +OWTileFrames1C0:: + ow_frame $ad, 4 + ow_frame $ab, 16 + ow_frame $ad, 4 + ow_frame $ab, 28 + ow_frame_end + +OWTileFrames1C2:: + ow_frame $a7, 4 + ow_frame $a6, 5 + ow_frame_end diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm index df640c4..838df0b 100644 --- a/src/engine/bank01.asm +++ b/src/engine/bank01.asm @@ -19,11 +19,13 @@ SetZeroLineSeparation: SECTION "Bank 1@610c", ROMX[$610c], BANK[$1] +; loads a player deck (sDeck*Cards) from SRAM to wPlayerDeck +; sCurrentlySelectedDeck determines which sDeck*Cards source (0-3) LoadPlayerDeck: call EnableSRAM - ld a, [sb7a0] + ld a, [sCurrentlySelectedDeck] ld l, a - ld h, $60 + ld h, DECK_COMPRESSED_STRUCT_SIZE call HtimesL ld de, sDeck1Cards add hl, de @@ -35,7 +37,43 @@ LoadPlayerDeck: ret ; 0x6128 -SECTION "Bank 1@68bc", ROMX[$68bc], BANK[$1] +SECTION "Bank 1@6897", ROMX[$6897], BANK[$1] + +; writes the cards in de to hl +; in a compressed format +SaveDeckCards: + push hl + push de + push bc + ld a, 8 +.loop + push af + inc hl + ld c, 8 +.loop_bits + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + rra + rl b + dec c + jr nz, .loop_bits + push hl + push de + ld de, -9 + add hl, de + ld [hl], b + pop de + pop hl + pop af + dec a + jr nz, .loop + pop bc + pop de + pop hl + ret ; loads deck saved in SRAM to hl LoadDeckFromSRAM: diff --git a/src/engine/bank02.asm b/src/engine/bank02.asm new file mode 100644 index 0000000..539f5dd --- /dev/null +++ b/src/engine/bank02.asm @@ -0,0 +1,47 @@ +SECTION "Bank 2@4f10", ROMX[$4f10], BANK[$2] + +Func_8f10: + call EnableSRAM + xor a + ld hl, $b7a3 + ld [hli], a + inc a + ld [hli], a + ld [hli], a + ld [hl], a + ld [$b7a1], a + call DisableSRAM + + xor a + ld [wTileMapFill], a + call EmptyScreen + call ZeroObjectPositions + ld a, $01 + ld [wVBlankOAMCopyToggle], a + call LoadSymbolsFont + call LoadDuelCardSymbolTiles + farcall LoadHandCardsIcon + bank1call SetDefaultPalettes + ld de, $3cbf + call SetupText + ret +; 0x8f45 + +SECTION "Bank 2@5c26", ROMX[$5c26], BANK[$2] + +; clears a bytes in hl +ClearBytesInHL: + push af + push bc + push hl + ld b, a + xor a +.loop + ld [hli], a + dec b + jr nz, .loop + pop hl + pop bc + pop af + ret +; 0x9c33 diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm index 964317a..6093ce6 100644 --- a/src/engine/bank03.asm +++ b/src/engine/bank03.asm @@ -6,7 +6,7 @@ _CoreGameLoop:: farcall IntroAndTitleScreen ld a, PLAYER_TURN ldh [hWhoseTurn], a - call Func_c249 + call InitEvents xor a call PlaySong xor a @@ -31,7 +31,7 @@ StartMenu_NewGame: farcall AskToOverwriteSaveData ret c .no_save_data - farcall $6, $58f8 + farcall InitSaveData call Func_e97a call Func_c24d call Func_eb97 @@ -62,9 +62,9 @@ StartMenu_ContinueFromDiary: jr z, .asm_c0a0 cp $03 jr z, .asm_c0ab - ld a, [wd550] + ld a, [wPlayerOWObject] ld b, $01 - farcall $4, $4f16 + farcall Func_10f16 call Func_33b7 call Func_c29d call Func_e9a7 @@ -86,20 +86,20 @@ StartMenu_ContinueFromDiary: ret .asm_c0ab - ld a, [wd550] + ld a, [wPlayerOWObject] ld b, $01 - farcall $4, $4f16 + farcall Func_10f16 call Func_33b7 call Func_c29d call Func_e9a7 ld a, $01 farcall Func_1d475 call DisableLCD - farcall $4, $4b9c - farcall $4, $455e - farcall $4, $4417 + farcall Func_10b9c + farcall Func_1055e + farcall Func_10417 farcall SaveTargetFadePals - farcall $4, $509f + farcall Func_1109f call DoFrame ld a, $0e call Func_3154 @@ -119,13 +119,13 @@ StartMenu_ContinueDuel: xor a call PlaySong call Func_eb16 - ld a, [wd550] + ld a, [wPlayerOWObject] ld b, $01 - farcall $4, $4f16 + farcall Func_10f16 call Func_33b7 call EnablePlayTimeCounter - ld a, $f0 - call Func_d6d3 + ld a, EVENT_F0 + call MaxOutEventValue ld a, $0e call Func_3154 ld a, $03 @@ -154,7 +154,7 @@ Func_c12e:: jp hl .PointerTable - dw $31a1 + dw Func_31a1 dw Func_c162 dw $417d dw $4169 @@ -177,85 +177,85 @@ Func_c12e:: Func_c162: ret -SECTION "Bank 3@41c9", ROMX +SECTION "Bank 3@41c9", ROMX[$41c9], BANK[$3] HandleStartMenu: xor a ld [wd554], a call Func_e883 - jr c, .asm_c21a + jr c, .menu_config0 call Func_e8b7 jr c, .asm_c20f .asm_c1d7 ld hl, wd554 set 0, [hl] call Func_eaf6 - farcall $9, $409a + farcall CheckSavedDuelChecksum jr c, .asm_c204 ld hl, wd554 set 2, [hl] ld a, $04 call Func_d6bb cp $02 - jr c, .asm_c238 + jr c, .menu_config4 call Func_e8a3 - jr c, .asm_c22a + jr c, .menu_config2 call Func_e91a - jr c, .asm_c22a + jr c, .menu_config2 ld hl, wd554 set 1, [hl] - jr .asm_c231 + jr .menu_config3 .asm_c204 ld a, $04 call Func_d6bb cp $02 - jr c, .asm_c222 - jr .asm_c22a + jr c, .menu_config1 + jr .menu_config2 .asm_c20f debug_nop call Func_e91a - jr c, .asm_c21a + jr c, .menu_config0 call Func_e9b7 jr .asm_c1d7 -.asm_c21a - xor a - farcall $7, $4d6f +.menu_config0 + xor a ; STARTMENU_CONFIG_0 + farcall ShowStartMenu ld a, STARTMENU_NEW_GAME ret -.asm_c222 - ld a, $01 - farcall $7, $4d6f +.menu_config1 + ld a, STARTMENU_CONFIG_1 + farcall ShowStartMenu inc a ret -.asm_c22a - ld a, $02 - farcall $7, $4d6f +.menu_config2 + ld a, STARTMENU_CONFIG_2 + farcall ShowStartMenu ret -.asm_c231 - ld a, $03 - farcall $7, $4d6f +.menu_config3 + ld a, STARTMENU_CONFIG_3 + farcall ShowStartMenu ret -.asm_c238 - ld a, $04 - farcall $7, $4d6f +.menu_config4 + ld a, STARTMENU_CONFIG_4 + farcall ShowStartMenu inc a ret ; called before intro starts Func_c240: xor a - ld [wd674], a + ld [wCurMusic], a farcall Func_13dfa ret -Func_c249: - call Func_d671 +InitEvents: + call ClearEvents ret Func_c24d: - call Func_d671 + call ClearEvents ; reset play time xor a ld [wPlayTimeCounter + 0], a @@ -263,19 +263,19 @@ Func_c24d: ld [wPlayTimeCounter + 2], a ld [wPlayTimeCounter + 3], a ld [wPlayTimeCounter + 4], a - call Func_c2c2 + call ClearSavedDecks xor a ld [wd54c], a ld [wd54d], a ld [wd54e], a ld [wd54f], a ld [wd551], a - ld [wd552], a - ld [wd553], a + ld [wd552 + 0], a + ld [wd552 + 1], a ld [wd589], a ld [wd586], a ld [wd587], a - ld [wd674], a + ld [wCurMusic], a ld [wd611], a ld [wd612], a ld [wd613], a @@ -308,10 +308,10 @@ Func_c2a7: call Func_c477 ret -; clears s0a4e0 -Func_c2c2: - ld hl, s0a4e0 - ld bc, $12c0 +; clears sSavedDecks +ClearSavedDecks: + ld hl, sSavedDecks + ld bc, NUM_DECK_SAVE_MACHINE_SLOTS * DECK_COMPRESSED_STRUCT_SIZE call EnableSRAM .loop_clear xor a @@ -324,8 +324,8 @@ Func_c2c2: ret Func_c2d6: - ld a, $0d - call Func_d698 + ld a, EVENT_0D + call GetEventValue jr nz, .asm_c2fe ld a, [wd587] cp $06 @@ -351,13 +351,13 @@ Func_c2ff: call Func_d6bb cp $06 jr c, .asm_c318 - ld a, $f5 - call Func_d6e3 + ld a, EVENT_F5 + call ZeroOutEventValue call UpdateRNGSources rra jr nc, .asm_c318 - ld a, $f5 - call Func_d6d3 + ld a, EVENT_F5 + call MaxOutEventValue .asm_c318 ret @@ -587,11 +587,49 @@ Func_c477: .asm_c4b4 ret -SECTION "Bank 3@4651", ROMX +SECTION "Bank 3@4522", ROMX[$4522], BANK[$3] + +Func_c522: + push af + push bc + ld b, a + ld a, c + ld hl, TextIDs_d171 + cp $00 + jr z, .asm_c530 + ld hl, TextIDs_d18f +.asm_c530 + ld a, b + sla a + add l + ld l, a + jr nc, .asm_c538 + inc h +.asm_c538 + ld a, [hli] + ld h, [hl] + ld l, a + pop bc + pop af + ret + +Func_c53e: + push af + push bc + ld a, [wd589] + ld c, a + ld a, [wd587] + call Func_c522 + pop bc + pop af + ret +; 0xc54d + +SECTION "Bank 3@4651", ROMX[$4651], BANK[$3] ; bank and offset table of data for Func_d421 Data_c651: - dbw $10, $4462 + dba Data_40462 dbw $0c, $4080 dbw $10, $4db3 dbw $0f, $4603 @@ -708,7 +746,43 @@ Data_c651: dbw $0d, $75df dbw $10, $6ed5 -SECTION "Bank 3@5299", ROMX +SECTION "Bank 3@5171", ROMX[$5171], BANK[$3] + +TextIDs_d171: + tx Text09b6 + tx Text09b7 + tx Text09b8 + tx Text09b9 + tx Text09ba + tx Text09bb + tx Text09bc + tx Text09bd + tx Text09be + tx Text09bf + tx Text09c0 + tx Text09c1 + tx Text09c2 + dw NULL + tx Text09b5 + +TextIDs_d18f: + tx Text09c3 + tx Text09c4 + tx Text09c5 + tx Text09c6 + tx Text09c7 + tx Text09c8 + tx Text09c9 + tx Text09ca + tx Text09cb + tx Text09cc + tx Text09cd + tx Text09ce + tx Text09cf + tx Text0069 +; 0xd1ab + +SECTION "Bank 3@5299", ROMX[$5299], BANK[$3] Func_d299:: push af @@ -728,8 +802,8 @@ Func_d299:: jr nz, .asm_d2c1 bit 7, [hl] jp nz, Func_d398 - ld a, $02 - call Func_d698 + ld a, EVENT_02 + call GetEventValue jp nz, Func_d377 ld a, PLAYER_TURN ldh [hWhoseTurn], a @@ -739,33 +813,33 @@ Func_d299:: ld [wd551], a ld hl, wd58c ld a, [hli] - ld [wd552], a + ld [wd552 + 0], a ld a, [hl] - ld [wd553], a + ld [wd552 + 1], a ld a, $01 call Func_3154 - farcall $4, $42ef + farcall Func_102ef xor a - farcall $4, $4d40 + farcall Func_10d40 ld a, $01 - farcall $4, $4413 + farcall Func_10413 ld b, $00 ld a, [wd58a] ld c, a - farcall $4b, $4206 + farcall Func_12c206 ld a, [wd58f] ld d, a ld a, [wd590] ld e, a ld a, [wd591] ld b, a - ld a, [wd550] - farcall $4, $4d77 - farcall $4, $4dd7 - farcall $4, $5450 - farcall $4, $4eff + ld a, [wPlayerOWObject] + farcall LoadOWObjectInMap + farcall Func_10dd7 + farcall Func_11450 + farcall Func_10eff ld b, $01 - farcall $4, $4f16 + farcall Func_10f16 ld a, $00 ld [wd582], a xor a @@ -805,8 +879,8 @@ Func_d333: ld c, a ld a, $3d call Func_d6fe - ld a, $02 - call Func_d6d3 + ld a, EVENT_02 + call MaxOutEventValue ld a, $03 ld [wd54c], a call Func_eaa8 @@ -815,11 +889,11 @@ Func_d333: Func_d377: ld a, $11 call Func_3154 - ld a, $02 - call Func_d6e3 + ld a, EVENT_02 + call ZeroOutEventValue call Func_e9a7 - ld a, $f0 - call Func_d6e3 + ld a, EVENT_F0 + call ZeroOutEventValue farcall $11, $4943 ld a, $09 ld [wd582], a @@ -828,11 +902,11 @@ Func_d377: jr Func_d333 Func_d398: - farcall $4, $4b9c - farcall $4, $455e - farcall $4, $4417 + farcall Func_10b9c + farcall Func_1055e + farcall Func_10417 farcall SaveTargetFadePals - farcall $4, $509f + farcall Func_1109f call DoFrame ld a, $00 ld b, $00 @@ -843,15 +917,196 @@ Func_d398: res 7, [hl] jp Func_d333 -SECTION "Bank 3@53e9", ROMX +SECTION "Bank 3@544e", ROMX[$544e], BANK[$3] -Func_d3e9:: - ld a, [wd550] +; a = OW object ID +; de = target position +SetOWObjectTargetPosition: + ld [wd595], a push af - farcall $4, $4da7 + ld a, d + ld [wOWObjTargetX], a + ld a, e + ld [wOWObjTargetY], a + xor a + ld [wd59c], a + ld [wd59d], a pop af push de - farcall $4, $4dcb + farcall GetOWObjectPosition + pop bc + ld a, b + sub d ; target_x - x + bit 7, a + jr z, .got_x_distance + cpl + inc a +.got_x_distance + ld b, a ; x distance + ld a, c + sub e ; target_y - y + bit 7, a + jr z, .got_y_distance + cpl + inc a +.got_y_distance + ld c, a ; y distance + ld a, b + cp c + jr c, .asm_d4d3 + +; x distance >= y distance + push bc + xor a + ld [wd598], a + ld a, 1 + ld [wOWObjXVelocity], a + ld b, EAST + ld a, [wOWObjTargetX] + cp d + jr nc, .got_x_dir + ld a, -1 + ld [wOWObjXVelocity], a + ld b, WEST +.got_x_dir + ld a, [wd595] + farcall SetOWObjectDirection + ld a, 1 + ld [wOWObjYVelocity], a + ld a, [wOWObjTargetY] + cp e + jr nc, .got_y_vel + ld a, -1 + ld [wOWObjYVelocity], a +.got_y_vel + pop bc + ld d, c ; y distance + ld e, $00 + ld c, b ; x distance + ld b, $00 + call DivideDEByBC + ; de = ((y distance) / (x distance)) * $100 + ld a, [wOWObjYVelocity] + bit 7, a + jr z, .positive_y_vel + ld a, e + cpl + add 1 + ld e, a + ld a, d + cpl + adc 0 + ld d, a + ; de = -de +.positive_y_vel + ld a, e + ld [wd59a], a + ld a, d + ld [wOWObjYVelocity], a + jr .done + +.asm_d4d3 +; x distance < y distance + push bc + xor a + ld [wd59a], a + ld a, 1 + ld [wOWObjYVelocity], a + ld b, SOUTH + ld a, [wOWObjTargetY] + cp e + jr nc, .got_y_dir + ld a, -1 + ld [wOWObjYVelocity], a + ld b, NORTH +.got_y_dir + ld a, [wd595] + farcall SetOWObjectDirection + ld a, 1 + ld [wOWObjXVelocity], a + ld a, [wOWObjTargetX] + cp d + jr nc, .got_x_vel + ld a, -1 + ld [wOWObjXVelocity], a +.got_x_vel + pop bc + ld d, b + ld e, $00 + ld b, $00 + call DivideDEByBC + ; de = ((x distance) / (y distance)) * $100 + ld a, [wOWObjXVelocity] + bit 7, a + jr z, .positive_x_vel + ld a, e + cpl + add 1 + ld e, a + ld a, d + cpl + adc 0 + ld d, a + ; de = -de +.positive_x_vel + ld a, e + ld [wd598], a + ld a, d + ld [wOWObjXVelocity], a +.done + ret + +; returns carry if still moving +MoveOWObjectToTargetPosition: + ld a, [wd595] + farcall GetOWObjectPosition + ld a, [wOWObjTargetX] + cp d + jr nz, .change_x + ld a, [wOWObjTargetY] + cp e + jr nz, .change_y + scf + ccf + ret + +.change_x + ld a, [wd59c] + ld b, a + ld a, [wd598] + add b + ld [wd59c], a + ld a, [wOWObjXVelocity] + adc d + ld d, a +.change_y + ld a, [wOWObjTargetY] + cp e + jr z, .asm_d562 + ld a, [wd59d] + ld b, a + ld a, [wd59a] + add b + ld [wd59d], a + ld a, [wOWObjYVelocity] + adc e + ld e, a +.asm_d562 + ld a, [wd595] + farcall SetOWObjectPosition + scf + ret +; 0xd56b + +SECTION "Bank 3@53e9", ROMX[$53e9], BANK[$3] + +Func_d3e9:: + ld a, [wPlayerOWObject] + push af + farcall Func_10da7 + pop af + push de + farcall Func_10dcb pop de ld a, b rlca @@ -910,13 +1165,13 @@ Func_d421:: ld [wd585], a ret -SECTION "Bank 3@5671", ROMX +SECTION "Bank 3@5671", ROMX[$5671], BANK[$3] -; reset data at wd59e -Func_d671: +; reset data at wEventVars and wd5d2 +ClearEvents: push bc push hl - ld hl, wd59e + ld hl, wEventVars ld bc, $68 .loop xor a @@ -930,91 +1185,97 @@ Func_d671: ret Func_d683: - ld a, $ed - call Func_d6e3 - ld a, $ee - call Func_d6e3 + ld a, EVENT_ED + call ZeroOutEventValue + ld a, EVENT_EE + call ZeroOutEventValue ld a, $3b ld c, $00 call Func_d6fe ret -Func_d695: - call Func_d74b -Func_d698:: +GetStackEventValue: + call GetByteAfterCall +; fallthrough +GetEventValue:: push bc push hl - call Func_d71d + call GetEventVar ld c, [hl] -.asm_d69e +.loop bit 0, a - jr nz, .asm_d6a8 + jr nz, .got_bit srl a srl c - jr .asm_d69e -.asm_d6a8 + jr .loop +.got_bit ld b, a ld a, c and b - jr z, .asm_d6b4 + jr z, .not_set cp b - jr nz, .asm_d6b4 + jr nz, .not_set +; set pop hl pop bc or a ret -.asm_d6b4 +.not_set pop hl pop bc xor a ret Func_d6b8: - call Func_d74b + call GetByteAfterCall +; fallthrough Func_d6bb: push bc push hl call Func_d734 ld c, [hl] -.asm_d6c1 +.loop bit 0, a - jr nz, .asm_d6cb + jr nz, .got_bit srl a srl c - jr .asm_d6c1 -.asm_d6cb + jr .loop +.got_bit and c pop hl pop bc or a ret -Func_d6d0: - call Func_d74b -Func_d6d3:: +MaxStackEventValue: + call GetByteAfterCall +; fallthrough +MaxOutEventValue:: push bc push hl - call Func_d71d + call GetEventVar ld c, $ff - call Func_d709 + call SetEventValue pop hl pop bc ret -Func_d6e0: - call Func_d74b -Func_d6e3:: +SetStackEventFalse: + call GetByteAfterCall +; fallthrough +ZeroOutEventValue:: push bc push hl - call Func_d71d + call GetEventVar ld c, $00 - call Func_d709 + call SetEventValue pop hl pop bc ret Func_d6f0: - call Func_d74b + call GetByteAfterCall +; fallthrough Func_d6f3: push bc ld c, $00 @@ -1023,25 +1284,28 @@ Func_d6f3: ret Func_d6fb: - call Func_d74b + call GetByteAfterCall +; fallthrough Func_d6fe: push bc push hl call Func_d734 - call Func_d709 + call SetEventValue pop hl pop bc ret -Func_d709: +; a - event +; c - value - truncated to fit only the event var's bounds +SetEventValue: ld b, a -.asm_d70a +.loop bit 0, a - jr nz, .asm_d714 + jr nz, .got_bit srl a sla c - jr .asm_d70a -.asm_d714 + jr .loop +.got_bit ld a, b and c ld c, a @@ -1052,21 +1316,23 @@ Func_d709: ld [hl], a ret -Func_d71d: +; returns wEventVars byte in hl +; and related bits in a +GetEventVar: push bc ld c, a xor a ld b, a sla c - rl b - ld hl, Data_d75a + rl b ; *2 + ld hl, EventVarMasks add hl, bc ld a, [hli] ld c, a xor a ld b, a ld a, [hl] - ld hl, wd59e + ld hl, wEventVars add hl, bc pop bc ret @@ -1090,7 +1356,9 @@ Func_d734: pop bc ret -Func_d74b: +; returns in a the byte db'd after the call +; to a function that calls this +GetByteAfterCall: push hl ld hl, sp+$04 push bc @@ -1106,320 +1374,323 @@ Func_d74b: pop hl ret -Data_d75a: - db $00, $1 << 0 - db $00, $1 << 1 - db $00, $1 << 2 - db $00, $1 << 3 - db $01, $1 << 0 - db $01, $1 << 1 - db $01, $1 << 2 - db $01, $1 << 3 - db $01, $1 << 4 - db $01, $1 << 5 - db $01, $1 << 6 - db $02, ($1 << 0) | ($1 << 1) | ($1 << 2) | ($1 << 3) - db $02, $1 << 0 - db $02, $1 << 1 - db $02, $1 << 2 - db $02, $1 << 3 - db $02, $1 << 4 - db $02, $1 << 5 - db $02, $1 << 6 - db $02, $1 << 7 - db $03, $1 << 0 - db $03, $1 << 1 - db $03, $1 << 2 - db $03, $1 << 3 - db $03, $1 << 4 - db $03, $1 << 5 - db $03, $1 << 6 - db $03, $1 << 7 - db $04, $1 << 0 - db $04, $1 << 1 - db $04, $1 << 2 - db $04, $1 << 3 - db $05, $1 << 0 - db $05, $1 << 1 - db $05, $1 << 2 - db $05, $1 << 3 - db $06, $1 << 0 - db $06, $1 << 1 - db $06, $1 << 2 - db $06, $1 << 3 - db $07, $1 << 0 - db $07, $1 << 1 - db $07, $1 << 2 - db $07, $1 << 3 - db $07, $1 << 4 - db $08, $1 << 0 - db $08, $1 << 1 - db $08, $1 << 2 - db $08, $1 << 3 - db $09, $1 << 0 - db $09, $1 << 1 - db $09, $1 << 2 - db $09, $1 << 3 - db $09, $1 << 4 - db $09, $1 << 5 - db $0a, $1 << 0 - db $0a, $1 << 1 - db $0a, $1 << 2 - db $0a, $1 << 3 - db $0a, $1 << 4 - db $0b, $1 << 0 - db $0b, $1 << 1 - db $0b, $1 << 2 - db $0b, $1 << 3 - db $0c, $1 << 0 - db $0c, $1 << 1 - db $0c, $1 << 2 - db $0c, $1 << 3 - db $0c, $1 << 5 - db $0c, $1 << 6 - db $0d, $1 << 0 - db $0d, $1 << 1 - db $0d, $1 << 2 - db $0d, $1 << 3 - db $0d, $1 << 4 - db $0d, $1 << 5 - db $0d, $1 << 6 - db $0d, $1 << 7 - db $0e, $1 << 0 - db $0e, $1 << 1 - db $0e, $1 << 2 - db $0e, $1 << 3 - db $0e, $1 << 4 - db $0e, $1 << 5 - db $0e, $1 << 6 - db $0f, $1 << 0 - db $0f, $1 << 1 - db $0f, $1 << 2 - db $0f, $1 << 3 - db $0f, $1 << 4 - db $0f, $1 << 5 - db $0f, $1 << 6 - db $0f, $1 << 7 - db $10, $1 << 0 - db $10, $1 << 1 - db $10, $1 << 2 - db $10, $1 << 3 - db $10, $1 << 4 - db $10, $1 << 5 - db $10, $1 << 6 - db $10, $1 << 7 - db $11, $1 << 0 - db $11, $1 << 1 - db $11, $1 << 2 - db $11, $1 << 3 - db $11, $1 << 4 - db $11, $1 << 5 - db $12, $1 << 0 - db $12, $1 << 1 - db $12, $1 << 2 - db $12, $1 << 3 - db $12, $1 << 4 - db $12, $1 << 5 - db $12, $1 << 6 - db $12, $1 << 7 - db $13, $1 << 0 - db $13, $1 << 1 - db $14, $1 << 0 - db $14, $1 << 1 - db $14, $1 << 2 - db $14, $1 << 3 - db $14, $1 << 4 - db $14, $1 << 5 - db $14, ($1 << 3) | ($1 << 4) | ($1 << 5) - db $14, $1 << 6 - db $14, $1 << 7 - db $15, $1 << 0 - db $16, $1 << 0 - db $16, $1 << 1 - db $16, $1 << 2 - db $16, $1 << 3 - db $16, $1 << 4 - db $17, $1 << 0 - db $18, $1 << 0 - db $18, $1 << 1 - db $18, $1 << 2 - db $18, $1 << 3 - db $18, $1 << 4 - db $18, $1 << 5 - db $18, $1 << 6 - db $18, $1 << 7 - db $19, $1 << 0 - db $19, $1 << 1 - db $19, $1 << 2 - db $19, $1 << 3 - db $19, $1 << 4 - db $19, $1 << 5 - db $19, $1 << 6 - db $19, $1 << 7 - db $1a, $1 << 0 - db $1a, $1 << 1 - db $1a, $1 << 2 - db $1b, $1 << 0 - db $1b, $1 << 1 - db $1b, $1 << 2 - db $1b, $1 << 3 - db $1b, $1 << 4 - db $1b, $1 << 5 - db $1b, $1 << 6 - db $1b, $1 << 7 - db $1c, $1 << 0 - db $1c, $1 << 1 - db $1c, $1 << 2 - db $1d, $1 << 0 - db $1d, $1 << 1 - db $1d, $1 << 2 - db $1d, $1 << 3 - db $1d, $1 << 4 - db $1d, $1 << 5 - db $1d, $1 << 6 - db $1d, $1 << 7 - db $1e, $1 << 0 - db $1e, $1 << 1 - db $1e, $1 << 2 - db $1e, $1 << 3 - db $1e, $1 << 4 - db $1e, $1 << 5 - db $1e, $1 << 6 - db $1e, $1 << 7 - db $1f, $1 << 0 - db $1f, $1 << 1 - db $1f, $1 << 2 - db $1f, $1 << 3 - db $1f, $1 << 4 - db $1f, $1 << 5 - db $20, $1 << 0 - db $20, $1 << 1 - db $21, $1 << 0 - db $21, $1 << 1 - db $21, $1 << 2 - db $21, $1 << 3 - db $21, $1 << 4 - db $21, $1 << 5 - db $21, $1 << 6 - db $21, $1 << 7 - db $22, $1 << 0 - db $22, $1 << 1 - db $22, $1 << 2 - db $22, $1 << 3 - db $23, $1 << 0 - db $23, $1 << 1 - db $23, $1 << 2 - db $23, ($1 << 3) | ($1 << 4) - db $23, $1 << 3 - db $23, $1 << 4 - db $23, $1 << 5 - db $24, ($1 << 0) | ($1 << 1) - db $24, $1 << 0 - db $24, $1 << 1 - db $24, $1 << 2 - db $25, $1 << 0 - db $25, $1 << 1 - db $25, $1 << 2 - db $25, $1 << 3 - db $25, $1 << 4 - db $25, $1 << 5 - db $25, $1 << 6 - db $26, $1 << 0 - db $26, $1 << 1 - db $26, $1 << 2 - db $27, $1 << 0 - db $27, $1 << 1 - db $28, $1 << 0 - db $28, $1 << 1 - db $28, $1 << 2 - db $28, $1 << 3 - db $28, $1 << 4 - db $28, $1 << 5 - db $28, $1 << 6 - db $28, $1 << 7 - db $29, $1 << 0 - db $29, $1 << 1 - db $29, $1 << 2 - db $29, $1 << 3 - db $29, $1 << 4 - db $2a, $1 << 0 - db $2a, $1 << 1 - db $2b, $1 << 0 - db $2b, $1 << 1 - db $2b, $1 << 2 - db $33, $1 << 0 - db $33, $1 << 1 - db $33, $1 << 2 - db $33, $1 << 3 - db $33, $1 << 4 - db $33, $1 << 5 +; location in wEventVars of each event var: +; offset - which byte holds the event value +; mask - which bits in the byte hold the value +EventVarMasks: + db $00, %00000001 ; EVENT_PLAYER_GENDER + db $00, %00000010 ; EVENT_01 + db $00, %00000100 ; EVENT_02 + db $00, %00001000 ; EVENT_03 + db $01, %00000001 ; EVENT_04 + db $01, %00000010 ; EVENT_05 + db $01, %00000100 ; EVENT_06 + db $01, %00001000 ; EVENT_07 + db $01, %00010000 ; EVENT_08 + db $01, %00100000 ; EVENT_09 + db $01, %01000000 ; EVENT_0A + db $02, %00001111 ; EVENT_0B + db $02, %00000001 ; EVENT_0C + db $02, %00000010 ; EVENT_0D + db $02, %00000100 ; EVENT_0E + db $02, %00001000 ; EVENT_0F + db $02, %00010000 ; EVENT_10 + db $02, %00100000 ; EVENT_11 + db $02, %01000000 ; EVENT_12 + db $02, %10000000 ; EVENT_13 + db $03, %00000001 ; EVENT_14 + db $03, %00000010 ; EVENT_15 + db $03, %00000100 ; EVENT_16 + db $03, %00001000 ; EVENT_17 + db $03, %00010000 ; EVENT_18 + db $03, %00100000 ; EVENT_19 + db $03, %01000000 ; EVENT_1A + db $03, %10000000 ; EVENT_1B + db $04, %00000001 ; EVENT_1C + db $04, %00000010 ; EVENT_1D + db $04, %00000100 ; EVENT_1E + db $04, %00001000 ; EVENT_1F + db $05, %00000001 ; EVENT_20 + db $05, %00000010 ; EVENT_21 + db $05, %00000100 ; EVENT_22 + db $05, %00001000 ; EVENT_23 + db $06, %00000001 ; EVENT_24 + db $06, %00000010 ; EVENT_25 + db $06, %00000100 ; EVENT_26 + db $06, %00001000 ; EVENT_27 + db $07, %00000001 ; EVENT_28 + db $07, %00000010 ; EVENT_29 + db $07, %00000100 ; EVENT_2A + db $07, %00001000 ; EVENT_2B + db $07, %00010000 ; EVENT_2C + db $08, %00000001 ; EVENT_2D + db $08, %00000010 ; EVENT_2E + db $08, %00000100 ; EVENT_2F + db $08, %00001000 ; EVENT_30 + db $09, %00000001 ; EVENT_31 + db $09, %00000010 ; EVENT_32 + db $09, %00000100 ; EVENT_33 + db $09, %00001000 ; EVENT_34 + db $09, %00010000 ; EVENT_35 + db $09, %00100000 ; EVENT_36 + db $0a, %00000001 ; EVENT_37 + db $0a, %00000010 ; EVENT_38 + db $0a, %00000100 ; EVENT_39 + db $0a, %00001000 ; EVENT_3A + db $0a, %00010000 ; EVENT_3B + db $0b, %00000001 ; EVENT_3C + db $0b, %00000010 ; EVENT_3D + db $0b, %00000100 ; EVENT_3E + db $0b, %00001000 ; EVENT_3F + db $0c, %00000001 ; EVENT_40 + db $0c, %00000010 ; EVENT_41 + db $0c, %00000100 ; EVENT_42 + db $0c, %00001000 ; EVENT_43 + db $0c, %00100000 ; EVENT_44 + db $0c, %01000000 ; EVENT_45 + db $0d, %00000001 ; EVENT_46 + db $0d, %00000010 ; EVENT_47 + db $0d, %00000100 ; EVENT_48 + db $0d, %00001000 ; EVENT_49 + db $0d, %00010000 ; EVENT_4A + db $0d, %00100000 ; EVENT_4B + db $0d, %01000000 ; EVENT_4C + db $0d, %10000000 ; EVENT_4D + db $0e, %00000001 ; EVENT_4E + db $0e, %00000010 ; EVENT_4F + db $0e, %00000100 ; EVENT_50 + db $0e, %00001000 ; EVENT_51 + db $0e, %00010000 ; EVENT_52 + db $0e, %00100000 ; EVENT_53 + db $0e, %01000000 ; EVENT_54 + db $0f, %00000001 ; EVENT_55 + db $0f, %00000010 ; EVENT_56 + db $0f, %00000100 ; EVENT_57 + db $0f, %00001000 ; EVENT_58 + db $0f, %00010000 ; EVENT_59 + db $0f, %00100000 ; EVENT_5A + db $0f, %01000000 ; EVENT_5B + db $0f, %10000000 ; EVENT_5C + db $10, %00000001 ; EVENT_5D + db $10, %00000010 ; EVENT_5E + db $10, %00000100 ; EVENT_5F + db $10, %00001000 ; EVENT_60 + db $10, %00010000 ; EVENT_61 + db $10, %00100000 ; EVENT_62 + db $10, %01000000 ; EVENT_63 + db $10, %10000000 ; EVENT_64 + db $11, %00000001 ; EVENT_65 + db $11, %00000010 ; EVENT_66 + db $11, %00000100 ; EVENT_67 + db $11, %00001000 ; EVENT_68 + db $11, %00010000 ; EVENT_69 + db $11, %00100000 ; EVENT_6A + db $12, %00000001 ; EVENT_6B + db $12, %00000010 ; EVENT_6C + db $12, %00000100 ; EVENT_6D + db $12, %00001000 ; EVENT_6E + db $12, %00010000 ; EVENT_6F + db $12, %00100000 ; EVENT_70 + db $12, %01000000 ; EVENT_71 + db $12, %10000000 ; EVENT_72 + db $13, %00000001 ; EVENT_73 + db $13, %00000010 ; EVENT_74 + db $14, %00000001 ; EVENT_75 + db $14, %00000010 ; EVENT_76 + db $14, %00000100 ; EVENT_77 + db $14, %00001000 ; EVENT_78 + db $14, %00010000 ; EVENT_79 + db $14, %00100000 ; EVENT_7A + db $14, %00111000 ; EVENT_7B + db $14, %01000000 ; EVENT_7C + db $14, %10000000 ; EVENT_7D + db $15, %00000001 ; EVENT_7E + db $16, %00000001 ; EVENT_7F + db $16, %00000010 ; EVENT_80 + db $16, %00000100 ; EVENT_81 + db $16, %00001000 ; EVENT_82 + db $16, %00010000 ; EVENT_83 + db $17, %00000001 ; EVENT_84 + db $18, %00000001 ; EVENT_85 + db $18, %00000010 ; EVENT_86 + db $18, %00000100 ; EVENT_87 + db $18, %00001000 ; EVENT_88 + db $18, %00010000 ; EVENT_89 + db $18, %00100000 ; EVENT_8A + db $18, %01000000 ; EVENT_8B + db $18, %10000000 ; EVENT_8C + db $19, %00000001 ; EVENT_8D + db $19, %00000010 ; EVENT_8E + db $19, %00000100 ; EVENT_8F + db $19, %00001000 ; EVENT_90 + db $19, %00010000 ; EVENT_91 + db $19, %00100000 ; EVENT_92 + db $19, %01000000 ; EVENT_93 + db $19, %10000000 ; EVENT_94 + db $1a, %00000001 ; EVENT_95 + db $1a, %00000010 ; EVENT_96 + db $1a, %00000100 ; EVENT_97 + db $1b, %00000001 ; EVENT_98 + db $1b, %00000010 ; EVENT_99 + db $1b, %00000100 ; EVENT_9A + db $1b, %00001000 ; EVENT_9B + db $1b, %00010000 ; EVENT_9C + db $1b, %00100000 ; EVENT_9D + db $1b, %01000000 ; EVENT_9E + db $1b, %10000000 ; EVENT_9F + db $1c, %00000001 ; EVENT_A0 + db $1c, %00000010 ; EVENT_A1 + db $1c, %00000100 ; EVENT_A2 + db $1d, %00000001 ; EVENT_A3 + db $1d, %00000010 ; EVENT_A4 + db $1d, %00000100 ; EVENT_A5 + db $1d, %00001000 ; EVENT_A6 + db $1d, %00010000 ; EVENT_A7 + db $1d, %00100000 ; EVENT_A8 + db $1d, %01000000 ; EVENT_A9 + db $1d, %10000000 ; EVENT_AA + db $1e, %00000001 ; EVENT_AB + db $1e, %00000010 ; EVENT_AC + db $1e, %00000100 ; EVENT_AD + db $1e, %00001000 ; EVENT_AE + db $1e, %00010000 ; EVENT_AF + db $1e, %00100000 ; EVENT_B0 + db $1e, %01000000 ; EVENT_B1 + db $1e, %10000000 ; EVENT_B2 + db $1f, %00000001 ; EVENT_B3 + db $1f, %00000010 ; EVENT_B4 + db $1f, %00000100 ; EVENT_B5 + db $1f, %00001000 ; EVENT_B6 + db $1f, %00010000 ; EVENT_B7 + db $1f, %00100000 ; EVENT_B8 + db $20, %00000001 ; EVENT_B9 + db $20, %00000010 ; EVENT_BA + db $21, %00000001 ; EVENT_BB + db $21, %00000010 ; EVENT_BC + db $21, %00000100 ; EVENT_BD + db $21, %00001000 ; EVENT_BE + db $21, %00010000 ; EVENT_BF + db $21, %00100000 ; EVENT_C0 + db $21, %01000000 ; EVENT_C1 + db $21, %10000000 ; EVENT_C2 + db $22, %00000001 ; EVENT_C3 + db $22, %00000010 ; EVENT_C4 + db $22, %00000100 ; EVENT_C5 + db $22, %00001000 ; EVENT_C6 + db $23, %00000001 ; EVENT_C7 + db $23, %00000010 ; EVENT_C8 + db $23, %00000100 ; EVENT_C9 + db $23, %00011000 ; EVENT_CA + db $23, %00001000 ; EVENT_CB + db $23, %00010000 ; EVENT_CC + db $23, %00100000 ; EVENT_CD + db $24, %00000011 ; EVENT_CE + db $24, %00000001 ; EVENT_CF + db $24, %00000010 ; EVENT_D0 + db $24, %00000100 ; EVENT_D1 + db $25, %00000001 ; EVENT_D2 + db $25, %00000010 ; EVENT_D3 + db $25, %00000100 ; EVENT_D4 + db $25, %00001000 ; EVENT_D5 + db $25, %00010000 ; EVENT_D6 + db $25, %00100000 ; EVENT_D7 + db $25, %01000000 ; EVENT_D8 + db $26, %00000001 ; EVENT_D9 + db $26, %00000010 ; EVENT_DA + db $26, %00000100 ; EVENT_DB + db $27, %00000001 ; EVENT_DC + db $27, %00000010 ; EVENT_DD + db $28, %00000001 ; EVENT_DE + db $28, %00000010 ; EVENT_DF + db $28, %00000100 ; EVENT_E0 + db $28, %00001000 ; EVENT_E1 + db $28, %00010000 ; EVENT_E2 + db $28, %00100000 ; EVENT_E3 + db $28, %01000000 ; EVENT_E4 + db $28, %10000000 ; EVENT_E5 + db $29, %00000001 ; EVENT_E6 + db $29, %00000010 ; EVENT_E7 + db $29, %00000100 ; EVENT_E8 + db $29, %00001000 ; EVENT_E9 + db $29, %00010000 ; EVENT_EA + db $2a, %00000001 ; EVENT_EB + db $2a, %00000010 ; EVENT_EC + db $2b, %00000001 ; EVENT_ED + db $2b, %00000010 ; EVENT_EE + db $2b, %00000100 ; EVENT_EF + db $33, %00000001 ; EVENT_F0 + db $33, %00000010 ; EVENT_F1 + db $33, %00000100 ; EVENT_F2 + db $33, %00001000 ; EVENT_F3 + db $33, %00010000 ; EVENT_F4 + db $33, %00100000 ; EVENT_F5 Data_d946: - db $00, $ff - db $01, $03 - db $01, $3c - db $01, $c0 - db $02, $0f - db $03, $03 - db $03, $0c - db $03, $30 - db $04, $0f - db $04, $30 - db $04, $c0 - db $05, $03 - db $06, $03 - db $06, $1c - db $06, $e0 - db $07, $0f - db $08, $ff - db $09, $ff - db $0a, $ff - db $0b, $ff - db $0c, $ff - db $0d, $ff - db $0e, $ff - db $0f, $ff - db $10, $ff - db $11, $ff - db $12, $ff - db $13, $ff - db $14, $ff - db $15, $ff - db $16, $ff - db $17, $03 - db $17, $3c - db $18, $07 - db $18, $f0 - db $19, $01 - db $19, $f0 - db $1a, $0f - db $1a, $f0 - db $1b, $0f - db $1b, $70 - db $1c, $1f - db $1d, $0f - db $1d, $30 - db $1d, $c0 - db $1e, $ff - db $1f, $ff - db $20, $ff - db $21, $07 - db $21, $f8 - db $22, $0f - db $22, $30 - db $23, $07 - db $24, $ff - db $25, $ff - db $26, $ff - db $27, $ff - db $28, $ff - db $29, $07 - db $2a, $ff - db $2b, $ff - db $2c, $ff - db $33, $ff + db $00, %11111111 ; $00 + db $01, %00000011 ; $01 + db $01, %00111100 ; $02 + db $01, %11000000 ; $03 + db $02, %00001111 ; $04 + db $03, %00000011 ; $05 + db $03, %00001100 ; $06 + db $03, %00110000 ; $07 + db $04, %00001111 ; $08 + db $04, %00110000 ; $09 + db $04, %11000000 ; $0a + db $05, %00000011 ; $0b + db $06, %00000011 ; $0c + db $06, %00011100 ; $0d + db $06, %11100000 ; $0e + db $07, %00001111 ; $0f + db $08, %11111111 ; $10 + db $09, %11111111 ; $11 + db $0a, %11111111 ; $12 + db $0b, %11111111 ; $13 + db $0c, %11111111 ; $14 + db $0d, %11111111 ; $15 + db $0e, %11111111 ; $16 + db $0f, %11111111 ; $17 + db $10, %11111111 ; $18 + db $11, %11111111 ; $19 + db $12, %11111111 ; $1a + db $13, %11111111 ; $1b + db $14, %11111111 ; $1c + db $15, %11111111 ; $1d + db $16, %11111111 ; $1e + db $17, %00000011 ; $1f + db $17, %00111100 ; $20 + db $18, %00000111 ; $21 + db $18, %11110000 ; $22 + db $19, %00000001 ; $23 + db $19, %11110000 ; $24 + db $1a, %00001111 ; $25 + db $1a, %11110000 ; $26 + db $1b, %00001111 ; $27 + db $1b, %01110000 ; $28 + db $1c, %00011111 ; $29 + db $1d, %00001111 ; $2a + db $1d, %00110000 ; $2b + db $1d, %11000000 ; $2c + db $1e, %11111111 ; $2d + db $1f, %11111111 ; $2e + db $20, %11111111 ; $2f + db $21, %00000111 ; $30 + db $21, %11111000 ; $31 + db $22, %00001111 ; $32 + db $22, %00110000 ; $33 + db $23, %00000111 ; $34 + db $24, %11111111 ; $35 + db $25, %11111111 ; $36 + db $26, %11111111 ; $37 + db $27, %11111111 ; $38 + db $28, %11111111 ; $39 + db $29, %00000111 ; $3a + db $2a, %11111111 ; $3b + db $2b, %11111111 ; $3c + db $2c, %11111111 ; $3d + db $33, %11111111 ; $3e -SECTION "Bank 3@5bdb", ROMX +SECTION "Bank 3@5bdb", ROMX[$5bdb], BANK[$3] Func_dbdb:: xor a @@ -1590,7 +1861,7 @@ Func_dbf2:: dw $6871 dw $687d -SECTION "Bank 3@6883", ROMX +SECTION "Bank 3@6883", ROMX[$6883], BANK[$3] Func_e883: ldh a, [hBankSRAM] @@ -1752,7 +2023,7 @@ Func_e97a: ld [hl], a ld [$b800], a call DisableSRAM - farcall $9, $40d8 + farcall ClearSavedDuel call DisableSRAM ret @@ -1762,7 +2033,7 @@ Func_e9a7: xor a ld [hl], a call DisableSRAM - farcall $9, $40d8 + farcall ClearSavedDuel ret Func_e9b7: @@ -1838,7 +2109,7 @@ Func_ea19: Func_ea30:: ld a, $0c call Func_3154 - farcall $4, $4f32 + farcall Func_10f32 xor a ld [wd668], a .asm_ea3d @@ -1891,7 +2162,7 @@ Func_ea30:: jr .asm_ea3d Func_eaa8: - farcall $4, $4f32 + farcall Func_10f32 xor a ld [wd668], a ld a, $ec @@ -1921,7 +2192,7 @@ Func_eaea: call Func_eaf6 xor a call Func_e9d6 - farcall $4, $4f78 + farcall Func_10f78 ret Func_eaf6: @@ -1952,7 +2223,7 @@ Func_eb16: ld [wd672], a call Func_ea19 call Func_ed0b - farcall $4, $4f78 + farcall Func_10f78 ret Func_eb39: @@ -2002,7 +2273,7 @@ Func_eb39: .data db $04, $13, $79, $15, $0f, $6b, $0f, $34, $0f, $2f, $0f, $00, $00, $00, $00, $00, $4e, $0f, $39, $0f, $38, $0f, $5f, $0f, $21, $0f, $00, $00, $00, $00, $00, $00 -SECTION "Bank 3@6b97", ROMX +SECTION "Bank 3@6b97", ROMX[$6b97], BANK[$3] Func_eb97: call Func_ebc6 diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm index add3560..ba3a6f1 100644 --- a/src/engine/bank04.asm +++ b/src/engine/bank04.asm @@ -1,4 +1,59 @@ -SECTION "Bank 4@4285", ROMX[$4285], BANK[$4] +SECTION "Bank 4@4221", ROMX[$4221], BANK[$4] + +; waits until any of the keys +; in register c are pressed +Func_10221: +.loop + call DoFrame + ldh a, [hKeysPressed] + and c + jr z, .loop + ret +; 0x1022a + +Func_1022a: + push af + push bc + push de + push hl + farcall SetAllBGPaletteFadeConfigsToEnabled + farcall SetAllOBPaletteFadeConfigsToEnabled + farcall StartFadeToWhite + farcall WaitPalFading + call Func_110a8 + call Func_10ea7 + call Func_1059f + call Func_10d40 + call Func_102ef + pop hl + pop de + pop bc + pop af + ret + +Func_10252: + push af + push bc + push de + push hl + call Func_10d40 + call Func_102ef + call Func_10ed3 + call Func_105de + call DisableLCD + call Func_10b9c + call Func_1055e + call Func_10417 + call EnableLCD + call Func_1109f + farcall SetAllBGPaletteFadeConfigsToEnabled + farcall SetAllOBPaletteFadeConfigsToEnabled + farcall StartFadeFromWhite + pop hl + pop de + pop bc + pop af + ret ; use with FadeToWhiteAndUnsetFrameFunc SetFrameFuncAndFadeFromWhite: @@ -28,20 +83,25 @@ Func_102ef: push de push hl call SetInitialGraphicsConfiguration + xor a - ld hl, wd7ee - ld bc, $64 + ld hl, wOWAnimatedTiles + ld bc, NUM_OW_ANIMATED_TILES * $4 call WriteBCBytesToHL + ld a, $80 ld hl, wd6d4 ld bc, $101 call WriteBCBytesToHL + xor a ld [wd852], a ld hl, wd853 ld bc, $40 call WriteBCBytesToHL + call Func_10327 + xor a ld [wd896 + 0], a ld [wd896 + 1], a @@ -52,10 +112,10 @@ Func_102ef: ret Func_10327: - ld a, [wce4d] + ld a, [wWRAMBank] push af ld a, $03 - call Func_3523 + call SwitchWRAMBank xor a ld [w3d400], a ld de, w3d000 @@ -64,10 +124,275 @@ Func_10327: inc hl ld [hl], d pop af - call Func_3523 + call SwitchWRAMBank ret ; 0x10342 +SECTION "Bank 4@4413", ROMX[$4413], BANK[$4] + +Func_10413: + ld [wd895], a + ret + +Func_10417:: + push af + push bc + push de + push hl + ld a, [wd895] + inc a + dec a + jr nz, .asm_10427 + call .Func_1048a + jr .asm_1042d +.asm_10427 + dec a + jr nz, .asm_1042d + call .Func_1043c +.asm_1042d + ld a, [wd89b] + ldh [hSCX], a + ld a, [wd89c] + ldh [hSCY], a + pop hl + pop de + pop bc + pop af + ret + +.Func_1043c: + ld a, [wd893 + 0] + ld l, a + ld a, [wd893 + 1] + ld h, a + call GetSpriteAnimPosition + ld a, d + sub $08 + ld d, a + ld a, e + sub $10 + ld e, a + ld a, d + cp $40 + ld a, $00 + jr c, .asm_10469 + ld a, [wd7dc] + sla a + sla a + sla a ; *8 + sub $a0 + ld b, a + ld a, d + sub $40 + cp b + jr c, .asm_10469 + ld a, b +.asm_10469 + ld [wd89b], a + ld a, e + cp $40 + ld a, $00 + jr c, .asm_10486 + ld a, [wd7dd] + sla a + sla a + sla a ; *8 + sub $90 + ld b, a + ld a, e + sub $40 + cp b + jr c, .asm_10486 + ld a, b +.asm_10486 + ld [wd89c], a + ret + +.Func_1048a: + ld a, [wd7e8] + ld b, a + ld hl, wd89b + ld a, [hl] + cp b + jr z, .asm_1049b + jr c, .asm_1049a + dec [hl] + jr .asm_1049b +.asm_1049a + inc [hl] +.asm_1049b + ld a, [wd7e9] + ld b, a + ld hl, wd89c + ld a, [hl] + cp b + jr z, .asm_104ac + jr c, .asm_104ab + dec [hl] + jr .asm_104ac +.asm_104ab + inc [hl] +.asm_104ac + ret +; 0x104ad + +SECTION "Bank 4@44fe", ROMX[$44fe], BANK[$4] + +Func_104fe: + push af + ld a, l + ld [wd893 + 0], a + ld a, h + ld [wd893 + 1], a + pop af + ret +; 0x10509 + +SECTION "Bank 4@4541", ROMX[$4541], BANK[$4] + +Func_10541: + push bc + push de + push hl + srl d + srl e + ld b, $00 + ld hl, wd6d4 + sla e + sla e + sla e + sla e + ld c, e + add hl, bc + ld c, d + add hl, bc + ld a, [hl] + pop hl + pop de + pop bc + ret + +Func_1055e: + push af + push bc + push de + push hl + ld a, [$d7ec] + ld c, a + ld a, [$d7ed] + ld b, a + farcall Func_12c206 + ld a, $00 + ld hl, wOWAnimatedTiles + ld bc, $64 + call WriteBCBytesToHL + call LoadOWAnimatedTiles + ld hl, wd852 + ld a, [hl] + and a + jr z, .asm_1059a + ld c, a + xor a + ld [hl], a + ld hl, wd853 +.asm_10589 + push bc + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hli] + ld d, a + ld a, [hli] + ld e, a + farcall Func_12c0ce + pop bc + dec c + jr nz, .asm_10589 +.asm_1059a + pop hl + pop de + pop bc + pop af + ret + +Func_1059f: + push af + push bc + push de + push hl + ld de, $d415 + ld hl, $d7ec + ld c, $b1 +.asm_105ab + ld b, [hl] + ld a, [wWRAMBank] + push af + ld a, $03 + call SwitchWRAMBank + ld a, b + ld [de], a + pop af + call SwitchWRAMBank + inc hl + inc de + dec c + jr nz, .asm_105ab + ld a, [wWRAMBank] + push af + ld a, $03 + call SwitchWRAMBank + ld bc, $415 + ld de, $d4c6 + ld hl, wListPointer + call CopyBCBytesFromHLToDE + pop af + call SwitchWRAMBank + pop hl + pop de + pop bc + pop af + ret + +Func_105de: + push af + push bc + push de + push hl + ld de, $d415 + ld hl, $d7ec + ld c, $b1 +.asm_105ea + ld a, [wWRAMBank] + push af + ld a, $03 + call SwitchWRAMBank + ld a, [de] + ld b, a + pop af + call SwitchWRAMBank + ld [hl], b + inc hl + inc de + dec c + jr nz, .asm_105ea + ld a, [wWRAMBank] + push af + ld a, $03 + call SwitchWRAMBank + ld bc, $415 + ld de, wListPointer + ld hl, $d4c6 + call CopyBCBytesFromHLToDE + pop af + call SwitchWRAMBank + pop hl + pop de + pop bc + pop af + ret +; 0x1061d + SECTION "Bank 4@463a", ROMX[$463a], BANK[$4] SetInitialGraphicsConfiguration: @@ -93,7 +418,39 @@ SetInitialGraphicsConfiguration: pop bc pop af ret -; 0x10666 + +Func_10666: + push af + push bc + push de + push hl + bank1call SetFontAndTextBoxFrameColor + pop hl + pop de + pop bc + pop af + ret +; 0x10672 + +SECTION "Bank 4@4673", ROMX[$4673], BANK[$4] + +Func_10673:: + push af + ldh a, [hSCX] + srl a + srl a + srl a ; /8 + add d + ld d, a + ldh a, [hSCY] + srl a + srl a + srl a ; /8 + add e + ld e, a + pop af + ret +; 0x1068a SECTION "Bank 4@468a", ROMX[$468a], BANK[$4] @@ -241,7 +598,11 @@ SECTION "Bank 4@48c9", ROMX[$48c9], BANK[$4] Func_108c9: ld [wd8a1], a ret -; 0x108cd + +Func_108cd:: + ld a, [wd8a1] + ret +; 0x108d1 SECTION "Bank 4@48e6", ROMX[$48e6], BANK[$4] @@ -314,10 +675,10 @@ SetNewSpriteAnimValues:: xor a lb bc, $0, $0 lb de, $0, $0 - call Func_10ca2 + call StubSetSpriteAnimValue call SetSpriteAnimPosition call SetSpriteAnimFrameIndex - call Func_10c7a + call SetSpriteAnimOWFrameGroup call SetSpriteAnimFrameDuration call SetSpriteAnimTileOffset call SetSpriteAnimAnimation @@ -499,14 +860,287 @@ SetSpriteAnimPosition:: pop hl ret +GetSpriteAnimPosition: + push hl + inc hl + inc hl + inc hl + ld d, [hl] ; SPRITEANIMSTRUCT_X_POS + inc hl + ld e, [hl] ; SPRITEANIMSTRUCT_Y_POS + pop hl + ret + +; b = direction +SetSpriteAnimDirection: + push af + push bc + push de + push hl + inc hl + ld a, [hl] ; SPRITEANIMSTRUCT_1 + and $03 + cp b + jr z, .exit + ld a, [hl] ; SPRITEANIMSTRUCT_1 + and $fc + or b + ld [hl], a + ld de, SPRITEANIMSTRUCT_FRAME_INDEX - SPRITEANIMSTRUCT_1 + add hl, de + xor a + ld [hli], a ; SPRITEANIMSTRUCT_FRAME_INDEX + push hl + ld de, SPRITEANIMSTRUCT_OW_FRAMEGROUP - SPRITEANIMSTRUCT_FRAMESET_ID + add hl, de + ld a, b + ld c, [hl] ; SPRITEANIMSTRUCT_OW_FRAMEGROUP + inc hl + ld b, [hl] + farcall GetOWObjectFrameset + pop hl + ld [hl], c ; SPRITEANIMSTRUCT_FRAMESET_ID + inc hl + ld [hl], b +.exit + pop hl + pop de + pop bc + pop af + ret + +Func_10a5c: + push af + push hl + inc hl + ld a, [hl] ; SPRITEANIMSTRUCT_1 + and $03 + ld b, a + pop hl + pop af + ret + +Func_10a66: + push af + push bc + push de + push hl + bit SPRITEANIMSTRUCT_MOVE_F, [hl] + jr nz, .done + dec c + ld a, [hl] + and $d0 + or SPRITEANIMSTRUCT_MOVE + sla b + or b + or c + ld [hl], a + ld bc, SPRITEANIMSTRUCT_C - SPRITEANIMSTRUCT_FLAGS + add hl, bc + ld [hl], e +.done + pop hl + pop de + pop bc + pop af + ret +; 0x10a83 + +SECTION "Bank 4@4a83", ROMX[$4a83], BANK[$4] + +Func_10a83: + push af + push hl + res SPRITEANIMSTRUCT_MOVE_F, [hl] + ld a, [hl] ; SPRITEANIMSTRUCT_FLAGS + and SPRITEANIMSTRUCT_SPEED + inc a + ld c, a + ld de, SPRITEANIMSTRUCT_C - SPRITEANIMSTRUCT_FLAGS + add hl, de + ld e, [hl] + pop hl + pop af + ret + +Func_10a94: + push af + push bc + push hl + dec c + set SPRITEANIMSTRUCT_MOVE_F, [hl] + ld a, [hl] ; SPRITEANIMSTRUCT_FLAGS + and $fe + or c + ld [hl], a + ld bc, SPRITEANIMSTRUCT_C - SPRITEANIMSTRUCT_FLAGS + add hl, bc + ld [hl], e + pop hl + pop bc + pop af + ret + +Func_10aa8: + push af + push hl + ld a, [hl] + and SPRITEANIMSTRUCT_SPEED + ld c, a + inc c + ld de, SPRITEANIMSTRUCT_C - SPRITEANIMSTRUCT_FLAGS + add hl, de + ld e, [hl] + pop hl + pop af + ret +; 0x10ab7 + +SECTION "Bank 4@4b71", ROMX[$4b71], BANK[$4] + +Func_10b71: + push af + xor a + ld [hl], a ; SPRITEANIMSTRUCT_FLAGS + pop af + ret + +ConvertToOWObjectPosition: + push af + ld a, d + sub $08 + ld d, a + ld a, e + sub $10 + ld e, a + pop af + ret + +Func_10b81: + push af + ld a, d + sub $08 + ld d, a + srl d + srl d + srl d + srl d + ld a, e + sub $10 + ld e, a + srl e + srl e + srl e + srl e + pop af + ret + +Func_10b9c: + push af + push bc + push de + push hl + ld a, [wNumSpriteTilesets] + ld c, a + xor a + ld [wNumSpriteTilesets], a + ld [wCurVRAMTile], a + ld hl, wSpriteTilesets +.loop + push bc + ld a, [hli] + ld c, a + ld a, [hld] + ld b, a + farcall LoadSpriteAnimGfx + inc hl + inc hl + inc hl + inc hl + pop bc + dec c + jr nz, .loop + pop hl + pop de + pop bc + pop af + ret +; 0x10bc4 + SECTION "Bank 4@4bc8", ROMX[$4bc8], BANK[$4] SetSpriteAnimAnimating: set SPRITEANIMSTRUCT_ANIMATING_F, [hl] ; SPRITEANIMSTRUCT_FLAGS ret -; 0x10bcb -SECTION "Bank 4@4c39", ROMX[$4c39], BANK[$4] +ResetSpriteAnimAnimating: + res SPRITEANIMSTRUCT_ANIMATING_F, [hl] ; SPRITEANIMSTRUCT_FLAGS + ret +; 0x10bce + +SECTION "Bank 4@4be7", ROMX[$4be7], BANK[$4] + +Func_10be7: + ei + di + push af + push bc + push de + push hl + ld de, $d8db + ld hl, wSpriteAnimationStructs + ld c, $ca +.asm_10bf5 + ld b, [hl] + ld a, [wWRAMBank] + push af + ld a, $03 + call SwitchWRAMBank + ld a, b + ld [de], a + pop af + call SwitchWRAMBank + inc hl + inc de + dec c + jr nz, .asm_10bf5 + pop hl + pop de + pop bc + pop af + ei + ret + +Func_10c10: + ei + di + push af + push bc + push de + push hl + ld de, wSpriteAnim4TileOffset + ld hl, wSpriteAnim1 + ld c, $ca +.asm_10c1e + ld a, [wWRAMBank] + push af + ld a, $03 + call SwitchWRAMBank + ld a, [de] + ld b, a + pop af + call SwitchWRAMBank + ld [hl], b + inc hl + inc de + dec c + jr nz, .asm_10c1e + pop hl + pop de + pop bc + pop af + ei + ret ; returns nz if sprite anim in hl is animating CheckIsSpriteAnimAnimating: @@ -549,7 +1183,8 @@ SetSpriteAnimFrameset: pop af ret -Func_10c7a: +; bc = OWFRAMEGROUP_* +SetSpriteAnimOWFrameGroup: push af push bc push de @@ -558,12 +1193,12 @@ Func_10c7a: ld a, [hl] ; SPRITEANIMSTRUCT_1 and $fc ld [hl], a - ld de, SPRITEANIMSTRUCT_E - SPRITEANIMSTRUCT_1 + ld de, SPRITEANIMSTRUCT_OW_FRAMEGROUP - SPRITEANIMSTRUCT_1 add hl, de - ld [hl], c ; SPRITEANIMSTRUCT_E + ld [hl], c ; SPRITEANIMSTRUCT_OW_FRAMEGROUP inc hl ld [hl], b - farcall Func_12c09a + farcall GetOWObjectFrameset pop hl call SetAndInitSpriteAnimFrameset pop de @@ -585,7 +1220,7 @@ SetSpriteAnimFlags: ld [hl], a ; SPRITEANIMSTRUCT_FLAGS ret -Func_10ca2: +StubSetSpriteAnimValue: ret SetSpriteAnimFrameDuration: @@ -644,9 +1279,28 @@ SetSpriteAnimAnimation:: ret ; 0x10cd9 +SECTION "Bank 4@4d17", ROMX[$4d17], BANK[$4] + +Func_10d17: + push af + push bc + push hl + sla b + sla b + inc hl + ld a, [hl] ; SPRITEANIMSTRUCT_1 + and $fb + or b + ld [hl], a + pop hl + pop bc + pop af + ret +; 0x10d28 + SECTION "Bank 4@4d40", ROMX[$4d40], BANK[$4] -Func_10d40: +Func_10d40:: call Func_111f6 ld a, $01 call Func_108c9 @@ -654,6 +1308,319 @@ Func_10d40: ret ; 0x10d4c +SECTION "Bank 4@4d50", ROMX[$4d50], BANK[$4] + +Func_10d50: + call GetOWObjectWithID + ret + +Func_10d54: + call GetOWObjectSpriteAnim + ret + +GetOWObjectSpriteAnimFlags:: + call _GetOWObjectSpriteAnimFlags + ret +; 0x10d5c + +SECTION "Bank 4@4d77", ROMX[$4d77], BANK[$4] + +LoadOWObjectInMap:: + push af + push bc + push de + push hl + sla d + sla d + sla d + sla d ; *8 + sla e + sla e + sla e + sla e ; *8 + call LoadOWObject + call IsStillOWObject + jr c, .still_object + ; apply a random animation duration + ; to the object so that NPCs in a map + ; appear out of phase + push af + call UpdateRNGSources + and $f + ld c, a + pop af + call Func_10fb8 +.still_object + pop hl + pop de + pop bc + pop af + ret +; 0x10da3 + +SECTION "Bank 4@4da7", ROMX[$4da7], BANK[$4] + +Func_10da7:: + push af + push hl + call GetOWObjectWithID + call Func_10d54 + call GetSpriteAnimPosition + call Func_10b81 + pop hl + pop af + ret +; 0x10db8 + +SECTION "Bank 4@4dcb", ROMX[$4dcb], BANK[$4] + +Func_10dcb:: + call Func_112b2 + ret + +Func_10dcf:: + call SetOWObjectDirection + ret + +Func_10dd3:: + call SetOWObjectSpriteAnimating + ret + +Func_10dd7:: + call ResetOWObjectSpriteAnimating + ret +; 0x10ddb + +SECTION "Bank 4@4de3", ROMX[$4de3], BANK[$4] + +Func_10de3:: + call Func_11300 + ret + +Func_10de7:: + call Func_1130e + ret + +Func_10deb:: + call Func_11320 + ret +; 0x10def + +SECTION "Bank 4@4df3", ROMX[$4df3], BANK[$4] + +Func_10df3:: + call Func_113d2 + ret +; 0x10df7 + +SECTION "Bank 4@4dfb", ROMX[$4dfb], BANK[$4] + +Func_10dfb:: + push bc + push de + push hl + ld a, $ff + ld [wd987], a + + call Func_113f4 + ld c, MAX_NUM_OW_OBJECTS +.loop + push bc + push de + push hl + bit ACTIVE_OBJ_F, [hl] + jr z, .next + inc hl + ld a, [hli] ; OWOBJSTRUCT_ID + ld b, a + push bc + ld b, d + ld c, e + ld a, [hli] ; OWOBJSTRUCT_ANIM_PTR + ld h, [hl] ; + ld l, a + call GetSpriteAnimPosition + pop hl + call Func_10b81 + ld a, d + cp b + jr nz, .next + ld a, e + cp c + jr nz, .next + ld a, h + ld [wd987], a +.next + pop hl + pop de + ld bc, OWOBJSTRUCT_LENGTH + add hl, bc + pop bc + dec c + jr nz, .loop + + ld a, [wd987] + pop hl + pop de + pop bc + ret + +; b = direction +Func_10e3c:: + push bc + push de + push hl + push bc + ld [wd989], a + xor a + ld [wd98a], a + ld a, [wd989] + call Func_10d50 + bit 5, [hl] ; OWOBJSTRUCT_FLAGS + jr z, .asm_10e8f + call Func_10da7 + ld a, b + and $03 + inc a + dec a + jr nz, .check_east + ; NORTH + dec e + jr nz, .asm_10e6e +.check_east + dec a + jr nz, .check_south + ; EAST + inc d + jr nz, .asm_10e6e +.check_south + dec a + jr nz, .check_west + ; SOUTH + inc e + jr nz, .asm_10e6e +.check_west + dec a + jr nz, .asm_10e6e + ; WEST + dec d + +.asm_10e6e + ld a, [wd986] + cp $ff + jr z, .asm_10e7f + ld a, d + cp $10 + jr nc, .asm_10e94 + ld a, e + cp $10 + jr nc, .asm_10e94 +.asm_10e7f + call Func_10dfb + inc a + jr nz, .asm_10e94 + sla d + sla e + call Func_10541 + and a + jr nz, .asm_10e94 +.asm_10e8f + ld a, $10 + ld [wd98a], a +.asm_10e94 + pop bc + ld a, [wd98a] + ld e, a + ld a, [wd989] + call Func_1132e + pop hl + pop de + pop bc + ret + +Func_10ea3:: + call Func_11384 + ret + +Func_10ea7: + ei + di + push af + push bc + push de + push hl + ld de, $7563 + ld hl, $da39 + ld c, $01 +.asm_10eb5 + ld b, [hl] + ld a, [wWRAMBank] + push af + ld a, $03 + call SwitchWRAMBank + ld a, b + ld [de], a + pop af + call SwitchWRAMBank + inc hl + inc de + dec c + jr nz, .asm_10eb5 + ei + pop hl + pop de + pop bc + pop af + call Func_113f8 + ret + +Func_10ed3: + ei + di + push af + push bc + push de + push hl + ld de, $7563 + ld hl, $da39 + ld c, $01 +.asm_10ee1 + ld a, [wWRAMBank] + push af + ld a, $03 + call SwitchWRAMBank + ld a, [de] + ld b, a + pop af + call SwitchWRAMBank + ld [hl], b + inc hl + inc de + dec c + jr nz, .asm_10ee1 + ei + pop hl + pop de + pop bc + pop af + call Func_11424 + ret + +Func_10eff:: + push hl + call Func_10d50 + set 5, [hl] ; OWOBJSTRUCT_FLAGS + pop hl + ret +; 0x10f07 + +SECTION "Bank 4@4f16", ROMX[$4f16], BANK[$4] + +Func_10f16: + call Func_11471 + ret +; 0x10f1a + SECTION "Bank 4@4f26", ROMX[$4f26], BANK[$4] Func_10f26: @@ -662,6 +1629,197 @@ Func_10f26: ret ; 0x10f2c +SECTION "Bank 4@4f32", ROMX[$4f32], BANK[$4] + +Func_10f32: + push af + push bc + push de + push hl + ld de, wd98b + ld hl, wOWObjects + ld c, MAX_NUM_OW_OBJECTS +.loop + bit ACTIVE_OBJ_F, [hl] + jr z, .next + call .Func_10f53 +.next + push bc + ld bc, OWOBJSTRUCT_LENGTH + add hl, bc + pop bc + dec c + jr nz, .loop + pop hl + pop de + pop bc + pop af + ret + +.Func_10f53: + push bc + push hl + inc hl + ld a, [hl] ; OWOBJSTRUCT_ID + ld c, a + ld h, d + ld l, e + ld [hl], a + inc hl + ld a, c + call GetOWObjectSpriteAnimFlags + ld [hl], a + inc hl + ld a, c + call Func_10dcb + ld [hl], b + inc hl + ld a, c + call Func_10da7 + ld [hl], d + inc hl + ld [hl], e + inc hl + ld a, $ff + ld [hl], a + ld d, h + ld e, l + pop hl + pop bc + ret + +Func_10f78: + push af + push bc + push de + push hl + call Func_10d40 + ld hl, wd98b + ld c, MAX_NUM_OW_OBJECTS +.loop + ld a, [hl] + cp $ff + jr z, .done + call .Func_10f9a + dec c + jr nz, .loop +.done + ld a, [wda97] + call Func_11450 + pop hl + pop de + pop bc + pop af + ret + +.Func_10f9a: + push bc + ld a, [hl] ; OW ID + inc hl + ld c, [hl] ; anim flags + inc hl + ld b, [hl] ; direction + inc hl + ld d, [hl] ; x + inc hl + ld e, [hl] ; y + inc hl + call LoadOWObjectInMap + + bit SPRITEANIMSTRUCT_ANIMATING_F, c + jr nz, .asm_10faf + call Func_10dd7 +.asm_10faf + bit 1, c + jr z, .asm_10fb6 + call Func_10eff +.asm_10fb6 + pop bc + ret +; 0x10fb8 + +SECTION "Bank 4@4fb8", ROMX[$4fb8], BANK[$4] + +Func_10fb8: + call SetOWObjectFrameDuration + ret +; 0x10fbc + +; check if OW object ID in register a +; is a still object, which means it +; will not animate its walking animation in place +IsStillOWObject: + push bc + push hl + ld b, a + ld hl, .OWObjectList +.loop + ld a, [hli] + cp $ff + jr z, .not_found + cp b + jr nz, .loop + scf + jr .exit +.not_found + scf + ccf +.exit + ld a, b + pop hl + pop bc + ret + +.OWObjectList + db OW_PLAYERM + db OW_PLAYERF + db OW_AMY2 + db OW_CLERK1 + db OW_CLERK2 + db OW_GRCLERK1 + db OW_GRCLERK2 + db OW_GRCLERK3 + db OW_GRCLERK4 + db OW_GRCLERK5 + db OW_CLERK3 + db OW_GRCLERK6 + db OW_GRCLERK7 + db OW_GRCLERK8 + db OW_GRCLERK9 + db OW_GRCLERK10 + db OW_GRCLERK11 + db OW_GRCLERK12 + db OW_GRCLERK13 + db OW_UNK_AC + db OW_UNK_AD + db OW_UNK_AE + db OW_UNK_AF + db OW_GRCLERK14 + db OW_GRCLERK15 + db OW_GRCLERK16 + db OW_GRCLERK17 + db OW_UNK_C8 + db OW_UNK_C9 + db OW_UNK_CA + db OW_UNK_CB + db OW_UNK_CC + db OW_UNK_CD + db OW_UNK_CE + db OW_UNK_CF + db OW_GRSHIPBEAM + db OW_GRSHIP + db OW_UNK_D2 + db OW_GRCLERK18 + db OW_LASS14 + db OW_LASS15 + db OW_UNK_E4 + db OW_UNK_E5 + db OW_UNK_E6 + db OW_UNK_E7 + db OW_UNK_E8 + db $ff ; end +; 0x11002 + SECTION "Bank 4@502c", ROMX[$502c], BANK[$4] PrintScrollableText_NoTextBoxLabelVRAM0:: @@ -707,6 +1865,21 @@ DrawWideTextBox_PrintTextWithYesOrNoMenu: ret ; 0x11064 +SECTION "Bank 4@507c", ROMX[$507c], BANK[$4] + +Func_1107c: + push af + push bc + push de + push hl + call DrawWideTextBox_PrintText + pop hl + pop de + pop bc + pop af + ret +; 0x11088 + SECTION "Bank 4@5092", ROMX[$5092], BANK[$4] SetFadePalsFrameFunc: @@ -719,9 +1892,17 @@ SetFadePalsFrameFunc: UnsetFadePalsFrameFunc: call PopFrameFunction ret -; 0x1109f -SECTION "Bank 4@50ac", ROMX[$50ac], BANK[$4] +Func_1109f:: + push hl + ld hl, Func_3a39 + call PushFrameFunction + pop hl + ret + +Func_110a8:: + call PopFrameFunction + ret SetSpriteAnimationAndFadePalsFrameFunc:: push hl @@ -733,7 +1914,17 @@ SetSpriteAnimationAndFadePalsFrameFunc:: UnsetSpriteAnimationAndFadePalsFrameFunc:: call PopFrameFunction ret -; 0x110b9 + +Func_110b9:: + push hl + ld hl, Func_3a81 + call PushFrameFunction + pop hl + ret + +Func_110c2:: + call PopFrameFunction + ret SECTION "Bank 4@51f0", ROMX[$51f0], BANK[$4] @@ -753,15 +1944,460 @@ Func_111f6: xor a call Func_108c9 xor a - ld bc, $50 - ld hl, wda39 + ld bc, OWOBJSTRUCT_LENGTH * MAX_NUM_OW_OBJECTS + ld hl, wOWObjects call WriteBCBytesToHL pop hl pop de pop bc pop af ret -; 0x11211 + +GetNextInactiveOWObject: + push af + push bc + push de + ld hl, wOWObjects + ld de, OWOBJSTRUCT_LENGTH + ld c, MAX_NUM_OW_OBJECTS +.loop + bit ACTIVE_OBJ_F, [hl] + jr z, .inactive + add hl, de + dec c + jr nz, .loop + ld hl, NULL +.inactive + pop de + pop bc + pop af + ret + +; returns in hl the pointer to the OW object +; with the given ID in register a +; returns NULL if not found +GetOWObjectWithID: + push af + push bc + push de + ld hl, wOWObjects + ld de, OWOBJSTRUCT_LENGTH + ld c, MAX_NUM_OW_OBJECTS + ld b, a +.loop + bit ACTIVE_OBJ_F, [hl] + jr z, .next ; skip objects that are inactive + inc hl + ld a, [hld] ; OWOBJSTRUCT_ID + cp b + jr z, .found +.next + add hl, de + dec c + jr nz, .loop + ld hl, NULL +.found + pop de + pop bc + pop af + ret + +GetOWObjectSpriteAnim: + push af + inc hl + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + pop af + ret + +_GetOWObjectSpriteAnimFlags: + push bc + push hl + call GetOWObjectWithID + ld b, [hl] + srl b + srl b + srl b + srl b + call GetOWObjectSpriteAnim + ld a, [hl] + and $f0 + or b + pop hl + pop bc + ret +; 0x1126b + +SECTION "Bank 4@526d", ROMX[$526d], BANK[$4] + +ConvertToSpriteAnimPosition: + push af + ld a, d + add $08 + ld d, a + ld a, e + add $10 + ld e, a + pop af + ret + +; a = OW object ID +; b = direction +; de = coordinates +LoadOWObject: + farcall _LoadOWObject + ret + +ClearOWObject: + push af + push hl + call GetOWObjectWithID + xor a + ld [hli], a ; OWOBJSTRUCT_FLAGS + ld [hld], a ; OWOBJSTRUCT_ID + call GetOWObjectSpriteAnim + call Func_10b71 + pop hl + pop af + ret + +GetOWObjectPosition: + push af + push hl + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call GetSpriteAnimPosition + call ConvertToOWObjectPosition + pop hl + pop af + ret + +; de = position +SetOWObjectPosition: + push af + push de + push hl + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call ConvertToSpriteAnimPosition + call SetSpriteAnimPosition + pop hl + pop de + pop af + ret + +Func_112b2: + push af + push hl + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call Func_10a5c + pop hl + pop af + ret + +; b = direction +SetOWObjectDirection: + push af + push bc + push hl + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call SetSpriteAnimDirection + pop hl + pop bc + pop af + ret + +SetOWObjectSpriteAnimating: + push hl + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call SetSpriteAnimAnimating + pop hl + ret + +ResetOWObjectSpriteAnimating: + push hl + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call ResetSpriteAnimAnimating + pop hl + ret +; 0x112e8 + +SECTION "Bank 4@5300", ROMX[$5300], BANK[$4] + +Func_11300: + push af + push hl + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call Func_10a83 + pop hl + pop af + ret + +Func_1130e: + push af + push bc + push de + push hl + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call Func_10a94 + pop hl + pop de + pop bc + pop af + ret + +Func_11320: + push af + push hl + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call Func_10aa8 + pop hl + pop af + ret + +Func_1132e: + push bc + push de + push hl + call GetOWObjectWithID + call GetOWObjectSpriteAnim + bit SPRITEANIMSTRUCT_MOVE_F, [hl] + jr nz, .done + bit 7, b + jr nz, .asm_11342 + call SetSpriteAnimDirection +.asm_11342 + ld a, b + and $07 + ld b, a + xor a + ld [wda8b], a + ld a, c + and a + jr z, .done + dec c + jr c, .done + jr z, .asm_11355 + srl e +.asm_11355 + ld a, e + and a + jr z, .done + ld [wda8b], a + inc c + call Func_10a66 +.done + pop hl + pop de + pop bc + ld a, [wda8b] + ret +; 0x11367 + +SECTION "Bank 4@5384", ROMX[$5384], BANK[$4] + +Func_11384:: + push af + push bc + push de + push hl + ld c, MAX_NUM_OW_OBJECTS + ld hl, wOWObjects +.loop + push bc + push hl + bit 6, [hl] + jr z, .next + push hl + call GetOWObjectSpriteAnim + bit SPRITEANIMSTRUCT_MOVE_F, [hl] + pop hl + jr nz, .next + push de + call .Func_113af + pop de +.next + pop hl + ld bc, OWOBJSTRUCT_LENGTH + add hl, bc + pop bc + dec c + jr nz, .loop + pop hl + pop de + pop bc + pop af + ret + +.Func_113af: + inc hl + ld d, [hl] ; OWOBJSTRUCT_ID + inc hl + inc hl + inc hl + push hl + ld a, [hli] ; OWOBJSTRUCT_4 + ld c, a + ld a, [hli] ; OWOBJSTRUCT_5 + ld b, a + ld a, [hli] ; OWOBJSTRUCT_6 + ld h, [hl] ; + ld l, a + call Func_3be0 + pop hl + inc [hl] ; OWOBJSTRUCT_4 + ld a, b + cp $ff + jr z, .asm_113cb + ld a, d + call Func_1132e + ret + +.asm_113cb + ld bc, OWOBJSTRUCT_FLAGS - OWOBJSTRUCT_4 + add hl, bc + res 6, [hl] + ret + +; counts number of OW objects +; that have flag 6 set +Func_113d2: + push bc + push de + push hl + ld c, MAX_NUM_OW_OBJECTS + ld hl, wOWObjects + xor a +.loop + bit 6, [hl] ; OWOBJSTRUCT_FLAGS + jr z, .next + inc a +.next + ld de, OWOBJSTRUCT_LENGTH + add hl, de + dec c + jr nz, .loop + and a + pop hl + pop de + pop bc + ret +; 0x113ec + +SECTION "Bank 4@53f4", ROMX[$53f4], BANK[$4] + +Func_113f4: + ld hl, wOWObjects + ret + +Func_113f8: + ei + di + push af + push bc + push de + push hl + ld de, $d9a5 + ld hl, wOWObjects + ld c, MAX_NUM_OW_OBJECTS * OWOBJSTRUCT_LENGTH +.asm_11406 + ld b, [hl] + ld a, [wWRAMBank] + push af + ld a, $03 + call SwitchWRAMBank + ld a, b + ld [de], a + pop af + call SwitchWRAMBank + inc hl + inc de + dec c + jr nz, .asm_11406 + ei + call Func_10be7 + pop hl + pop de + pop bc + pop af + ret + +Func_11424: + ei + di + push af + push bc + push de + push hl + ld de, $d9a5 + ld hl, wOWObjects + ld c, MAX_NUM_OW_OBJECTS * OWOBJSTRUCT_LENGTH +.asm_11432 + ld a, [wWRAMBank] + push af + ld a, $03 + call SwitchWRAMBank + ld a, [de] + ld b, a + pop af + call SwitchWRAMBank + ld [hl], b + inc hl + inc de + dec c + jr nz, .asm_11432 + ei + call Func_10c10 + pop hl + pop de + pop bc + pop af + ret + +Func_11450: + ld [wda97], a + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call Func_104fe + ret +; 0x1145d + +SECTION "Bank 4@5471", ROMX[$5471], BANK[$4] + +Func_11471: + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call Func_10d17 + ret +; 0x1147b + +SECTION "Bank 4@5485", ROMX[$5485], BANK[$4] + +SetOWObjectFrameset: + call GetOWObjectWithID + call GetOWObjectSpriteAnim + call SetAndInitSpriteAnimFrameset + ret +; 0x1148f + +SECTION "Bank 4@5499", ROMX[$5499], BANK[$4] + +SetOWObjectFrameDuration: + call GetOWObjectWithID + call GetOWObjectSpriteAnim + ld a, c + call SetSpriteAnimFrameDuration + ret +; 0x114a4 SECTION "Bank 4@557c", ROMX[$557c], BANK[$4] @@ -1047,7 +2683,7 @@ DoIntro: call ResetIntroState call ResetIntroOrbStates push af - ld a, $9a + ld a, SFX_9A call Func_3cfe pop af @@ -1257,7 +2893,7 @@ AnimateTitle: call WaitAFramesForInput jr c, .finish push af - ld a, $9b + ld a, SFX_9B call Func_3cfe pop af call .Expand @@ -1375,7 +3011,7 @@ AnimateSubtitleEnter: ld a, $02 call LoadTitleScreenGraphics push af - ld a, $9c + ld a, SFX_9C call Func_3cfe pop af call .Distort @@ -2004,7 +3640,87 @@ Data_11e52: db $12, $14, $15, $16, $17, $18, $19, $1a, $1b, $1c, $1d, $1e, $1f, $20, $21, $22, $23, $24, $25, $26 db $28, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f, $10, $11, $12, $13 db $14, $15, $16, $17, $18, $19, $1a, $1b, $1c, $1d, $1e, $1f, $20, $21, $22, $23, $24, $25, $26, $28 -; 0x1215e + +; de = coordinates +PrintPlayTime: + push af + push bc + push de + push hl + ld a, [wPlayTimeCounter + 2] ; minutes + ld [wDisplayMinutes], a + ld a, [wPlayTimeCounter + 3] ; lo hours + ld [wDisplayHours + 0], a + ld a, [wPlayTimeCounter + 4] ; hi hours + ld [wDisplayHours + 1], a + ld a, [wDisplayHours + 0] + ld l, a + ld a, [wDisplayHours + 1] + ld h, a + ld b, TRUE + ld a, 3 + farcall PrintNumber + inc d + inc d + inc d + ldtx hl, Text073b + call Func_35af + inc d + ld a, [wDisplayMinutes] + ld l, a + ld h, $00 + ld b, FALSE + ld a, 2 + farcall PrintNumber + pop hl + pop de + pop bc + pop af + ret + +; de = coordinates +PrintCardAlbumProgress: + push af + push bc + push de + push hl + push de + call GetCardAlbumProgress + ld hl, wTotalNumCardsCollected + ld [hl], e + inc hl + ld [hl], d + ld hl, wTotalNumCardsToCollect + ld [hl], c + inc hl + ld [hl], b + pop de + ld hl, wTotalNumCardsCollected + ld a, [hli] + ld h, [hl] + ld l, a + ld a, 3 + ld b, TRUE + farcall PrintNumber + inc d + inc d + inc d + ldtx hl, Text05a3 + call Func_35af + inc d + ld hl, wTotalNumCardsToCollect + ld a, [hli] + ld h, [hl] + ld l, a + ld a, 3 + ld b, TRUE + farcall PrintNumber + pop hl + pop de + pop bc + pop af + ret +; 0x121e1 SECTION "Bank 4@6e68", ROMX[$6e68], BANK[$4] @@ -2083,7 +3799,7 @@ DrawIntroCardGfx: call CopyCardPalettesToBGPals ld b, $80 ld c, $01 - call Func_1347a + call DrawLoadedCard pop hl pop de pop bc @@ -2100,7 +3816,7 @@ Func_1340c: ld e, c ld b, $80 ld c, $01 - call Func_1347a + call DrawLoadedCard pop hl pop de pop bc @@ -2175,7 +3891,7 @@ CopyCardPalettesToBGPals: ret ; de = coordinates -Func_1347a: +DrawLoadedCard: push af push bc push de @@ -2273,7 +3989,209 @@ Func_1347a: ret ; 0x1352a -SECTION "Bank 4@7cc6", ROMX[$7cc6], BANK[$4] +SECTION "Bank 4@7890", ROMX[$7890], BANK[$4] +INCLUDE "engine/credits_commands.asm" + +ShowProloguePortraitAndText_WithFade: + call Func_1022a + call ShowProloguePortraitAndText + call Func_10252 + ret + +ShowProloguePortraitAndText: + push af + push bc + push de + push hl + ld [wde53], a + call .Show + pop hl + pop de + pop bc + pop af + ret + +.Show: + call ClearSpriteAnimsAndSetInitialGraphicsConfiguration + call .DrawPortraitAndTextBox + call SetFrameFuncAndFadeFromWhite + call .PrintText + call FadeToWhiteAndUnsetFrameFunc + ret + +.DrawPortraitAndTextBox: + ld a, [wde53] + ld hl, .FunctionMap + call CallMappedFunction + lb de, 0, 12 + lb bc, 20, 6 + call DrawRegularTextBoxVRAM0 + ret + +.FunctionMap: + key_func $00, .Func_13bd8 + key_func $01, .Func_13bdf + key_func $02, .Func_13bd8 + db $ff ; end + +.Func_13bd8: + lb bc, 7, 3 + call DrawPlayerPortrait + ret + +.Func_13bdf: + ld a, $3b + lb bc, 7, 3 + ld e, PORTRAITVARIANT_NORMAL + call Func_3ab2 + ret + +.PrintText: + ld hl, .TextListPointers + ld a, [wde53] + add a + ld c, a + ld b, $00 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + call PrintScrollableTextFromList + ret + +.TextListPointers: + dw .text_list1 + dw .text_list2 + dw .text_list3 + +.text_list1 + tx Text0762 + tx Text0763 + tx Text0764 + tx Text0765 + tx Text0766 + tx Text0767 + tx Text0768 + dw $ffff + +.text_list2 + tx Text0769 + tx Text076a + tx Text076b + dw $ffff + +.text_list3 + tx Text076c + tx Text076d + tx Text076e + dw $ffff +; 0x13c22 + +SECTION "Bank 4@7c2c", ROMX[$7c2c], BANK[$4] + +PlayerNameSelection: + push af + push bc + push de + push hl + call .ShowScreenAndDoSelection + pop hl + pop de + pop bc + pop af + ret + +.ShowScreenAndDoSelection: + call ClearSpriteAnimsAndSetInitialGraphicsConfiguration + call SetFrameFuncAndFadeFromWhite + call SetFadePalsFrameFunc + call .InputName + call UnsetFadePalsFrameFunc + call FadeToWhiteAndUnsetFrameFunc + ret + +.InputName: + call .ClearPlayerName + bank1call SetDefaultPalettes + ld hl, wPlayerName + farcall InputPlayerName + ld hl, wPlayerName + ld a, [hl] + or a + jr nz, .got_name + call .SetDefaultName +.got_name + call .SetPlayerID + call .SetGenderByte + call .SaveName + ret + +.ClearPlayerName: + xor a + ld bc, NAME_BUFFER_LENGTH + ld hl, wPlayerName + call WriteBCBytesToHL + ret + +.SetPlayerID: + ld hl, wPlayerName + $e + call UpdateRNGSources + ld [hli], a + call UpdateRNGSources + ld [hl], a + ret + +.SetGenderByte: + ld hl, wPlayerName + $d + call GetPlayerGender + ld [hl], a + ret + +.SaveName: + ld hl, wPlayerName + call SavePlayerName + ret + +.SetDefaultName: + call GetPlayerGender + add a + ld c, a + ld b, $00 + ld hl, .DefaultNamePointers + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld de, wPlayerName + ld bc, $c + call CopyBCBytesFromHLToDE + ret + +.DefaultNamePointers: + dw .default_male_name + dw .default_female_name + +.default_male_name + katakana "パ" + katakana "ー" + katakana "ク" + done + done + done + done + done + done + +.default_female_name + katakana "ミ" + katakana "ン" + katakana "ト" + done + done + done + done + done + done Func_13cc6: call EnableSRAM @@ -2283,22 +4201,158 @@ Func_13cc6: ret ; 0x13cd1 -SECTION "Bank 4@7dcd", ROMX[$7dcd], BANK[$4] +SECTION "Bank 4@7cdc", ROMX[$7cdc], BANK[$4] -Func_13dcd: +; loads player's name from SRAM +; outputs in a the number of characters +LoadPlayerName: + push bc + push hl + call EnableSRAM + ld hl, sPlayerName + ld de, wPlayerName + ld bc, NAME_BUFFER_LENGTH + call CopyBCBytesFromHLToDE + call DisableSRAM + ld hl, wPlayerName + ld c, 0 +.loop_chars + ld a, [hli] + ld b, a + ld a, [hli] + or b + jr z, .got_length + inc c + ld a, c + cp MAX_PLAYER_NAME_CHARS + jr z, .got_length + jr .loop_chars +.got_length + ld a, c + pop hl + pop bc + ret + +SavePlayerName: + push af + push bc + push de + push hl + call EnableSRAM + ld de, sPlayerName + ld bc, NAME_BUFFER_LENGTH + call CopyBCBytesFromHLToDE + call DisableSRAM + pop hl + pop de + pop bc + pop af + ret +; 0x13d1f + +SECTION "Bank 4@7d37", ROMX[$7d37], BANK[$4] + +PlayerGenderSelection: + push af + push bc + push de + push hl + xor a + ld [wde64], a + call .Show + pop hl + pop de + pop bc + pop af + ret + +.Show: + call ClearSpriteAnimsAndSetInitialGraphicsConfiguration + call .LoadPortraitsAndMenuParams + call SetFrameFuncAndFadeFromWhite + call .HandleSelection + call FadeToWhiteAndUnsetFrameFunc + ret + +.LoadPortraitsAndMenuParams: + ; male portrait + ld a, PORTRAIT_00 + ld b, 0 + ld c, PORTRAITVARIANT_NORMAL + lb de, 2, 4 + farcall DrawPortrait + + ; female portrait + ld a, PORTRAIT_01 + ld b, 1 + ld c, PORTRAITVARIANT_NORMAL + lb de, 12, 4 + farcall DrawPortrait + + ld b, BANK(.MenuParams) + ld hl, .MenuParams + lb de, 2, 2 + call LoadMenuBoxParams + ld a, [wde64] + farcall DrawMenuBox + lb de, 0, 12 + lb bc, 20, 6 + call DrawRegularTextBoxVRAM0 + ret + +.MenuParams + db FALSE ; skip clear + db 16, 1 ; width, height + db SYM_CURSOR_R ; blink cursor symbol + db SYM_SPACE ; space symbol + db SYM_CURSOR_R ; default cursor symbol + db SYM_CURSOR_R ; selection cursor symbol + db A_BUTTON ; press keys + db $00 ; held keys + db TRUE ; has horizontal scroll + db 0 ; vertical step + dw NULL ; update function + dw NULL ; label text ID + + textitem 1, 0, Text05d5 + textitem 11, 0, Text05d6 + db $ff + +.HandleSelection: +.loop + ldtx hl, Text05d7 + call Func_1107c + ld a, [wde64] + farcall HandleMenuBox + ld [wde64], a + inc a + ldtx hl, Text05d8 + dec a + jr z, .got_selection + ldtx hl, Text05d9 +.got_selection + ld a, $1 + call DrawWideTextBox_PrintTextWithYesOrNoMenu + jr c, .loop + ld a, [wde64] + call SetPlayerGender + ret + +SetPlayerGender: push af push bc push de push hl and a - ld a, $00 - jr z, .asm_13ddc - farcall Func_d6d3 - jr .asm_13de0 -.asm_13ddc - farcall Func_d6e3 -.asm_13de0 - call .Func_13deb + ld a, EVENT_PLAYER_GENDER + jr z, .set_male +; set female + farcall MaxOutEventValue + jr .get_value +.set_male + farcall ZeroOutEventValue +.get_value + call GetPlayerGender call Func_13cc6 pop hl pop de @@ -2306,14 +4360,14 @@ Func_13dcd: pop af ret -.Func_13deb: +GetPlayerGender: push hl - ld a, $00 - farcall Func_d698 - ld a, $00 - jr z, .asm_13df8 - ld a, $01 -.asm_13df8 + ld a, EVENT_PLAYER_GENDER + farcall GetEventValue + ld a, PLAYER_MALE + jr z, .got_gender + ld a, PLAYER_FEMALE +.got_gender pop hl ret @@ -2323,7 +4377,7 @@ Func_13dfa: call Func_102ef call EnableLCD ld a, $01 - ld [wce4d], a + ld [wWRAMBank], a call ResetFrameFunctionStack call Func_3cdd farcall SetAllPaletteFadeConfigsToEnabled diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm new file mode 100644 index 0000000..be49fc8 --- /dev/null +++ b/src/engine/bank06.asm @@ -0,0 +1,1275 @@ +SECTION "Bank 6@58f8", ROMX[$58f8], BANK[$6] + +; clears saved data (card Collection/saved decks/Card Pop! data/etc) +; then adds the old starter decks as saved decks +; marks all cards in Collection as not owned +InitSaveData: +; clear card and deck save data + call EnableSRAM + ld a, PLAYER_TURN + ldh [hWhoseTurn], a + ld hl, sCardAndDeckSaveData + ld bc, sCardAndDeckSaveDataEnd - sCardAndDeckSaveData +.loop_clear + xor a + ld [hli], a + dec bc + ld a, c + or b + jr nz, .loop_clear + + ; these have been kept from Pokémon TCG 1 + ; and correspond to the old starter decks + ; they will be erased from SRAM afterwards + ld a, SWEAT_ANTI_GR1_DECK ; old CHARMANDER_AND_FRIENDS_DECK + ld hl, sSavedDeck1 + call .SaveDeck + ld a, VENGEFUL_ANTI_GR3_DECK ; old SQUIRTLE_AND_FRIENDS_DECK + ld hl, sSavedDeck2 + call .SaveDeck + ld a, SAMS_PRACTICE_DECK ; old BULBASAUR_AND_FRIENDS_DECK + ld hl, sSavedDeck3 + call .SaveDeck + +; marks all cards in Collection to not owned + call EnableSRAM + ld hl, sCardCollection + ld bc, CARD_COLLECTION_SIZE +.loop_collection + ld [hl], CARD_NOT_OWNED + inc hl + dec bc + ld a, c + or b + jr nz, .loop_collection + + ld hl, sSavedDuel + xor a + ld [hli], a + ld [hli], a ; sSavedDuelChecksum + ld [hl], a + + ; clears Card Pop! names + ld a, BANK(sCardPopNameList) + call BankswitchSRAM + ld hl, sCardPopNameList + ld c, CARDPOP_NAME_LIST_MAX_ELEMS +.loop_card_pop_names + ld [hl], $0 + ld de, NAME_BUFFER_LENGTH + add hl, de + dec c + jr nz, .loop_card_pop_names + ld hl, s1a100 + ld [hl], $00 + xor a + call BankswitchSRAM + +; saved configuration options + ld a, 2 + ld [sPrinterContrastLevel], a + ld a, $2 + ld [sTextSpeed], a + ld [wTextSpeed], a + +; miscellaneous data + xor a + ld [s0a007], a + ld [s0a009], a + ld [s0a004], a + ld [sTotalCardPopsDone], a + ld [s0a00a], a + ld hl, s0a020 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + + farcall Func_8f10 + call DisableSRAM + ret + +; saves deck in a to SRAM address in hl +.SaveDeck: + push de + push bc + push hl + ld [wcc16], a + call LoadDeck + jr c, .done + call .LoadDeckName + pop hl + call EnableSRAM + push hl + ld de, wDefaultText +.loop_copy_name + ld a, [de] + inc de + ld [hli], a + or a + jr nz, .loop_copy_name + pop hl + push hl + ld de, DECK_NAME_SIZE + add hl, de + ld de, wPlayerDeck + bank1call SaveDeckCards + call DisableSRAM + or a +.done + pop hl + pop bc + pop de + ret + +.LoadDeckName: + ld a, [wcc16] + sub 3 + farcall LoadDeckIDData + ld hl, wOpponentDeckName + ld a, [hli] + ld h, [hl] + ld l, a + ld de, wDuelTempList + call CopyText + ld c, $0f + ld hl, wDuelTempList + ld de, wDefaultText +.loop_chars + ld a, [hl] + or a + jr z, .terminating_byte + cp $0f + jr nz, .asm_199dc + ld c, a + jr .next_char +.asm_199dc + cp $0e + jr nz, .asm_199e3 + ld c, a + jr .next_char +.asm_199e3 + cp $06 + jr c, .copy_2_bytes + ld a, c + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de +.next_char + inc hl + jr .loop_chars +.copy_2_bytes + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + jr .loop_chars + +.terminating_byte + ld [de], a + ret +; 0x199fa + +SECTION "Bank 6@601a", ROMX[$601a], BANK[$6] + +ClearCardPopNameList: + call EnableSRAM + ld a, BANK(sCardPopNameList) + call BankswitchSRAM + ld hl, sCardPopNameList + ld de, NAME_BUFFER_LENGTH + ld c, CARDPOP_NAME_LIST_MAX_ELEMS +.loop_clear + ld [hl], $0 + add hl, de + dec c + jr nz, .loop_clear + ; the intention was to clear sTotalCardPopsDone, + ; but since we are in SRAM1, it clears a byte + ; in sCardPopNameList instead + xor a + ld [sCardPopNameList + $5], a + call BankswitchSRAM ; SRAM0 + call DisableSRAM + ret +; 0x1a03b + +SECTION "Bank 6@6e14", ROMX[$6e14], BANK[$6] + +LoadHandCardsIcon: + ld hl, HandCardsGfx + ld de, v0Tiles2 + $38 tiles + ld b, 4 tiles + call Func_1b8f1 + ret + +HandCardsGfx: + INCBIN "gfx/hand_cards.2bpp" + +WhatIsYourNameData: + textitem 1, 1, Text0287 + db $ff ; end +; 0x1ae65 + +SECTION "Bank 6@6e92", ROMX[$6e92], BANK[$6] + +; play different sfx by a. +; if a is 0xff play SFX_03 (usually following a B press), +; else play SFX_02 (usually following an A press). +PlayAcceptOrDeclineSFX: + push af + inc a + jr z, .asm_1ae9a + ld a, SFX_02 + jr .asm_1ae9c +.asm_1ae9a + ld a, SFX_03 +.asm_1ae9c + call PlaySFX + pop af + ret + +; get player name from the user into hl +InputPlayerName: + ld e, l + ld d, h + ld a, MAX_PLAYER_NAME_LENGTH + ld hl, WhatIsYourNameData + lb bc, 12, 1 + call InitializeInputName + call Set_OBJ_8x8 + + xor a + ld [wd3ef], a + ld [wTileMapFill], a + call EmptyScreen + call ZeroObjectPositions + ld a, $01 + ld [wVBlankOAMCopyToggle], a + call LoadSymbolsFont + lb de, $38, $bf + call SetupText + call LoadFullWidthTextCursorTile + xor a ; NAME_MODE_HIRAGANA + ld [wNamingScreenMode], a + + call UpdateNamingScreenUI + + xor a + ld [wNamingScreenCursorX], a + ld [wNamingScreenCursorY], a + + ld a, 9 + ld [wNamingScreenNumColumns], a + ld a, 7 + ld [wNamingScreenNumRows], a + ld a, SYM_CURSOR_R + ld [wVisibleCursorTile], a + ld a, SYM_SPACE + ld [wInvisibleCursorTile], a +.loop + ld a, $01 + ld [wVBlankOAMCopyToggle], a + call DoFrame + + call UpdateRNGSources + + ldh a, [hDPadHeld] + and START + jr z, .check_select + ld a, $01 + call PlayAcceptOrDeclineSFX + call HideCursorAtCharPosition + ld a, 6 + ld [wNamingScreenCursorY], a + inc a ; 7 + ld [wNamingScreenCursorX], a + call ShowCursorAtCharPosition + jr .loop + +.check_select + ldh a, [hDPadHeld] + and SELECT + jr z, .asm_1af3b + ld a, $01 + call PlayAcceptOrDeclineSFX + ld a, [wNamingScreenMode] + inc a + cp NUM_NAME_MODES + jr c, .got_mode + xor a ; NAME_MODE_HIRAGANA +.got_mode + ld [wNamingScreenMode], a + xor a + ld [wNamingScreenCursorX], a + ld [wNamingScreenCursorY], a + call UpdateNamingScreenUI + jr .loop + +.asm_1af3b + call HandleNamingScreenInput + jr nc, .loop + cp $ff + jr z, .remove_last_char + call SelectKeyboardItem + jr nc, .loop + call FinalizeInputName + ret + +.remove_last_char + ld a, [wNamingScreenBufferLength] + or a + jr z, .loop + ld e, a + ld d, $00 + ld hl, wNamingScreenBuffer + add hl, de + dec hl + dec hl + ld [hl], TX_END + ld hl, wNamingScreenBufferLength + dec [hl] + dec [hl] + call ProcessTextWithUnderbar + jr .loop + +; called when naming (either player's or deck's) starts. +; a = maximum length of name (depending on whether player's or deck's). +; bc = position of name. +; de = dest. pointer. +; hl = pointer to text item of the question. +InitializeInputName: + ld [wNamingScreenBufferMaxLength], a + + ; wNamingScreenNamePosition = bc + push hl + ld hl, wNamingScreenNamePosition + ld [hl], b + inc hl + ld [hl], c + pop hl + + ; wNamingScreenQuestionPointer = hl + ld b, h + ld c, l + ld hl, wNamingScreenQuestionPointer + ld [hl], c + inc hl + ld [hl], b + + ; wNamingScreenDestPointer = de + ld hl, wNamingScreenDestPointer + ld [hl], e + inc hl + ld [hl], d + + ; clear the name buffer + ld a, NAMING_SCREEN_BUFFER_LENGTH + ld hl, wNamingScreenBuffer + farcall ClearBytesInHL + + ld a, [de] + cp $06 + jr z, .get_length + ld hl, wNamingScreenBuffer + ld a, [wNamingScreenBufferMaxLength] + ld b, a + inc b +.loop + ld a, [de] + inc de + ld [hli], a + dec b + jr nz, .loop +.get_length + ld hl, wNamingScreenBuffer + call GetTextLengthInTiles + ld a, c + ld [wNamingScreenBufferLength], a + ret + +FinalizeInputName: + ld hl, wNamingScreenDestPointer + ld e, [hl] + inc hl + ld d, [hl] + ld l, e + ld h, d + ld de, wNamingScreenBuffer + ld a, [wNamingScreenBufferMaxLength] + ld b, a + inc b + jr InitializeInputName.loop + +; draws textbox around keyboard, +; the naming question and the actual +; items in the keyboard +UpdateNamingScreenUI: + call DrawTextboxForKeyboard + call ProcessTextWithUnderbar + ld hl, wNamingScreenQuestionPointer + ld c, [hl] + inc hl + ld a, [hl] + ld h, a + or c + jr z, .print + ; print the question string. + ld l, c + call PlaceTextItems +.print + ld hl, .text_items1 + call PlaceTextItems + + ld a, [wNamingScreenMode] + or a + jr nz, .asm_1afe5 +; NAME_MODE_HIRAGANA + ld hl, .text_items2 + call PlaceTextItems + ldtx hl, Text0288 + jr .asm_1b00a +.asm_1afe5 + dec a + jr nz, .asm_1aff3 +; NAME_MODE_KATAKANA + ld hl, .text_items3 + call PlaceTextItems + ldtx hl, Text0289 + jr .asm_1b00a +.asm_1aff3 + dec a + jr nz, .asm_1b001 +; NAME_MODE_UPPER_ABC + ld hl, .text_items4 + call PlaceTextItems + ldtx hl, Text028a + jr .asm_1b00a +.asm_1b001 +; NAME_MODE_LOWER_ABC + ld hl, .text_items5 + call PlaceTextItems + ldtx hl, Text028b +.asm_1b00a + lb de, 2, 4 + call InitTextPrinting + call ProcessTextFromID + call EnableLCD + ret + +.text_items1: + textitem 16, 16, Text0286 + db $ff ; end + +.text_items2: + textitem 2, 16, Text0283 + textitem 7, 16, Text0284 + textitem 12, 16, Text0285 + db $ff ; end + +.text_items3: + textitem 2, 16, Text0282 + textitem 7, 16, Text0284 + textitem 12, 16, Text0285 + db $ff ; end + +.text_items4: + textitem 2, 16, Text0282 + textitem 7, 16, Text0283 + textitem 12, 16, Text0285 + db $ff ; end + +.text_items5: + textitem 2, 16, Text0282 + textitem 7, 16, Text0283 + textitem 12, 16, Text0284 + db $ff ; end + +DrawTextboxForKeyboard: + lb de, 0, 3 + lb bc, 20, 15 + call DrawRegularTextBox + ret + +ProcessTextWithUnderbar: + ld hl, wNamingScreenNamePosition + ld d, [hl] + inc hl + ld e, [hl] + push de + call InitTextPrinting + ld a, [wNamingScreenBufferMaxLength] + ld e, a + ld a, $14 + sub e + inc a + ld e, a ; = $14 - wNamingScreenBufferMaxLength + 1 + ld d, $00 + ld hl, .underbar_chars + add hl, de + call ProcessText + pop de + call InitTextPrinting + ld hl, wNamingScreenBuffer + call ProcessText + ret + +.underbar_chars + db "W" ; stray byte +REPT $a + textfw4 "_" +ENDR + done + +HandleNamingScreenInput: +.start + xor a + ld [wNamingScreenInputSFX], a + ldh a, [hDPadHeld] + or a + jp z, .check_btns + ld b, a + ld a, [wNamingScreenNumRows] + ld c, a + ld a, [wNamingScreenCursorX] + ld h, a + ld a, [wNamingScreenCursorY] + ld l, a + bit D_UP_F, b + jr z, .check_d_down + ; move cursor down + dec a + bit 7, a + jr z, .apply_y_value + ; wrap around + ld a, c + dec a + jr .apply_y_value +.check_d_down + bit D_DOWN_F, b + jr z, .horizontal_directions + ; move cursor up + inc a + cp c + jr c, .apply_y_value + ; wrap around + xor a + jr .apply_y_value + +.horizontal_directions + ld a, [wNamingScreenNumColumns] + ld c, a + ld a, h + bit D_LEFT_F, b + jr z, .check_d_right + ld d, a + ld a, 6 ; is last row? + cp l + ld a, d + jr nz, .move_left + ; handle last row movement + push hl + push bc + push af + call GetCharInfoFromPos + inc hl + inc hl + inc hl + inc hl + inc hl + ld a, [hl] + dec a + ld d, a + pop af + pop bc + pop hl + sub d ; cursor_x - d + cp -1 + jr nz, .asm_1b0f1 + ; wrap around + ld a, c + sub 2 + jr .apply_x_value +.asm_1b0f1 + cp -2 + jr nz, .move_left + ; wrap around + ld a, c + sub 3 + jr .apply_x_value + +.move_left + dec a + bit 7, a + jr z, .apply_x_value + ld a, c + dec a + jr .apply_x_value + +.check_d_right + bit D_RIGHT_F, b + jr z, .check_btns + ld d, a + ld a, 6 ; is last row? + cp l + ld a, d + jr nz, .move_right + push hl + push bc + push af + call GetCharInfoFromPos + inc hl + inc hl + inc hl + inc hl + ld a, [hl] + dec a + ld d, a + pop af + pop bc + pop hl + add d ; cursor_x + d +.move_right + inc a + cp c + jr c, .apply_x_value + inc c + cp c + jr c, .warp_around_right + inc c + cp c + jr c, .warp_round_last_row + ld a, 2 + jr .apply_x_value +.warp_round_last_row + ld a, 1 + jr .apply_x_value +.warp_around_right + xor a + jr .apply_x_value + +.apply_y_value + ld l, a + jr .got_new_cursor_position + +.apply_x_value + ld h, a + +.got_new_cursor_position + push hl + call GetCharInfoFromPos + inc hl + inc hl + inc hl + ld a, [wNamingScreenMode] + cp NAME_MODE_LOWER_ABC + jr nz, .asm_1b14a + inc hl + inc hl +.asm_1b14a + ld d, [hl] + push de + call HideCursorAtCharPosition + pop de + pop hl + ld a, l + ld [wNamingScreenCursorY], a + ld a, h + ld [wNamingScreenCursorX], a + xor a + ld [wNamingScreenCursorBlinkCounter], a + ld a, KEYBOARD_UNKNOWN + cp d + jp z, .start + ld a, SFX_01 + ld [wNamingScreenInputSFX], a + +.check_btns + ldh a, [hKeysPressed] + and A_BUTTON | B_BUTTON + jr z, .no_pressed_btns + and A_BUTTON + jr nz, .asm_1b174 + ld a, $ff +.asm_1b174 + call PlayAcceptOrDeclineSFX + push af + call ShowCursorAtCharPosition + pop af + scf + ret + +.no_pressed_btns + ld a, [wNamingScreenInputSFX] + or a + jr z, .skip_sfx + call PlaySFX +.skip_sfx + ld hl, wNamingScreenCursorBlinkCounter + ld a, [hl] + inc [hl] + and $0f + ret nz + ld a, [wVisibleCursorTile] + bit 4, [hl] + jr z, DrawSymbolAtCharPosition +; fallthrough + +HideCursorAtCharPosition: + ld a, [wInvisibleCursorTile] +; fallthrough + +DrawSymbolAtCharPosition: + ld e, a + ld a, [wNamingScreenCursorX] + ld h, a + ld a, [wNamingScreenCursorY] + ld l, a + call GetCharInfoFromPos + ld a, [hli] ; y + ld c, a + ld a, [wd3ef] + or a + jr z, .asm_1b1ae + inc c +.asm_1b1ae + ld b, [hl] ; x + dec b + ld a, e ; tile + call UpdateNameTextCursor + call WriteByteToBGMap0 + or a + ret + +ShowCursorAtCharPosition: + ld a, [wVisibleCursorTile] + jr DrawSymbolAtCharPosition + +; a = tile of cursor +UpdateNameTextCursor: + push af + push bc + push de + push hl + push af + call ZeroObjectPositions + pop af + ld b, a + ld a, [wInvisibleCursorTile] + cp b + jr z, .done ; cursor is invisible, done + ld a, [wd3ef] + or a + jr nz, .asm_1b201 + +; place text cursor on the next name character position + ld a, [wNamingScreenBufferLength] + srl a ; /2 + ld d, a + ld a, [wNamingScreenBufferMaxLength] + srl a ; /2 + ld e, a + ld a, d + cp e + jr nz, .name_not_full + dec a +.name_not_full + ld hl, wNamingScreenNamePosition + add [hl] ; add name x position + ld d, a + ld h, 8 + ld l, d + call HtimesL + ld a, l + add 8 + ld d, a ; x + ld e, 24 ; y + lb bc, $0, $0 ; attributes, tile number + call SetOneObjectAttributes +.done + pop hl + pop de + pop bc + pop af + ret + +.asm_1b201 + ld a, [wNamingScreenBufferLength] + sub $24 + jr c, .asm_1b212 + cp $24 + jr nz, .asm_1b20e + dec a + dec a +.asm_1b20e + ld e, 32 ; y + jr .asm_1b217 +.asm_1b212 + ld a, [wNamingScreenBufferLength] + ld e, 24 ; y +.asm_1b217 + sra a + ld l, a + ld h, 8 + call HtimesL + ld a, l + add 16 + ld d, a ; x + lb bc, $0, $0 + call SetOneObjectAttributes + jr .done + +; load, to the first tile of v0Tiles0, the graphics for the +; blinking black square used in name input screens +LoadFullWidthTextCursorTile: + ld hl, v0Tiles0 + ld de, .black_tile + ld b, $00 +.loop + ld a, TILE_SIZE + cp b + ret z + inc b + ld a, [de] + inc de + ld [hli], a + jr .loop + +.black_tile +REPT TILE_SIZE + db $ff +ENDR + +; return carry if player selected "Done" +SelectKeyboardItem: + ld a, [wNamingScreenCursorX] + ld h, a + ld a, [wNamingScreenCursorY] + ld l, a + call GetCharInfoFromPos + inc hl + inc hl + ld e, [hl] + inc hl + ld a, [hli] + ld d, a + cp KEYBOARD_DONE + jp z, .set_carry + cp KEYBOARD_TOGGLE_KATAKANA + jr nz, .asm_1b276 + ld a, [wNamingScreenMode] + or a + jr nz, .hiragana_mode + ld a, NAME_MODE_KATAKANA + jp .set_mode +.hiragana_mode + xor a ; NAME_MODE_HIRAGANA + jp .set_mode +.asm_1b276 + cp KEYBOARD_TOGGLE_UPPER_ABC + jr nz, .asm_1b289 + ld a, [wNamingScreenMode] + cp NAME_MODE_UPPER_ABC + jr c, .not_upper_abc_mode + ld a, NAME_MODE_KATAKANA + jr .set_mode +.not_upper_abc_mode + ld a, NAME_MODE_UPPER_ABC + jr .set_mode +.asm_1b289 + cp KEYBOARD_TOGGLE_LOWER_ABC + jr nz, .character_item + ld a, [wNamingScreenMode] + cp NAME_MODE_LOWER_ABC + jr nz, .not_lower_abc_mode + ld a, NAME_MODE_UPPER_ABC + jr .set_mode +.not_lower_abc_mode + ld a, NAME_MODE_LOWER_ABC +.set_mode + ld [wNamingScreenMode], a + call UpdateNamingScreenUI + or a + ret + +.character_item + ld a, [wNamingScreenMode] + cp NAME_MODE_UPPER_ABC + jr z, .upper_abc + cp NAME_MODE_LOWER_ABC + jr z, .lower_abc + + ; handle diacritics + lb bc, TX_FULLWIDTH4, "FW4_゛" + ld a, d + cp b + jr nz, .check_handakuten + ld a, e + cp c + jr nz, .check_handakuten + push hl + ld hl, DakutenTable + call GetDiacriticCharacter + pop hl + jr c, .no_carry + jr .apply_diacritic +.check_handakuten + lb bc, TX_FULLWIDTH4, "FW4_゜" + ld a, d + cp b + jr nz, .not_diacritic + ld a, e + cp c + jr nz, .not_diacritic + push hl + ld hl, HandakutenTable + call GetDiacriticCharacter + pop hl + jr c, .no_carry +.apply_diacritic + ; decrease length by 2 + ld a, [wNamingScreenBufferLength] + dec a + dec a + ld [wNamingScreenBufferLength], a + + ; get pointer to last character in buffer + ld hl, wNamingScreenBuffer + push de + ld d, $00 + ld e, a + add hl, de + pop de + ld a, [hl] + jr .add_character + +.not_diacritic + ld a, d + or a + jr nz, .add_character + ld a, [wNamingScreenMode] + or a + jr nz, .asm_1b2fb + ; NAME_MODE_HIRAGANA + ld a, TX_HIRAGANA + jr .add_character +.asm_1b2fb + ; NAME_MODE_KATAKANA + ld a, TX_KATAKANA + jr .add_character +.lower_abc + inc hl + inc hl +.upper_abc + ld e, [hl] + inc hl + ld a, [hl] + or a + jr nz, .add_character + ld a, TX_HIRAGANA + +; a = TX_* constant +; e = character byte +.add_character + ld d, a + ld hl, wNamingScreenBufferLength + ld a, [hl] + ld c, a + push hl + ld hl, wNamingScreenBufferMaxLength + cp [hl] + pop hl + jr nz, .not_last_character + ; overwrite last character + ld hl, wNamingScreenBuffer + dec hl + dec hl + ; hl = wNamingScreenBuffer - 2 + jr .got_char_position +.not_last_character + inc [hl] + inc [hl] + ld hl, wNamingScreenBuffer +.got_char_position + ld b, $00 + add hl, bc + ld [hl], d + inc hl + ld [hl], e + inc hl + ld [hl], TX_END + call ProcessTextWithUnderbar +.no_carry + or a + ret + +.set_carry: + scf + ret + +; input: +; hl = pointer to either DakutenTable or HandakutenTable +; output: +; d = $00 +; e = new character byte +GetDiacriticCharacter: + ld a, [wNamingScreenBufferLength] + or a + jr z, .set_carry + dec a + dec a + push hl + ld hl, wNamingScreenBuffer + ld d, $00 + ld e, a + add hl, de + ld e, [hl] ; TX_* + inc hl + ld d, [hl] ; character + ld a, TX_KATAKANA + cp e + jr nz, .not_katakana + dec e ; change to hiragana +.not_katakana + pop hl +.loop + ld a, [hli] + or a + jr z, .set_carry ; not in table + cp d + jr nz, .next + ld a, [hl] + cp e + jr nz, .next + inc hl + ld e, [hl] ; new character byte + inc hl + ld d, [hl] ; unused byte + or a + ret +.next + inc hl + inc hl + inc hl + jr .loop + +.set_carry + scf + ret + +; given the position of the current cursor, +; it returns the pointer to the proper information. +; h: position x. +; l: position y. +GetCharInfoFromPos: + push de + ; (information index) = (x) * (height) + (y) + ld e, l + ld d, h + ld a, [wNamingScreenNumRows] + ld l, a + call HtimesL + ld a, l + add e + ld hl, KeyboardData + pop de + or a + ret z +.loop +REPT 8 + inc hl +ENDR + dec a + jr nz, .loop + ret + +; a set of keyboard datum +; \1 = absolute y coordinate +; \2 = absolute x coordinate +; \3 = TX_* constant (hiragana/katakana) +; \4 = hiragana character (must coincide with the +; katakana character with the same byte value) +; \5 = TX_* constant (uppercase ABC) +; \6 = uppercase alphabet character +; \7 = TX_* constant (lowercase ABC) +; \8 = lowercase alphabet character +MACRO kbchar + db \1, \2 + +REPT 3 +IF \3 == TX_FULLWIDTH0 || \3 == TX_KATAKANA + db STRCAT("FW0_", \4) +ELIF \3 == TX_FULLWIDTH4 + db STRCAT("FW4_", \4) +ELIF \3 == TX_SYMBOL + db SYM_\4 +ENDC + db \3 +SHIFT 2 +ENDR +ENDM + +; \1 = absolute y coordinate +; \2 = absolute x coordinate +; \3 = keyboard function (KEYBOARD_* constant) +; \4 = cursor x offset to right +; \5 = cursor x offset to left +MACRO kbitem + db \1, \2 + db $01 ; unused + db \3 + db \4, \5 + db \4, \5 ; unused +ENDM + +KeyboardData: + ; col 0 + kbchar 4, 2, TX_FULLWIDTH0, "あ", TX_FULLWIDTH4, "A", TX_FULLWIDTH4, "a" + kbchar 6, 2, TX_FULLWIDTH0, "い", TX_FULLWIDTH4, "J", TX_FULLWIDTH4, "j" + kbchar 8, 2, TX_FULLWIDTH0, "う", TX_FULLWIDTH4, "S", TX_FULLWIDTH4, "s" + kbchar 10, 2, TX_FULLWIDTH0, "え", TX_FULLWIDTH0, "?", TX_FULLWIDTH4, "@" + kbchar 12, 2, TX_FULLWIDTH0, "お", TX_FULLWIDTH0, "4", TX_FULLWIDTH4, ":" + kbchar 14, 2, TX_FULLWIDTH0, "ゃ", TX_FULLWIDTH0, "ぃ", TX_SYMBOL, LIGHTNING + kbitem 16, 2, KEYBOARD_TOGGLE_KATAKANA, 3, 2 + + ; col 1 + kbchar 4, 4, TX_FULLWIDTH0, "か", TX_FULLWIDTH4, "B", TX_FULLWIDTH4, "b" + kbchar 6, 4, TX_FULLWIDTH0, "き", TX_FULLWIDTH4, "K", TX_FULLWIDTH4, "k" + kbchar 8, 4, TX_FULLWIDTH0, "く", TX_FULLWIDTH4, "T", TX_FULLWIDTH4, "t" + kbchar 10, 4, TX_FULLWIDTH0, "け", TX_FULLWIDTH4, "&", TX_FULLWIDTH4, "&" + kbchar 12, 4, TX_FULLWIDTH0, "こ", TX_FULLWIDTH0, "5", TX_FULLWIDTH4, ";" + kbchar 14, 4, TX_FULLWIDTH0, "ゅ", TX_FULLWIDTH0, "ぅ", TX_SYMBOL, GRASS + kbitem 16, 2, KEYBOARD_TOGGLE_KATAKANA, 2, 2 + + ; col 2 + kbchar 4, 6, TX_FULLWIDTH0, "さ", TX_FULLWIDTH4, "C", TX_FULLWIDTH4, "c" + kbchar 6, 6, TX_FULLWIDTH0, "し", TX_FULLWIDTH4, "L", TX_FULLWIDTH4, "l" + kbchar 8, 6, TX_FULLWIDTH0, "す", TX_FULLWIDTH4, "U", TX_FULLWIDTH4, "u" + kbchar 10, 6, TX_FULLWIDTH0, "せ", TX_FULLWIDTH0, "+", TX_FULLWIDTH0, "/" + kbchar 12, 6, TX_FULLWIDTH0, "そ", TX_FULLWIDTH0, "6", TX_FULLWIDTH4, "_" + kbchar 14, 6, TX_FULLWIDTH0, "ょ", TX_FULLWIDTH0, "ぇ", TX_SYMBOL, FIRE + kbitem 16, 2, KEYBOARD_TOGGLE_KATAKANA, 2, 3 + + ; col 3 + kbchar 4, 8, TX_FULLWIDTH0, "た", TX_FULLWIDTH4, "D", TX_FULLWIDTH4, "d" + kbchar 6, 8, TX_FULLWIDTH0, "ち", TX_FULLWIDTH4, "M", TX_FULLWIDTH4, "m" + kbchar 8, 8, TX_FULLWIDTH0, "つ", TX_FULLWIDTH4, "V", TX_FULLWIDTH4, "v" + kbchar 10, 8, TX_FULLWIDTH0, "て", TX_FULLWIDTH0, "-", TX_FULLWIDTH4, "*" + kbchar 12, 8, TX_FULLWIDTH0, "と", TX_FULLWIDTH0, "7", TX_FULLWIDTH4, "<" + kbchar 14, 8, TX_FULLWIDTH0, "っ", TX_FULLWIDTH0, "ぉ", TX_SYMBOL, WATER + kbitem 16, 7, KEYBOARD_TOGGLE_UPPER_ABC, 2, 3 + + ; col 4 + kbchar 4, 10, TX_FULLWIDTH0, "な", TX_FULLWIDTH4, "E", TX_FULLWIDTH4, "e" + kbchar 6, 10, TX_FULLWIDTH0, "に", TX_FULLWIDTH4, "N", TX_FULLWIDTH4, "n" + kbchar 8, 10, TX_FULLWIDTH0, "ぬ", TX_FULLWIDTH4, "W", TX_FULLWIDTH4, "w" + kbchar 10, 10, TX_FULLWIDTH0, "ね", TX_FULLWIDTH0, "・", TX_FULLWIDTH0, "+" + kbchar 12, 10, TX_FULLWIDTH0, "の", TX_FULLWIDTH0, "8", TX_FULLWIDTH4, ">" + kbchar 14, 10, TX_FULLWIDTH0, "を", TX_KATAKANA, "ァ", TX_SYMBOL, PSYCHIC + kbitem 16, 7, KEYBOARD_TOGGLE_UPPER_ABC, 2, 2 + + ; col 5 + kbchar 4, 12, TX_FULLWIDTH0, "は", TX_FULLWIDTH4, "F", TX_FULLWIDTH4, "f" + kbchar 6, 12, TX_FULLWIDTH0, "ひ", TX_FULLWIDTH4, "O", TX_FULLWIDTH4, "о" + kbchar 8, 12, TX_FULLWIDTH0, "ふ", TX_FULLWIDTH4, "X", TX_FULLWIDTH4, "x" + kbchar 10, 12, TX_FULLWIDTH0, "へ", TX_FULLWIDTH0, "0", TX_FULLWIDTH0, "-" + kbchar 12, 12, TX_FULLWIDTH0, "ほ", TX_FULLWIDTH0, "9", TX_FULLWIDTH0, " " + kbchar 14, 12, TX_FULLWIDTH4, "゛", TX_KATAKANA, "ィ", TX_SYMBOL, FIGHTING + kbitem 16, 12, KEYBOARD_TOGGLE_LOWER_ABC, 2, 2 + + ; col 6 + kbchar 4, 14, TX_FULLWIDTH0, "ま", TX_FULLWIDTH4, "G", TX_FULLWIDTH4, "g" + kbchar 6, 14, TX_FULLWIDTH0, "み", TX_FULLWIDTH4, "P", TX_FULLWIDTH4, "p" + kbchar 8, 14, TX_FULLWIDTH0, "む", TX_FULLWIDTH4, "Y", TX_FULLWIDTH4, "y" + kbchar 10, 14, TX_FULLWIDTH0, "め", TX_FULLWIDTH0, "1", TX_FULLWIDTH4, "=" + kbchar 12, 14, TX_FULLWIDTH0, "も", TX_SYMBOL, No, TX_FULLWIDTH0, " " + kbchar 14, 14, TX_FULLWIDTH4, "゜", TX_KATAKANA, "ゥ", TX_SYMBOL, COLORLESS + kbitem 16, 12, KEYBOARD_TOGGLE_LOWER_ABC, 2, 2 + + ; col 7 + kbchar 4, 16, TX_FULLWIDTH0, "や", TX_FULLWIDTH4, "H", TX_FULLWIDTH4, "h" + kbchar 6, 16, TX_FULLWIDTH0, "ゆ", TX_FULLWIDTH4, "Q", TX_FULLWIDTH4, "q" + kbchar 8, 16, TX_FULLWIDTH0, "よ", TX_FULLWIDTH4, "Z", TX_FULLWIDTH4, "z" + kbchar 10, 16, TX_FULLWIDTH0, "わ", TX_FULLWIDTH0, "2", TX_FULLWIDTH0, "・" + kbchar 12, 16, TX_FULLWIDTH0, "ん", TX_SYMBOL, Lv, TX_FULLWIDTH0, " " + kbchar 14, 16, TX_FULLWIDTH0, "ー", TX_KATAKANA, "ェ", TX_SYMBOL, RAINBOW + kbitem 16, 16, KEYBOARD_DONE, 2, 2 + + ; col 8 + kbchar 4, 18, TX_FULLWIDTH0, "ら", TX_FULLWIDTH4, "I", TX_FULLWIDTH4, "i" + kbchar 6, 18, TX_FULLWIDTH0, "り", TX_FULLWIDTH4, "R", TX_FULLWIDTH4, "r" + kbchar 8, 18, TX_FULLWIDTH0, "る", TX_FULLWIDTH0, "!", TX_FULLWIDTH0, " " + kbchar 10, 18, TX_FULLWIDTH0, "れ", TX_FULLWIDTH0, "3", TX_FULLWIDTH4, "ˍ" + kbchar 12, 18, TX_FULLWIDTH0, "ろ", TX_FULLWIDTH0, "ぁ", TX_FULLWIDTH0, " " + kbchar 14, 18, TX_FULLWIDTH0, " ", TX_KATAKANA, "ォ", TX_FULLWIDTH0, " " + kbitem 16, 16, KEYBOARD_DONE, 3, 3 + + db 0, 0, $00, $00, $00, $00, $00, $00 + +MACRO diacritic + db STRCAT("FW0_", \1) + db \2 + db STRCAT("FW0_", \3) + db $00 +ENDM + +DakutenTable: + diacritic "か", TX_HIRAGANA, "が" ; katakana カ, ガ + diacritic "き", TX_HIRAGANA, "ぎ" ; katakana キ, ギ + diacritic "く", TX_HIRAGANA, "ぐ" ; katakana ク, グ + diacritic "け", TX_HIRAGANA, "げ" ; katakana ケ, ゲ + diacritic "こ", TX_HIRAGANA, "ご" ; katakana コ, ゴ + diacritic "さ", TX_HIRAGANA, "ざ" ; katakana サ, ザ + diacritic "し", TX_HIRAGANA, "じ" ; katakana シ, ジ + diacritic "す", TX_HIRAGANA, "ず" ; katakana ス, ズ + diacritic "せ", TX_HIRAGANA, "ぜ" ; katakana セ, ゼ + diacritic "そ", TX_HIRAGANA, "ぞ" ; katakana ソ, ゾ + diacritic "た", TX_HIRAGANA, "だ" ; katakana タ, ダ + diacritic "ち", TX_HIRAGANA, "ぢ" ; katakana チ, ヂ + diacritic "つ", TX_HIRAGANA, "づ" ; katakana ツ, ヅ + diacritic "て", TX_HIRAGANA, "で" ; katakana テ, デ + diacritic "と", TX_HIRAGANA, "ど" ; katakana ト, ド + diacritic "は", TX_HIRAGANA, "ば" ; katakana ハ, バ + diacritic "ひ", TX_HIRAGANA, "び" ; katakana ヒ, ビ + diacritic "ふ", TX_HIRAGANA, "ぶ" ; katakana フ, ブ + diacritic "へ", TX_HIRAGANA, "べ" ; katakana ヘ, ベ + diacritic "ほ", TX_HIRAGANA, "ぼ" ; katakana ホ, ボ + diacritic "ぱ", TX_HIRAGANA, "ば" ; katakana パ, バ + diacritic "ぴ", TX_HIRAGANA, "び" ; katakana ピ, ビ + diacritic "ぷ", TX_HIRAGANA, "ぶ" ; katakana プ, ブ + diacritic "ぺ", TX_HIRAGANA, "べ" ; katakana ペ, ベ + diacritic "ぽ", TX_HIRAGANA, "ぼ" ; katakana ポ, ボ + db $00, $00 ; end + +HandakutenTable: + diacritic "は", TX_HIRAGANA, "ぱ" ; katakana ハ, パ + diacritic "ひ", TX_HIRAGANA, "ぴ" ; katakana ヒ, ピ + diacritic "ふ", TX_HIRAGANA, "ぷ" ; katakana フ, プ + diacritic "へ", TX_HIRAGANA, "ぺ" ; katakana ヘ, ペ + diacritic "ほ", TX_HIRAGANA, "ぽ" ; katakana ホ, ポ + diacritic "ば", TX_HIRAGANA, "ぱ" ; katakana バ, パ + diacritic "び", TX_HIRAGANA, "ぴ" ; katakana ビ, ピ + diacritic "ぶ", TX_HIRAGANA, "ぷ" ; katakana ブ, プ + diacritic "べ", TX_HIRAGANA, "ぺ" ; katakana ベ, ペ + diacritic "ぼ", TX_HIRAGANA, "ぽ" ; katakana ボ, ポ + db $00, $00 ; end +; 0x1b613 + +SECTION "Bank 6@78f1", ROMX[$78f1], BANK[$6] + +Func_1b8f1: + ld a, b + or a + ret z +.asm_1b8f4 + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .asm_1b8f4 + ret +; 0x1b8fb diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm index 1b5ef84..5d95942 100644 --- a/src/engine/bank07.asm +++ b/src/engine/bank07.asm @@ -1,3 +1,284 @@ +; prints decimal digit in a +; to coordinates de +PrintDigit: + push af + push bc + push de + push hl + add SYM_0 + ld b, d ; x + ld c, e ; y + call WriteByteToBGMap0 + pop hl + pop de + pop bc + pop af + ret + +; hl = 16-bit input value +; de = coordinates +; b = FALSE: left-padded with zeroes +; TRUE: left-padded with empty spaces +; a = identation +PrintNumber: + ld c, a + push de + ld de, wDecimalRepresentation + call .CalculateDecimalDigits + pop de + ld a, d + add c + ld d, a + ld hl, wDecimalRepresentation + $4 +.loop_digits + ld a, [hld] + cp $ff + jr nz, .print + dec d + push af + push bc + push de + push hl + ld b, d ; x + ld c, e ; y + ld a, SYM_SPACE + call WriteByteToBGMap0 + pop hl + pop de + pop bc + pop af + jr .next_digit +.print + dec d + call PrintDigit +.next_digit + dec c + jr nz, .loop_digits + ret + +.CalculateDecimalDigits: + push af + push bc + push de + push hl + push bc + push de + ld bc, -10000 + call .GetDigit ; ten-thousands digit + ld bc, -1000 + call .GetDigit ; thousands digit + ld bc, -100 + call .GetDigit ; hundreds digit + ld bc, -10 + call .GetDigit ; tens digit + ld bc, -1 + call .GetDigit ; ones digit + pop de + pop bc + ld a, b + and a + jr z, .done +; left pad with $ff + ld c, 4 +.loop_pad + ld a, [de] + and a + jr nz, .done + ld a, $ff + ld [de], a + inc de + dec c + jr nz, .loop_pad +.done + pop hl + pop de + pop bc + pop af + ret + +.GetDigit: + ld a, -1 +.loop + inc a + add hl, bc + jr c, .loop + push af + ld a, l + sub c + ld l, a + ld a, h + sbc b + ld h, a + pop af + ld [de], a + inc de + ret + +Func_1c08b:: + push af + push bc + push de + push hl + xor a + call BankswitchVRAM + ld a, c ; unused + ld hl, v0Tiles1 + add hl, bc + inc d +.loop_tiles + ld c, TILE_SIZE / 2 +.loop_inner + di + call WaitForLCDOff + ld a, $ff + ld [hli], a + inc hl + ei + dec c + jr nz, .loop_inner + dec e + jr nz, .loop_tiles + dec d + jr nz, .loop_tiles + pop hl + pop de + pop bc + pop af + ret +; 0x1c0b2 + +SECTION "Bank 7@40ec", ROMX[$40ec], BANK[$7] + +Func_1c0ec:: + push bc + push de + push hl + ld a, EVENT_PLAYER_GENDER + farcall GetEventValue + jr nz, .female +; male + ld a, $00 + jr .asm_1c0fd +.female + ld a, $01 +.asm_1c0fd + pop hl + pop de + pop bc + ret + +; converts a into PORTRAIT_* constant +Func_1c101:: + push bc + push hl + ld c, a + ld b, $00 + ld hl, .PortraitIDs + add hl, bc + ld a, [hl] + pop hl + pop bc + ret + +.PortraitIDs + db PORTRAIT_00 ; $00 + db PORTRAIT_01 ; $01 + db PORTRAIT_02 ; $02 + db PORTRAIT_03 ; $03 + db PORTRAIT_04 ; $04 + db PORTRAIT_05 ; $05 + db PORTRAIT_06 ; $06 + db PORTRAIT_07 ; $07 + db PORTRAIT_5E ; $08 + db PORTRAIT_5F ; $09 + db PORTRAIT_08 ; $0a + db PORTRAIT_09 ; $0b + db PORTRAIT_0A ; $0c + db PORTRAIT_0B ; $0d + db PORTRAIT_0C ; $0e + db PORTRAIT_0D ; $0f + db PORTRAIT_0E ; $10 + db PORTRAIT_0F ; $11 + db PORTRAIT_10 ; $12 + db PORTRAIT_11 ; $13 + db PORTRAIT_12 ; $14 + db PORTRAIT_13 ; $15 + db PORTRAIT_14 ; $16 + db PORTRAIT_15 ; $17 + db PORTRAIT_16 ; $18 + db PORTRAIT_17 ; $19 + db PORTRAIT_18 ; $1a + db PORTRAIT_19 ; $1b + db PORTRAIT_1A ; $1c + db PORTRAIT_1B ; $1d + db PORTRAIT_1C ; $1e + db PORTRAIT_1D ; $1f + db PORTRAIT_1E ; $20 + db PORTRAIT_1F ; $21 + db PORTRAIT_20 ; $22 + db PORTRAIT_21 ; $23 + db PORTRAIT_22 ; $24 + db PORTRAIT_23 ; $25 + db PORTRAIT_24 ; $26 + db PORTRAIT_25 ; $27 + db PORTRAIT_26 ; $28 + db PORTRAIT_27 ; $29 + db PORTRAIT_28 ; $2a + db PORTRAIT_29 ; $2b + db PORTRAIT_2A ; $2c + db PORTRAIT_2B ; $2d + db PORTRAIT_2C ; $2e + db PORTRAIT_2D ; $2f + db PORTRAIT_2E ; $30 + db PORTRAIT_2F ; $31 + db PORTRAIT_30 ; $32 + db PORTRAIT_31 ; $33 + db PORTRAIT_32 ; $34 + db PORTRAIT_33 ; $35 + db PORTRAIT_34 ; $36 + db PORTRAIT_35 ; $37 + db PORTRAIT_36 ; $38 + db PORTRAIT_37 ; $39 + db PORTRAIT_38 ; $3a + db PORTRAIT_39 ; $3b + db PORTRAIT_3A ; $3c + db PORTRAIT_3B ; $3d + db PORTRAIT_3C ; $3e + db PORTRAIT_3D ; $3f + db PORTRAIT_3E ; $40 + db PORTRAIT_3F ; $41 + db PORTRAIT_40 ; $42 + db PORTRAIT_41 ; $43 + db PORTRAIT_42 ; $44 + db PORTRAIT_43 ; $45 + db PORTRAIT_44 ; $46 + db PORTRAIT_45 ; $47 + db PORTRAIT_46 ; $48 + db PORTRAIT_47 ; $49 + db PORTRAIT_48 ; $4a + db PORTRAIT_49 ; $4b + db PORTRAIT_4A ; $4c + db PORTRAIT_4B ; $4d + db PORTRAIT_4C ; $4e + db PORTRAIT_4D ; $4f + db PORTRAIT_4E ; $50 + db PORTRAIT_4F ; $51 + db PORTRAIT_50 ; $52 + db PORTRAIT_51 ; $53 + db PORTRAIT_52 ; $54 + db PORTRAIT_53 ; $55 + db PORTRAIT_54 ; $56 + db PORTRAIT_55 ; $57 + db PORTRAIT_56 ; $58 + db PORTRAIT_57 ; $59 + db PORTRAIT_58 ; $5a + db PORTRAIT_59 ; $5b + db PORTRAIT_5A ; $5c + db PORTRAIT_5B ; $5d + db PORTRAIT_5C ; $5e + db PORTRAIT_5D ; $5f +; 0x1c116 + SECTION "Bank 7@4395", ROMX[$4395], BANK[$7] Func_1c395: @@ -112,7 +393,7 @@ Func_1c448: push bc ld c, a ld b, $00 - ld hl, $4453 + ld hl, .data add hl, bc ld a, [hl] pop bc @@ -593,7 +874,8 @@ StartPalFadeToBlackOrWhite: SECTION "Bank 7@493c", ROMX[$493c], BANK[$7] -Func_1c93c:: +; returns nz if palettes are still fading +CheckPalFading:: ld a, [wPaletteFadeMode] and a ret @@ -738,7 +1020,7 @@ WaitPalFading: push af .loop_wait call DoFrame - call Func_1c93c + call CheckPalFading jr nz, .loop_wait pop af ret @@ -856,9 +1138,28 @@ SetOBPaletteFadeConfigToEnabled: pop bc pop af ret -; 0x1ca87 -SECTION "Bank 7@4a9f", ROMX[$4a9f], BANK[$7] +SetOBPaletteFadeConfigToDisabled: + push af + push bc + push de + push hl + add a + add a + ld c, a + ld b, $00 + ld hl, wOBColorFadeConfigList + add hl, bc + ld a, $ff ; disable fading + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + pop hl + pop de + pop bc + pop af + ret SetAllBGPaletteFadeConfigsToEnabled: push af @@ -894,7 +1195,717 @@ SetAllOBPaletteFadeConfigsToEnabled: ret ; 0x1cac3 -SECTION "Bank 7@4f81", ROMX[$4f81], BANK[$7] +SECTION "Bank 7@4b00", ROMX[$4b00], BANK[$7] + +; a = default cursor position +DrawMenuBox: + push af + push bc + push de + push hl + push af + ld a, [wMenuBoxX] + ld d, a + ld a, [wMenuBoxY] + ld e, a + ld a, [wMenuBoxWidth] + ld b, a + ld a, [wMenuBoxHeight] + ld c, a + ld a, [wMenuBoxSkipClear] + and a + jr nz, .skip_clear + farcall FillBoxInBGMapWithZero + jr .print_items +.skip_clear + ld a, [wMenuBoxLabelTextID + 0] + ld l, a + ld a, [wMenuBoxLabelTextID + 1] + ld h, a + or l + jr nz, .asm_1cb31 + call DrawRegularTextBoxVRAM0 + jr .print_items +.asm_1cb31 + call Func_38ad + +.print_items + ld a, [wMenuBoxNumItems] + ld b, a + ld c, 0 +.loop_text_items + push bc + push de + ld b, $00 + ld hl, wMenuBoxItemsXPositions + add hl, bc + ld d, [hl] + ld hl, wMenuBoxItemsYPositions + add hl, bc + ld e, [hl] + ld hl, wMenuBoxItemsTextIDs + sla c + rl b + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + call Func_35af + pop de + pop bc + inc c + ld a, c + cp b + jr nz, .loop_text_items + pop af + + ; place cursor in default position + ld b, $00 + ld c, a + ld hl, wMenuBoxItemsXPositions + add hl, bc + ld a, [hl] + ld d, a + ld hl, wMenuBoxItemsYPositions + add hl, bc + ld a, [hl] + ld e, a + ld b, d + dec b + ld c, e + xor a + call BankswitchVRAM + ld a, [wMenuBoxCursorSymbol] + call WriteByteToBGMap0 + pop hl + pop de + pop bc + pop af + ret + +HandleMenuBox: + push bc + push de + push hl + ld c, a + ld [wMenuBoxFocusedItem], a + xor a + ld [wMenuBoxBlinkCounter], a + call .UnfocusItem + ld a, [wMenuBoxDelay] + and a + jr z, .no_delay +.loop_delay + call DoFrame + dec a + jr nz, .loop_delay + +.no_delay + call .InitAndUpdateBlinkCounter +.loop_main + call DoFrame + call UpdateRNGSources + ld a, [wMenuBoxNumItems] + ld h, a + ld a, [wMenuBoxFocusedItem] + ld c, a + call .CallUpdateFunction + ld a, [wda37] + and a + jr nz, .asm_1cbc3 + call .DownPress + call .UpPress + call .RightPress + call .LeftPress + ld a, c + ld [wMenuBoxFocusedItem], a +.asm_1cbc3 + ld a, [wMenuBoxFocusedItem] + ld c, a + xor a + ld [wda37], a + call .CheckKeysPressed + jr nz, .asm_1cbda + call .CheckKeysHeld + jr nz, .asm_1cbda + call .UpdateBlinkCounter + jr .loop_main +.asm_1cbda + call .FocusItem + ld a, c + pop hl + pop de + pop bc + ret + +.UpPress: + ldh a, [hDPadHeld] + and D_UP + ret z + ld a, [wMenuBoxHasHorizontalScroll] + ld l, a ; unused + ld a, [wMenuBoxVerticalStep] + and a + ret z + ld b, a + ld a, c + sub b + jr nc, .asm_1cbf6 + add h ; warp around +.asm_1cbf6 + push af + ld a, SFX_01 + call Func_3cfe + pop af + call .UnfocusItem + ld c, a + ret + +.DownPress: + ldh a, [hDPadHeld] + and D_DOWN + ret z + ld a, [wMenuBoxHasHorizontalScroll] + ld l, a ; unused + ld a, [wMenuBoxVerticalStep] + and a + ret z + ld b, a + ld a, c + add b + cp h + jr c, .asm_1cc17 + sub h ; warp around +.asm_1cc17 + push af + ld a, SFX_01 + call Func_3cfe + pop af + call .UnfocusItem + ld c, a + ret + +.LeftPress: + ldh a, [hDPadHeld] + and D_LEFT + ret z + ld a, [wMenuBoxHasHorizontalScroll] + and a + ret z + ld b, a + ld a, c + sub b + jr nc, .asm_1cc33 + add h +.asm_1cc33 + push af + ld a, SFX_01 + call Func_3cfe + pop af + call .UnfocusItem + ld c, a + ret + +.RightPress: + ldh a, [hDPadHeld] + and D_RIGHT + ret z + ld a, [wMenuBoxHasHorizontalScroll] + and a + ret z + ld b, a + ld a, c + add b + cp h + jr c, .asm_1cc50 + sub h +.asm_1cc50 + push af + ld a, SFX_01 + call Func_3cfe + pop af + call .UnfocusItem + ld c, a + ret + +; returns carry if any of the keys +; in wMenuBoxPressKeys are pressed +.CheckKeysPressed: + ld a, [wMenuBoxPressKeys] + ld b, a + ldh a, [hKeysPressed] + and b + ret z + scf + ccf + ret + +; returns carry if any of the keys +; in wMenuBoxHeldKeys are held +.CheckKeysHeld: + ld a, [wMenuBoxHeldKeys] + ld b, a + ldh a, [hDPadHeld] + and b + ret z + scf + ret + +.InitAndUpdateBlinkCounter: + xor a + ld [wMenuBoxBlinkCounter], a +; fallthrough + +.UpdateBlinkCounter: + push bc + push hl + ld b, $00 + ld hl, wMenuBoxItemsXPositions + add hl, bc + ld a, [hl] + ld d, a + ld hl, wMenuBoxItemsYPositions + add hl, bc + ld a, [hl] + ld e, a + ld b, d + dec b + ld c, e + ld a, [wMenuBoxBlinkCounter] + and $10 + ld a, [wMenuBoxBlinkSymbol] + jr z, .blink + ld a, [wMenuBoxSpaceSymbol] +.blink + push af + xor a + call BankswitchVRAM + pop af + call WriteByteToBGMap0 + ld a, $01 + call BankswitchVRAM + ld a, $80 ; priority + call WriteByteToBGMap0 + xor a + call BankswitchVRAM + ; increment counter + ld hl, wMenuBoxBlinkCounter + inc [hl] + pop hl + pop bc + ret + +; c = cursor position +.UnfocusItem: + push af + push bc + push hl + ld b, $00 + ld hl, wMenuBoxItemsXPositions + add hl, bc + ld a, [hl] + ld d, a + ld hl, wMenuBoxItemsYPositions + add hl, bc + ld a, [hl] + ld e, a + ld b, d + dec b + ld c, e + ld a, [wMenuBoxSpaceSymbol] + call WriteByteToBGMap0 + xor a + ld [wMenuBoxBlinkCounter], a + pop hl + pop bc + pop af + ret + +; c = cursor position +; carry = doing selection +.FocusItem: + push af + push bc + push hl + ld a, [wMenuBoxCursorSymbol] + jr nc, .not_selection + ld a, [wMenuBoxSelectionSymbol] +.not_selection + push af + ld b, $00 + ld hl, wMenuBoxItemsXPositions + add hl, bc + ld a, [hl] + ld d, a + ld hl, wMenuBoxItemsYPositions + add hl, bc + ld a, [hl] + ld e, a + ld b, d + dec b + ld c, e + pop af + call WriteByteToBGMap0 + pop hl + pop bc + pop af + ret + +.CallUpdateFunction: + push af + push bc + push de + push hl + ld a, [wMenuBoxUpdateFunction + 0] + ld l, a + ld a, [wMenuBoxUpdateFunction + 1] + ld h, a + or l + jr z, .done +; call hl + ld de, .done + push de + jp hl +.done + pop hl + pop de + pop bc + pop af + ret + +GetMenuBoxFocusedItem: + ld a, [wMenuBoxFocusedItem] + ret +; 0x1cd17 + +SECTION "Bank 7@4d6f", ROMX[$4d6f], BANK[$7] + +; outputs in a what option the player chose +ShowStartMenu: + push bc + push de + push hl + ld [wStartMenuConfiguration], a + push af + ld a, MUSIC_PCMAINMENU + call SetMusic + pop af + call .HandleMenu + ld a, [wMenuCursorPosition] + pop hl + pop de + pop bc + ret + +.HandleMenu: + farcall ClearSpriteAnimsAndSetInitialGraphicsConfiguration + ld de, $4090 + call SetupText + call .DrawMenu + farcall SetFrameFuncAndFadeFromWhite + farcall SetFadePalsFrameFunc + call HandleStartMenuBox + farcall UnsetFadePalsFrameFunc + farcall FadeToWhiteAndUnsetFrameFunc + ret + +.DrawMenu: + ld a, [wStartMenuConfiguration] + and a + jr z, .skip_portrait_and_name + +; draw player portrait + call Func_1c0ec + add 0 + lb bc, 13, 1 + ld e, PORTRAITVARIANT_NORMAL + call Func_3ab2 + +; print player's name + farcall LoadPlayerName + ld b, a + ld a, MAX_PLAYER_NAME_CHARS + sub b + ld d, 13 + add d + ld d, a + ld e, 8 + ldtx hl, Text05be + call Func_35bf + +.skip_portrait_and_name + ld a, [wStartMenuConfiguration] + add a + ld c, a + ld b, $00 + ld hl, .MenuBoxParamPointers + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld b, BANK(.MenuBoxParamPointers) + lb de, 0, 0 + call LoadMenuBoxParams + ld a, [wStartMenuConfiguration] + ld c, a + ld b, $00 + ld hl, .DefaultCursorPositions + add hl, bc + ld a, [hl] + ld [wMenuCursorPosition], a + call DrawMenuBox + lb de, 0, 10 + lb bc, 20, 8 + call DrawRegularTextBoxVRAM0 + ret + +.DefaultCursorPositions + db 0 ; STARTMENU_CONFIG_0 + db 0 ; STARTMENU_CONFIG_1 + db 1 ; STARTMENU_CONFIG_2 + db 1 ; STARTMENU_CONFIG_3 + db 0 ; STARTMENU_CONFIG_4 + +.MenuBoxParamPointers: + dw .Config0Params ; STARTMENU_CONFIG_0 + dw .Config1Params ; STARTMENU_CONFIG_1 + dw .Config2Params ; STARTMENU_CONFIG_2 + dw .Config3Params ; STARTMENU_CONFIG_3 + dw .Config4Params ; STARTMENU_CONFIG_4 + +.Config0Params + db TRUE ; ? + db 12, 4 ; width, height + db SYM_CURSOR_R ; blink cursor symbol + db SYM_SPACE ; space symbol + db SYM_CURSOR_R ; default cursor symbol + db SYM_CURSOR_R ; selection cursor symbol + db A_BUTTON ; press keys + db $00 ; held keys + db FALSE ; has horizontal scroll + db 0 ; vertical step + dw StartMenuBoxUpdate ; update function + dw NULL ; label text ID + + textitem 2, 2, Text05ce + db $ff ; end + +.Config1Params + db TRUE ; ? + db 12, 6 ; width, height + db SYM_CURSOR_R ; blink cursor symbol + db SYM_SPACE ; space symbol + db SYM_CURSOR_R ; default cursor symbol + db SYM_CURSOR_R ; selection cursor symbol + db A_BUTTON ; press keys + db $00 ; held keys + db FALSE ; has horizontal scroll + db 1 ; vertical step + dw StartMenuBoxUpdate ; update function + dw NULL ; label text ID + + textitem 2, 2, Text05cf + textitem 2, 4, Text05ce + db $ff ; end + +.Config2Params + db TRUE ; ? + db 12, 8 ; width, height + db SYM_CURSOR_R ; blink cursor symbol + db SYM_SPACE ; space symbol + db SYM_CURSOR_R ; default cursor symbol + db SYM_CURSOR_R ; selection cursor symbol + db A_BUTTON ; press keys + db $00 ; held keys + db FALSE ; has horizontal scroll + db 1 ; vertical step + dw StartMenuBoxUpdate ; update function + dw NULL ; label text ID + + textitem 2, 2, Text05d0 + textitem 2, 4, Text05cf + textitem 2, 6, Text05ce + db $ff ; end + +.Config3Params + db TRUE ; ? + db 12, 10 ; width, height + db SYM_CURSOR_R ; blink cursor symbol + db SYM_SPACE ; space symbol + db SYM_CURSOR_R ; default cursor symbol + db SYM_CURSOR_R ; selection cursor symbol + db A_BUTTON ; press keys + db $00 ; held keys + db FALSE ; has horizontal scroll + db 1 ; vertical step + dw StartMenuBoxUpdate ; update function + dw NULL ; label text ID + + textitem 2, 2, Text05d0 + textitem 2, 4, Text05cf + textitem 2, 6, Text05ce + textitem 2, 8, Text05d1 + db $ff ; end + +.Config4Params + db TRUE ; ? + db 12, 8 ; width, height + db SYM_CURSOR_R ; blink cursor symbol + db SYM_SPACE ; space symbol + db SYM_CURSOR_R ; default cursor symbol + db SYM_CURSOR_R ; selection cursor symbol + db A_BUTTON ; press keys + db $00 ; held keys + db FALSE ; has horizontal scroll + db 1 ; vertical step + dw StartMenuBoxUpdate ; update function + dw NULL ; label text ID + + textitem 2, 2, Text05cf + textitem 2, 4, Text05ce + textitem 2, 6, Text05d1 + db $ff ; end + +_StartMenuBoxUpdate:: + push af + push bc + push de + push hl + call GetMenuBoxFocusedItem + ld b, a + ld a, [wMenuBoxLastFocusedItem] + cp b + jr z, .done + call .DrawTextBox + sla b + ld a, [wStartMenuConfiguration] + sla a + sla a + sla a ; *8 + add b + ld c, a + ld b, $00 + ld hl, .PointerTables + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a +; call hl + ld de, .done + push de + jp hl +.done + call GetMenuBoxFocusedItem + ld [wMenuBoxLastFocusedItem], a + pop hl + pop de + pop bc + pop af + ret + +.PointerTables: +; STARTMENU_CONFIG_0 + dw .NewGame + dw NULL + dw NULL + dw NULL + +; STARTMENU_CONFIG_1 + dw .ContinueFromDiary + dw .NewGame + dw NULL + dw NULL + +; STARTMENU_CONFIG_2 + dw .CardPop + dw .ContinueFromDiary + dw .NewGame + dw NULL + +; STARTMENU_CONFIG_3 + dw .CardPop + dw .ContinueFromDiary + dw .NewGame + dw .ContinueDuel + +; STARTMENU_CONFIG_4 + dw .ContinueFromDiary + dw .NewGame + dw .ContinueDuel + dw NULL + +.DrawTextBox: + push bc + lb de, 0, 10 + lb bc, 20, 8 + call DrawRegularTextBoxVRAM0 + pop bc + ret + +.NewGame: + lb de, 1, 12 + ldtx hl, Text05d2 + call Func_35af + ret + +.ContinueFromDiary: + farcall Func_c53e + call LoadTxRam2 + ldtx hl, Text077b + lb de, 1, 10 + call Func_2c4b + ld hl, .TextItems + call Func_35cf + call Func_1d0aa + ld l, a + ld h, $00 + lb de, 13, 12 + ld a, 2 + ld b, TRUE + call PrintNumber + lb de, 10, 16 + farcall PrintPlayTime + lb de, 9, 14 + farcall PrintCardAlbumProgress + ret + +.TextItems: + textitem 3, 12, Text05af + textitem 15, 12, Text05ca + textitem 3, 14, Text05b0 + textitem 3, 16, Text05b1 + db $ff + +.CardPop: + lb de, 1, 12 + ldtx hl, Text05d3 + call Func_35af + ret + +.ContinueDuel: + lb de, 1, 12 + ldtx hl, Text05d4 + call Func_35af + ret + +HandleStartMenuBox: + ld a, -1 + ld [wMenuBoxLastFocusedItem], a + ld a, [wMenuCursorPosition] + call HandleMenuBox + ld [wMenuCursorPosition], a + jr c, .selected + push af + ld a, SFX_02 + call Func_3cfe + pop af + ret +.selected + push af + ld a, SFX_03 + call Func_3cfe + pop af + ret ; return carry if "no" selected AskToOverwriteSaveData: @@ -966,35 +1977,154 @@ AskToContinueFromDiaryInsteadOfDuel: tx Text078a tx Text078b tx $ffff -; 0x1d016 + +ConfirmPlayerNameAndGender: + push bc + push de + push hl + call .ShowInfoAndAskPlayer + pop hl + pop de + pop bc + ret + +.ShowInfoAndAskPlayer: + farcall ClearSpriteAnimsAndSetInitialGraphicsConfiguration + call .ShowPlayerInfo + farcall SetFrameFuncAndFadeFromWhite + call .ShowYesOrNoMenu + farcall FadeToWhiteAndUnsetFrameFunc + ret + +.ShowPlayerInfo: + lb de, 0, 0 + lb bc, 20, 12 + call DrawRegularTextBoxVRAM0 + lb de, 0, 12 + lb bc, 20, 6 + call DrawRegularTextBoxVRAM0 + ld hl, .TextItems + call Func_35cf + lb bc, 12, 3 + call DrawPlayerPortrait + ; print name + ldtx hl, Text05be + lb de, 5, 4 + call Func_35bf + ; print gender + farcall GetPlayerGender + and a + ldtx hl, Text05d5 + jr z, .got_gender_text + ldtx hl, Text05d6 +.got_gender_text + lb de, 5, 8 + call Func_35af + ret + +.TextItems: + textitem 2, 2, Text05ad + textitem 2, 6, Text05de + db $ff + +.ShowYesOrNoMenu: + ldtx hl, Text05dd + ld a, $1 + farcall DrawWideTextBox_PrintTextWithYesOrNoMenu + ret +; 0x1d081 + +SECTION "Bank 7@5081", ROMX[$5081], BANK[$7] + +Func_1d081: + push bc + push hl + ld c, a + ld b, $00 + ld hl, .EventIDs + add hl, bc + ld a, [hl] + farcall GetEventValue + pop hl + pop bc + ret + +.EventIDs + db EVENT_04 + db EVENT_0B + db EVENT_05 + db EVENT_06 + db EVENT_07 + db EVENT_08 + db EVENT_09 + db EVENT_0A + db EVENT_10 + db EVENT_11 + db EVENT_12 + db EVENT_13 + db EVENT_14 + db EVENT_15 + db EVENT_16 + db EVENT_17 + db EVENT_18 + db EVENT_19 + db EVENT_1A + db EVENT_1B + db EVENT_1C + db EVENT_1D + db EVENT_1E + db EVENT_1F + +Func_1d0aa: + push bc + push hl + ld c, $18 + ld b, $00 + xor a +.asm_1d0b1 + push af + call Func_1d081 + jr z, .asm_1d0b8 + inc b +.asm_1d0b8 + pop af + inc a + dec c + jr nz, .asm_1d0b1 + ld a, b + and a + pop hl + pop bc + ret +; 0x1d0c2 SECTION "Bank 7@5475", ROMX[$5475], BANK[$7] Func_1d475: ld hl, .FunctionMap - call Func_3535 + call CallMappedFunction ret .FunctionMap - db $0 - dba Func_1d485 - - db $1 - dba Func_1d4b9 - + key_func $0, Func_1d485 + key_func $1, Func_1d4b9 db $ff ; end Func_1d485: - ld a, $00 - farcall Func_13dcd - ld a, $04 - farcall Func_d6d3 + ld a, PLAYER_MALE + farcall SetPlayerGender + ld a, EVENT_04 + farcall MaxOutEventValue farcall Func_1157c call Func_1eca5 call Func_1d7a1 call Func_1d9f9 call Func_1dcb7 - farcall $6, $601a + + ; this is unnecessary since Card Pop list + ; was already cleared in InitSaveData + farcall ClearCardPopNameList + call Func_1e419 call Func_1e767 farcall Func_111f0 @@ -1119,3 +2249,144 @@ Func_1eca5: pop af ret ; 0x1ece4 + +SECTION "Bank 7@757b", ROMX[$757b], BANK[$7] + +Func_1f57b:: + push af + push bc + push de + push hl + ld a, [wdd75] + and a + jr z, .asm_1f588 + call .Func_1f58d +.asm_1f588 + pop hl + pop de + pop bc + pop af + ret + +.Func_1f58d: + dec a + add a ; *2 + ld c, a + ld b, $00 + ld hl, .OffsetPointers + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wdd76] + add a ; *2 + ld c, a + add hl, bc + ld a, [hl] + cp $80 + jr z, .asm_1f5b6 + ld c, [hl] + ldh a, [hSCX] + sub c + ldh [hSCX], a + inc hl + ld c, [hl] + ldh a, [hSCY] + sub c + ldh [hSCY], a + ld hl, wdd76 + inc [hl] + ret + +.asm_1f5b6 + xor a + ld [wdd76], a + ld a, [wdd77] + and a + jr z, .asm_1f5c5 + dec a + ld [wdd77], a + ret nz +.asm_1f5c5 + xor a + ld [wdd75], a + ret + +.OffsetPointers: + dw .offsets1 ; $1 + dw .offsets2 ; $2 + dw .offsets3 ; $3 + dw .offsets4 ; $4 + dw .offsets5 ; $5 + dw .offsets6 ; $6 + +.offsets1 + db -1, 0 + db 1, 0 + db 1, 0 + db -1, 0 + db $80 ; end + +.offsets2 + db 0, -1 + db 0, 1 + db 0, 1 + db 0, -1 + db $80 ; end + +.offsets3 + db -1, -1 + db 1, 1 + db 1, 1 + db -1, -1 + db $80 ; end + +.offsets4 + db -2, 0 + db 2, 0 + db 2, 0 + db -2, 0 + db $80 ; end + +.offsets5 + db 0, -2 + db 0, 2 + db 0, 2 + db 0, -2 + db $80 ; end + +.offsets6 + db -2, 2 + db 2, -2 + db 2, -2 + db -2, 2 + db $80 ; end +; 0x1f60c + +SECTION "Bank 7@78bd", ROMX[$78bd], BANK[$7] + +PlayerGenderAndNameSelection:: + push af + push bc + push de + push hl +.start + farcall SetFadePalsFrameFunc + call StartFadeToWhite + call WaitPalFading + farcall UnsetFadePalsFrameFunc + push af + ld a, MUSIC_PCMAINMENU + call SetMusic + pop af + farcall PlayerGenderSelection + farcall PlayerNameSelection + call ConfirmPlayerNameAndGender + jr c, .start ; player selected no + call SetNoMusic + pop hl + pop de + pop bc + pop af + ret +; 0x1f8eb diff --git a/src/engine/bank09.asm b/src/engine/bank09.asm new file mode 100644 index 0000000..dd7a64a --- /dev/null +++ b/src/engine/bank09.asm @@ -0,0 +1,1422 @@ +SECTION "Bank 9@409a", ROMX[$409a], BANK[$9] + +; return carry if saved duel checksum +; in SRAM is not valid +CheckSavedDuelChecksum: + call EnableSRAM + ld hl, sSavedDuel + ld a, [sSavedDuelChecksum + $2] + call DisableSRAM + cp $01 + jr nz, .continue + scf + ret + +.continue + call EnableSRAM + push de + ld a, [hli] ; sSavedDuel + or a + jr z, .set_carry + lb de, $23, $45 + ld bc, $352 + ld a, [hl] ; sSavedDuelChecksum + sub e + ld e, a + inc hl + ld a, [hl] + xor d + ld d, a + inc hl + inc hl + ; hl = sSavedDuelData +.loop_data + ld a, [hl] + add e + ld e, a + ld a, [hli] + xor d + ld d, a + dec bc + ld a, c + or b + jr nz, .loop_data + ld a, e + or d + jr z, .no_carry +.set_carry + scf +.no_carry + call DisableSRAM + pop de + ret + +ClearSavedDuel: + call EnableSRAM + ld hl, sSavedDuel + xor a + ld [hli], a + ld [hli], a + ld [hl], a + call DisableSRAM + ret +; 0x240e6 + +SECTION "Bank 9@5934", ROMX[$5934], BANK[$9] + +; a = deck ID +LoadDeckIDData: + ld [wcc16], a + ld c, a + ld hl, DeckIDData +.loop_find + ld a, [hl] + cp $ff + jr z, .not_found + cp c + jr z, .found + ld de, 12 + add hl, de + jr .loop_find +.not_found + scf + ret + +.found + inc hl + ld a, [hli] + ld [wOpponentDeckName + 0], a + ld a, [hli] + ld [wOpponentDeckName + 1], a + ld a, [hli] + ld [wOpponentName + 0], a + ld a, [hli] + ld [wOpponentName + 1], a + ld a, [hli] + ld [wcc12], a + ld a, [hli] + ld [wcc15], a + ld a, [hli] + ld [wcc10], a + ld a, [hli] + ld [wcd0e], a + ld a, [hli] + ld [wcc17], a + ld a, [hli] + ld [wcd0f], a + ld a, [hli] + ld [wcc18], a + or a + ret + +DeckIDData: + db PLAYER_PRACTICE_DECK_ID + tx Text04d6 ; deck name + tx Text04d5 ; opponent name + db $05 ; ? + db $02 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $12 ; ? + db $00 ; ? + + db STARTER_DECK_ID + tx Text0448 ; deck name + tx Text04f6 ; opponent name + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + + db SWEAT_ANTI_GR1_DECK_ID + tx Text044d ; deck name + tx Text04f6 ; opponent name + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + + db GIVE_IN_ANTI_GR2_DECK_ID + tx Text0466 ; deck name + tx Text04f6 ; opponent name + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + + db VENGEFUL_ANTI_GR3_DECK_ID + tx Text0449 ; deck name + tx Text04f6 ; opponent name + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + + db UNFORGIVING_ANTI_GR4_DECK_ID + tx Text0470 ; deck name + tx Text04f6 ; opponent name + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + + db SAMS_PRACTICE_DECK_ID + tx Text04f1 ; deck name + tx Text04f6 ; opponent name + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + + db AARON_PRACTICE_DECK1_ID + tx Text04d6 ; deck name + tx Text04d5 ; opponent name + db $05 ; ? + db $02 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $12 ; ? + db $00 ; ? + + db AARONS_STEP1_DECK_ID + tx Text04af ; deck name + tx Text04f6 ; opponent name + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + + db AARON_PRACTICE_DECK2_ID + tx Text0433 ; deck name + tx Text0432 ; opponent name + db $06 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $12 ; ? + db $00 ; ? + + db AARONS_STEP2_DECK_ID + tx Text04b0 ; deck name + tx Text04f6 ; opponent name + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + + db AARON_PRACTICE_DECK3_ID + tx Text0434 ; deck name + tx Text0432 ; opponent name + db $06 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $12 ; ? + db $00 ; ? + + db AARONS_STEP3_DECK_ID + tx Text04b1 ; deck name + tx Text04f6 ; opponent name + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + db $00 ; ? + + db BRICK_WALK_DECK_ID + tx Text0435 ; deck name + tx Text0432 ; opponent name + db $06 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $12 ; ? + db $00 ; ? + + db BENCH_TRAP_DECK_ID + tx Text043e ; deck name + tx Text0432 ; opponent name + db $06 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $12 ; ? + db $00 ; ? + + db SKY_SPARK_DECK_ID + tx Text044b ; deck name + tx Text0432 ; opponent name + db $06 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $12 ; ? + db $00 ; ? + + db ELECTRIC_SELFDESTRUCT_DECK_ID + tx Text049d ; deck name + tx Text04a3 ; opponent name + db $0a ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $03 ; ? + db $09 ; ? + db $05 ; ? + + db OVERFLOW_DECK_ID + tx Text04c1 ; deck name + tx Text04a3 ; opponent name + db $0a ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $03 ; ? + db $09 ; ? + db $05 ; ? + + db TRIPLE_ZAPDOS_DECK_ID + tx Text0481 ; deck name + tx Text04a0 ; opponent name + db $0c ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $01 ; ? + db $00 ; ? + + db I_LOVE_PIKACHU_DECK_ID + tx Text04ad ; deck name + tx Text04a0 ; opponent name + db $0c ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $01 ; ? + db $05 ; ? + + db TEN_THOUSAND_VOLTS_DECK_ID + tx Text04c4 ; deck name + tx Text04e4 ; opponent name + db $0b ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $01 ; ? + db $00 ; ? + + db HAND_OVER_GR_DECK_ID + tx Text0426 ; deck name + tx Text04aa ; opponent name + db $0d ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $01 ; ? + db $00 ; ? + + db PSYCHIC_ELITE_DECK_ID + tx Text0471 ; deck name + tx Text04d4 ; opponent name + db $0e ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $03 ; ? + db $0a ; ? + db $06 ; ? + + db PSYCHOKINESIS_DECK_ID + tx Text0453 ; deck name + tx Text04d4 ; opponent name + db $0e ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $03 ; ? + db $0a ; ? + db $06 ; ? + + db PHANTOM_DECK_ID + tx Text0496 ; deck name + tx Text04ec ; opponent name + db $0f ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $02 ; ? + db $00 ; ? + + db PUPPET_MASTER_DECK_ID + tx Text046e ; deck name + tx Text04bd ; opponent name + db $11 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $02 ; ? + db $00 ; ? + + db EVEN3_YEARS_ON_A_ROCK_DECK_ID + tx Text045f ; deck name + tx Text0491 ; opponent name + db $10 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $02 ; ? + db $00 ; ? + + db ROLLING_STONE_DECK_ID + tx Text0438 ; deck name + tx Text0493 ; opponent name + db $12 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $03 ; ? + db $0b ; ? + db $07 ; ? + + db GREAT_EARTHQUAKE_DECK_ID + tx Text04f3 ; deck name + tx Text04de ; opponent name + db $13 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $03 ; ? + db $00 ; ? + + db AWESOME_FOSSIL_DECK_ID + tx Text044f ; deck name + tx Text04b8 ; opponent name + db $14 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $03 ; ? + db $00 ; ? + + db RAGING_BILLOW_OF_FISTS_DECK_ID + tx Text0498 ; deck name + tx Text049c ; opponent name + db $15 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $03 ; ? + db $00 ; ? + + db YOU_CAN_DO_IT_MACHOP_DECK_ID + tx Text04b2 ; deck name + tx Text04e0 ; opponent name + db $16 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $03 ; ? + db $0c ; ? + db $0c ; ? + + db NEW_MACHOKE_DECK_ID + tx Text0440 ; deck name + tx Text04ce ; opponent name + db $17 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $04 ; ? + db $00 ; ? + + db SKILLED_WARRIOR_DECK_ID + tx Text04b7 ; deck name + tx Text04ce ; opponent name + db $17 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $04 ; ? + db $00 ; ? + + db I_LOVE_TO_FIGHT_DECK_ID + tx Text046a ; deck name + tx Text04a5 ; opponent name + db $18 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $04 ; ? + db $00 ; ? + + db MAX_ENERGY_DECK_ID + tx Text04bb ; deck name + tx Text04b5 ; opponent name + db $19 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $04 ; ? + db $00 ; ? + + db REMAINING_GREEN_DECK_ID + tx Text042c ; deck name + tx Text0489 ; opponent name + db $1a ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $03 ; ? + db $0d ; ? + db $02 ; ? + + db POISON_CURSE_DECK_ID + tx Text0461 ; deck name + tx Text0475 ; opponent name + db $1b ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $05 ; ? + db $00 ; ? + + db GLITTERING_SCALES_DECK_ID + tx Text045d ; deck name + tx Text0475 ; opponent name + db $1b ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $05 ; ? + db $02 ; ? + + db STEADY_INCREASE_DECK_ID + tx Text043c ; deck name + tx Text04b9 ; opponent name + db $1c ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $05 ; ? + db $00 ; ? + + db DARK_SCIENCE_DECK_ID + tx Text04b3 ; deck name + tx Text04d7 ; opponent name + db $1d ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $05 ; ? + db $00 ; ? + + db NATURAL_SCIENCE_DECK_ID + tx Text04a6 ; deck name + tx Text048a ; opponent name + db $1e ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $03 ; ? + db $0e ; ? + db $08 ; ? + + db POISONOUS_SWAMP_DECK_ID + tx Text044a ; deck name + tx Text04df ; opponent name + db $20 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $06 ; ? + db $00 ; ? + + db GATHERING_NIDORAN_DECK_ID + tx Text045b ; deck name + tx Text04a1 ; opponent name + db $1f ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $06 ; ? + db $00 ; ? + + db RAIN_DANCE_CONFUSION_DECK_ID + tx Text042f ; deck name + tx Text04cc ; opponent name + db $21 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $06 ; ? + db $00 ; ? + + db CONSERVING_WATER_DECK_ID + tx Text0431 ; deck name + tx Text047d ; opponent name + db $22 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $03 ; ? + db $0f ; ? + db $04 ; ? + + db ENERGY_REMOVAL_DECK_ID + tx Text0460 ; deck name + tx Text049a ; opponent name + db $23 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $07 ; ? + db $00 ; ? + + db SPLASHING_ABOUT_DECK_ID + tx Text0480 ; deck name + tx Text049a ; opponent name + db $23 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $07 ; ? + db $04 ; ? + + db BEACH_DECK_ID + tx Text0467 ; deck name + tx Text04d3 ; opponent name + db $24 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $07 ; ? + db $00 ; ? + + db GO_ARCANINE_DECK_ID + tx Text045e ; deck name + tx Text04dc ; opponent name + db $25 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $07 ; ? + db $00 ; ? + + db FLAME_FESTIVAL_DECK_ID + tx Text046f ; deck name + tx Text0474 ; opponent name + db $26 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $03 ; ? + db $10 ; ? + db $03 ; ? + + db IMMORTAL_FLAME_DECK_ID + tx Text0465 ; deck name + tx Text04a2 ; opponent name + db $27 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $08 ; ? + db $00 ; ? + + db ELECTRIC_CURRENT_SHOCK_DECK_ID + tx Text0463 ; deck name + tx Text04cd ; opponent name + db $29 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $08 ; ? + db $00 ; ? + + db GREAT_ROCKET4_DECK_ID + tx Text0459 ; deck name + tx Text04f5 ; opponent name + db $28 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $08 ; ? + db $00 ; ? + + db GREAT_ROCKET1_DECK_ID + tx Text0490 ; deck name + tx Text042a ; opponent name + db $3e ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $1f ; ? + db $16 ; ? + db $01 ; ? + + db GREAT_ROCKET2_DECK_ID + tx Text048d ; deck name + tx Text0427 ; opponent name + db $3b ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $1f ; ? + db $16 ; ? + db $01 ; ? + + db GREAT_ROCKET3_DECK_ID + tx Text048e ; deck name + tx Text0428 ; opponent name + db $3c ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $1f ; ? + db $16 ; ? + db $01 ; ? + + db GRAND_FIRE_DECK_ID + tx Text048f ; deck name + tx Text0429 ; opponent name + db $3d ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $1f ; ? + db $16 ; ? + db $01 ; ? + + db LEGENDARY_FOSSIL_DECK_ID + tx Text048b ; deck name + tx Text04be ; opponent name + db $2a ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $04 ; ? + db $11 ; ? + db $03 ; ? + + db WATER_LEGEND_DECK_ID + tx Text0458 ; deck name + tx Text049e ; opponent name + db $2b ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $04 ; ? + db $11 ; ? + db $05 ; ? + + db GREAT_DRAGON_DECK_ID + tx Text047c ; deck name + tx Text0482 ; opponent name + db $2c ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $04 ; ? + db $11 ; ? + db $04 ; ? + + db BUG_COLLECTING_DECK_ID + tx Text0450 ; deck name + tx Text04ed ; opponent name + db $2d ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $04 ; ? + db $11 ; ? + db $00 ; ? + + db DEMONIC_FOREST_DECK_ID + tx Text0447 ; deck name + tx Text04d8 ; opponent name + db $3f ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $1f ; ? + db $17 ; ? + db $01 ; ? + + db STICKY_POISON_GAS_DECK_ID + tx Text042e ; deck name + tx Text04e3 ; opponent name + db $40 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $1f ; ? + db $17 ; ? + db $01 ; ? + + db MAD_PETALS_DECK_ID + tx Text045c ; deck name + tx Text04da ; opponent name + db $41 ; ? + db $04 ; ? + db $00 ; ? + db $01 ; ? + db $1f ; ? + db $17 ; ? + db $01 ; ? + + db DANGEROUS_BENCH_DECK_ID + tx Text0445 ; deck name + tx Text04dd ; opponent name + db $42 ; ? + db $06 ; ? + db $01 ; ? + db $00 ; ? + db $20 ; ? + db $1d ; ? + db $08 ; ? + + db CHAIN_LIGHTNING_BY_PIKACHU_DECK_ID + tx Text0441 ; deck name + tx Text04a4 ; opponent name + db $46 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $26 ; ? + db $00 ; ? + + db THIS_IS_THE_POWER_OF_ELECTRICITY_DECK_ID + tx Text04c5 ; deck name + tx Text04f2 ; opponent name + db $43 ; ? + db $04 ; ? + db $00 ; ? + db $07 ; ? + db $1f ; ? + db $18 ; ? + db $01 ; ? + + db QUICK_ATTACK_DECK_ID + tx Text0456 ; deck name + tx Text0479 ; opponent name + db $44 ; ? + db $04 ; ? + db $00 ; ? + db $02 ; ? + db $1f ; ? + db $18 ; ? + db $01 ; ? + + db COMPLETE_COMBUSTION_DECK_ID + tx Text0457 ; deck name + tx Text0487 ; opponent name + db $45 ; ? + db $06 ; ? + db $02 ; ? + db $00 ; ? + db $20 ; ? + db $1e ; ? + db $09 ; ? + + db FIREBALL_DECK_ID + tx Text043f ; deck name + tx Text049b ; opponent name + db $47 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $1f ; ? + db $19 ; ? + db $01 ; ? + + db EEVEE_SHOWDOWN_DECK_ID + tx Text04c6 ; deck name + tx Text04e2 ; opponent name + db $48 ; ? + db $04 ; ? + db $00 ; ? + db $03 ; ? + db $1f ; ? + db $19 ; ? + db $01 ; ? + + db GAZE_UPON_THE_POWER_OF_FIRE_DECK_ID + tx Text0477 ; deck name + tx Text0499 ; opponent name + db $49 ; ? + db $04 ; ? + db $00 ; ? + db $08 ; ? + db $1f ; ? + db $19 ; ? + db $01 ; ? + + db WHIRLPOOL_SHOWER_DECK_ID + tx Text0468 ; deck name + tx Text04bc ; opponent name + db $4a ; ? + db $06 ; ? + db $03 ; ? + db $00 ; ? + db $20 ; ? + db $1f ; ? + db $0a ; ? + + db PARALYZED_PARALYZED_DECK_ID + tx Text0439 ; deck name + tx Text04d9 ; opponent name + db $4b ; ? + db $04 ; ? + db $00 ; ? + db $04 ; ? + db $1f ; ? + db $1a ; ? + db $01 ; ? + + db BENCH_CALL_DECK_ID + tx Text04d1 ; deck name + tx Text049f ; opponent name + db $4c ; ? + db $04 ; ? + db $00 ; ? + db $09 ; ? + db $1f ; ? + db $1a ; ? + db $01 ; ? + + db WATER_STREAM_DECK_ID + tx Text04c7 ; deck name + tx Text0473 ; opponent name + db $4d ; ? + db $04 ; ? + db $04 ; ? + db $00 ; ? + db $1f ; ? + db $1a ; ? + db $01 ; ? + + db ROCK_BLAST_DECK_ID + tx Text047b ; deck name + tx Text0483 ; opponent name + db $4e ; ? + db $06 ; ? + db $05 ; ? + db $00 ; ? + db $20 ; ? + db $20 ; ? + db $0b ; ? + + db FULL_STRENGTH_DECK_ID + tx Text04f4 ; deck name + tx Text0494 ; opponent name + db $4f ; ? + db $04 ; ? + db $00 ; ? + db $0c ; ? + db $1f ; ? + db $1b ; ? + db $01 ; ? + + db RUNNING_WILD_DECK_ID + tx Text0451 ; deck name + tx Text048c ; opponent name + db $50 ; ? + db $04 ; ? + db $00 ; ? + db $05 ; ? + db $1f ; ? + db $1b ; ? + db $01 ; ? + + db DIRECT_HIT_DECK_ID + tx Text0430 ; deck name + tx Text0485 ; opponent name + db $51 ; ? + db $06 ; ? + db $06 ; ? + db $00 ; ? + db $20 ; ? + db $21 ; ? + db $0c ; ? + + db SUPERDESTRUCTIVE_POWER_DECK_ID + tx Text0454 ; deck name + tx Text04db ; opponent name + db $52 ; ? + db $04 ; ? + db $00 ; ? + db $06 ; ? + db $1f ; ? + db $1c ; ? + db $01 ; ? + + db BAD_DREAM_DECK_ID + tx Text0452 ; deck name + tx Text0492 ; opponent name + db $53 ; ? + db $04 ; ? + db $07 ; ? + db $00 ; ? + db $1f ; ? + db $1c ; ? + db $01 ; ? + + db POKEMON_POWER_DECK_ID + tx Text04ba ; deck name + tx Text04e5 ; opponent name + db $54 ; ? + db $04 ; ? + db $00 ; ? + db $0a ; ? + db $1f ; ? + db $1c ; ? + db $01 ; ? + + db SPIRITED_AWAY_DECK_ID + tx Text04cb ; deck name + tx Text04ee ; opponent name + db $55 ; ? + db $04 ; ? + db $00 ; ? + db $0d ; ? + db $1f ; ? + db $1c ; ? + db $01 ; ? + + db SNORLAX_GUARD_DECK_ID + tx Text043d ; deck name + tx Text04d2 ; opponent name + db $56 ; ? + db $06 ; ? + db $08 ; ? + db $00 ; ? + db $20 ; ? + db $22 ; ? + db $0d ; ? + + db EYE_OF_THE_STORM_DECK_ID + tx Text0484 ; deck name + tx Text04b6 ; opponent name + db $57 ; ? + db $06 ; ? + db $00 ; ? + db $0e ; ? + db $20 ; ? + db $23 ; ? + db $0e ; ? + + db SUDDEN_GROWTH_DECK_ID + tx Text044c ; deck name + tx Text0478 ; opponent name + db $58 ; ? + db $06 ; ? + db $00 ; ? + db $0f ; ? + db $20 ; ? + db $23 ; ? + db $0e ; ? + + db VERY_RARE_CARD_DECK_ID + tx Text0443 ; deck name + tx Text0497 ; opponent name + db $59 ; ? + db $06 ; ? + db $00 ; ? + db $10 ; ? + db $20 ; ? + db $23 ; ? + db $0e ; ? + + db BAD_GUYS_DECK_ID + tx Text045a ; deck name + tx Text042d ; opponent name + db $07 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $23 ; ? + db $14 ; ? + db $13 ; ? + + db POISON_MIST_DECK_ID + tx Text0472 ; deck name + tx Text0486 ; opponent name + db $5a ; ? + db $06 ; ? + db $00 ; ? + db $0b ; ? + db $20 ; ? + db $24 ; ? + db $11 ; ? + + db ULTRA_REMOVAL_DECK_ID + tx Text04ca ; deck name + tx Text04f0 ; opponent name + db $5b ; ? + db $06 ; ? + db $09 ; ? + db $00 ; ? + db $20 ; ? + db $24 ; ? + db $12 ; ? + + db PSYCHIC_BATTLE_DECK_ID + tx Text047e ; deck name + tx Text04f0 ; opponent name + db $5b ; ? + db $06 ; ? + db $0a ; ? + db $00 ; ? + db $20 ; ? + db $24 ; ? + db $13 ; ? + + db STOP_LIFE_DECK_ID + tx Text0495 ; deck name + tx Text04f0 ; opponent name + db $5b ; ? + db $06 ; ? + db $07 ; ? + db $00 ; ? + db $20 ; ? + db $24 ; ? + db $15 ; ? + + db SCORCHER_DECK_ID + tx Text0437 ; deck name + tx Text04c2 ; opponent name + db $5c ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $21 ; ? + db $25 ; ? + db $0f ; ? + + db TSUNAMI_STARTER_DECK_ID + tx Text046d ; deck name + tx Text04c2 ; opponent name + db $5c ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $21 ; ? + db $25 ; ? + db $0f ; ? + + db SMASH_TO_MINCEMEAT_DECK_ID + tx Text044e ; deck name + tx Text04c2 ; opponent name + db $5c ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $21 ; ? + db $25 ; ? + db $0f ; ? + + db TEST_YOUR_LUCK_DECK_ID + tx Text0455 ; deck name + tx Text04c2 ; opponent name + db $5c ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $21 ; ? + db $25 ; ? + db $0f ; ? + + db PROTOHISTORIC_DECK_ID + tx Text043a ; deck name + tx Text04c8 ; opponent name + db $36 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $02 ; ? + db $27 ; ? + db $13 ; ? + + db TEXTURE_TUNER7_DECK_ID + tx Text0446 ; deck name + tx Text04b4 ; opponent name + db $37 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $03 ; ? + db $27 ; ? + db $13 ; ? + + db COLORLESS_ENERGY_DECK_ID + tx Text04a8 ; deck name + tx Text04bf ; opponent name + db $38 ; ? + db $04 ; ? + db $00 ; ? + db $00 ; ? + db $1f ; ? + db $27 ; ? + db $13 ; ? + + db POWERFUL_POKEMON_DECK_ID + tx Text046b ; deck name + tx Text04ef ; opponent name + db $39 ; ? + db $05 ; ? + db $00 ; ? + db $00 ; ? + db $1f ; ? + db $27 ; ? + db $13 ; ? + + db WEIRD_DECK_ID + tx Text0444 ; deck name + tx Text0488 ; opponent name + db $3a ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $20 ; ? + db $27 ; ? + db $13 ; ? + + db STRANGE_DECK_ID + tx Text0464 ; deck name + tx Text047a ; opponent name + db $08 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $10 ; ? + db $13 ; ? + db $0b ; ? + + db RONALDS_UNCOOL_DECK_ID + tx Text0442 ; deck name + tx Text047a ; opponent name + db $09 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $24 ; ? + db $13 ; ? + db $13 ; ? + + db RONALDS_GRX_DECK_ID + tx Text04e8 ; deck name + tx Text04e6 ; opponent name + db $04 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $0f ; ? + db $15 ; ? + db $16 ; ? + + db RONALDS_POWER_DECK_ID + tx Text04e7 ; deck name + tx Text042b ; opponent name + db $5d ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $0f ; ? + db $16 ; ? + db $16 ; ? + + db RONALDS_PSYCHIC_DECK_ID + tx Text04eb ; deck name + tx Text04e6 ; opponent name + db $04 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $0f ; ? + db $15 ; ? + db $16 ; ? + + db RONALDS_ULTRA_DECK_ID + tx Text04ea ; deck name + tx Text04e6 ; opponent name + db $04 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $0f ; ? + db $15 ; ? + db $16 ; ? + + db EVERYBODYS_FRIEND_DECK_ID + tx Text04e9 ; deck name + tx Text04e6 ; opponent name + db $04 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $0f ; ? + db $15 ; ? + db $16 ; ? + + db IMMORTAL_POKEMON_DECK_ID + tx Text0469 ; deck name + tx Text047f ; opponent name + db $2e ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $20 ; ? + db $28 ; ? + db $17 ; ? + + db TORRENTIAL_FLOOD_DECK_ID + tx Text0462 ; deck name + tx Text04cf ; opponent name + db $2f ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $20 ; ? + db $28 ; ? + db $17 ; ? + + db TRAINER_IMPRISON_DECK_ID + tx Text043b ; deck name + tx Text04e1 ; opponent name + db $30 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $20 ; ? + db $28 ; ? + db $17 ; ? + + db BLAZING_FLAME_DECK_ID + tx Text04ae ; deck name + tx Text04ab ; opponent name + db $31 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $20 ; ? + db $28 ; ? + db $17 ; ? + + db DAMAGE_CHAOS_DECK_ID + tx Text046c ; deck name + tx Text04c3 ; opponent name + db $32 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $20 ; ? + db $28 ; ? + db $17 ; ? + + db BIG_THUNDER_DECK_ID + tx Text04a7 ; deck name + tx Text0476 ; opponent name + db $33 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $20 ; ? + db $28 ; ? + db $17 ; ? + + db POWER_OF_DARKNESS_DECK_ID + tx Text04c0 ; deck name + tx Text04a9 ; opponent name + db $34 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $20 ; ? + db $28 ; ? + db $17 ; ? + + db POISON_STORM_DECK_ID + tx Text0436 ; deck name + tx Text04d0 ; opponent name + db $35 ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $20 ; ? + db $28 ; ? + db $17 ; ? + + db DECK_7269_ID + tx Text04c9 ; deck name + tx Text04ac ; opponent name + db $5e ; ? + db $06 ; ? + db $00 ; ? + db $00 ; ? + db $20 ; ? + db $28 ; ? + db $17 ; ? + + db $ff ; end diff --git a/src/engine/bank0f.asm b/src/engine/bank0f.asm new file mode 100644 index 0000000..5254cf9 --- /dev/null +++ b/src/engine/bank0f.asm @@ -0,0 +1,204 @@ +SECTION "Bank f@4000", ROMX[$4000], BANK[$f] + +Prologue:: + xor a ; MUSIC_STOP + ld [wCurMusic], a + ld a, MUSIC_OVERWORLD + farcall PlayAfterCurrentSong + + xor a + farcall ShowProloguePortraitAndText + + farcall Func_102ef + xor a + farcall Func_111f6 + + ; load map and fade in + ld a, MUSIC_HERECOMESGR + farcall PlayAfterCurrentSong + ld bc, OVERWORLD_MAP + farcall Func_12c206 + ld bc, TILEMAP_001 + lb de, 0, 0 + farcall Func_12c0ce + ld a, $00 + call Func_338f + call WaitPalFading_Home + call EnableLCD + + ; do GR Ship movement + ld a, OW_GRSHIP + lb de, $a0, $30 + ld b, WEST + farcall LoadOWObject + lb de, $78, $30 + ld b, WEST + call .MoveGRShip + call .DoGRShipBeamAnimation + lb de, $78, $10 + ld b, WEST + call .MoveGRShip + call .DoGRShipBeamAnimation + lb de, $58, $18 + ld b, WEST + call .MoveGRShip + call .DoGRShipBeamAnimation + + ld a, $01 + farcall ShowProloguePortraitAndText_WithFade + + ; load player object in map + ld a, [wPlayerOWObject] + lb de, $44, $44 + ld b, SOUTH + farcall LoadOWObject + lb de, $40, $30 + ld b, WEST + call .MoveGRShip + + ; show beam animation on player + ld a, EVENT_PLAYER_GENDER + farcall GetEventValue + jr nz, .asm_3c08d + ld bc, FRAMESET_0AE + jr .asm_3c090 +.asm_3c08d + ld bc, FRAMESET_0B4 +.asm_3c090 + ld a, [wPlayerOWObject] + farcall SetOWObjectFrameset + call .DoGRShipBeamAnimation + + ; more GR Ship movement + lb de, $20, $40 + ld b, WEST + call .MoveGRShip + call .DoGRShipBeamAnimation + lb de, $30, $58 + ld b, EAST + call .MoveGRShip + call .DoGRShipBeamAnimation + lb de, $68, $50 + ld b, EAST + call .MoveGRShip + call .DoGRShipBeamAnimation + lb de, $50, $5c + ld b, WEST + call .MoveGRShip + lb de, $50, $78 + ld b, EAST + call .MoveGRShip + + ld a, $02 + farcall ShowProloguePortraitAndText_WithFade + + ld a, EVENT_PLAYER_GENDER + farcall GetEventValue + jr nz, .asm_3c0de + ld bc, FRAMESET_0AF + jr .asm_3c0e1 +.asm_3c0de + ld bc, FRAMESET_0B5 +.asm_3c0e1 + ld a, [wPlayerOWObject] + farcall SetOWObjectFrameset + + ld a, OW_GRSHIP + farcall ClearOWObject + + ld bc, TILEMAP_002 + lb de, 0, 0 + farcall Func_12c0ce + + lb de, 1, 1 + lb bc, 11, 1 + farcall FillBoxInBGMapWithZero + + ld a, OWMAP_POKEMON_DOME + ld [wd587], a + farcall PrintLocationTitle + + ld a, [wPlayerOWObject] + call WaitForOWObjectAnimation + ld a, [wPlayerOWObject] + farcall ClearOWObject + lb de, $44, $44 + ld b, SOUTH + farcall LoadOWObject + ld a, 30 + call WaitAFrames + ld a, SFX_57 + call PlaySFX + call .MovePlayer + + ld a, OWMAP_MASON_LABORATORY + ld [wd587], a + farcall PrintLocationTitle + + ld a, 60 + call WaitAFrames + xor a + call PlaySFX + ld a, $01 + call Func_33a3 + ld a, SFX_0C + call PlaySFX + ret + +; b = direction +; de = target position +.MoveGRShip: + push bc + ld a, OW_GRSHIP + farcall SetOWObjectTargetPosition + pop bc +.loop + push bc + ld a, 3 + call WaitAFrames + farcall MoveOWObjectToTargetPosition + pop bc + ; override direction + ld a, OW_GRSHIP + farcall SetOWObjectDirection + jr c, .loop + ret + +.DoGRShipBeamAnimation: + ld a, SFX_8B + call PlaySFX + ld a, OW_GRSHIP + farcall GetOWObjectPosition + ld a, e + add $10 + ld e, a + ld a, d + sub $04 + ld d, a + ld a, OW_GRSHIPBEAM + ld b, SOUTH + farcall LoadOWObject + call WaitForOWObjectAnimation + ld a, OW_GRSHIPBEAM + farcall ClearOWObject + ret + +.MovePlayer: + ld a, [wPlayerOWObject] + ld b, $01 + farcall Func_11471 + lb de, $24, $68 + farcall SetOWObjectTargetPosition +.loop_wait_1 + call DoFrame + farcall MoveOWObjectToTargetPosition + jr c, .loop_wait_1 + ld a, [wPlayerOWObject] + lb de, $c, $68 + farcall SetOWObjectTargetPosition +.loop_wait_2 + call DoFrame + farcall MoveOWObjectToTargetPosition + jr c, .loop_wait_2 + ret +; 0x3c1b9 diff --git a/src/engine/bank10.asm b/src/engine/bank10.asm new file mode 100644 index 0000000..98fbcbb --- /dev/null +++ b/src/engine/bank10.asm @@ -0,0 +1,243 @@ +SECTION "Bank 10@4462", ROMX[$4462], BANK[$10] + +Data_40462: + db OVERWORLD_MAP + dba Data_40467 + db $09 + +Data_40467: + dbw $01, Func_40474 + dbw $02, Func_4048a + dbw $04, Func_4053b + dbw $0f, Func_4053e + db $ff ; end + +Func_40474: + ld a, [wd584] + cp $26 + jr z, .asm_40482 + cp $1f + jr z, .asm_40482 + scf + ccf + ret + +.asm_40482 + ld a, $1e + ld [wd58e], a + scf + ccf + ret + +Func_4048a: + xor a + farcall Func_111f6 + lb de, 1, 1 + lb bc, 11, 1 + farcall FillBoxInBGMapWithZero + ld a, [wd587] + ld [wd588], a + + ld a, OW_UNK_C8 + lb de, $78, $00 + ld b, NORTH + farcall LoadOWObject + + ld a, [wd587] + call PrintLocationTitle + + ld a, [wd584] + cp $1f + jr z, .asm_404f5 + cp $26 + jr z, .asm_404f5 + + ld a, [wPlayerOWObject] + lb de, 0, 0 + ld b, SOUTH + farcall LoadOWObject + + ld a, [wd587] + call Func_40591 + + ld a, OW_UNK_CA + lb de, 0, 0 + ld b, NORTH + farcall LoadOWObject + + ld a, [wd587] + call Func_405a6 + + ld a, $0a + ld [wd582], a + ld a, $10 + ld [wd592], a + ld hl, $456c + ld a, l + ld [wd593 + 0], a + ld a, h + ld [wd593 + 1], a + scf + ret + +.asm_404f5 + ld bc, TILEMAP_001 + lb de, 0, 0 + farcall Func_12c0ce + + ld a, $0a + ld [wd582], a + ld a, $10 + ld [wd592], a + ld hl, $4ce3 + ld a, l + ld [wd593 + 0], a + ld a, h + ld [wd593 + 1], a + + ld a, [wd584] + cp $26 + jr z, .asm_40528 + ld a, OW_GRSHIP + lb de, $50, $78 + ld b, EAST + farcall LoadOWObject + scf + ret +.asm_40528 + ld a, OW_GRSHIP + lb de, $90, $60 + ld b, WEST + farcall LoadOWObject + ld a, $00 + call Func_338f + scf + ccf + ret + +Func_4053b: + scf + ccf + ret + +Func_4053e: + ld a, [wd585] + cp $1f + jr z, .asm_4054b + cp $26 + jr z, .asm_40569 + scf + ret + +.asm_4054b + ld a, 10 + ld c, 7 + farcall InitMusicFadeOut + farcall MusicFadeOut + xor a + call PlaySong + ld a, 7 + call SetVolume + ld a, SFX_8A + call PlaySFX + farcall WaitForSFXToFinish +.asm_40569 + scf + ccf + ret +; 0x4056c + +SECTION "Bank 10@4591", ROMX[$4591], BANK[$10] + +Func_40591: + sla a ; *2 + ld hl, OWLocationPositions + add l + ld l, a + jr nc, .no_cap + inc h +.no_cap + ld a, [hli] + ld e, [hl] + ld d, a + ld a, [wPlayerOWObject] + farcall SetOWObjectPosition + ret + +Func_405a6: + sla a ; *2 + ld hl, OWLocationPositions + add l + ld l, a + jr nc, .no_cap + inc h +.no_cap + ld a, [hli] + ld d, a + ld a, [hl] + sub 12 + ld e, a + ld a, OW_UNK_CA + farcall SetOWObjectPosition + ret +; 0x405bd + +SECTION "Bank 10@462b", ROMX[$462b], BANK[$10] + +PrintLocationTitle: + lb de, 1, 1 + ldtx hl, Text0af8 + call Func_35af + + ld a, [wd587] + sla a + sla a ; *4 + ld hl, .LocationTitleTextItems + add l + ld l, a + jr nc, .ok + inc h +.ok + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a + call Func_35af + ret + +.LocationTitleTextItems: + textitem 1, 3, Text09b6 ; OWMAP_MASON_LABORATORY + textitem 1, 2, Text09b7 ; OWMAP_ISHIHARAS_HOUSE + textitem 1, 3, Text09b8 ; OWMAP_LIGHTNING_CLUB + textitem 1, 3, Text09b9 ; OWMAP_PSYCHIC_CLUB + textitem 1, 3, Text09ba ; OWMAP_ROCK_CLUB + textitem 1, 3, Text09bb ; OWMAP_FIGHTING_CLUB + textitem 1, 3, Text09bc ; OWMAP_GRASS_CLUB + textitem 1, 2, Text09bd ; OWMAP_SCIENCE_CLUB + textitem 1, 3, Text09be ; OWMAP_WATER_CLUB + textitem 1, 3, Text09bf ; OWMAP_FIRE_CLUB + textitem 1, 4, Text09c0 ; OWMAP_AIRPORT + textitem 1, 2, Text09c1 ; OWMAP_CHALLENGE_HALL + textitem 1, 3, Text09c2 ; OWMAP_POKEMON_DOME +; 0x40682 + +SECTION "Bank 10@476f", ROMX[$476f], BANK[$10] + +OWLocationPositions: + db $0c, $68 ; OWMAP_MASON_LABORATORY + db $04, $18 ; OWMAP_ISHIHARAS_HOUSE + db $24, $50 ; OWMAP_LIGHTNING_CLUB + db $5c, $2c ; OWMAP_PSYCHIC_CLUB + db $14, $38 ; OWMAP_ROCK_CLUB + db $34, $68 ; OWMAP_FIGHTING_CLUB + db $7c, $40 ; OWMAP_GRASS_CLUB + db $7c, $20 ; OWMAP_SCIENCE_CLUB + db $6c, $64 ; OWMAP_WATER_CLUB + db $6c, $10 ; OWMAP_FIRE_CLUB + db $50, $78 ; OWMAP_AIRPORT + db $3c, $20 ; OWMAP_CHALLENGE_HALL + db $44, $44 ; OWMAP_POKEMON_DOME +; 0x40789 diff --git a/src/engine/bank11.asm b/src/engine/bank11.asm index 8206579..b418b7e 100644 --- a/src/engine/bank11.asm +++ b/src/engine/bank11.asm @@ -273,7 +273,7 @@ _ChooseTitleScreenCards: ld a, [hld] or e jr nz, .got_deck - ld de, $60 + ld de, DECK_COMPRESSED_STRUCT_SIZE add hl, de dec c jr nz, .loop_decks @@ -468,3 +468,75 @@ _ChooseTitleScreenCards: dw MEOWTH_LV13 dw HERE_COMES_TEAM_ROCKET dw $0000 + +SECTION "Bank 11@4928", ROMX[$4928], BANK[$11] + +; a = MUSIC_* +PlayAfterCurrentSong: + ld b, a + ld a, [wCurMusic] + cp b + jr nz, .play_song + push bc + call AssertSongFinished + pop bc + or a + jr z, .play_song + ret + +.play_song + ld a, b + ld [wCurMusic], a + ld [wdd04], a + call PlaySong + ret +; 0x44943 + +SECTION "Bank 11@4954", ROMX[$4954], BANK[$11] + +InitMusicFadeOut: + ld [wMusicFadeOutCounter], a + ld [wMusicFadeOutDuration], a + ld a, c + ld [wMusicFadeOutVolume], a + call SetVolume + ret + +TickMusicFadeOut: + ld a, [wMusicFadeOutCounter] + dec a + ld [wMusicFadeOutCounter], a + jr nz, .done + ld a, [wMusicFadeOutDuration] + ld [wMusicFadeOutCounter], a + ld a, [wMusicFadeOutVolume] + or a + jr z, .done + dec a + ld [wMusicFadeOutVolume], a + call SetVolume +.done + ret + +MusicFadeOut: +.loop + call DoFrame + call TickMusicFadeOut + ld a, [wMusicFadeOutVolume] + or a + jr nz, .loop + ret +; 0x4498c + +SECTION "Bank 11@499e", ROMX[$499e], BANK[$11] + +WaitForSFXToFinish:: +.loop_wait + call DoFrame + call AssertSFXFinished + or a + jr nz, .loop_wait + ret + +SECTION "Credits", ROMX[$5c6e], BANK[$11] +INCLUDE "engine/credits.asm" diff --git a/src/engine/bank4b.asm b/src/engine/bank4b.asm index b9453f1..0c112b0 100644 --- a/src/engine/bank4b.asm +++ b/src/engine/bank4b.asm @@ -77,16 +77,18 @@ GetSpriteAnimationGfxPointer: pop af ret -Func_12c058: +; bc = OW_ANIM_* constant +; outputs pointer as b:hl +GetOWAnimationGfxPointer: push af sla c rl b sla c rl b - ld hl, GfxUnknown1 + ld hl, OWAnimations add hl, bc ld a, [hli] - add $4b + add BANK(OWAnimations) ld b, a ld a, [hli] ld h, [hl] @@ -129,7 +131,9 @@ GetFramesetPointer: pop af ret -Func_12c09a: +; bc = OWFRAMEGROUP_* +; a = direction +GetOWObjectFrameset: push af push hl sla c @@ -138,7 +142,7 @@ Func_12c09a: rl b sla c rl b ; *8 - ld hl, Data_12f355 + ld hl, OWObjectFramesets add hl, bc add a ; *2 ld c, a @@ -151,14 +155,84 @@ Func_12c09a: pop af ret -SECTION "Bank 4B@410b", ROMX[$410b], BANK[$4b] +Func_12c0b7: + push af + push bc + push de + push hl + xor a + ld c, $00 + call Func_12c10b + ld a, b + ld [wd7dc], a + ld a, c + ld [wd7dd], a + pop hl + pop de + pop bc + pop af + ret + +; bc = TILEMAP_* constant +; de = OW coordinates +Func_12c0ce: + push af + push bc + push de + push hl + push bc + push de + call GetTilemapGfxPointer + sla d ; *2 + sla e ; *2 + call Func_12c0fc + ld hl, wd852 + ld a, [hl] + inc [hl] + ld c, a + sla c + sla c ; *4 + ld b, $00 + ld hl, wd853 + add hl, bc + pop de + pop bc + ld [hl], c ; tilemap + inc hl ; + ld [hl], b ; + inc hl + ld [hl], d ; coordinates + inc hl ; + ld [hl], e ; + pop hl + pop de + pop bc + pop af + ret + +Func_12c0fc: + push af + push bc + push de + push hl + xor a + ld c, $00 + call Func_12c10b + pop hl + pop de + pop bc + pop af + ret ; input: -; a = attribute to apply to tiles -; c = $00 to select from Tiles0 -; $80 to select from Tiles1 -; b:hl = tilemap pointer -; de = coordinates +; a = attribute to apply to tiles +; c = $00 to select from Tiles0 +; $80 to select from Tiles1 +; b:hl = tilemap pointer +; de = coordinates +; output: +; b = tilemap width +; c = tilemap height Func_12c10b: push af push de @@ -328,7 +402,103 @@ Func_12c1c1: jr nz, .loop_rows ret -SECTION "Bank 4B@42a6", ROMX[$42a6], BANK[$4b] +; bc = map ID +Func_12c206: + ld a, c + ld [wd7ec + 0], a + ld a, b + ld [wd7ec + 1], a + ld l, c + ld h, b + sla c + rl b + sla c + rl b + sla c + rl b + add hl, bc ; *9 + ld c, l + ld b, h + ld hl, MapGfx + add hl, bc + + ld c, [hl] ; tilemap + inc hl ; + ld b, [hl] ; + inc hl + push hl + call GetTilemapGfxPointer + lb de, 0, 0 + call Func_12c0b7 + pop hl + + ld c, [hl] ; tileset + inc hl ; + ld b, [hl] ; + inc hl + push hl + call GetTilesetGfxPointer + ld a, b + ld [wd7de], a + ld a, l + ld [wd7df + 0], a + ld a, h + ld [wd7df + 1], a + call Func_3792 + pop hl + + ld c, [hl] ; palette + inc hl ; + ld b, [hl] ; + inc hl + push hl + call GetPaletteGfxPointer + call Func_378c + pop hl + + xor a + ld [wOWAnimBank], a + ld [wOWAnimPtr + 0], a + ld [wOWAnimPtr + 1], a + ld a, [hli] + cp OW_ANIM_NONE + jr z, .no_ow_anim + dec hl + ld a, [hli] ; unnecessary + push hl + ld b, $00 + ld c, a + call GetOWAnimationGfxPointer + ld a, b + ld [wOWAnimBank], a + ld a, l + ld [wOWAnimPtr + 0], a + ld a, h + ld [wOWAnimPtr + 1], a + call LoadOWAnimatedTiles + pop hl + +.no_ow_anim + ld c, [hl] ; palette + inc hl ; + ld b, [hl] ; + call GetPaletteGfxPointer + ld c, $00 + call LoadGfxPalettes + + farcall Func_10666 + + ; very inefficient... + ld a, [wd693] + set 0, a + ld [wd693], a + ld a, [wd693] + res 2, a + ld [wd693], a + ld a, [wd693] + res 1, a + ld [wd693], a + ret ; bc = TILESET_* constant LoadSpriteAnimGfx:: @@ -530,59 +700,319 @@ WriteCurSpriteAnim: ld bc, (SPRITEANIMSTRUCT_START_DELAY - SPRITEANIMSTRUCT_FLAGS) + 1 call CopyDataHLtoDE_SaveRegisters ret +; 0x12c3dc -SECTION "Bank 4B@7355", ROMX[$7355], BANK[$4b] +SECTION "Bank 4B@43e0", ROMX[$43e0], BANK[$4b] -Data_12f355: - dw FRAMESET_147, FRAMESET_147, FRAMESET_147, FRAMESET_147 ; $00 - dw FRAMESET_148, FRAMESET_148, FRAMESET_148, FRAMESET_148 ; $01 - dw FRAMESET_149, FRAMESET_149, FRAMESET_149, FRAMESET_149 ; $02 - dw FRAMESET_14A, FRAMESET_14A, FRAMESET_14A, FRAMESET_14A ; $03 - dw FRAMESET_14B, FRAMESET_14B, FRAMESET_14B, FRAMESET_14B ; $04 - dw FRAMESET_14C, FRAMESET_14C, FRAMESET_14C, FRAMESET_14C ; $05 - dw FRAMESET_14D, FRAMESET_14D, FRAMESET_14D, FRAMESET_14D ; $06 - dw FRAMESET_14E, FRAMESET_14E, FRAMESET_14E, FRAMESET_14E ; $07 - dw FRAMESET_14F, FRAMESET_14F, FRAMESET_14F, FRAMESET_14F ; $08 - dw FRAMESET_150, FRAMESET_150, FRAMESET_150, FRAMESET_150 ; $09 - dw FRAMESET_151, FRAMESET_151, FRAMESET_151, FRAMESET_151 ; $0a - dw FRAMESET_152, FRAMESET_152, FRAMESET_152, FRAMESET_152 ; $0b - dw FRAMESET_153, FRAMESET_153, FRAMESET_153, FRAMESET_153 ; $0c - dw FRAMESET_155, FRAMESET_155, FRAMESET_155, FRAMESET_155 ; $0d - dw FRAMESET_0AA, FRAMESET_0AB, FRAMESET_0AC, FRAMESET_0AD ; $0e - dw FRAMESET_0B0, FRAMESET_0B1, FRAMESET_0B2, FRAMESET_0B3 ; $0f - dw FRAMESET_0B6, FRAMESET_0B7, FRAMESET_0B8, FRAMESET_0B9 ; $10 - dw FRAMESET_0BA, FRAMESET_0BB, FRAMESET_0BC, FRAMESET_0BD ; $11 - dw FRAMESET_0BE, FRAMESET_0BE, FRAMESET_0BE, FRAMESET_0BE ; $12 - dw FRAMESET_0BF, FRAMESET_0C0, FRAMESET_0C1, FRAMESET_0C2 ; $13 - dw FRAMESET_0C3, FRAMESET_0C4, FRAMESET_0C5, FRAMESET_0C6 ; $14 - dw FRAMESET_0C7, FRAMESET_0C8, FRAMESET_0C9, FRAMESET_0CA ; $15 - dw FRAMESET_0CB, FRAMESET_0CC, FRAMESET_0CD, FRAMESET_0CE ; $16 - dw FRAMESET_0CF, FRAMESET_0D0, FRAMESET_0D1, FRAMESET_0D2 ; $17 - dw FRAMESET_0D3, FRAMESET_0D4, FRAMESET_0D5, FRAMESET_0D6 ; $18 - dw FRAMESET_0D7, FRAMESET_0D8, FRAMESET_0D9, FRAMESET_0DA ; $19 - dw FRAMESET_0DB, FRAMESET_0DC, FRAMESET_0DD, FRAMESET_0DE ; $1a - dw FRAMESET_0DF, FRAMESET_0E0, FRAMESET_0E1, FRAMESET_0E2 ; $1b - dw FRAMESET_0E3, FRAMESET_0E4, FRAMESET_0E5, FRAMESET_0E6 ; $1c - dw FRAMESET_0E7, FRAMESET_0E8, FRAMESET_0E9, FRAMESET_0EA ; $1d - dw FRAMESET_0EB, FRAMESET_0EC, FRAMESET_0ED, FRAMESET_0EE ; $1e - dw FRAMESET_0EF, FRAMESET_0F0, FRAMESET_0F1, FRAMESET_0F2 ; $1f - dw FRAMESET_0F3, FRAMESET_0F4, FRAMESET_0F5, FRAMESET_0F6 ; $20 - dw FRAMESET_0F7, FRAMESET_0F8, FRAMESET_0F9, FRAMESET_0FA ; $21 - dw FRAMESET_0FB, FRAMESET_0FC, FRAMESET_0FD, FRAMESET_0FE ; $22 - dw FRAMESET_0FF, FRAMESET_100, FRAMESET_101, FRAMESET_102 ; $23 - dw FRAMESET_103, FRAMESET_104, FRAMESET_105, FRAMESET_106 ; $24 - dw FRAMESET_107, FRAMESET_108, FRAMESET_109, FRAMESET_10A ; $25 - dw FRAMESET_10B, FRAMESET_10B, FRAMESET_10B, FRAMESET_10B ; $26 - dw FRAMESET_10C, FRAMESET_10C, FRAMESET_10C, FRAMESET_10C ; $27 - dw FRAMESET_10D, FRAMESET_10D, FRAMESET_10D, FRAMESET_10D ; $28 - dw FRAMESET_10E, FRAMESET_10E, FRAMESET_10E, FRAMESET_10E ; $29 - dw FRAMESET_10F, FRAMESET_110, FRAMESET_110, FRAMESET_10F ; $2a - dw FRAMESET_111, FRAMESET_111, FRAMESET_111, FRAMESET_111 ; $2b - dw FRAMESET_08A, FRAMESET_08B, FRAMESET_08C, FRAMESET_08D ; $2c - dw FRAMESET_08E, FRAMESET_08F, FRAMESET_090, FRAMESET_091 ; $2d - dw FRAMESET_092, FRAMESET_093, FRAMESET_094, FRAMESET_095 ; $2e - dw FRAMESET_096, FRAMESET_097, FRAMESET_098, FRAMESET_099 ; $2f - dw FRAMESET_09A, FRAMESET_09B, FRAMESET_09C, FRAMESET_09D ; $30 - dw FRAMESET_09E, FRAMESET_09F, FRAMESET_0A0, FRAMESET_0A1 ; $31 - dw FRAMESET_0A2, FRAMESET_0A3, FRAMESET_0A4, FRAMESET_0A5 ; $32 - dw FRAMESET_0A6, FRAMESET_0A7, FRAMESET_0A8, FRAMESET_0A9 ; $33 +; input: +; b:hl = tilemap pointer +; de = coordinates +LoadPortraitAttributeMap: + push af + push bc + push de + push hl + push af + ld a, c + inc a + dec a + ld c, $a0 + jr z, .asm_12c3f3 + dec a + ld c, $7c + jr z, .asm_12c3f3 + ld c, $58 +.asm_12c3f3 + pop af + and a + ld a, 2 | (1 << OAM_TILE_BANK) + jr z, .got_pal_and_tiles + ld a, c + add $30 + ld c, a + ld a, 5 | (1 << OAM_TILE_BANK) +.got_pal_and_tiles + call Func_12c10b + pop hl + pop de + pop bc + pop af + ret + +; a = ? +; b = direction +; de = coordinates +_LoadOWObject: + push af + push bc + push de + push hl + ld [wda8c], a + ld a, b + ld [wda8d], a + ld a, d + ld [wda94 + 0], a + ld a, e + ld [wda94 + 1], a + farcall GetNextInactiveOWObject + ld a, ACTIVE_OBJ + ld [hli], a ; OWOBJSTRUCT_FLAGS + ld a, [wda8c] + ld [hli], a ; OWOBJSTRUCT_ID + push hl + farcall GetNextInactiveSpriteAnim + farcall SetNewSpriteAnimValues + ld a, [wda94 + 0] + ld d, a + ld a, [wda94 + 1] + ld e, a + farcall ConvertToSpriteAnimPosition + farcall SetSpriteAnimPosition + ld a, [wda8d] + farcall SetSpriteAnimDirection + ld a, [wda8c] + call Func_3bc1 + push hl + ld h, b + ld l, c + add hl, hl + sla c + rl b + sla c + rl b + add hl, bc ; *6 + ld b, h + ld c, l + ld hl, Data_12f07f + add hl, bc + ld d, h + ld e, l + pop hl + + ld a, [de] + inc de + ld c, a + ld a, [de] + inc de + ld b, a + call LoadSpriteAnimGfx + farcall SetSpriteAnimTileOffset + + ld a, [de] + inc de + ld c, a + ld a, [de] + inc de + ld b, a + farcall SetSpriteAnimAnimation + + ld a, [de] + inc de + ld c, a + ld a, [de] + inc de + ld b, a + farcall SetSpriteAnimOWFrameGroup + + ld a, [wda8d] + ld b, a + farcall SetSpriteAnimDirection + + ld d, h + ld e, l + pop hl + ld [hl], e ; OWOBJSTRUCT_ANIM_PTR + inc hl ; + ld [hl], d ; + inc hl + xor a + ld [hli], a ; OWOBJSTRUCT_4 + ld [hli], a ; OWOBJSTRUCT_5 + ld [hli], a ; OWOBJSTRUCT_6 + ld [hl], a ; OWOBJSTRUCT_7 + pop hl + pop de + pop bc + pop af + ret +; 0x12c49b + +SECTION "Bank 4B@707f", ROMX[$707f], BANK[$4b] + +Data_12f07f: + dw TILESET_0DD, SPRITE_ANIM_67, OWFRAMEGROUP_0E ; OWSPRITE_PLAYERM + dw TILESET_0DE, SPRITE_ANIM_68, OWFRAMEGROUP_0F ; OWSPRITE_PLAYERF + dw TILESET_0DF, SPRITE_ANIM_62, OWFRAMEGROUP_2F ; OWSPRITE_DRMASON + dw TILESET_0E0, SPRITE_ANIM_62, OWFRAMEGROUP_2F ; OWSPRITE_RONALD + dw TILESET_0E1, SPRITE_ANIM_63, OWFRAMEGROUP_30 ; OWSPRITE_ISHIHARA + dw TILESET_0E2, SPRITE_ANIM_62, OWFRAMEGROUP_2F ; OWSPRITE_IMAKUNI1 + dw TILESET_0E3, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_IMAKUNI2 + dw TILESET_0E4, SPRITE_ANIM_65, OWFRAMEGROUP_32 ; OWSPRITE_ISAAC + dw TILESET_0E5, SPRITE_ANIM_63, OWFRAMEGROUP_30 ; OWSPRITE_MURRAY + dw TILESET_0E6, SPRITE_ANIM_61, OWFRAMEGROUP_2E ; OWSPRITE_GENE + dw TILESET_0E7, SPRITE_ANIM_61, OWFRAMEGROUP_2E ; OWSPRITE_MITCH + dw TILESET_0E8, SPRITE_ANIM_69, OWFRAMEGROUP_10 ; OWSPRITE_NIKKI + dw TILESET_0E9, SPRITE_ANIM_61, OWFRAMEGROUP_2E ; OWSPRITE_RICK + dw TILESET_0EA, SPRITE_ANIM_6A, OWFRAMEGROUP_11 ; OWSPRITE_AMY1 + dw TILESET_0EB, SPRITE_ANIM_6B, OWFRAMEGROUP_12 ; OWSPRITE_AMY2 + dw TILESET_0EC, SPRITE_ANIM_62, OWFRAMEGROUP_2F ; OWSPRITE_SARA + dw TILESET_0ED, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_AMANDA + dw TILESET_0EE, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_KEN + dw TILESET_0EF, SPRITE_ANIM_66, OWFRAMEGROUP_33 ; OWSPRITE_COURTNEY + dw TILESET_0F0, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_STEVE1 + dw TILESET_0F1, SPRITE_ANIM_61, OWFRAMEGROUP_2E ; OWSPRITE_JACK + dw TILESET_0F2, SPRITE_ANIM_6C, OWFRAMEGROUP_13 ; OWSPRITE_ROD + dw TILESET_0F3, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_STEVE2 + dw TILESET_0F4, SPRITE_ANIM_6D, OWFRAMEGROUP_14 ; OWSPRITE_17 + dw TILESET_0F5, SPRITE_ANIM_64, OWFRAMEGROUP_31 ; OWSPRITE_STEVE3 + dw TILESET_0F6, SPRITE_ANIM_6E, OWFRAMEGROUP_15 ; OWSPRITE_19 + dw TILESET_0F7, SPRITE_ANIM_6F, OWFRAMEGROUP_16 ; OWSPRITE_1A + dw TILESET_0F8, SPRITE_ANIM_62, OWFRAMEGROUP_2F ; OWSPRITE_STEVE4 + dw TILESET_0F9, SPRITE_ANIM_63, OWFRAMEGROUP_30 ; OWSPRITE_1C + dw TILESET_0FA, SPRITE_ANIM_63, OWFRAMEGROUP_30 ; OWSPRITE_1D + dw TILESET_0FB, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_1E + dw TILESET_0FC, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_1F + dw TILESET_0FD, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_20 + dw TILESET_0FE, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_21 + dw TILESET_0FF, SPRITE_ANIM_65, OWFRAMEGROUP_32 ; OWSPRITE_22 + dw TILESET_100, SPRITE_ANIM_61, OWFRAMEGROUP_2E ; OWSPRITE_23 + dw TILESET_101, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_24 + dw TILESET_102, SPRITE_ANIM_63, OWFRAMEGROUP_30 ; OWSPRITE_25 + dw TILESET_103, SPRITE_ANIM_64, OWFRAMEGROUP_31 ; OWSPRITE_26 + dw TILESET_104, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_27 + dw TILESET_105, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_28 + dw TILESET_106, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_29 + dw TILESET_107, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_2A + dw TILESET_108, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_2B + dw TILESET_109, SPRITE_ANIM_61, OWFRAMEGROUP_2E ; OWSPRITE_2C + dw TILESET_10A, SPRITE_ANIM_62, OWFRAMEGROUP_2F ; OWSPRITE_2D + dw TILESET_10B, SPRITE_ANIM_70, OWFRAMEGROUP_17 ; OWSPRITE_2E + dw TILESET_10C, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_2F + dw TILESET_10D, SPRITE_ANIM_71, OWFRAMEGROUP_18 ; OWSPRITE_30 + dw TILESET_10E, SPRITE_ANIM_66, OWFRAMEGROUP_33 ; OWSPRITE_31 + dw TILESET_10F, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_32 + dw TILESET_110, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_33 + dw TILESET_111, SPRITE_ANIM_72, OWFRAMEGROUP_19 ; OWSPRITE_34 + dw TILESET_112, SPRITE_ANIM_73, OWFRAMEGROUP_1A ; OWSPRITE_35 + dw TILESET_113, SPRITE_ANIM_74, OWFRAMEGROUP_1B ; OWSPRITE_36 + dw TILESET_114, SPRITE_ANIM_75, OWFRAMEGROUP_1C ; OWSPRITE_37 + dw TILESET_115, SPRITE_ANIM_76, OWFRAMEGROUP_1D ; OWSPRITE_38 + dw TILESET_116, SPRITE_ANIM_77, OWFRAMEGROUP_1E ; OWSPRITE_39 + dw TILESET_117, SPRITE_ANIM_61, OWFRAMEGROUP_2E ; OWSPRITE_3A + dw TILESET_118, SPRITE_ANIM_61, OWFRAMEGROUP_2E ; OWSPRITE_3B + dw TILESET_119, SPRITE_ANIM_78, OWFRAMEGROUP_1F ; OWSPRITE_3C + dw TILESET_11A, SPRITE_ANIM_79, OWFRAMEGROUP_20 ; OWSPRITE_3D + dw TILESET_11B, SPRITE_ANIM_7A, OWFRAMEGROUP_21 ; OWSPRITE_3E + dw TILESET_11C, SPRITE_ANIM_63, OWFRAMEGROUP_30 ; OWSPRITE_3F + dw TILESET_11D, SPRITE_ANIM_64, OWFRAMEGROUP_31 ; OWSPRITE_40 + dw TILESET_11E, SPRITE_ANIM_7B, OWFRAMEGROUP_22 ; OWSPRITE_41 + dw TILESET_11F, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_YOUNGSTER + dw TILESET_120, SPRITE_ANIM_65, OWFRAMEGROUP_32 ; OWSPRITE_LAD + dw TILESET_121, SPRITE_ANIM_63, OWFRAMEGROUP_30 ; OWSPRITE_SPECS + dw TILESET_122, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_BUTCH + dw TILESET_123, SPRITE_ANIM_61, OWFRAMEGROUP_2E ; OWSPRITE_MANIA + dw TILESET_124, SPRITE_ANIM_61, OWFRAMEGROUP_2E ; OWSPRITE_JOSHUA + dw TILESET_125, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_HOOD + dw TILESET_126, SPRITE_ANIM_62, OWFRAMEGROUP_2F ; OWSPRITE_TECH + dw TILESET_127, SPRITE_ANIM_65, OWFRAMEGROUP_32 ; OWSPRITE_CHAP + dw TILESET_128, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_MAN + dw TILESET_129, SPRITE_ANIM_63, OWFRAMEGROUP_30 ; OWSPRITE_PAPPY + dw TILESET_12A, SPRITE_ANIM_62, OWFRAMEGROUP_2F ; OWSPRITE_4D + dw TILESET_12B, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_GRYOUNGSTER + dw TILESET_12C, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_4F + dw TILESET_12D, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_50 + dw TILESET_12E, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_51 + dw TILESET_12F, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_52 + dw TILESET_130, SPRITE_ANIM_7C, OWFRAMEGROUP_23 ; OWSPRITE_53 + dw TILESET_131, SPRITE_ANIM_62, OWFRAMEGROUP_2F ; OWSPRITE_GIRL + dw TILESET_132, SPRITE_ANIM_63, OWFRAMEGROUP_30 ; OWSPRITE_LASS1 + dw TILESET_133, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_LASS2 + dw TILESET_134, SPRITE_ANIM_65, OWFRAMEGROUP_32 ; OWSPRITE_LASS3 + dw TILESET_135, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_SWIMMER + dw TILESET_136, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_GAL + dw TILESET_137, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_WOMAN + dw TILESET_138, SPRITE_ANIM_60, OWFRAMEGROUP_2D ; OWSPRITE_GRANNY + dw TILESET_139, SPRITE_ANIM_62, OWFRAMEGROUP_2F ; OWSPRITE_5C + dw TILESET_13A, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_GRLASS1 + dw TILESET_13B, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_GRGAL + dw TILESET_13C, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_GRWOMAN + dw TILESET_13D, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_GRGRANNY + dw TILESET_13E, SPRITE_ANIM_5F, OWFRAMEGROUP_2C ; OWSPRITE_61 + dw TILESET_13F, SPRITE_ANIM_63, OWFRAMEGROUP_30 ; OWSPRITE_62 + dw TILESET_140, SPRITE_ANIM_7D, OWFRAMEGROUP_24 ; OWSPRITE_CLERK + dw TILESET_141, SPRITE_ANIM_7E, OWFRAMEGROUP_25 ; OWSPRITE_GRCLERK + dw TILESET_142, SPRITE_ANIM_7F, OWFRAMEGROUP_26 ; OWSPRITE_65 + dw TILESET_143, SPRITE_ANIM_80, OWFRAMEGROUP_27 ; OWSPRITE_66 + dw TILESET_144, SPRITE_ANIM_81, OWFRAMEGROUP_28 ; OWSPRITE_67 + dw TILESET_145, SPRITE_ANIM_82, OWFRAMEGROUP_29 ; OWSPRITE_68 + dw TILESET_146, SPRITE_ANIM_83, OWFRAMEGROUP_2A ; OWSPRITE_GRSHIP + dw TILESET_147, SPRITE_ANIM_84, OWFRAMEGROUP_2B ; OWSPRITE_GRSHIPBEAM + dw TILESET_001, SPRITE_ANIM_86, OWFRAMEGROUP_00 ; OWSPRITE_6B + dw TILESET_001, SPRITE_ANIM_86, OWFRAMEGROUP_01 ; OWSPRITE_6C + dw TILESET_003, SPRITE_ANIM_87, OWFRAMEGROUP_02 ; OWSPRITE_6D + dw TILESET_003, SPRITE_ANIM_88, OWFRAMEGROUP_03 ; OWSPRITE_6E + dw TILESET_003, SPRITE_ANIM_89, OWFRAMEGROUP_04 ; OWSPRITE_6F + dw TILESET_003, SPRITE_ANIM_8A, OWFRAMEGROUP_05 ; OWSPRITE_70 + dw TILESET_077, SPRITE_ANIM_8D, OWFRAMEGROUP_0A ; OWSPRITE_71 + dw TILESET_077, SPRITE_ANIM_8D, OWFRAMEGROUP_0B ; OWSPRITE_72 + dw TILESET_078, SPRITE_ANIM_8E, OWFRAMEGROUP_0C ; OWSPRITE_73 + dw TILESET_07A, SPRITE_ANIM_90, OWFRAMEGROUP_0D ; OWSPRITE_74 + dw TILESET_07B, SPRITE_ANIM_8B, OWFRAMEGROUP_06 ; OWSPRITE_75 + dw TILESET_07B, SPRITE_ANIM_8B, OWFRAMEGROUP_07 ; OWSPRITE_76 + dw TILESET_07C, SPRITE_ANIM_8C, OWFRAMEGROUP_08 ; OWSPRITE_77 + dw TILESET_07C, SPRITE_ANIM_8C, OWFRAMEGROUP_09 ; OWSPRITE_78 + +OWObjectFramesets: + ; north, east, south, west + dw FRAMESET_147, FRAMESET_147, FRAMESET_147, FRAMESET_147 ; OWFRAMEGROUP_00 + dw FRAMESET_148, FRAMESET_148, FRAMESET_148, FRAMESET_148 ; OWFRAMEGROUP_01 + dw FRAMESET_149, FRAMESET_149, FRAMESET_149, FRAMESET_149 ; OWFRAMEGROUP_02 + dw FRAMESET_14A, FRAMESET_14A, FRAMESET_14A, FRAMESET_14A ; OWFRAMEGROUP_03 + dw FRAMESET_14B, FRAMESET_14B, FRAMESET_14B, FRAMESET_14B ; OWFRAMEGROUP_04 + dw FRAMESET_14C, FRAMESET_14C, FRAMESET_14C, FRAMESET_14C ; OWFRAMEGROUP_05 + dw FRAMESET_14D, FRAMESET_14D, FRAMESET_14D, FRAMESET_14D ; OWFRAMEGROUP_06 + dw FRAMESET_14E, FRAMESET_14E, FRAMESET_14E, FRAMESET_14E ; OWFRAMEGROUP_07 + dw FRAMESET_14F, FRAMESET_14F, FRAMESET_14F, FRAMESET_14F ; OWFRAMEGROUP_08 + dw FRAMESET_150, FRAMESET_150, FRAMESET_150, FRAMESET_150 ; OWFRAMEGROUP_09 + dw FRAMESET_151, FRAMESET_151, FRAMESET_151, FRAMESET_151 ; OWFRAMEGROUP_0A + dw FRAMESET_152, FRAMESET_152, FRAMESET_152, FRAMESET_152 ; OWFRAMEGROUP_0B + dw FRAMESET_153, FRAMESET_153, FRAMESET_153, FRAMESET_153 ; OWFRAMEGROUP_0C + dw FRAMESET_155, FRAMESET_155, FRAMESET_155, FRAMESET_155 ; OWFRAMEGROUP_0D + dw FRAMESET_0AA, FRAMESET_0AB, FRAMESET_0AC, FRAMESET_0AD ; OWFRAMEGROUP_0E + dw FRAMESET_0B0, FRAMESET_0B1, FRAMESET_0B2, FRAMESET_0B3 ; OWFRAMEGROUP_0F + dw FRAMESET_0B6, FRAMESET_0B7, FRAMESET_0B8, FRAMESET_0B9 ; OWFRAMEGROUP_10 + dw FRAMESET_0BA, FRAMESET_0BB, FRAMESET_0BC, FRAMESET_0BD ; OWFRAMEGROUP_11 + dw FRAMESET_0BE, FRAMESET_0BE, FRAMESET_0BE, FRAMESET_0BE ; OWFRAMEGROUP_12 + dw FRAMESET_0BF, FRAMESET_0C0, FRAMESET_0C1, FRAMESET_0C2 ; OWFRAMEGROUP_13 + dw FRAMESET_0C3, FRAMESET_0C4, FRAMESET_0C5, FRAMESET_0C6 ; OWFRAMEGROUP_14 + dw FRAMESET_0C7, FRAMESET_0C8, FRAMESET_0C9, FRAMESET_0CA ; OWFRAMEGROUP_15 + dw FRAMESET_0CB, FRAMESET_0CC, FRAMESET_0CD, FRAMESET_0CE ; OWFRAMEGROUP_16 + dw FRAMESET_0CF, FRAMESET_0D0, FRAMESET_0D1, FRAMESET_0D2 ; OWFRAMEGROUP_17 + dw FRAMESET_0D3, FRAMESET_0D4, FRAMESET_0D5, FRAMESET_0D6 ; OWFRAMEGROUP_18 + dw FRAMESET_0D7, FRAMESET_0D8, FRAMESET_0D9, FRAMESET_0DA ; OWFRAMEGROUP_19 + dw FRAMESET_0DB, FRAMESET_0DC, FRAMESET_0DD, FRAMESET_0DE ; OWFRAMEGROUP_1A + dw FRAMESET_0DF, FRAMESET_0E0, FRAMESET_0E1, FRAMESET_0E2 ; OWFRAMEGROUP_1B + dw FRAMESET_0E3, FRAMESET_0E4, FRAMESET_0E5, FRAMESET_0E6 ; OWFRAMEGROUP_1C + dw FRAMESET_0E7, FRAMESET_0E8, FRAMESET_0E9, FRAMESET_0EA ; OWFRAMEGROUP_1D + dw FRAMESET_0EB, FRAMESET_0EC, FRAMESET_0ED, FRAMESET_0EE ; OWFRAMEGROUP_1E + dw FRAMESET_0EF, FRAMESET_0F0, FRAMESET_0F1, FRAMESET_0F2 ; OWFRAMEGROUP_1F + dw FRAMESET_0F3, FRAMESET_0F4, FRAMESET_0F5, FRAMESET_0F6 ; OWFRAMEGROUP_20 + dw FRAMESET_0F7, FRAMESET_0F8, FRAMESET_0F9, FRAMESET_0FA ; OWFRAMEGROUP_21 + dw FRAMESET_0FB, FRAMESET_0FC, FRAMESET_0FD, FRAMESET_0FE ; OWFRAMEGROUP_22 + dw FRAMESET_0FF, FRAMESET_100, FRAMESET_101, FRAMESET_102 ; OWFRAMEGROUP_23 + dw FRAMESET_103, FRAMESET_104, FRAMESET_105, FRAMESET_106 ; OWFRAMEGROUP_24 + dw FRAMESET_107, FRAMESET_108, FRAMESET_109, FRAMESET_10A ; OWFRAMEGROUP_25 + dw FRAMESET_10B, FRAMESET_10B, FRAMESET_10B, FRAMESET_10B ; OWFRAMEGROUP_26 + dw FRAMESET_10C, FRAMESET_10C, FRAMESET_10C, FRAMESET_10C ; OWFRAMEGROUP_27 + dw FRAMESET_10D, FRAMESET_10D, FRAMESET_10D, FRAMESET_10D ; OWFRAMEGROUP_28 + dw FRAMESET_10E, FRAMESET_10E, FRAMESET_10E, FRAMESET_10E ; OWFRAMEGROUP_29 + dw FRAMESET_10F, FRAMESET_110, FRAMESET_110, FRAMESET_10F ; OWFRAMEGROUP_2A + dw FRAMESET_111, FRAMESET_111, FRAMESET_111, FRAMESET_111 ; OWFRAMEGROUP_2B + dw FRAMESET_08A, FRAMESET_08B, FRAMESET_08C, FRAMESET_08D ; OWFRAMEGROUP_2C + dw FRAMESET_08E, FRAMESET_08F, FRAMESET_090, FRAMESET_091 ; OWFRAMEGROUP_2D + dw FRAMESET_092, FRAMESET_093, FRAMESET_094, FRAMESET_095 ; OWFRAMEGROUP_2E + dw FRAMESET_096, FRAMESET_097, FRAMESET_098, FRAMESET_099 ; OWFRAMEGROUP_2F + dw FRAMESET_09A, FRAMESET_09B, FRAMESET_09C, FRAMESET_09D ; OWFRAMEGROUP_30 + dw FRAMESET_09E, FRAMESET_09F, FRAMESET_0A0, FRAMESET_0A1 ; OWFRAMEGROUP_31 + dw FRAMESET_0A2, FRAMESET_0A3, FRAMESET_0A4, FRAMESET_0A5 ; OWFRAMEGROUP_32 + dw FRAMESET_0A6, FRAMESET_0A7, FRAMESET_0A8, FRAMESET_0A9 ; OWFRAMEGROUP_33 diff --git a/src/engine/bank4c.asm b/src/engine/bank4c.asm new file mode 100644 index 0000000..ac3ad05 --- /dev/null +++ b/src/engine/bank4c.asm @@ -0,0 +1,403 @@ +; input: +; a = PORTRAIT_* constant +; b = portrait slot (0 or 1) +; c = portrait variant +; de = coordinates +DrawPortrait:: + push af + push bc + push de + push hl + push bc + push de + ld e, b + ld d, c + push de + ld e, a + ld d, 0 + ld bc, 10 ; size of each portrait entry + call MultiplyBCByDE + ld b, h + ld c, l + pop de + ld hl, Portraits + add hl, bc + + ; tileset + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + push hl + farcall GetTilesetGfxPointer + ld c, d + call LoadPortraitTiles + pop hl + + ; palette + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + push hl + farcall GetPaletteGfxPointer + call LoadPortraitPalettes + pop hl + + ; tilemap + pop de + pop bc + ld a, b ; slot + ld [wPortraitSlot], a + ld a, c ; variant + ld [wPortraitVariant], a + ld b, $00 + sla c ; *2 + add hl, bc + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + farcall GetTilemapGfxPointer + ld a, [wPortraitVariant] + ld c, a + ld a, [wPortraitSlot] + farcall LoadPortraitAttributeMap + pop hl + pop de + pop bc + pop af + ret + +Data_13005b:: + dw OWSPRITE_PLAYERM ; OW_PLAYERM + dw OWSPRITE_PLAYERF ; OW_PLAYERF + dw OWSPRITE_DRMASON ; OW_DRMASON + dw OWSPRITE_RONALD ; OW_RONALD + dw OWSPRITE_ISHIHARA ; OW_ISHIHARA + dw OWSPRITE_IMAKUNI1 ; OW_IMAKUNI1 + dw OWSPRITE_TECH ; OW_TECH1 + dw OWSPRITE_TECH ; OW_TECH2 + dw OWSPRITE_PAPPY ; OW_PAPPY1 + dw OWSPRITE_GENE ; OW_GENE + dw OWSPRITE_MANIA ; OW_MANIA1 + dw OWSPRITE_YOUNGSTER ; OW_YOUNGSTER1 + dw OWSPRITE_MAN ; OW_MAN1 + dw OWSPRITE_MITCH ; OW_MITCH + dw OWSPRITE_MANIA ; OW_MANIA2 + dw OWSPRITE_MANIA ; OW_MANIA3 + dw OWSPRITE_LASS3 ; OW_LASS1 + dw OWSPRITE_NIKKI ; OW_NIKKI + dw OWSPRITE_GIRL ; OW_GIRL1 + dw OWSPRITE_LASS2 ; OW_LASS2 + dw OWSPRITE_LASS1 ; OW_LASS3 + dw OWSPRITE_RICK ; OW_RICK + dw OWSPRITE_TECH ; OW_TECH3 + dw OWSPRITE_TECH ; OW_TECH4 + dw OWSPRITE_TECH ; OW_TECH5 + dw OWSPRITE_AMY1 ; OW_AMY1 + dw OWSPRITE_AMY2 ; OW_AMY2 + dw OWSPRITE_JOSHUA ; OW_JOSHUA1 + dw OWSPRITE_SARA ; OW_SARA + dw OWSPRITE_AMANDA ; OW_AMANDA + dw OWSPRITE_KEN ; OW_KEN + dw OWSPRITE_LAD ; OW_LAD1 + dw OWSPRITE_SPECS ; OW_SPECS1 + dw OWSPRITE_YOUNGSTER ; OW_YOUNGSTER2 + dw OWSPRITE_ISAAC ; OW_ISAAC + dw OWSPRITE_GIRL ; OW_GIRL2 + dw OWSPRITE_HOOD ; OW_HOOD1 + dw OWSPRITE_HOOD ; OW_HOOD2 + dw OWSPRITE_MURRAY ; OW_MURRAY + dw OWSPRITE_YOUNGSTER ; OW_YOUNGSTER3 + dw OWSPRITE_LAD ; OW_LAD2 + dw OWSPRITE_GIRL ; OW_GIRL3 + dw OWSPRITE_COURTNEY ; OW_COURTNEY + dw OWSPRITE_STEVE1 ; OW_STEVE1 + dw OWSPRITE_JACK ; OW_JACK + dw OWSPRITE_ROD ; OW_ROD + dw OWSPRITE_22 ; OW_UNK_2E + dw OWSPRITE_23 ; OW_UNK_2F + dw OWSPRITE_24 ; OW_UNK_30 + dw OWSPRITE_25 ; OW_UNK_31 + dw OWSPRITE_26 ; OW_UNK_32 + dw OWSPRITE_GRYOUNGSTER ; OW_GRYOUNGSTER1 + dw OWSPRITE_27 ; OW_UNK_34 + dw OWSPRITE_28 ; OW_UNK_35 + dw OWSPRITE_27 ; OW_UNK_36 + dw OWSPRITE_28 ; OW_UNK_37 + dw OWSPRITE_GRLASS1 ; OW_GRLASS1 + dw OWSPRITE_29 ; OW_UNK_39 + dw OWSPRITE_2A ; OW_UNK_3A + dw OWSPRITE_2B ; OW_UNK_3B + dw OWSPRITE_GRGRANNY ; OW_GRGRANNY1 + dw OWSPRITE_50 ; OW_UNK_3D + dw OWSPRITE_2C ; OW_UNK_3E + dw OWSPRITE_2D ; OW_UNK_3F + dw OWSPRITE_2E ; OW_UNK_40 + dw OWSPRITE_2F ; OW_UNK_41 + dw OWSPRITE_SPECS ; OW_SPECS2 + dw OWSPRITE_50 ; OW_UNK_43 + dw OWSPRITE_JOSHUA ; OW_JOSHUA2 + dw OWSPRITE_30 ; OW_UNK_45 + dw OWSPRITE_31 ; OW_UNK_46 + dw OWSPRITE_32 ; OW_UNK_47 + dw OWSPRITE_33 ; OW_UNK_48 + dw OWSPRITE_34 ; OW_UNK_49 + dw OWSPRITE_GAL ; OW_GAL1 + dw OWSPRITE_35 ; OW_UNK_4B + dw OWSPRITE_36 ; OW_UNK_4C + dw OWSPRITE_37 ; OW_UNK_4D + dw OWSPRITE_38 ; OW_UNK_4E + dw OWSPRITE_39 ; OW_UNK_4F + dw OWSPRITE_3A ; OW_UNK_50 + dw OWSPRITE_3B ; OW_UNK_51 + dw OWSPRITE_3C ; OW_UNK_52 + dw OWSPRITE_3D ; OW_UNK_53 + dw OWSPRITE_3E ; OW_UNK_54 + dw OWSPRITE_3F ; OW_UNK_55 + dw OWSPRITE_41 ; OW_UNK_56 + dw OWSPRITE_STEVE2 ; OW_STEVE2 + dw OWSPRITE_17 ; OW_UNK_58 + dw OWSPRITE_STEVE3 ; OW_STEVE3 + dw OWSPRITE_19 ; OW_UNK_5A + dw OWSPRITE_1A ; OW_UNK_5B + dw OWSPRITE_STEVE4 ; OW_STEVE4 + dw OWSPRITE_1C ; OW_UNK_5D + dw OWSPRITE_1D ; OW_UNK_5E + dw OWSPRITE_1E ; OW_UNK_5F + dw OWSPRITE_1F ; OW_UNK_60 + dw OWSPRITE_20 ; OW_UNK_61 + dw OWSPRITE_21 ; OW_UNK_62 + dw OWSPRITE_40 ; OW_UNK_63 + dw OWSPRITE_CLERK ; OW_CLERK1 + dw OWSPRITE_CLERK ; OW_CLERK2 + dw OWSPRITE_GRCLERK ; OW_GRCLERK1 + dw OWSPRITE_GRCLERK ; OW_GRCLERK2 + dw OWSPRITE_GRCLERK ; OW_GRCLERK3 + dw OWSPRITE_GRCLERK ; OW_GRCLERK4 + dw OWSPRITE_LASS2 ; OW_LASS4 + dw OWSPRITE_WOMAN ; OW_WOMAN + dw OWSPRITE_CHAP ; OW_CHAP1 + dw OWSPRITE_LAD ; OW_LAD3 + dw OWSPRITE_PAPPY ; OW_PAPPY2 + dw OWSPRITE_SPECS ; OW_SPECS3 + dw OWSPRITE_LAD ; OW_LAD4 + dw OWSPRITE_GIRL ; OW_GIRL4 + dw OWSPRITE_GRANNY ; OW_GRANNY + dw OWSPRITE_LASS2 ; OW_LASS5 + dw OWSPRITE_GIRL ; OW_GIRL5 + dw OWSPRITE_MAN ; OW_MAN2 + dw OWSPRITE_LAD ; OW_LAD5 + dw OWSPRITE_SPECS ; OW_SPECS4 + dw OWSPRITE_TECH ; OW_TECH6 + dw OWSPRITE_PAPPY ; OW_PAPPY3 + dw OWSPRITE_LASS1 ; OW_LASS6 + dw OWSPRITE_LASS2 ; OW_LASS7 + dw OWSPRITE_HOOD ; OW_HOOD3 + dw OWSPRITE_MANIA ; OW_MANIA4 + dw OWSPRITE_GAL ; OW_GAL2 + dw OWSPRITE_LASS3 ; OW_LASS8 + dw OWSPRITE_HOOD ; OW_HOOD4 + dw OWSPRITE_LASS1 ; OW_LASS9 + dw OWSPRITE_CHAP ; OW_CHAP2 + dw OWSPRITE_SPECS ; OW_SPECS5 + dw OWSPRITE_LASS1 ; OW_LASS10 + dw OWSPRITE_LAD ; OW_LAD6 + dw OWSPRITE_GRLASS1 ; OW_GRLASS2 + dw OWSPRITE_GRCLERK ; OW_GRCLERK5 + dw OWSPRITE_GRGAL ; OW_GRGAL1 + dw OWSPRITE_MANIA ; OW_MANIA5 + dw OWSPRITE_CLERK ; OW_CLERK3 + dw OWSPRITE_CHAP ; OW_CHAP3 + dw OWSPRITE_GAL ; OW_GAL3 + dw OWSPRITE_HOOD ; OW_HOOD5 + dw OWSPRITE_MAN ; OW_MAN3 + dw OWSPRITE_PAPPY ; OW_PAPPY4 + dw OWSPRITE_TECH ; OW_TECH7 + dw OWSPRITE_GIRL ; OW_GIRL6 + dw OWSPRITE_LASS1 ; OW_LASS11 + dw OWSPRITE_LASS2 ; OW_LASS12 + dw OWSPRITE_GRCLERK ; OW_GRCLERK6 + dw OWSPRITE_51 ; OW_UNK_95 + dw OWSPRITE_GRLASS1 ; OW_GRLASS3 + dw OWSPRITE_GRCLERK ; OW_GRCLERK7 + dw OWSPRITE_GRYOUNGSTER ; OW_GRYOUNGSTER2 + dw OWSPRITE_51 ; OW_UNK_99 + dw OWSPRITE_GRLASS1 ; OW_GRLASS4 + dw OWSPRITE_GRCLERK ; OW_GRCLERK8 + dw OWSPRITE_GRWOMAN ; OW_GRWOMAN1 + dw OWSPRITE_BUTCH ; OW_BUTCH1 + dw OWSPRITE_CHAP ; OW_CHAP4 + dw OWSPRITE_GRCLERK ; OW_GRCLERK9 + dw OWSPRITE_YOUNGSTER ; OW_YOUNGSTER4 + dw OWSPRITE_GRCLERK ; OW_GRCLERK10 + dw OWSPRITE_GRGRANNY ; OW_GRGRANNY2 + dw OWSPRITE_GRGAL ; OW_GRGAL2 + dw OWSPRITE_GRCLERK ; OW_GRCLERK11 + dw OWSPRITE_GRCLERK ; OW_GRCLERK12 + dw OWSPRITE_MANIA ; OW_MANIA6 + dw OWSPRITE_GRLASS1 ; OW_GRLASS5 + dw OWSPRITE_GRCLERK ; OW_GRCLERK13 + dw OWSPRITE_TECH ; OW_TECH8 + dw OWSPRITE_GRLASS1 ; OW_GRLASS6 + dw OWSPRITE_51 ; OW_UNK_AB + dw OWSPRITE_65 ; OW_UNK_AC + dw OWSPRITE_66 ; OW_UNK_AD + dw OWSPRITE_67 ; OW_UNK_AE + dw OWSPRITE_68 ; OW_UNK_AF + dw OWSPRITE_LASS2 ; OW_LASS13 + dw OWSPRITE_IMAKUNI2 ; OW_IMAKUNI2 + dw OWSPRITE_BUTCH ; OW_BUTCH2 + dw OWSPRITE_TECH ; OW_TECH9 + dw OWSPRITE_TECH ; OW_TECH10 + dw OWSPRITE_TECH ; OW_TECH11 + dw OWSPRITE_TECH ; OW_TECH12 + dw OWSPRITE_TECH ; OW_TECH13 + dw OWSPRITE_TECH ; OW_TECH14 + dw OWSPRITE_TECH ; OW_TECH15 + dw OWSPRITE_TECH ; OW_TECH16 + dw OWSPRITE_TECH ; OW_TECH17 + dw OWSPRITE_GRCLERK ; OW_GRCLERK14 + dw OWSPRITE_GRCLERK ; OW_GRCLERK15 + dw OWSPRITE_GRCLERK ; OW_GRCLERK16 + dw OWSPRITE_GRCLERK ; OW_GRCLERK17 + dw OWSPRITE_61 ; OW_UNK_C0 + dw OWSPRITE_53 ; OW_UNK_C1 + dw OWSPRITE_53 ; OW_UNK_C2 + dw OWSPRITE_52 ; OW_UNK_C3 + dw OWSPRITE_62 ; OW_UNK_C4 + dw OWSPRITE_52 ; OW_UNK_C5 + dw OWSPRITE_61 ; OW_UNK_C6 + dw OWSPRITE_62 ; OW_UNK_C7 + dw OWSPRITE_6B ; OW_UNK_C8 + dw OWSPRITE_6D ; OW_UNK_C9 + dw OWSPRITE_6C ; OW_UNK_CA + dw OWSPRITE_6F ; OW_UNK_CB + dw OWSPRITE_70 ; OW_UNK_CC + dw OWSPRITE_6E ; OW_UNK_CD + dw OWSPRITE_71 ; OW_UNK_CE + dw OWSPRITE_72 ; OW_UNK_CF + dw OWSPRITE_GRSHIPBEAM ; OW_GRSHIPBEAM + dw OWSPRITE_GRSHIP ; OW_GRSHIP + dw OWSPRITE_73 ; OW_UNK_D2 + dw OWSPRITE_GRYOUNGSTER ; OW_GRYOUNGSTER3 + dw OWSPRITE_GRLASS1 ; OW_GRLASS7 + dw OWSPRITE_GRLASS1 ; OW_GRLASS8 + dw OWSPRITE_YOUNGSTER ; OW_YOUNGSTER5 + dw OWSPRITE_SWIMMER ; OW_SWIMMER + dw OWSPRITE_GRGAL ; OW_GRGAL3 + dw OWSPRITE_BUTCH ; OW_BUTCH3 + dw OWSPRITE_MANIA ; OW_MANIA7 + dw OWSPRITE_4D ; OW_UNK_DB + dw OWSPRITE_GRWOMAN ; OW_GRWOMAN2 + dw OWSPRITE_GRGAL ; OW_GRGAL4 + dw OWSPRITE_GRCLERK ; OW_GRCLERK18 + dw OWSPRITE_4F ; OW_UNK_DF + dw OWSPRITE_GRWOMAN ; OW_GRWOMAN3 + dw OWSPRITE_5C ; OW_UNK_E1 + dw OWSPRITE_LASS1 ; OW_LASS14 + dw OWSPRITE_LASS2 ; OW_LASS15 + dw OWSPRITE_75 ; OW_UNK_E4 + dw OWSPRITE_76 ; OW_UNK_E5 + dw OWSPRITE_77 ; OW_UNK_E6 + dw OWSPRITE_78 ; OW_UNK_E7 + dw OWSPRITE_74 ; OW_UNK_E8 + +Portraits: + dw TILESET_07D, PALETTE_078, TILEMAP_0D3, TILEMAP_0D3, TILEMAP_0D3 ; PORTRAIT_00 + dw TILESET_07E, PALETTE_079, TILEMAP_0D4, TILEMAP_0D4, TILEMAP_0D4 ; PORTRAIT_01 + dw TILESET_07F, PALETTE_07A, TILEMAP_0D5, TILEMAP_0D5, TILEMAP_0D5 ; PORTRAIT_02 + dw TILESET_080, PALETTE_07B, TILEMAP_0D6, TILEMAP_0D6, TILEMAP_0D6 ; PORTRAIT_03 + dw TILESET_081, PALETTE_07C, TILEMAP_0D7, TILEMAP_0D8, TILEMAP_0D9 ; PORTRAIT_04 + dw TILESET_082, PALETTE_07D, TILEMAP_0DA, TILEMAP_0DB, TILEMAP_0DC ; PORTRAIT_05 + dw TILESET_083, PALETTE_07E, TILEMAP_0DD, TILEMAP_0DE, TILEMAP_0DF ; PORTRAIT_06 + dw TILESET_084, PALETTE_07F, TILEMAP_0E0, TILEMAP_0E1, TILEMAP_0E2 ; PORTRAIT_07 + dw TILESET_087, PALETTE_082, TILEMAP_0E9, TILEMAP_0EA, TILEMAP_0EB ; PORTRAIT_08 + dw TILESET_088, PALETTE_083, TILEMAP_0EC, TILEMAP_0ED, TILEMAP_0EE ; PORTRAIT_09 + dw TILESET_089, PALETTE_084, TILEMAP_0EF, TILEMAP_0F0, TILEMAP_0F1 ; PORTRAIT_0A + dw TILESET_08A, PALETTE_085, TILEMAP_0F2, TILEMAP_0F3, TILEMAP_0F4 ; PORTRAIT_0B + dw TILESET_08B, PALETTE_086, TILEMAP_0F5, TILEMAP_0F6, TILEMAP_0F7 ; PORTRAIT_0C + dw TILESET_08C, PALETTE_087, TILEMAP_0F8, TILEMAP_0F9, TILEMAP_0FA ; PORTRAIT_0D + dw TILESET_08D, PALETTE_088, TILEMAP_0FB, TILEMAP_0FC, TILEMAP_0FD ; PORTRAIT_0E + dw TILESET_08E, PALETTE_089, TILEMAP_0FE, TILEMAP_0FF, TILEMAP_100 ; PORTRAIT_0F + dw TILESET_08F, PALETTE_08A, TILEMAP_101, TILEMAP_102, TILEMAP_103 ; PORTRAIT_10 + dw TILESET_090, PALETTE_08B, TILEMAP_104, TILEMAP_105, TILEMAP_106 ; PORTRAIT_11 + dw TILESET_091, PALETTE_08C, TILEMAP_107, TILEMAP_108, TILEMAP_109 ; PORTRAIT_12 + dw TILESET_092, PALETTE_08D, TILEMAP_10A, TILEMAP_10B, TILEMAP_10C ; PORTRAIT_13 + dw TILESET_093, PALETTE_08E, TILEMAP_10D, TILEMAP_10E, TILEMAP_10F ; PORTRAIT_14 + dw TILESET_094, PALETTE_08F, TILEMAP_110, TILEMAP_111, TILEMAP_112 ; PORTRAIT_15 + dw TILESET_095, PALETTE_090, TILEMAP_113, TILEMAP_114, TILEMAP_115 ; PORTRAIT_16 + dw TILESET_096, PALETTE_091, TILEMAP_116, TILEMAP_117, TILEMAP_118 ; PORTRAIT_17 + dw TILESET_097, PALETTE_092, TILEMAP_119, TILEMAP_11A, TILEMAP_11B ; PORTRAIT_18 + dw TILESET_098, PALETTE_093, TILEMAP_11C, TILEMAP_11D, TILEMAP_11E ; PORTRAIT_19 + dw TILESET_099, PALETTE_094, TILEMAP_11F, TILEMAP_120, TILEMAP_121 ; PORTRAIT_1A + dw TILESET_09A, PALETTE_095, TILEMAP_122, TILEMAP_123, TILEMAP_124 ; PORTRAIT_1B + dw TILESET_09B, PALETTE_096, TILEMAP_125, TILEMAP_126, TILEMAP_127 ; PORTRAIT_1C + dw TILESET_09C, PALETTE_097, TILEMAP_128, TILEMAP_129, TILEMAP_12A ; PORTRAIT_1D + dw TILESET_09D, PALETTE_098, TILEMAP_12B, TILEMAP_12C, TILEMAP_12D ; PORTRAIT_1E + dw TILESET_09E, PALETTE_099, TILEMAP_12E, TILEMAP_12F, TILEMAP_130 ; PORTRAIT_1F + dw TILESET_09F, PALETTE_09A, TILEMAP_131, TILEMAP_132, TILEMAP_133 ; PORTRAIT_20 + dw TILESET_0A0, PALETTE_09B, TILEMAP_134, TILEMAP_135, TILEMAP_136 ; PORTRAIT_21 + dw TILESET_0A1, PALETTE_09C, TILEMAP_137, TILEMAP_138, TILEMAP_139 ; PORTRAIT_22 + dw TILESET_0A2, PALETTE_09D, TILEMAP_13A, TILEMAP_13B, TILEMAP_13C ; PORTRAIT_23 + dw TILESET_0A3, PALETTE_09E, TILEMAP_13D, TILEMAP_13E, TILEMAP_13F ; PORTRAIT_24 + dw TILESET_0A4, PALETTE_09F, TILEMAP_140, TILEMAP_141, TILEMAP_142 ; PORTRAIT_25 + dw TILESET_0A5, PALETTE_0A0, TILEMAP_143, TILEMAP_144, TILEMAP_145 ; PORTRAIT_26 + dw TILESET_0A6, PALETTE_0A1, TILEMAP_146, TILEMAP_147, TILEMAP_148 ; PORTRAIT_27 + dw TILESET_0A7, PALETTE_0A2, TILEMAP_149, TILEMAP_14A, TILEMAP_14B ; PORTRAIT_28 + dw TILESET_0A8, PALETTE_0A3, TILEMAP_14C, TILEMAP_14D, TILEMAP_14E ; PORTRAIT_29 + dw TILESET_0A9, PALETTE_0A4, TILEMAP_14F, TILEMAP_150, TILEMAP_151 ; PORTRAIT_2A + dw TILESET_0AA, PALETTE_0A5, TILEMAP_152, TILEMAP_153, TILEMAP_154 ; PORTRAIT_2B + dw TILESET_0AB, PALETTE_0A6, TILEMAP_155, TILEMAP_156, TILEMAP_157 ; PORTRAIT_2C + dw TILESET_0AC, PALETTE_0A7, TILEMAP_158, TILEMAP_159, TILEMAP_15A ; PORTRAIT_2D + dw TILESET_0AD, PALETTE_0A8, TILEMAP_15B, TILEMAP_15C, TILEMAP_15D ; PORTRAIT_2E + dw TILESET_0AE, PALETTE_0A9, TILEMAP_15E, TILEMAP_15F, TILEMAP_160 ; PORTRAIT_2F + dw TILESET_0AF, PALETTE_0AA, TILEMAP_161, TILEMAP_162, TILEMAP_163 ; PORTRAIT_30 + dw TILESET_0B0, PALETTE_0AB, TILEMAP_164, TILEMAP_165, TILEMAP_166 ; PORTRAIT_31 + dw TILESET_0B1, PALETTE_0AC, TILEMAP_167, TILEMAP_168, TILEMAP_169 ; PORTRAIT_32 + dw TILESET_0B2, PALETTE_0AD, TILEMAP_16A, TILEMAP_16B, TILEMAP_16C ; PORTRAIT_33 + dw TILESET_0B3, PALETTE_0AE, TILEMAP_16D, TILEMAP_16E, TILEMAP_16F ; PORTRAIT_34 + dw TILESET_0B4, PALETTE_0AF, TILEMAP_170, TILEMAP_171, TILEMAP_172 ; PORTRAIT_35 + dw TILESET_0B5, PALETTE_0B0, TILEMAP_173, TILEMAP_174, TILEMAP_175 ; PORTRAIT_36 + dw TILESET_0B6, PALETTE_0B1, TILEMAP_176, TILEMAP_177, TILEMAP_178 ; PORTRAIT_37 + dw TILESET_0B7, PALETTE_0B2, TILEMAP_179, TILEMAP_17A, TILEMAP_17B ; PORTRAIT_38 + dw TILESET_0B8, PALETTE_0B3, TILEMAP_17C, TILEMAP_17D, TILEMAP_17E ; PORTRAIT_39 + dw TILESET_0B9, PALETTE_0B4, TILEMAP_17F, TILEMAP_180, TILEMAP_181 ; PORTRAIT_3A + dw TILESET_0BA, PALETTE_0B5, TILEMAP_182, TILEMAP_183, TILEMAP_184 ; PORTRAIT_3B + dw TILESET_0BB, PALETTE_0B6, TILEMAP_185, TILEMAP_186, TILEMAP_187 ; PORTRAIT_3C + dw TILESET_0BC, PALETTE_0B7, TILEMAP_188, TILEMAP_189, TILEMAP_18A ; PORTRAIT_3D + dw TILESET_0BD, PALETTE_0B8, TILEMAP_18B, TILEMAP_18C, TILEMAP_18D ; PORTRAIT_3E + dw TILESET_0BE, PALETTE_0B9, TILEMAP_18E, TILEMAP_18F, TILEMAP_190 ; PORTRAIT_3F + dw TILESET_0BF, PALETTE_0BA, TILEMAP_191, TILEMAP_192, TILEMAP_193 ; PORTRAIT_40 + dw TILESET_0C0, PALETTE_0BB, TILEMAP_194, TILEMAP_195, TILEMAP_196 ; PORTRAIT_41 + dw TILESET_0C1, PALETTE_0BC, TILEMAP_197, TILEMAP_198, TILEMAP_199 ; PORTRAIT_42 + dw TILESET_0C2, PALETTE_0BD, TILEMAP_19A, TILEMAP_19B, TILEMAP_19C ; PORTRAIT_43 + dw TILESET_0C3, PALETTE_0BE, TILEMAP_19D, TILEMAP_19E, TILEMAP_19F ; PORTRAIT_44 + dw TILESET_0C4, PALETTE_0BF, TILEMAP_1A0, TILEMAP_1A1, TILEMAP_1A2 ; PORTRAIT_45 + dw TILESET_0C5, PALETTE_0C0, TILEMAP_1A3, TILEMAP_1A4, TILEMAP_1A5 ; PORTRAIT_46 + dw TILESET_0C6, PALETTE_0C1, TILEMAP_1A6, TILEMAP_1A7, TILEMAP_1A8 ; PORTRAIT_47 + dw TILESET_0C7, PALETTE_0C2, TILEMAP_1A9, TILEMAP_1AA, TILEMAP_1AB ; PORTRAIT_48 + dw TILESET_0C8, PALETTE_0C3, TILEMAP_1AC, TILEMAP_1AD, TILEMAP_1AE ; PORTRAIT_49 + dw TILESET_0C9, PALETTE_0C4, TILEMAP_1AF, TILEMAP_1B0, TILEMAP_1B1 ; PORTRAIT_4A + dw TILESET_0CA, PALETTE_0C5, TILEMAP_1B2, TILEMAP_1B3, TILEMAP_1B4 ; PORTRAIT_4B + dw TILESET_0CB, PALETTE_0C6, TILEMAP_1B5, TILEMAP_1B6, TILEMAP_1B7 ; PORTRAIT_4C + dw TILESET_0CC, PALETTE_0C7, TILEMAP_1B8, TILEMAP_1B9, TILEMAP_1BA ; PORTRAIT_4D + dw TILESET_0CD, PALETTE_0C8, TILEMAP_1BB, TILEMAP_1BC, TILEMAP_1BD ; PORTRAIT_4E + dw TILESET_0CE, PALETTE_0C9, TILEMAP_1BE, TILEMAP_1BF, TILEMAP_1C0 ; PORTRAIT_4F + dw TILESET_0CF, PALETTE_0CA, TILEMAP_1C1, TILEMAP_1C2, TILEMAP_1C3 ; PORTRAIT_50 + dw TILESET_0D0, PALETTE_0CB, TILEMAP_1C4, TILEMAP_1C5, TILEMAP_1C6 ; PORTRAIT_51 + dw TILESET_0D1, PALETTE_0CC, TILEMAP_1C7, TILEMAP_1C8, TILEMAP_1C9 ; PORTRAIT_52 + dw TILESET_0D2, PALETTE_0CD, TILEMAP_1CA, TILEMAP_1CB, TILEMAP_1CC ; PORTRAIT_53 + dw TILESET_0D3, PALETTE_0CE, TILEMAP_1CD, TILEMAP_1CE, TILEMAP_1CF ; PORTRAIT_54 + dw TILESET_0D4, PALETTE_0CF, TILEMAP_1D0, TILEMAP_1D1, TILEMAP_1D2 ; PORTRAIT_55 + dw TILESET_0D5, PALETTE_0D0, TILEMAP_1D3, TILEMAP_1D4, TILEMAP_1D5 ; PORTRAIT_56 + dw TILESET_0D6, PALETTE_0D1, TILEMAP_1D6, TILEMAP_1D7, TILEMAP_1D8 ; PORTRAIT_57 + dw TILESET_0D7, PALETTE_0D2, TILEMAP_1D9, TILEMAP_1DA, TILEMAP_1DB ; PORTRAIT_58 + dw TILESET_0D8, PALETTE_0D3, TILEMAP_1DC, TILEMAP_1DD, TILEMAP_1DE ; PORTRAIT_59 + dw TILESET_0D9, PALETTE_0D4, TILEMAP_1DF, TILEMAP_1E0, TILEMAP_1E1 ; PORTRAIT_5A + dw TILESET_0DA, PALETTE_0D5, TILEMAP_1E2, TILEMAP_1E3, TILEMAP_1E4 ; PORTRAIT_5B + dw TILESET_0DB, PALETTE_0D6, TILEMAP_1E5, TILEMAP_1E6, TILEMAP_1E7 ; PORTRAIT_5C + dw TILESET_0DC, PALETTE_0D7, TILEMAP_1E8, TILEMAP_1E9, TILEMAP_1EA ; PORTRAIT_5D + dw TILESET_085, PALETTE_080, TILEMAP_0E3, TILEMAP_0E4, TILEMAP_0E5 ; PORTRAIT_5E + dw TILESET_086, PALETTE_081, TILEMAP_0E6, TILEMAP_0E7, TILEMAP_0E8 ; PORTRAIT_5F diff --git a/src/engine/credits.asm b/src/engine/credits.asm new file mode 100644 index 0000000..49966c0 --- /dev/null +++ b/src/engine/credits.asm @@ -0,0 +1,55 @@ +RunCreditsCommands: +.start + ld hl, Credits +.loop + ld a, [hli] + cp CREDITSCMD_RESET + jr z, .start + cp CREDITS_END + ret z + push af + ld a, [hli] + ld [wCreditsCmdArg1], a + ld a, [hli] + ld [wCreditsCmdArg2], a + ld a, [hli] + ld [wCreditsCmdArg3], a + ld a, [hli] + ld [wCreditsCmdArg4], a + ld a, [hli] + ld [wCreditsCmdArg5], a + pop af + push hl + ld hl, .CommandFunctions + call CallMappedFunction + pop hl + jr .loop + +.CommandFunctions: + key_func CREDITSCMD_WAIT, CreditsCmd_Wait + key_func CREDITSCMD_DRAW_BOX, CreditsCmd_DrawBox + key_func CREDITSCMD_FADE_OUT, CreditsCmd_FadeOut + key_func CREDITSCMD_FADE_IN, CreditsCmd_FadeIn + key_func CREDITSCMD_SET_MUSIC, CreditsCmd_SetMusic + key_func CREDITSCMD_STOP_MUSIC, CreditsCmd_StopMusic + key_func CREDITSCMD_SHOW_COMPANIES, CreditsCmd_ShowCompanies + key_func CREDITSCMD_SHOW_TITLE, CreditsCmd_ShowTitle + key_func CREDITSCMD_SHOW_CARD, CreditsCmd_ShowCard + key_func CREDITSCMD_SHOW_SET, CreditsCmd_ShowSet + key_func CREDITSCMD_SHOW_PORTRAIT, CreditsCmd_ShowPortrait + key_func CREDITSCMD_PRINT_HEADER, CreditsCmd_PrintHeader + key_func CREDITSCMD_PRINT_TEXT, CreditsCmd_PrintBlack + key_func CREDITSCMD_SCROLL, CreditsCmd_Scroll + key_func CREDITSCMD_WAIT_INPUT, CreditsCmd_WaitInput + key_func CREDITSCMD_MUSIC_FADE_OUT, CreditsCmd_MusicFadeOut + key_func CREDITSCMD_SET_VOLUME, CreditsCmd_SetVolume + key_func CREDITSCMD_LOAD_MAP, CreditsCmd_LoadMap + key_func CREDITSCMD_INIT_OW, CreditsCmd_InitOW + key_func CREDITSCMD_DEINIT_OW, CreditsCmd_DeinitOW + key_func CREDITSCMD_LOAD_TILEMAP, CreditsCmd_LoadTilemap + key_func CREDITSCMD_LOAD_OW_OBJ, CreditsCmd_LoadOWObject + key_func CREDITSCMD_LOAD_OW_OBJ_IN_MAP, CreditsCmd_LoadOWObjectInMap + key_func CREDITSCMD_SHOW_TILE, CreditsCmd_ShowTile + db $ff ; end + +INCLUDE "data/credits.asm" diff --git a/src/engine/credits_commands.asm b/src/engine/credits_commands.asm new file mode 100644 index 0000000..b03ad3b --- /dev/null +++ b/src/engine/credits_commands.asm @@ -0,0 +1,445 @@ +_PlayCredits:: + push af + push bc + push de + push hl + call SetFrameFuncAndFadeFromWhite + call .Play + call FadeToWhiteAndUnsetFrameFunc + pop hl + pop de + pop bc + pop af + ret + +.Play: + call DisableLCD + call ClearSpriteAnimsAndSetInitialGraphicsConfiguration + call EnableLCD + xor a + ld [wde4e], a + ld [wde4f], a + ld [wde50], a + ld [wde51], a + ld [wde52], a + farcall RunCreditsCommands + call Func_3f61 + call Func_3f61 ; repeated + ret + +Func_138c6: + push af + push bc + push de + push hl + farcall SetAllBGPaletteFadeConfigsToEnabled + farcall SetAllOBPaletteFadeConfigsToEnabled + ld c, a + ld b, $00 + sla c + rl b + sla c + rl b + sla c + rl b + sla c + rl b ; *16 + ld hl, .PalFadeConfigs + add hl, bc + xor a +.loop_bg + bit 0, [hl] + jr z, .skip_bg + farcall SetBGPaletteFadeConfigToDisabled +.skip_bg + inc hl + inc a + cp NUM_BACKGROUND_PALETTES + jr c, .loop_bg + + xor a +.loop_ob + bit 0, [hl] + jr z, .skip_ob + farcall SetOBPaletteFadeConfigToDisabled +.skip_ob + inc hl + inc a + cp NUM_OBJECT_PALETTES + jr c, .loop_ob + pop hl + pop de + pop bc + pop af + ret + +; each entry represents 2 sets of data for BG and OB pals +; $1 means that pal fading will be disabled +.PalFadeConfigs + ; CREDITS_FADE_ALL + db $0, $0, $0, $0, $0, $0, $0, $0 ; bg pals + db $0, $0, $0, $0, $0, $0, $0, $0 ; ob pals + + ; CREDITS_FADE_BACKGROUND + db $1, $1, $0, $0, $0, $0, $0, $0 ; bg pals + db $0, $0, $0, $0, $0, $0, $0, $0 ; ob pals + + ; CREDITS_FADE_HEADER + db $1, $0, $1, $1, $1, $1, $1, $1 ; bg pals + db $0, $0, $0, $0, $0, $0, $0, $0 ; ob pals + + ; CREDITS_FADE_TEXT + db $0, $1, $1, $1, $1, $1, $1, $1 ; bg pals + db $0, $0, $0, $0, $0, $0, $0, $0 ; ob pals + + ; CREDITS_FADE_HEADER_TEXT + db $0, $0, $1, $1, $1, $1, $1, $1 ; bg pals + db $1, $1, $1, $1, $1, $1, $1, $1 ; ob pals + + ; CREDITS_FADE_BACKGROUND_TEXT + db $0, $1, $0, $0, $0, $0, $0, $0 ; bg pals + db $0, $0, $0, $0, $0, $0, $0, $0 ; ob pals + +CreditsCmd_Wait: + ld a, [wCreditsCmdArg1] + ld c, a + scf +.loop + call DoFrame + dec c + jr nz, .loop + ccf + ret + +CreditsCmd_DrawBox: + ld a, [wCreditsCmdArg2] + ld d, a + ld a, [wCreditsCmdArg3] + ld e, a + ld a, [wCreditsCmdArg4] + ld b, a + ld a, [wCreditsCmdArg5] + ld c, a + call FillBoxInBGMapWithZero + ret + +CreditsCmd_FadeOut: + ld a, [wCreditsCmdArg2] + ld b, a + ld a, [wCreditsCmdArg1] + call Func_138c6 + xor a + farcall StartPalFadeToBlackOrWhite + ret + +CreditsCmd_FadeIn: + ld a, [wCreditsCmdArg2] + ld b, a + ld a, [wCreditsCmdArg1] + call Func_138c6 + farcall SaveTargetFadePals + xor a + farcall StartPalFadeFromBlackOrWhite + ret + +CreditsCmd_SetMusic: + ld a, [wCreditsCmdArg1] + push af + ld a, a + call SetMusic + pop af + ret + +CreditsCmd_StopMusic: + call SetNoMusic + ret + +CreditsCmd_ShowCompanies: + ld b, BANK(.BGGraphics) + ld hl, .BGGraphics + lb de, 0, 0 + ld c, $00 + call LoadBGGraphics + ret + +.BGGraphics: + dw TILESET_1D0, PALETTE_16A, TILEMAP_224 + +CreditsCmd_ShowTitle: + lb de, 0, 1 + xor a + call LoadTitleScreenGraphics + lb de, 1, 6 + ld a, $01 + call LoadTitleScreenGraphics + lb de, 1, 9 + ld a, $02 + call LoadTitleScreenGraphics + lb de, 0, 14 + ld a, $04 + call LoadTitleScreenGraphics + ret + +CreditsCmd_ShowCard: + ld a, [wCreditsCmdArg2] + ld b, a + ld a, [wCreditsCmdArg3] + ld c, a + ld a, [wCreditsCmdArg4] + ld e, a + ld a, [wCreditsCmdArg5] + ld d, a + push af + push bc + push de + push hl + push bc + ld c, $80 + call LoadCardGfx_FromCardID + pop de + ld c, $2 + call CopyCardPalettesToBGPals + ld b, $80 + ld c, $2 + call DrawLoadedCard + pop hl + pop de + pop bc + pop af + ret + +CreditsCmd_ShowSet: + ld a, [wCreditsCmdArg2] + ld b, a + ld a, [wCreditsCmdArg3] + ld c, a + ld a, [wCreditsCmdArg1] + add SCENE_INTRO_BASE_SET + call LoadScene + ret + +CreditsCmd_ShowPortrait: + ld a, [wCreditsCmdArg2] + ld b, a + ld a, [wCreditsCmdArg3] + ld c, a + ld a, [wCreditsCmdArg5] + ld e, a + ld a, [wCreditsCmdArg1] + call Func_3ab2 + ret + +CreditsCmd_PrintHeader: + ld a, [wCreditsCmdArg2] + ld d, a + ld a, [wCreditsCmdArg3] + ld e, a + ld a, [wCreditsCmdArg4] + ld l, a + ld a, [wCreditsCmdArg5] + ld h, a + call Func_35af + ld b, d + ld c, e + call BCCoordToBGMap0Address + ld a, [wCreditsCmdArg1] + ld b, a ; length + ld c, 1 ; num rows + ld a, BANK("VRAM1") + call BankswitchVRAM +.loop_row + push bc + push hl +.loop_tiles + di + call WaitForLCDOff + ld a, [hl] + ld a, $01 + ld [hli], a + ei + dec b + jr nz, .loop_tiles + pop hl + ld de, BG_MAP_WIDTH + add hl, de + pop bc + dec c + jr nz, .loop_row + xor a + call BankswitchVRAM + bank1call SetFontAndTextBoxFrameColor + ret + +CreditsCmd_PrintBlack: + ld a, [wCreditsCmdArg2] + ld d, a + ld a, [wCreditsCmdArg3] + ld e, a + ld a, [wCreditsCmdArg4] + ld l, a + ld a, [wCreditsCmdArg5] + ld h, a + call Func_35af + bank1call SetFontAndTextBoxFrameColor + ret + +CreditsCmd_Scroll: + ld a, [wCreditsCmdArg1] + ld [wde52], a + ld a, [wCreditsCmdArg2] + ld [wde4f], a + ld a, [wCreditsCmdArg3] + ld [wde4e], a + ld a, [wCreditsCmdArg4] + ld [wde51], a + ld a, [wCreditsCmdArg5] + ld [wde50], a + ; this won't work since the frame function + ; doesn't actually call wde69 + ld hl, Func_3e7a + call Func_3f6b + ret + +Func_13ac1:: + ; current scroll position + ld a, [wde4f] + ld b, a + ld a, [wde51] + ld c, a + or b + ret z + + ; scrolling speed + ld a, [wde52] + ld e, a + + ; x scrolling + ld a, [wde4e] + ld d, a + ld a, b + and a + call nz, .ApplyScrollingOffset + ld [wde4f], a + ldh [hSCX], a + + ; y scrolling + ld a, [wde50] + ld d, a + ld a, c + and a + call nz, .ApplyScrollingOffset + ld [wde51], a + ldh [hSCY], a + ret + +.ApplyScrollingOffset: + bit 7, d + jr nz, .subtract + add e + ret +.subtract + sub e + ret + +CreditsCmd_WaitInput: + ld a, [wCreditsCmdArg1] + ld c, a + call Func_10221 + ret + +CreditsCmd_MusicFadeOut: + ld c, $08 +.loop + ld a, c + dec a + push af + ld a, a + call Func_3d3a + pop af + ld b, 20 +.loop_wait + call DoFrame + dec b + jr nz, .loop_wait + dec c + jr nz, .loop + ret + +CreditsCmd_SetVolume: + ld a, [wCreditsCmdArg1] + push af + ld a, a + call Func_3d3a + pop af + ret + +CreditsCmd_LoadMap: + ld a, [wCreditsCmdArg2] + ld b, a + ld a, [wCreditsCmdArg3] + ld c, a + farcall Func_12c206 + ret + +CreditsCmd_InitOW: + call Func_111f6 + call Func_1109f + ret + +CreditsCmd_DeinitOW: + call Func_110a8 + ret + +CreditsCmd_LoadTilemap: + ld a, [wCreditsCmdArg2] + ld b, a + ld a, [wCreditsCmdArg3] + ld c, a + ld a, [wCreditsCmdArg4] + ld d, a + ld a, [wCreditsCmdArg5] + ld e, a + farcall Func_12c0ce + ret + +CreditsCmd_LoadOWObject: + ld a, [wCreditsCmdArg2] + ld b, a + ld a, [wCreditsCmdArg4] + ld d, a + ld a, [wCreditsCmdArg5] + ld e, a + ld a, [wCreditsCmdArg1] + and a + jr nz, .got_ow_obj + call GetPlayerGender +.got_ow_obj + call LoadOWObject + ret + +CreditsCmd_LoadOWObjectInMap: + ld a, [wCreditsCmdArg2] + ld b, a + ld a, [wCreditsCmdArg4] + ld d, a + ld a, [wCreditsCmdArg5] + ld e, a + ld a, [wCreditsCmdArg1] + and a + jr nz, .got_ow_object + call GetPlayerGender +.got_ow_object + call LoadOWObjectInMap + ret + +CreditsCmd_ShowTile: + ld a, [wCreditsCmdArg2] + ld b, a + ld a, [wCreditsCmdArg3] + ld c, a + ld a, [wCreditsCmdArg4] + ld d, a + ld a, [wCreditsCmdArg5] + ld e, a + call Func_383b + ret diff --git a/src/engine/game_loop.asm b/src/engine/game_loop.asm index 6bc32a1..4087221 100644 --- a/src/engine/game_loop.asm +++ b/src/engine/game_loop.asm @@ -42,8 +42,9 @@ GameLoop:: .reset_game jp Reset +; unreferenced? Func_405b: - farcall $6, $58f8 + farcall InitSaveData ret SetupResetBackUpRAMScreen: diff --git a/src/gfx.asm b/src/gfx.asm index 5d38e69..3eadefe 100644 --- a/src/gfx.asm +++ b/src/gfx.asm @@ -679,7 +679,7 @@ Tileset066:: Tileset145:: dw 12 ; length - INCBIN "gfx/tilesets/tileset145.2bpp" + INCBIN "gfx/overworld_sprites/tileset145.2bpp" Tileset17E:: dw 2 ; length @@ -823,7 +823,7 @@ Tileset087:: Tileset146:: dw 12 ; length - INCBIN "gfx/tilesets/tileset146.2bpp" + INCBIN "gfx/overworld_sprites/tileset146.2bpp" Tileset158:: dw 7 ; length @@ -896,6 +896,15 @@ Palette05F:: rgb 7, 7, 6 rgb 0, 0, 0 +OWAnimation10:: + db 1 ; length + + ; durations + db 0 + + ; data + ow_anim $45, 1, OW_FRAMES_0C8 + SECTION "Tilesets 16", ROMX Tileset091:: @@ -1721,7 +1730,7 @@ Tileset13F:: Tileset147:: dw 37 ; length - INCBIN "gfx/tilesets/tileset147.2bpp" + INCBIN "gfx/overworld_sprites/tileset147.2bpp" Tileset14E:: dw 25 ; length @@ -2464,6 +2473,15 @@ INCLUDE "data/framesets1.asm" SECTION "Framesets 2", ROMX INCLUDE "data/framesets2.asm" +SECTION "OW Tile Frames 1", ROMX +INCLUDE "data/ow_tile_frames1.asm" + +SECTION "OW Animations", ROMX +INCLUDE "data/ow_animations.asm" + +SECTION "OW Tile Frames 2", ROMX +INCLUDE "data/ow_tile_frames2.asm" + SECTION "Palettes 2", ROMX INCLUDE "data/palettes2.asm" diff --git a/src/gfx/hand_cards.png b/src/gfx/hand_cards.png new file mode 100644 index 0000000000000000000000000000000000000000..2a1183e93bfdbe3cb497edd5e62718b386d38ff1 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx;Bp3=bcE|v!2u~NskcwN$Kk6GE+8>txXa9|7 z{&`)y^9B3X=NmW2&c7ueL-lR` t>|uY>fBbQ0KJjb6L