diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2016-08-27 21:43:34 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2016-08-27 21:43:34 -0400 |
commit | 67a057d573b9c9e716f5afae5c6049f86836adbe (patch) | |
tree | 8cad114d5fa558000dcc38b412d917ffd4cf2f93 | |
parent | ed4907a014e1cf3ee3d085f8660d483a85cc577d (diff) | |
parent | 382f99c35ee2e8b81847a18797815a2336971e30 (diff) |
Merge branch 'master' of github.com:twitchplayspokemon/pokeruby
157 files changed, 4624 insertions, 967 deletions
diff --git a/asm/m4a_1.s b/asm/m4a_1.s index 3f079d0ec..2b548cacc 100644 --- a/asm/m4a_1.s +++ b/asm/m4a_1.s @@ -1549,24 +1549,24 @@ ply_note: ldr r1, =gClockTable adds r0, r1 ldrb r0, [r0] - strb r0, [r5, 0x4] + strb r0, [r5, o_MusicPlayerTrack_gateTime] ldr r3, [r5, o_MusicPlayerTrack_cmdPtr] ldrb r0, [r3] cmp r0, 0x80 - bcs _081DDB46 + bhs _081DDB46 strb r0, [r5, o_MusicPlayerTrack_key] adds r3, 0x1 ldrb r0, [r3] cmp r0, 0x80 - bcs _081DDB44 - strb r0, [r5, 0x6] + bhs _081DDB44 + strb r0, [r5, o_MusicPlayerTrack_velocity] adds r3, 0x1 ldrb r0, [r3] cmp r0, 0x80 - bcs _081DDB44 - ldrb r1, [r5, 0x4] + bhs _081DDB44 + ldrb r1, [r5, o_MusicPlayerTrack_gateTime] adds r1, r0 - strb r1, [r5, 0x4] + strb r1, [r5, o_MusicPlayerTrack_gateTime] adds r3, 0x1 _081DDB44: str r3, [r5, o_MusicPlayerTrack_cmdPtr] @@ -1574,16 +1574,16 @@ _081DDB46: movs r0, 0 str r0, [sp, 0x14] adds r4, r5, 0 - adds r4, 0x24 + adds r4, o_MusicPlayerTrack_ToneData_type ldrb r2, [r4] - movs r0, 0xC0 + movs r0, TONEDATA_TYPE_RHY | TONEDATA_TYPE_SPL tst r0, r2 beq _081DDB98 - ldrb r3, [r5, 0x5] - movs r0, 0x40 + ldrb r3, [r5, o_MusicPlayerTrack_key] + movs r0, TONEDATA_TYPE_SPL tst r0, r2 beq _081DDB66 - ldr r1, [r5, 0x2C] + ldr r1, [r5, o_MusicPlayerTrack_ToneData_keySplitTable] adds r1, r3 ldrb r0, [r1] b _081DDB68 @@ -1593,7 +1593,7 @@ _081DDB68: lsls r1, r0, 1 adds r1, r0 lsls r1, 2 - ldr r0, [r5, 0x28] + ldr r0, [r5, o_MusicPlayerTrack_ToneData_wav] adds r1, r0 mov r9, r1 mov r6, r9 diff --git a/asm/rom3.s b/asm/rom3.s index 0b329b8f7..0c51eac84 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -9229,7 +9229,7 @@ _0800DE88: _0800DED0: .4byte 0x020239f8 _0800DED4: .4byte 0x03002970 _0800DED8: .4byte gUnknown_081F9680 -_0800DEDC: .4byte gUnknown_081F9688 +_0800DEDC: .4byte gUnknown_081F9680 + 0x8 _0800DEE0: ldr r0, _0800DF84 ldr r5, _0800DF88 diff --git a/asm/rom5.s b/asm/rom5.s index 2362dc989..020156d0b 100644 --- a/asm/rom5.s +++ b/asm/rom5.s @@ -272462,7 +272462,7 @@ _080FF81C: .4byte gUnknown_083EC954 _080FF820: .4byte 0x020391a8 _080FF824: .4byte 0x02020004 _080FF828: .4byte 0x03004880 -_080FF82C: .4byte gUnknown_083EC93C +_080FF82C: .4byte gSpriteTemplate_83EC93C _080FF830: .4byte gUnknown_083EC900 _080FF834: ldr r2, _080FF888 diff --git a/asm/rom_8040EB4.s b/asm/rom_8040EB4.s index 4db808c2b..d9a718337 100644 --- a/asm/rom_8040EB4.s +++ b/asm/rom_8040EB4.s @@ -5854,7 +5854,7 @@ _08043C20: .4byte 0xfffffc00 _08043C24: .4byte sub_8043D5C _08043C28: .4byte 0x02024a72 _08043C2C: .4byte gSpriteTemplate_820A56C -_08043C30: .4byte gUnknown_0820A684 +_08043C30: .4byte gSubspriteTables_820A684 _08043C34: .4byte 0x06010000 _08043C38: .4byte REG_BG0HOFS thumb_func_end battle_make_oam_normal_battle @@ -7518,7 +7518,7 @@ _08044940: .4byte gUnknown_0820A764 _08044944: .4byte gUnknown_0820A774 _08044948: .4byte gSpriteTemplate_820A7A4 _0804494C: .4byte 0x02020004 -_08044950: .4byte gUnknown_0820A6E4 +_08044950: .4byte gSubspriteTables_820A6E4 _08044954: ldrh r0, [r4, 0x20] adds r0, 0x60 @@ -8160,7 +8160,7 @@ _08044DFA: _08044E3C: .4byte sub_8045110 _08044E40: .4byte 0x02020004 _08044E44: .4byte sub_8045048 -_08044E48: .4byte gUnknown_0820A6EC +_08044E48: .4byte gSubspriteTables_820A6EC _08044E4C: .4byte 0x03004b20 _08044E50: .4byte sub_8044E74 _08044E54: diff --git a/constants/gba_constants.s b/constants/gba_constants.s index accd16007..412858935 100644 --- a/constants/gba_constants.s +++ b/constants/gba_constants.s @@ -15,6 +15,17 @@ .set IWRAM_START, 0x03000000 .set IWRAM_END, IWRAM_START + 0x8000 + .set PLTT, 0x5000000 + .set BG_PLTT, PLTT + .set OBJ_PLTT, PLTT + 0x200 + + .set VRAM, 0x6000000 + .set BG_VRAM, VRAM + .set OBJ_VRAM0, VRAM + 0x10000 @ text-mode BG + .set OBJ_VRAM1, VRAM + 0x14000 @ bitmap-mode BG + + .set OAM, 0x7000000 + .set SOUND_INFO_PTR, IWRAM_END - 0x10 .set INTR_VECTOR, IWRAM_END - 0x4 diff --git a/constants/m4a_constants.s b/constants/m4a_constants.s index 4b05bc63d..b424a9230 100644 --- a/constants/m4a_constants.s +++ b/constants/m4a_constants.s @@ -2,6 +2,11 @@ .equiv PCM_DMA_BUF_SIZE, 1584 + .equiv TONEDATA_TYPE_CGB, 0x07 + .equiv TONEDATA_TYPE_FIX, 0x08 + .equiv TONEDATA_TYPE_SPL, 0x40 @ key split + .equiv TONEDATA_TYPE_RHY, 0x80 @ rhythm + .macro struct_begin .struct 0 .endm @@ -81,9 +86,9 @@ struct_field o_MusicPlayerTrack_wai, 1 struct_field o_MusicPlayerTrack_patP, 1 struct_field o_MusicPlayerTrack_repN, 1 - struct_field o_MusicPlayerTrack_gat, 1 + struct_field o_MusicPlayerTrack_gateTime, 1 struct_field o_MusicPlayerTrack_key, 1 - struct_field o_MusicPlayerTrack_vel, 1 + struct_field o_MusicPlayerTrack_velocity, 1 struct_field o_MusicPlayerTrack_run, 1 struct_field o_MusicPlayerTrack_keyM, 1 struct_field o_MusicPlayerTrack_pitM, 1 @@ -125,3 +130,5 @@ struct_field o_MusicPlayerTrack_cmdPtr, 4 struct_field o_MusicPlayerTrack_patS, 12 struct_field MusicPlayerTrack_size, 0 + + .equiv o_MusicPlayerTrack_ToneData_keySplitTable, o_MusicPlayerTrack_ToneData_attack diff --git a/data/data2.s b/data/data2.s index 127e27da8..df7f91320 100644 --- a/data/data2.s +++ b/data/data2.s @@ -899,15 +899,49 @@ gBattleTerrainTable:: @ 81F95AC .4byte gBattleTerrainAnimTilemap_Building .4byte gBattleTerrainPalette_Plain + .align 2 gUnknown_081F9674:: @ 81F9674 - .incbin "baserom.gba", 0x001f9674, 0xc + .4byte REG_BG3HOFS + .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1 + .4byte 1 .align 2 gUnknown_081F9680:: @ 81F9680 - obj_tiles 0x030041d0, 32, 0x1013 - -gUnknown_081F9688:: @ 81F9688 - .incbin "baserom.gba", 0x001f9688, 0x40 + .4byte 0x030041D0 + .2byte 0x20 + .byte 0x13 + .byte 0x10 + .4byte BG_VRAM + 0xE104 + + .4byte 0x03004250 + .2byte 0x40 + .byte 0x13 + .byte 0x10 + .4byte BG_VRAM + 0xF104 + + .4byte 0x030041D0 + .2byte 0x60 + .byte 0x13 + .byte 0x30 + .4byte BG_VRAM + 0xE204 + + .4byte 0x03004250 + .2byte 0x80 + .byte 0x13 + .byte 0x30 + .4byte BG_VRAM + 0xF204 + + .4byte 0x030041D0 + .2byte 0x20 + .byte 0x13 + .byte 0x18 + .4byte BG_VRAM + 0xE1C4 + + .4byte 0x03004250 + .2byte 0x40 + .byte 0x13 + .byte 0x18 + .4byte BG_VRAM + 0xF1C4 gUnknown_081F96C8:: @ 81F96C8 .string "ヌケニン$" @ "Nukenin" (Shedinja) @@ -929,7 +963,23 @@ gOamData_81F96F0:: @ 81F96F0 .2byte 0x2800 .align 2 - .incbin "baserom.gba", 0x001f96f8, 0x28 +gSpriteAnim_81F96F8:: @ 81F96F8 + obj_image_anim_frame 0, 5 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnimTable_81F9700:: @ 81F9700 + .4byte gSpriteAnim_81F96F8 + + .align 2 +gSpriteAffineAnim_81F9704:: @ 81F9704 + obj_rot_scal_anim_frame 0xFFF0, 0x0, 0, 4 + obj_rot_scal_anim_frame 0x0, 0x0, 0, 60 + obj_rot_scal_anim_jump 1 + + .align 2 +gSpriteAffineAnimTable_81F971C:: @ 81F971C + .4byte gSpriteAffineAnim_81F9704 @ 81F9720 .include "data/type_effectiveness.s" @@ -1008,16 +1058,31 @@ gUnknown_081FA6D4:: @ 81FA6D4 .4byte gStatusConditionString_LoveJpn, BattleText_Love gUnknown_081FA70C:: @ 81FA70C - .incbin "baserom.gba", 0x001fa70c, 0xf + .byte 0, 0, 0 + .byte 3, 5, 0 + .byte 2, 3, 0 + .byte 1, 2, 0 + .byte 1, 1, 0 gUnknown_081FA71B:: @ 81FA71B - .incbin "baserom.gba", 0x001fa71b, 0x4 + .byte 4, 3, 2, 1 gUnknown_081FA71F:: @ 81FA71F - .incbin "baserom.gba", 0x001fa71f, 0x5 + .byte 4, 4, 4, 4 + .align 1 gUnknown_081FA724:: @ 81FA724 - .incbin "baserom.gba", 0x001fa724, 0x18 + .2byte 0x2D + .2byte 0x2E + .2byte 0x2F + .2byte 0x30 + .2byte 0x67 + .2byte 0xAD + .2byte 0xFD + .2byte 0x13F + .2byte 0x140 + .2byte 0x130 + .2byte 0xFFFF .align 2 gUnknown_081FA73C:: @ 81FA73C @@ -1894,7 +1959,7 @@ gUnknown_08209AD4:: @ 8209AD4 EggPalette:: @ 8209AD8 .incbin "graphics/pokemon/egg/palette.gbapal" -EggHatchTiles: @ 8209AF8 +EggHatchTiles:: @ 8209AF8 .incbin "graphics/misc/egg_hatch.4bpp" EggShardTiles:: @ 820A2F8 @@ -2078,16 +2143,80 @@ gSpriteTemplate_820A5B4:: @ 820A5B4 spr_template 55047, 55044, gOamData_820A564, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8043CEC .align 2 - .incbin "baserom.gba", 0x0020a5cc, 0xb8 +gSubspriteTable_820A5CC:: @ 820A5CC + subsprite -16, 0, 1, 0, 64x32 + subsprite 48, 0, 1, 32, 32x32 + subsprite -16, 32, 1, 48, 32x8 + subsprite 16, 32, 1, 52, 32x8 + subsprite 48, 32, 1, 56, 32x8 + + .align 2 +gSubspriteTable_820A5F4:: @ 820A5F4 + subsprite -16, 0, 1, 64, 64x32 + subsprite 48, 0, 1, 96, 32x32 + subsprite -16, 32, 1, 112, 32x8 + subsprite 16, 32, 1, 116, 32x8 + subsprite 48, 32, 1, 120, 32x8 + + .align 2 +gSubspriteTable_820A61C:: @ 820A61C + subsprite -16, 0, 1, 0, 64x32 + subsprite 48, 0, 1, 32, 32x32 + + .align 2 +gSubspriteTable_820A62C:: @ 820A62C + subsprite -16, 0, 1, 0, 64x32 + subsprite 48, 0, 1, 32, 32x32 + + .align 2 +gSubspriteTable_820A63C:: @ 820A63C + subsprite -16, 0, 1, 0, 32x8 + subsprite 16, 0, 1, 4, 32x8 -gUnknown_0820A684:: @ 820A684 - .incbin "baserom.gba", 0x0020a684, 0x60 + .align 2 +gSubspriteTable_820A64C:: @ 820A64C + subsprite -16, 0, 1, 0, 32x8 + subsprite 16, 0, 1, 4, 32x8 + subsprite -32, 0, 1, 8, 8x8 -gUnknown_0820A6E4:: @ 820A6E4 - .incbin "baserom.gba", 0x0020a6e4, 0x8 +@ unreferenced + .align 2 + .4byte 5, gSubspriteTable_820A5CC + .4byte 2, gSubspriteTable_820A61C + .4byte 5, gSubspriteTable_820A5F4 + .4byte 2, gSubspriteTable_820A62C -gUnknown_0820A6EC:: @ 820A6EC - .incbin "baserom.gba", 0x0020a6ec, 0x68 + .align 2 +gSubspriteTables_820A684:: @ 820A684 + .4byte 2, gSubspriteTable_820A63C + .4byte 3, gSubspriteTable_820A64C + + .align 2 +gSubspriteTable_820A694:: @ 820A694 + subsprite -96, 0, 1, 0, 32x8 + subsprite -64, 0, 1, 4, 32x8 + subsprite -32, 0, 1, 8, 32x8 + subsprite 0, 0, 1, 12, 32x8 + + .align 2 +gSubspriteTable_820A6B4:: @ 820A6B4 + subsprite -96, 0, 1, 0, 32x8 + subsprite -64, 0, 1, 4, 32x8 + subsprite -32, 0, 1, 8, 32x8 + subsprite 0, 0, 1, 8, 32x8 + subsprite 32, 0, 1, 8, 32x8 + subsprite 64, 0, 1, 12, 32x8 + + .align 2 +gSubspriteTables_820A6E4:: @ 820A6E4 + .4byte 4, gSubspriteTable_820A694 + + .align 2 +gSubspriteTables_820A6EC:: @ 820A6EC + .4byte 6, gSubspriteTable_820A6B4 + +@ unreferenced; possibly tiles + .incbin "baserom.gba", 0x0020a6f4, 0x60 .align 2 gUnknown_0820A754:: @ 820A754 @@ -2104,8 +2233,16 @@ gUnknown_0820A774:: @ 820A774 obj_pal gUnknown_08D1214C, 0xd712 obj_pal gUnknown_08D1214C, 0xd713 + .align 2 gUnknown_0820A784:: @ 820A784 - .incbin "baserom.gba", 0x0020a784, 0x18 + obj_tiles Tiles_D129AC, 0x80, 0xd714 + obj_tiles Tiles_D129AC, 0x80, 0xd715 + + .align 2 +gOamData_820A794:: @ 820A794 + .2byte 0x4000 + .2byte 0xC000 + .2byte 0x0400 .align 2 gOamData_820A79C:: @ 820A79C @@ -2129,53 +2266,107 @@ gSpriteTemplate_820A7D4:: @ 820A7D4 gSpriteTemplate_820A7EC:: @ 820A7EC spr_template 55061, 55059, gOamData_820A79C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_804507C + .align 2 gUnknown_0820A804:: @ 820A804 - .incbin "baserom.gba", 0x0020a804, 0x8 + .4byte OBJ_VRAM0 + 0x940 + .4byte OBJ_VRAM0 + 0x960 + .align 2 gUnknown_0820A80C:: @ 820A80C - .incbin "baserom.gba", 0x0020a80c, 0x8 + .4byte OBJ_VRAM0 + 0x520 + .4byte OBJ_VRAM0 + 0x540 + .align 2 gUnknown_0820A814:: @ 820A814 - .incbin "baserom.gba", 0x0020a814, 0x8 + .4byte OBJ_VRAM0 + 0x540 + .4byte OBJ_VRAM0 + 0x560 gUnknown_0820A81C:: @ 820A81C - .incbin "baserom.gba", 0x0020a81c, 0x20 + .string "{COLOR DARK_GREY}{HIGHLIGHT RED} " + .align 2 gUnknown_0820A83C:: @ 820A83C - .incbin "baserom.gba", 0x0020a83c, 0xc + .4byte OBJ_VRAM0 + 0x3E0 + .4byte OBJ_VRAM0 + 0xB00 + .4byte OBJ_VRAM0 + 0xB20 + .align 2 gUnknown_0820A848:: @ 820A848 - .incbin "baserom.gba", 0x0020a848, 0xc + .4byte OBJ_VRAM0 + 0x2C0 + .4byte OBJ_VRAM0 + 0x2E0 + .4byte OBJ_VRAM0 + 0x600 + .align 2 gUnknown_0820A854:: @ 820A854 - .incbin "baserom.gba", 0x0020a854, 0x8 + .4byte OBJ_VRAM0 + 0xB40 + .4byte OBJ_VRAM0 + 0xB60 + .align 2 gUnknown_0820A85C:: @ 820A85C - .incbin "baserom.gba", 0x0020a85c, 0x8 + .4byte OBJ_VRAM0 + 0x620 + .4byte OBJ_VRAM0 + 0x640 gUnknown_0820A864:: @ 820A864 - .incbin "baserom.gba", 0x0020a864, 0x18 + .string "{COLOR DARK_GREY}{HIGHLIGHT RED} /$" + .align 2 gUnknown_0820A87C:: @ 820A87C - .incbin "baserom.gba", 0x0020a87c, 0x18 + .4byte OBJ_VRAM0 + .4byte OBJ_VRAM0 + 0x20 + .4byte OBJ_VRAM0 + 0x40 + .4byte OBJ_VRAM0 + 0x60 + .4byte OBJ_VRAM0 + 0x80 + .4byte OBJ_VRAM0 + 0xA0 + .align 2 gUnknown_0820A894:: @ 820A894 - .incbin "baserom.gba", 0x0020a894, 0x8 + .4byte OBJ_VRAM0 + 0xC0 + .4byte OBJ_VRAM0 + 0xE0 gUnknown_0820A89C:: @ 820A89C - .incbin "baserom.gba", 0x0020a89c, 0x14 + .string "{COLOR DARK_GREY}{HIGHLIGHT TRANSPARENT} " gUnknown_0820A8B0:: @ 820A8B0 - .incbin "baserom.gba", 0x0020a8b0, 0x4 + .string "{HIGHLIGHT RED}$" + .align 2 gUnknown_0820A8B4:: @ 820A8B4 - .incbin "baserom.gba", 0x0020a8b4, 0x28 + .4byte OBJ_VRAM0 + 0x40 + .4byte OBJ_VRAM0 + 0x60 + .4byte OBJ_VRAM0 + 0x80 + .4byte OBJ_VRAM0 + 0xA0 + .4byte OBJ_VRAM0 + 0xC0 + .4byte OBJ_VRAM0 + 0xE0 + .4byte OBJ_VRAM0 + 0x800 + .4byte OBJ_VRAM0 + 0x820 + .4byte OBJ_VRAM0 + 0x840 + .4byte OBJ_VRAM0 + 0x860 + .align 2 gUnknown_0820A8DC:: @ 820A8DC - .incbin "baserom.gba", 0x0020a8dc, 0x28 + .4byte OBJ_VRAM0 + 0x20 + .4byte OBJ_VRAM0 + 0x40 + .4byte OBJ_VRAM0 + 0x60 + .4byte OBJ_VRAM0 + 0x80 + .4byte OBJ_VRAM0 + 0xA0 + .4byte OBJ_VRAM0 + 0xC0 + .4byte OBJ_VRAM0 + 0xE0 + .4byte OBJ_VRAM0 + 0x400 + .4byte OBJ_VRAM0 + 0x420 + .4byte OBJ_VRAM0 + 0x440 + .align 2 gUnknown_0820A904:: @ 820A904 - .incbin "baserom.gba", 0x0020a904, 0x28 + .4byte OBJ_VRAM0 + 0x40 + .4byte OBJ_VRAM0 + 0x60 + .4byte OBJ_VRAM0 + 0x80 + .4byte OBJ_VRAM0 + 0xA0 + .4byte OBJ_VRAM0 + 0xC0 + .4byte OBJ_VRAM0 + 0xE0 + .4byte OBJ_VRAM0 + 0x400 + .4byte OBJ_VRAM0 + 0x420 + .4byte OBJ_VRAM0 + 0x440 + .4byte OBJ_VRAM0 + 0x460 .align 2 gUnknown_0820A92C:: @ 820A92C @ graphics @@ -2214,7 +2405,24 @@ gOamData_820A9EC:: @ 820A9EC .2byte 0x0800 .align 2 - .incbin "baserom.gba", 0x0020a9f4, 0x20 +gSpriteAnim_820A9F4: @ 820A9F4 + obj_image_anim_frame 0, 5 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnim_820A9FC: @ 820A9FC + obj_image_anim_frame 4, 1 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnim_820AA04: @ 820AA04 + obj_image_anim_frame 8, 5 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnim_820AA0C: @ 820AA0C + obj_image_anim_frame 12, 1 + obj_image_anim_jump 0 .align 2 gSpriteAnim_820AA14:: @ 820AA14 @@ -2239,8 +2447,11 @@ gSpriteAnimTable_820AA34:: @ 820AA34 .4byte gSpriteAnim_820AA1C .4byte gSpriteAnim_820AA28 - .align 2 - .incbin "baserom.gba", 0x0020aa40, 0x10 + @ unused? + .4byte gSpriteAnim_820A9F4 + .4byte gSpriteAnim_820AA04 + .4byte gSpriteAnim_820A9FC + .4byte gSpriteAnim_820AA0C .align 2 gSpriteAffineAnim_820AA50:: @ 820AA50 @@ -2473,11 +2684,11 @@ gUnknown_0820C33C:: .string "$" gUnknown_0820C33D:: @ 820C33D -OtherText_MaleSymbol3: +OtherText_MaleSymbol3:: .string "♂$" gUnknown_0820C33F:: @ 820C33F -OtherText_FemaleSymbol3: +OtherText_FemaleSymbol3:: .string "♀$" gUnknown_0820C341:: @ 820C341 @@ -2916,8 +3127,11 @@ gUnknown_08216303:: @ 8216303 .byte 160 .byte 0 + .align 2 gUnknown_08216308:: @ 8216308 - .incbin "baserom.gba", 0x00216308, 0xc + .4byte sub_804F8C8 + .4byte sub_804F9F4 + .4byte sub_804FB1C .align 2 gOamData_8216314:: @ 8216314 @@ -3218,9 +3432,9 @@ gUnknown_082165F8:: @ 82165F8 .incbin "baserom.gba", 0x002165f8, 0x2 gUnknown_082165FA:: @ 82165FA -OtherText_BPM: +OtherText_BPM:: .string "BPM$" -OtherText_Dash: +OtherText_Dash:: .string "-$" gUnknown_08216600:: @ 8216600 @@ -7285,8 +7499,21 @@ gUnknown_083762F0:: @ 83762F0 .4byte gStringVar2 .4byte gStringVar3 + .align 2 gUnknown_083762FC:: @ 83762FC - .incbin "baserom.gba", 0x003762fc, 0x68 + .4byte 0x1, sub_806936C + .4byte 0x2, sub_8069378 + .4byte 0x3, sub_8069384 + .4byte 0x4, sub_8069390 + .4byte 0x5, sub_806939C + .4byte 0x6, sub_80693A8 + .4byte 0x7, sub_80693B4 + .4byte 0x8, sub_80693C0 + .4byte 0x9, sub_80693CC + .4byte 0xa, sub_80693D8 + .4byte 0xb, sub_80693E4 + .4byte 0x14, sub_80693F0 + .4byte 0x15, sub_80693FC .align 2 gUnknown_08376364:: @ 8376364 @@ -7332,15 +7559,17 @@ gSpriteImage_8376484:: @ 8376484 .incbin "graphics/unknown_sprites/83764AC/1.4bpp" .align 2 - .incbin "baserom.gba", 0x003764a4, 0x8 +Palette_3764A4: @ 83764A4 + .incbin "baserom.gba", 0x3764a4, 0x8 .align 2 gSpriteImageTable_83764AC:: @ 83764AC obj_frame_tiles gSpriteImage_8376464, 0x20 obj_frame_tiles gSpriteImage_8376484, 0x20 + .align 2 gUnknown_083764BC:: @ 83764BC - .incbin "baserom.gba", 0x003764bc, 0x8 + obj_pal Palette_3764A4, 0x1000 .align 2 gSpriteAnim_83764C4:: @ 83764C4 @@ -7365,7 +7594,7 @@ gSpriteAnimTable_83764DC:: @ 83764DC .align 2 gSpriteTemplate_83764E8:: @ 83764E8 - spr_template 0xFFFF, 4096, gOamData_837645C, gSpriteAnimTable_83764DC, gSpriteImageTable_83764AC, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 0x1000, gOamData_837645C, gSpriteAnimTable_83764DC, gSpriteImageTable_83764AC, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_08376500:: @ 8376500 .incbin "baserom.gba", 0x00376500, 0x4 @@ -7432,6 +7661,7 @@ gUnknown_08376504:: @ 8376504 .2byte MOVE_DIVE .4byte gTileBuffer @ unreferenced? + MenuGfx_HoldIcons: .incbin "graphics/interface/hold_icons.4bpp" MenuPal_HoldIcons: @@ -7534,6 +7764,7 @@ gUnknown_08376A5E:: @ 8376A5E gUnknown_08376B54:: @ 8376B54 .4byte ether_effect_related_2 .4byte sub_80704F0 + Unknown_08376B5C: .incbin "baserom.gba", 0x00376b5c, 0x2c Unknown_08376B88: @@ -9990,8 +10221,10 @@ gSpriteTemplate_8393ECC:: @ 8393ECC gSpriteTemplate_8393EE4:: @ 8393EE4 spr_template 1000, 1000, gOamData_8393EAC, gSpriteAnimTable_8393EC8, NULL, gDummySpriteAffineAnimTable, sub_807BE90 + .align 2 gUnknown_08393EFC:: @ 8393EFC - .incbin "baserom.gba", 0x00393efc, 0x10 + obj_tiles gVersionTiles, 0x1000, 1000 + null_obj_tiles .align 2 gOamData_8393F0C:: @ 8393F0C @@ -10054,11 +10287,15 @@ gSpriteAnimTable_8393F54:: @ 8393F54 gSpriteTemplate_8393F74:: @ 8393F74 spr_template 1001, 1001, gOamData_8393F0C, gSpriteAnimTable_8393F54, NULL, gDummySpriteAffineAnimTable, sub_807BEF0 + .align 2 gUnknown_08393F8C:: @ 8393F8C - .incbin "baserom.gba", 0x00393f8c, 0x10 + obj_tiles Tiles_E9D644, 0x520, 1001 + null_obj_tiles + .align 2 gUnknown_08393F9C:: @ 8393F9C - .incbin "baserom.gba", 0x00393f9c, 0x10 + obj_pal gTitleScreenLogoShinePalette, 1001 + obj_pal 0x0, 0x0 .align 2 gOamData_8393FAC:: @ 8393FAC @@ -10627,10 +10864,46 @@ gUnknown_0839B255:: @ 839B255 .incbin "baserom.gba", 0x0039b255, 0x2 gUnknown_0839B257:: @ 839B257 - .incbin "baserom.gba", 0x0039b257, 0x69 + .incbin "baserom.gba", 0x39b257, 0xb + +Text_39B262: @ 839B262 + .string "Search a child$" + +Text_39B271: @ 839B271 + .string "Egg$" + +Text_39B275: @ 839B275 + .string "Egg (male)$" + +Text_39B280: @ 839B280 + .string "1000 steps$" + +Text_39B28B: @ 839B28B + .string "10000 steps$" +Text_39B297: @ 839B297 + .string "MOVE TUTOR$" + +Text_39B2A2: @ 839B2A2 + .string "Breed an egg$" + +Text_39B2AF: @ 839B2AF + .string "Long name$" + +Text_39B2B9: @ 839B2B9 + .string "ポロックけす$" @ "{POKEBLOCK} CASE$" + + .align 2 gUnknown_0839B2C0:: @ 839B2C0 - .incbin "baserom.gba", 0x0039b2c0, 0x48 + .4byte Text_39B262, sub_8083D70 + .4byte Text_39B271, sub_8083DFC + .4byte Text_39B275, sub_8083E28 + .4byte Text_39B280, sub_8083E54 + .4byte Text_39B28B, sub_8083E68 + .4byte Text_39B297, sub_8083E80 + .4byte Text_39B2A2, sub_8083E90 + .4byte Text_39B2AF, sub_8083EEC + .4byte Text_39B2B9, sub_8083F0C .align 2 gSpriteImage_839B308:: @ 839B308 @@ -10858,13 +11131,20 @@ gSpriteImageTable_839F178:: @ 839F178 obj_frame_tiles gSpriteImage_839E7F4, 0x200 .align 2 +Unknown_39F180:: @ 839F180 .incbin "baserom.gba", 0x0039f180, 0x20 + .align 2 gUnknown_0839F1A0:: @ 839F1A0 - .incbin "baserom.gba", 0x0039f1a0, 0x28 + .4byte 4, Unknown_39F180 + + .align 2 +Unknown_39F1A8:: @ 39F1A8 + .incbin "baserom.gba", 0x0039f1a8, 0x20 + .align 2 gUnknown_0839F1C8:: @ 839F1C8 - .incbin "baserom.gba", 0x0039f1c8, 0x8 + .4byte 4, Unknown_39F1A8 .align 2 gSpriteAnim_839F1D0:: @ 839F1D0 @@ -11128,16 +11408,40 @@ gUnknown_0839F494:: @ 839F494 .4byte gMoveNames + 13 * MOVE_SWEET_SCENT, sub_808A984 gUnknown_0839F554:: @ 839F554 - .incbin "baserom.gba", 0x0039f554, 0x24 + .incbin "baserom.gba", 0x39f554, 0x1e +Unknown_39F572: @ 839F572 + .byte 4, 5, 9, 0 + + .align 2 gUnknown_0839F578:: @ 839F578 - .incbin "baserom.gba", 0x0039f578, 0xc + .byte 3, 6, 0, 0 + .4byte Unknown_39F572 +Unknown_39F580: @ 839F580 + .byte 8, 6, 9, 0 + + .align 2 gUnknown_0839F584:: @ 839F584 - .incbin "baserom.gba", 0x0039f584, 0x8 + .byte 3, 9, 0, 0 + .4byte Unknown_39F580 + .align 2 gUnknown_0839F58C:: @ 839F58C - .incbin "baserom.gba", 0x0039f58c, 0x70 + .4byte sub_80A2504, 0x6 + .4byte sub_810CBB4, 0x9 + .4byte hm_prepare_rocksmash, 0x9 + .4byte sub_811A99C, 0x9 + .4byte sub_808AC48, 0x7 + .4byte sub_808ACA8, 0x9 + .4byte sub_808ADC8, 0x9 + .4byte hm_prepare_waterfall, 0x9 + .4byte sub_814A374, 0x9 + .4byte sub_810B5A4, 0x9 + .4byte sub_80C62C4, 0x9 + .4byte sub_8133CCC, 0x10 + .4byte sub_8133CCC, 0x10 + .4byte sub_812BFB4, 0x9 gUnknown_0839F5FC:: @ 839F5FC .incbin "baserom.gba", 0x0039f5fc, 0x40 @@ -11404,7 +11708,13 @@ gUnknown_083B4EC4:: @ 83B4EC4 .include "data/graphics/pokemon/footprint_table.s" gUnknown_083B5558:: @ 83B5558 - .incbin "baserom.gba", 0x003b5558, 0x2c + .incbin "baserom.gba", 0x3b5558, 0x24 + + .align 2 +gOamData_83B557C:: @ 83B557C + .2byte 0x0000 + .2byte 0xC000 + .2byte 0x0400 .align 2 gUnknown_083B5584:: @ 83B5584 @@ -11413,33 +11723,121 @@ gUnknown_083B5584:: @ 83B5584 .4byte 0x02010000 .4byte 0x02014000 -Unknown_83B5594: - .incbin "baserom.gba", 0x003b5594, 0x80 -Unknown_83B5614: - .incbin "baserom.gba", 0x003b5614, 0x80 -Unknown_83B5694: - .incbin "baserom.gba", 0x003b5694, 0x80 -Unknown_83B5714: - .incbin "baserom.gba", 0x003b5714, 0x80 + .align 2 +gSpriteImageTable_83B5594:: @ 83B5594 + obj_frame_tiles 0x02008000, 0x800 + obj_frame_tiles 0x02008800, 0x800 + obj_frame_tiles 0x02009000, 0x800 + obj_frame_tiles 0x02009800, 0x800 + obj_frame_tiles 0x0200A000, 0x800 + obj_frame_tiles 0x0200A800, 0x800 + obj_frame_tiles 0x0200B000, 0x800 + obj_frame_tiles 0x0200B800, 0x800 + obj_frame_tiles 0x0200C000, 0x800 + obj_frame_tiles 0x0200C800, 0x800 + obj_frame_tiles 0x0200D000, 0x800 + obj_frame_tiles 0x0200D800, 0x800 + obj_frame_tiles 0x0200E000, 0x800 + obj_frame_tiles 0x0200E800, 0x800 + obj_frame_tiles 0x0200F000, 0x800 + obj_frame_tiles 0x0200F800, 0x800 + + .align 2 +gSpriteImageTable_83B5614:: @ 83B5614 + obj_frame_tiles 0x0200C000, 0x800 + obj_frame_tiles 0x0200C800, 0x800 + obj_frame_tiles 0x0200D000, 0x800 + obj_frame_tiles 0x0200D800, 0x800 + obj_frame_tiles 0x0200E000, 0x800 + obj_frame_tiles 0x0200E800, 0x800 + obj_frame_tiles 0x0200F000, 0x800 + obj_frame_tiles 0x0200F800, 0x800 + obj_frame_tiles 0x02010000, 0x800 + obj_frame_tiles 0x02010800, 0x800 + obj_frame_tiles 0x02011000, 0x800 + obj_frame_tiles 0x02011800, 0x800 + obj_frame_tiles 0x02012000, 0x800 + obj_frame_tiles 0x02012800, 0x800 + obj_frame_tiles 0x02013000, 0x800 + obj_frame_tiles 0x02013800, 0x800 + + .align 2 +gSpriteImageTable_83B5694:: @ 83B5694 + obj_frame_tiles 0x02010000, 0x800 + obj_frame_tiles 0x02010800, 0x800 + obj_frame_tiles 0x02011000, 0x800 + obj_frame_tiles 0x02011800, 0x800 + obj_frame_tiles 0x02012000, 0x800 + obj_frame_tiles 0x02012800, 0x800 + obj_frame_tiles 0x02013000, 0x800 + obj_frame_tiles 0x02013800, 0x800 + obj_frame_tiles 0x02014000, 0x800 + obj_frame_tiles 0x02014800, 0x800 + obj_frame_tiles 0x02015000, 0x800 + obj_frame_tiles 0x02015800, 0x800 + obj_frame_tiles 0x02016000, 0x800 + obj_frame_tiles 0x02016800, 0x800 + obj_frame_tiles 0x02017000, 0x800 + obj_frame_tiles 0x02017800, 0x800 + + .align 2 +gSpriteImageTable_83B5714:: @ 83B5714 + obj_frame_tiles 0x02014000, 0x800 + obj_frame_tiles 0x02014800, 0x800 + obj_frame_tiles 0x02015000, 0x800 + obj_frame_tiles 0x02015800, 0x800 + obj_frame_tiles 0x02016000, 0x800 + obj_frame_tiles 0x02016800, 0x800 + obj_frame_tiles 0x02017000, 0x800 + obj_frame_tiles 0x02017800, 0x800 + obj_frame_tiles 0x02018000, 0x800 + obj_frame_tiles 0x02018800, 0x800 + obj_frame_tiles 0x02019000, 0x800 + obj_frame_tiles 0x02019800, 0x800 + obj_frame_tiles 0x0201A000, 0x800 + obj_frame_tiles 0x0201A800, 0x800 + obj_frame_tiles 0x0201B000, 0x800 + obj_frame_tiles 0x0201B800, 0x800 .align 2 gUnknown_083B5794:: @ 83B5794 - .4byte Unknown_83B5594 - .4byte Unknown_83B5614 - .4byte Unknown_83B5694 - .4byte Unknown_83B5714 + .4byte gSpriteImageTable_83B5594 + .4byte gSpriteImageTable_83B5614 + .4byte gSpriteImageTable_83B5694 + .4byte gSpriteImageTable_83B5714 + .align 2 gUnknown_083B57A4:: @ 83B57A4 - .incbin "baserom.gba", 0x003b57a4, 0x18 + spr_template 0xFFFF, 0, gOamData_83B557C, NULL, gSpriteImageTable_83B5594, gDummySpriteAffineAnimTable, nullsub_59 gUnknown_083B57BC:: @ 83B57BC .incbin "baserom.gba", 0x003b57bc, 0x28 + .align 2 gUnknown_083B57E4:: @ 83B57E4 - .incbin "baserom.gba", 0x003b57e4, 0x18 + .4byte DexText_SearchForPoke + .2byte 0, 5 + .4byte DexText_SwitchDex + .2byte 6, 5 + .4byte DexText_ReturnToDex + .2byte 12, 5 + .align 2 gUnknown_083B57FC:: @ 83B57FC - .incbin "baserom.gba", 0x003b57fc, 0x54 + .4byte DexText_ListByABC + .byte 0, 2, 5, 5, 2, 12, 0, 0 + .4byte DexText_ListByColor + .byte 0, 4, 5, 5, 4, 12, 0, 0 + .4byte DexText_ListByType + .byte 0, 6, 5, 5, 6, 6, 0, 0 + .4byte DexText_ListByType + .byte 0, 6, 5, 11, 6, 6, 0, 0 + .4byte DexText_SelectDexList + .byte 0, 8, 5, 5, 8, 12, 0, 0 + .4byte DexText_SelectDexMode + .byte 0, 10, 5, 5, 10, 12, 0, 0 + .4byte DexText_ExecuteSearchSwitch + .byte 0, 12, 5, 0, 0, 0, 0, 0 gUnknown_083B5850:: @ 83B5850 .incbin "baserom.gba", 0x003b5850, 0x1c @@ -11453,20 +11851,72 @@ gUnknown_083B5888:: @ 83B5888 gUnknown_083B58A4:: @ 83B58A4 .incbin "baserom.gba", 0x003b58a4, 0x1c + .align 2 gUnknown_083B58C0:: @ 83B58C0 - .incbin "baserom.gba", 0x003b58c0, 0x18 + .4byte DexText_HoennDex2, DexText_HoennDex + .4byte DexText_NationalDex2, DexText_NationalDex + .4byte 0x0, 0x0 + .align 2 gUnknown_083B58D8:: @ 83B58D8 - .incbin "baserom.gba", 0x003b58d8, 0x38 + .4byte DexText_ListByNumber, DexText_NumericalMode + .4byte DexText_ListByABC2, DexText_ABCMode + .4byte DexText_ListByHeavyToLightest, DexText_HeaviestMode + .4byte DexText_ListByLightToHeaviest, DexText_LightestMode + .4byte DexText_ListByTallToSmallest, DexText_TallestMode + .4byte DexText_ListBySmallToTallest, DexText_SmallestMode + .4byte 0x0, 0x0 + .align 2 gUnknown_083B5910:: @ 83B5910 - .incbin "baserom.gba", 0x003b5910, 0x58 + .4byte DexText_Terminator5, DexText_DontSpecify + .4byte DexText_Terminator5, DexText_ABC + .4byte DexText_Terminator5, DexText_DEF + .4byte DexText_Terminator5, DexText_GHI + .4byte DexText_Terminator5, DexText_JKL + .4byte DexText_Terminator5, DexText_MNO + .4byte DexText_Terminator5, DexText_PQR + .4byte DexText_Terminator5, DexText_STU + .4byte DexText_Terminator5, DexText_VWX + .4byte DexText_Terminator5, DexText_YZ + .4byte 0x0, 0x0 + .align 2 gUnknown_083B5968:: @ 83B5968 - .incbin "baserom.gba", 0x003b5968, 0x60 + .4byte DexText_Terminator5, DexText_DontSpecify + .4byte DexText_Terminator5, DexText_Red + .4byte DexText_Terminator5, DexText_Blue + .4byte DexText_Terminator5, DexText_Yellow + .4byte DexText_Terminator5, DexText_Green + .4byte DexText_Terminator5, DexText_Black + .4byte DexText_Terminator5, DexText_Brown + .4byte DexText_Terminator5, DexText_Purple + .4byte DexText_Terminator5, DexText_Gray + .4byte DexText_Terminator5, DexText_White + .4byte DexText_Terminator5, DexText_Pink + .4byte 0x0, 0x0 + .align 2 gUnknown_083B59C8:: @ 83B59C8 - .incbin "baserom.gba", 0x003b59c8, 0x98 + .4byte DexText_Terminator5, DexText_None + .4byte DexText_Terminator5, gTypeNames + TYPE_NORMAL * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_FIGHTING * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_FLYING * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_POISON * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_GROUND * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_ROCK * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_BUG * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_GHOST * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_STEEL * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_FIRE * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_WATER * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_GRASS * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_ELECTRIC * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_PSYCHIC * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_ICE * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_DRAGON * 7 + .4byte DexText_Terminator5, gTypeNames + TYPE_DARK * 7 + .4byte 0x0, 0x0 gUnknown_083B5A60:: @ 83B5A60 .incbin "baserom.gba", 0x003b5a60, 0x2 @@ -11477,8 +11927,20 @@ gUnknown_083B5A62:: @ 83B5A62 gUnknown_083B5A68:: @ 83B5A68 .incbin "baserom.gba", 0x003b5a68, 0x14 + .align 2 gUnknown_083B5A7C:: @ 83B5A7C - .incbin "baserom.gba", 0x003b5a7c, 0x30 + .4byte gUnknown_083B5910 + .byte 6, 7, 10, 0 + .4byte gUnknown_083B5968 + .byte 8, 9, 11, 0 + .4byte gUnknown_083B59C8 + .byte 10, 11, 18, 0 + .4byte gUnknown_083B59C8 + .byte 12, 13, 18, 0 + .4byte gUnknown_083B58D8 + .byte 4, 5, 6, 0 + .4byte gUnknown_083B58C0 + .byte 2, 3, 2, 0 gUnknown_083B5AAC:: @ 83B5AAC .incbin "baserom.gba", 0x003b5aac, 0x6 @@ -12347,8 +12809,25 @@ gUnknown_083BC668:: @ 83BC668 @ 83C0F60 .include "data/text/nature_names.s" + .align 2 gUnknown_083C1068:: @ 83C1068 - .incbin "baserom.gba", 0x003c1068, 0x34 + .4byte gEmptyString_81E72B0 + .4byte OtherText_PokeInfo + .4byte OtherText_PokeSkills + .4byte OtherText_BattleMoves + .4byte OtherText_ContestMoves + .4byte OtherText_Switch + .4byte OtherText_Info + .4byte OtherText_Cancel2 + + .align 2 +gSpriteAffineAnim_83C1088:: @ 83C1088 + obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnimTable_83C1098:: @ 83C1098 + .4byte gSpriteAffineAnim_83C1088 .align 2 gOamData_83C109C:: @ 83C109C @@ -12735,17 +13214,36 @@ gSpriteTemplate_CutGrass:: @ 83C1600 gUnknown_083C1618:: @ 83C1618 .incbin "baserom.gba", 0x003c1618, 0x28 + .align 2 gUnknown_083C1640:: @ 83C1640 - .incbin "baserom.gba", 0x003c1640, 0x50 - + .4byte OtherText_Use, sub_80A5B78 + .4byte OtherText_Toss, sub_80A5F14 + .4byte OtherText_Cancel2, sub_80A5F80 + .4byte OtherText_Register, sub_80A5FAC + .4byte OtherText_Use, ItemMenu_UseInBattle + .4byte OtherText_Cancel2, sub_80A7124 + .4byte OtherText_Give2, ItemMenu_Give + .4byte OtherText_CheckTag, sub_80A6178 + .4byte OtherText_Terminator19, 0x0 + .4byte OtherText_Confirm, sub_80A69E0 + +@ 6-byte entries; format of entry is unknown gUnknown_083C1690:: @ 83C1690 - .incbin "baserom.gba", 0x003c1690, 0x1e + .byte 0, 1, 6, 2, 0, 0 + .byte 6, 1, 8, 2, 0, 0 + .byte 0, 8, 6, 2, 0, 0 + .byte 7, 0, 1, 8, 6, 2 + .byte 0, 8, 3, 2, 0, 0 gUnknown_083C16AE:: @ 83C16AE - .incbin "baserom.gba", 0x003c16ae, 0xa + .byte 6, 2 + .byte 6, 2 + .byte 6, 2 + .byte 6, 2 + .byte 2, 0 gUnknown_083C16B8:: @ 83C16B8 - .incbin "baserom.gba", 0x003c16b8, 0x4 + .byte 7, 9, 8, 2 .align 2 gUnknown_083C16BC:: @ 83C16BC @@ -12840,9 +13338,7 @@ gSpriteAnimTable_83C1C84:: @ 83C1C84 .4byte gSpriteAnim_83C1C6C .4byte gSpriteAnim_83C1C74 .4byte gSpriteAnim_83C1C7C - - .align 2 - .incbin "baserom.gba", 0x003c1c98, 0x4 + .4byte gSpriteAnim_83C1C64 .align 2 gSpriteAffineAnim_83C1C9C:: @ 83C1C9C @@ -12927,11 +13423,12 @@ gSpriteAnimTable_83C1D68:: @ 83C1D68 .4byte gSpriteAnim_83C1D60 .align 2 - .incbin "baserom.gba", 0x003c1d6c, 0x8 +gSpriteImageTable_83C1D6C:: @ 83C1D6C + obj_frame_tiles 0x02000000, 0x800 .align 2 gSpriteTemplate_83C1D74:: @ 83C1D74 - spr_template 0xFFFF, 30020, gOamData_83C1D50, gSpriteAnimTable_83C1D68, 0x83C1D6C, gDummySpriteAffineAnimTable, sub_80A7DC4 + spr_template 0xFFFF, 30020, gOamData_83C1D50, gSpriteAnimTable_83C1D68, gSpriteImageTable_83C1D6C, gDummySpriteAffineAnimTable, sub_80A7DC4 .align 2 gSpriteAffineAnim_83C1D8C:: @ 83C1D8C @@ -12960,7 +13457,7 @@ gSpriteAffineAnimTable_83C1DFC:: @ 83C1DFC .align 2 gSpriteTemplate_83C1E04:: @ 83C1E04 - spr_template 0xFFFF, 30020, gOamData_83C1D58, gSpriteAnimTable_83C1D68, 0x83C1D6C, gSpriteAffineAnimTable_83C1DFC, SpriteCallbackDummy + spr_template 0xFFFF, 30020, gOamData_83C1D58, gSpriteAnimTable_83C1D68, gSpriteImageTable_83C1D6C, gSpriteAffineAnimTable_83C1DFC, SpriteCallbackDummy @ 83C1E1C .include "data/graphics/berries/graphics_table.s" @@ -13311,10 +13808,12 @@ gSpriteTemplate_83CA43C:: @ 83CA43C spr_template 20009, 20006, gOamData_83CA3EC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 - .incbin "baserom.gba", 0x003ca454, 0x10 +Unknown_3CA454: @ 83CA454 + .incbin "baserom.gba", 0x3ca454, 0x10 + .align 2 gUnknown_083CA464:: @ 83CA464 - .incbin "baserom.gba", 0x003ca464, 0x8 + .4byte 0x2, Unknown_3CA454 .align 2 gUnknown_083CA46C:: @ 83CA46C @@ -13363,24 +13862,24 @@ gUnknown_083CA4D4:: @ 83CA4D4 .include "data/text/contest_strings.s" gUnknown_083CC355:: @ 83CC355 -UnknownText_MissedTurn: +UnknownText_MissedTurn:: .string "Missed turn$" gUnknown_083CC361:: @ 83CC361 -UnknownText_LinkStandby: +UnknownText_LinkStandby:: .string "Link standby...$" -UnknownText_UnknownFormatting: +UnknownText_UnknownFormatting:: .string "{COLOR WHITE2}$" -UnknownText_WinnerIs: +UnknownText_WinnerIs:: .string "The winner is {STR_VAR_1}’s {STR_VAR_2}!\nCongratulations!$" .incbin "baserom.gba", 0x003cc39d, 0x3 gUnknown_083CC3A0:: @ 83CC3A0 -UnknownText_UnknownFormatting2: +UnknownText_UnknownFormatting2:: .string "{COLOR GREEN}{SHADOW RED}$" gUnknown_083CC3A7:: @ 83CC3A7 -UnknownText_UnknownFormatting3: +UnknownText_UnknownFormatting3:: .string "{COLOR LIGHT_GREY}$" .align 2 @@ -13588,8 +14087,27 @@ gUnknown_083CD780:: @ 83CD780 @ 83CD788 .include "data/multichoice.s" + .align 2 gUnknown_083CE048:: @ 83CE048 - .incbin "baserom.gba", 0x003ce048, 0x4C + .4byte OtherText_Cool2 + .4byte OtherText_Beauty3 + .4byte OtherText_Cute2 + .4byte OtherText_Smart2 + .4byte OtherText_Tough2 + .4byte OtherText_Normal + .4byte OtherText_Super + .4byte OtherText_Hyper + .4byte OtherText_Master + .4byte OtherText_Cool3 + .4byte OtherText_Beauty4 + .4byte OtherText_Cute3 + .4byte OtherText_Smart3 + .4byte OtherText_Tough3 + .4byte OtherText_Items + .4byte OtherText_KeyItems + .4byte OtherText_Balls + .4byte OtherText_TMsHMs + .4byte OtherText_Berries .align 2 gSpriteImage_83CE094:: @ 83CE094 @@ -13731,15 +14249,24 @@ gUnknown_083CE368:: @ 83CE368 .4byte nullsub_62 .4byte sub_80B7924 + .align 2 gUnknown_083CE370:: @ 83CE370 -Unknown_83CE370: .incbin "baserom.gba", 0x003ce370, 0x4 + + .align 2 Unknown_83CE374: - .incbin "baserom.gba", 0x003ce374, 0xC + .byte 0, 7, 1, 0, 0, 0, 0, 0 + .4byte OtherText_YourName + + .align 2 Unknown_83CE380: - .incbin "baserom.gba", 0x003ce380, 0xC + .byte 0, 8, 2, 0, 0, 0, 0, 0 + .4byte OtherText_BoxName + + .align 2 Unknown_83CE38C: - .incbin "baserom.gba", 0x003ce38c, 0xC + .byte 0, 10, 3, 1, 0, 0, 0, 0 + .4byte OtherText_PokeName .align 2 gUnknown_083CE398:: @ 83CE398 @@ -13781,19 +14308,38 @@ gOamData_83CE4A8:: @ 83CE4A8 .2byte 0x0000 .align 2 - .incbin "baserom.gba", 0x003ce4b0, 0xa8 +Unknown_3CE4B0:: @ 83CE4B0 + .incbin "baserom.gba", 0x3ce4b0, 0x50 + + .align 2 +Unknown_3CE500:: @ 83CE500 + .incbin "baserom.gba", 0x3ce500, 0x10 + .align 2 +Unknown_3CE510:: @ 83CE510 + .incbin "baserom.gba", 0x3ce510, 0x30 + + .align 2 +Unknown_3CE540:: @ 83CE540 + .incbin "baserom.gba", 0x3ce540, 0x18 + + .align 2 gUnknown_083CE558:: @ 83CE558 - .incbin "baserom.gba", 0x003ce558, 0x8 + .4byte 0x8, Unknown_3CE4B0 + .align 2 gUnknown_083CE560:: @ 83CE560 - .incbin "baserom.gba", 0x003ce560, 0x18 + .4byte 0x2, Unknown_3CE500 + .4byte 0x2, Unknown_3CE500 + .4byte 0x2, Unknown_3CE500 + .align 2 gUnknown_083CE578:: @ 83CE578 - .incbin "baserom.gba", 0x003ce578, 0x8 + .4byte 0x6, Unknown_3CE510 + .align 2 gUnknown_083CE580:: @ 83CE580 - .incbin "baserom.gba", 0x003ce580, 0x8 + .4byte 0x3, Unknown_3CE540 .align 2 gSpriteImageTable_83CE588:: @ 83CE588 @@ -14125,14 +14671,26 @@ gUnknown_083D13EC:: @ 83D13EC gUnknown_083D13F8:: @ 83D13F8 .incbin "baserom.gba", 0x003d13f8, 0x3c + .align 2 gUnknown_083D1434:: @ 83D1434 - .incbin "baserom.gba", 0x003d1434, 0x10 + .4byte 0x0 + .4byte UnknownString_81AD135 + .4byte UnknownString_81AD5B0 + .4byte UnknownString_81AD8B4 + .align 2 gUnknown_083D1444:: @ 83D1444 - .incbin "baserom.gba", 0x003d1444, 0x10 + .4byte 0x0 + .4byte UnknownString_81AD2E0 + .4byte UnknownString_81AD6AE + .4byte UnknownString_81AD9D3 + .align 2 gUnknown_083D1454:: @ 83D1454 - .incbin "baserom.gba", 0x003d1454, 0x10 + .4byte 0x0 + .4byte UnknownString_81AD434 + .4byte UnknownString_81AD7A7 + .4byte UnknownString_81ADB01 .align 2 gUnknown_083D1464:: @ 83D1464 @@ -14654,7 +15212,8 @@ gSpriteImage_83D27C0:: @ 83D27C0 .incbin "graphics/unknown_sprites/83D2860/2.4bpp" .align 2 - .incbin "baserom.gba", 0x003d2840, 0x20 +Palette_3D2840:: @ 83D2840 + .incbin "baserom.gba", 0x3d2840, 0x20 .align 2 gSpriteImageTable_83D2860:: @ 83D2860 @@ -14662,8 +15221,9 @@ gSpriteImageTable_83D2860:: @ 83D2860 obj_frame_tiles gSpriteImage_83D2740, 0x80 obj_frame_tiles gSpriteImage_83D27C0, 0x80 + .align 2 gUnknown_083D2878:: @ 83D2878 - .incbin "baserom.gba", 0x003d2878, 0x8 + obj_pal Palette_3D2840, 4096 .align 2 gSpriteAnim_83D2880:: @ 83D2880 @@ -14798,7 +15358,28 @@ gSpriteAffineAnim_83D5EAC:: @ 83D5EAC obj_rot_scal_anim_jump 0 .align 2 - .incbin "baserom.gba", 0x003d5ebc, 0x60 +gSpriteAffineAnim_83D5EBC:: @ 83D5EBC + obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 + obj_rot_scal_anim_frame 0x0, 0x0, -4, 16 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D5ED4:: @ 83D5ED4 + obj_rot_scal_anim_frame 0x100, 0x100, -64, 0 + obj_rot_scal_anim_frame 0x0, 0x0, -4, 16 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D5EEC:: @ 83D5EEC + obj_rot_scal_anim_frame 0x100, 0x100, -128, 0 + obj_rot_scal_anim_frame 0x0, 0x0, -4, 16 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D5F04:: @ 83D5F04 + obj_rot_scal_anim_frame 0x100, 0x100, 64, 0 + obj_rot_scal_anim_frame 0x0, 0x0, -4, 16 + obj_rot_scal_anim_end .align 2 gSpriteAffineAnim_83D5F1C:: @ 83D5F1C @@ -14807,7 +15388,16 @@ gSpriteAffineAnim_83D5F1C:: @ 83D5F1C obj_rot_scal_anim_end .align 2 - .incbin "baserom.gba", 0x003d5f34, 0x30 +gSpriteAffineAnim_83D5F34:: @ 83D5F34 + obj_rot_scal_anim_frame 0x100, 0x100, 64, 0 + obj_rot_scal_anim_frame 0x0, 0x0, 4, 16 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D5F4C:: @ 83D5F4C + obj_rot_scal_anim_frame 0x100, 0x100, -128, 0 + obj_rot_scal_anim_frame 0x0, 0x0, 4, 16 + obj_rot_scal_anim_end .align 2 gSpriteAffineAnim_83D5F64:: @ 83D5F64 @@ -14816,7 +15406,52 @@ gSpriteAffineAnim_83D5F64:: @ 83D5F64 obj_rot_scal_anim_end .align 2 - .incbin "baserom.gba", 0x003d5f7c, 0xc0 +gSpriteAffineAnim_83D5F7C:: @ 83D5F7C + obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 + obj_rot_scal_anim_frame 0x0, 0x0, -8, 8 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D5F94:: @ 83D5F94 + obj_rot_scal_anim_frame 0x100, 0x100, -64, 0 + obj_rot_scal_anim_frame 0x0, 0x0, -8, 8 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D5FAC:: @ 83D5FAC + obj_rot_scal_anim_frame 0x100, 0x100, -128, 0 + obj_rot_scal_anim_frame 0x0, 0x0, -8, 8 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D5FC4:: @ 83D5FC4 + obj_rot_scal_anim_frame 0x100, 0x100, 64, 0 + obj_rot_scal_anim_frame 0x0, 0x0, -8, 8 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D5FDC:: @ 83D5FDC + obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 + obj_rot_scal_anim_frame 0x0, 0x0, 8, 8 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D5FF4:: @ 83D5FF4 + obj_rot_scal_anim_frame 0x100, 0x100, 64, 0 + obj_rot_scal_anim_frame 0x0, 0x0, 8, 8 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D600C:: @ 83D600C + obj_rot_scal_anim_frame 0x100, 0x100, -128, 0 + obj_rot_scal_anim_frame 0x0, 0x0, 8, 8 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D6024:: @ 83D6024 + obj_rot_scal_anim_frame 0x100, 0x100, -64, 0 + obj_rot_scal_anim_frame 0x0, 0x0, 8, 8 + obj_rot_scal_anim_end .align 2 gSpriteAffineAnimTable_83D603C:: @ 83D603C @@ -14826,9 +15461,20 @@ gSpriteAffineAnimTable_83D603C:: @ 83D603C .4byte gSpriteAffineAnim_83D5EAC .4byte gSpriteAffineAnim_83D5F1C .4byte gSpriteAffineAnim_83D5F64 - - .align 2 - .incbin "baserom.gba", 0x003d6054, 0x38 + .4byte gSpriteAffineAnim_83D5F4C + .4byte gSpriteAffineAnim_83D5F34 + .4byte gSpriteAffineAnim_83D5EBC + .4byte gSpriteAffineAnim_83D5ED4 + .4byte gSpriteAffineAnim_83D5EEC + .4byte gSpriteAffineAnim_83D5F04 + .4byte gSpriteAffineAnim_83D5FDC + .4byte gSpriteAffineAnim_83D6024 + .4byte gSpriteAffineAnim_83D600C + .4byte gSpriteAffineAnim_83D5FF4 + .4byte gSpriteAffineAnim_83D5F7C + .4byte gSpriteAffineAnim_83D5F94 + .4byte gSpriteAffineAnim_83D5FAC + .4byte gSpriteAffineAnim_83D5FC4 .align 2 gSpriteTemplate_83D608C:: @ 83D608C @@ -14857,11 +15503,11 @@ gUnknown_083D611C:: @ 83D611C .incbin "baserom.gba", 0x003d611c, 0x20 gUnknown_083D613C:: @ 83D613C -Unknown_83D613C: +Unknown_83D613C:: .incbin "baserom.gba", 0x003d613c, 0x60 -Unknown_83D619C: +Unknown_83D619C:: .incbin "baserom.gba", 0x003d619c, 0x20 -Unknown_83D61BC: +Unknown_83D61BC:: .incbin "baserom.gba", 0x003d61bc, 0x20 .align 2 @@ -16222,7 +16868,13 @@ gSpriteTemplate_83D7370:: @ 83D7370 spr_template 10064, 10064, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80CF280 .align 2 - .incbin "baserom.gba", 0x003d7388, 0xc +gSpriteAnim_83D7388:: @ 83D7388 + obj_image_anim_frame 4, 1 + obj_image_anim_end + + .align 2 +gSpriteAnimTable_83D7390:: @ 83D7390 + .4byte gSpriteAnim_83D7388 .align 2 gSpriteTemplate_83D7394:: @ 83D7394 @@ -17289,7 +17941,19 @@ gSpriteAnimTable_83D9650:: @ 83D9650 .4byte gSpriteAnim_83D9644 .align 2 - .incbin "baserom.gba", 0x003d9654, 0x28 +gSpriteAffineAnim_83D9654:: @ 83D9654 + obj_rot_scal_anim_frame 0x0, 0x0, 0, 1 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_83D9664:: @ 83D9664 + obj_rot_scal_anim_frame 0xA0, 0xA0, 0, 0 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnimTable_83D9674:: @ 83D9674 + .4byte gSpriteAffineAnim_83D9654 + .4byte gSpriteAffineAnim_83D9664 .align 2 gBattleAnimSpriteTemplate_83D967C:: @ 83D967C @@ -17622,14 +18286,23 @@ gSpriteTemplate_83D9B40:: @ 83D9B40 spr_template 10001, 10001, gOamData_837DF24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80D755C .align 2 - .incbin "baserom.gba", 0x003d9b58, 0x10 +gSpriteAnim_83D9B58:: @ 83D9B58 + obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 1, 5, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_jump 0 + + .align 2 +gSpriteAnimTable_83D9B64:: @ 83D9B64 + .4byte gSpriteAnim_83D9B58 .align 2 gSpriteTemplate_83D9B68:: @ 83D9B68 spr_template 10141, 10141, gOamData_837DF24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80D7704 .align 2 - .incbin "baserom.gba", 0x003d9b80, 0x8 +gSpriteAnim_83D9B80:: @ 83D9B80 + obj_image_anim_frame 0, 1 + obj_image_anim_end .align 2 gSpriteAnim_83D9B88:: @ 83D9B88 @@ -17658,7 +18331,8 @@ gSpriteAnim_83D9BA8:: @ 83D9BA8 obj_image_anim_jump 0 .align 2 - .incbin "baserom.gba", 0x003d9bb4, 0x4 +gSpriteAnimTable_83D9BB4:: @ 83D9BB4 + .4byte gSpriteAnim_83D9B80 .align 2 gSpriteAnimTable_83D9BB8:: @ 83D9BB8 @@ -18381,7 +19055,15 @@ gBattleAnimSpriteTemplate_83DA5D8:: @ 83DA5D8 spr_template 10156, 10156, gOamData_837DFFC, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83DA5D4, sub_80DB288 .align 2 - .incbin "baserom.gba", 0x003da5f0, 0x24 +gSpriteAffineAnim_83DA5F0:: @ 83DA5F0 + obj_rot_scal_anim_frame 0x100, 0x0, 0, 0 + obj_rot_scal_anim_frame 0x0, 0x20, 0, 12 + obj_rot_scal_anim_frame 0x0, 0xFFE0, 0, 11 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnimTable_83DA610:: @ 83DA610 + .4byte gSpriteAffineAnim_83DA5F0 .align 2 gBattleAnimSpriteTemplate_83DA614:: @ 83DA614 @@ -18533,10 +19215,12 @@ gSpriteAnimTable_83DA85C:: @ 83DA85C .4byte gSpriteAnim_83DA83C .align 2 - .incbin "baserom.gba", 0x003da860, 0x28 +Unknown_3DA860:: @ 83DA860 + .incbin "baserom.gba", 0x3da860, 0x28 + .align 2 gUnknown_083DA888:: @ 83DA888 - .incbin "baserom.gba", 0x003da888, 0x4 + .4byte Unknown_3DA860 .align 2 gBattleAnimSpriteTemplate_83DA88C:: @ 83DA88C @@ -18799,10 +19483,12 @@ gBattleAnimSpriteTemplate_83DACE8:: @ 83DACE8 spr_template 10261, 10261, gOamData_837DF54, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80DD3AC .align 2 - .incbin "baserom.gba", 0x003dad00, 0x10 +Unknown_3DAD00:: @ 83DAD00 + .incbin "baserom.gba", 0x3dad00, 0x10 + .align 2 gUnknown_083DAD10:: @ 83DAD10 - .incbin "baserom.gba", 0x003dad10, 0x8 + .4byte 0x2, Unknown_3DAD00 .align 2 gSpriteAnim_83DAD18:: @ 83DAD18 @@ -18945,7 +19631,13 @@ gBattleAnimSpriteTemplate_83DAEDC:: @ 83DAEDC spr_template 10177, 10177, gOamData_837DF74, gSpriteAnimTable_83DAED8, NULL, gDummySpriteAffineAnimTable, sub_80DE0FC .align 2 - .incbin "baserom.gba", 0x003daef4, 0x14 +gSpriteAffineAnim_83DAEF4:: @ 83DAEF4 + obj_rot_scal_anim_frame 0x200, 0x200, 0, 0 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnimTable_83DAF04:: @ 83DAF04 + .4byte gSpriteAffineAnim_83DAEF4 .align 2 gSpriteTemplate_83DAF08:: @ 83DAF08 @@ -19435,10 +20127,17 @@ gUnknown_083DB5E4:: @ 83DB5E4 .4byte CheckMovementInputAcroBikeUnknownMode6 gUnknown_083DB600:: @ 83DB600 - .incbin "baserom.gba", 0x003db600, 0x8 + .incbin "baserom.gba", 0x3db600, 0x6 +Unknown_3DB606:: @ 83DB606 + .incbin "baserom.gba", 0x3db606, 0x2 + + .align 2 gUnknown_083DB608:: @ 83DB608 - .incbin "baserom.gba", 0x003db608, 0x70 + .4byte 0x1, 0x2, 0xf, 0xf, Unknown_3DB606, Unknown_3DB606, 0x1 + .4byte 0x2, 0x2, 0xf, 0xf, Unknown_3DB606, Unknown_3DB606, 0x2 + .4byte 0x3, 0x2, 0xf, 0xf, Unknown_3DB606, Unknown_3DB606, 0x3 + .4byte 0x4, 0x2, 0xf, 0xf, Unknown_3DB606, Unknown_3DB606, 0x4 gUnknown_083DB678:: @ 83DB678 .incbin "baserom.gba", 0x003db678, 0x8 @@ -19461,8 +20160,25 @@ gUnknown_083DB6A4:: @ 83DB6A4 gUnknown_083DB6B2:: @ 83DB6B2 .incbin "baserom.gba", 0x003db6b2, 0x42 + .align 2 gUnknown_083DB6F4:: @ 83DB6F4 - .incbin "baserom.gba", 0x003db6f4, 0xcc + .4byte OtherText_MakeProfilePage1, OtherText_MakeProfilePage2, 0x1 + .4byte OtherText_MakeMessagePage1, OtherText_MakeMessagePage2, 0x1 + .4byte OtherText_CombineNinePhrasesPage1, OtherText_CombineNinePhrasesPage2, 0x1 + .4byte OtherText_DescribeFeelingsPage1, OtherText_DescribeFeelingsPage2, 0x1 + .4byte OtherText_ImproveBardSongPage1, OtherText_ImproveBardSongPage2, 0x1 + .4byte OtherText_CombineTwoPhrasesPage1, OtherText_CombineTwoPhrasesPage2, 0x1 + .4byte OtherText_YourProfile, OtherText_ConfirmTrendyPage2, 0x0 + .4byte OtherText_YourFeelingBattle, OtherText_ConfirmTrendyPage2, 0x1 + .4byte OtherText_SetWinMessage, OtherText_ConfirmTrendyPage2, 0x1 + .4byte OtherText_SetLossMessage, OtherText_ConfirmTrendyPage2, 0x1 + .4byte OtherText_MailMessage, OtherText_ConfirmTrendyPage2, 0x1 + .4byte OtherText_MailSalutation, OtherText_ConfirmTrendyPage2, 0x1 + .4byte OtherText_NewSong, OtherText_ConfirmTrendyPage2, 0x0 + .4byte OtherText_TheAnswer, OtherText_ConfirmTrendyPage2, 0x0 + .4byte OtherText_ConfirmTrendyPage1, OtherText_ConfirmTrendyPage2, 0x1 + .4byte OtherText_HipsterPage1, OtherText_HipsterPage2, 0x1 + .4byte OtherText_WithFourPhrases, OtherText_CombineNinePhrasesPage2, 0x1 gUnknown_083DB7C0:: @ 83DB7C0 .incbin "baserom.gba", 0x003db7c0, 0x1c @@ -19478,7 +20194,19 @@ gUnknown_083DB7EC:: @ 83DB7EC .incbin "baserom.gba", 0x003db7ec, 0x8 gUnknown_083DB7F4:: @ 83DB7F4 - .incbin "baserom.gba", 0x003db7f4, 0x24C + .incbin "baserom.gba", 0x3db7f4, 0xc + +Palette_3DB800:: @ 83DB800 + .incbin "baserom.gba", 0x3db800, 0x20 + +Palette_3DB820:: @ 83DB820 + .incbin "baserom.gba", 0x3db820, 0x20 + +Tiles_3DB840: @ 83DB840 + .incbin "baserom.gba", 0x3db840, 0x100 + +Tiles_3DB940: @ 83DB940 + .incbin "baserom.gba", 0x3db940, 0x100 .align 2 gMenuInterviewFrame_Pal:: @@ -19488,13 +20216,22 @@ gMenuInterviewFrame_Pal:: gMenuInterviewFrame_Gfx:: .incbin "graphics/misc/interview_frame.4bpp.lz" - .incbin "baserom.gba", 0x003dbb94, 0x20 +Tiles_3DBB94: @ 83DBB94 + .incbin "baserom.gba", 0x3dbb94, 0x20 + .align 2 gUnknown_083DBBB4:: @ 83DBBB4 - .incbin "baserom.gba", 0x003dbbb4, 0x28 + obj_tiles Tiles_3DBB94, 0x20, 0 + obj_tiles Tiles_E9CF44, 0x700, 1 + obj_tiles Tiles_3DB840, 0x100, 2 + obj_tiles Tiles_3DB940, 0x100, 3 + null_obj_tiles + .align 2 gUnknown_083DBBDC:: @ 83DBBDC - .incbin "baserom.gba", 0x003dbbdc, 0x18 + obj_pal Palette_3DB800, 0 + obj_pal Palette_3DB820, 1 + obj_pal 0x0, 0 .align 2 gOamData_83DBBF4:: @ 83DBBF4 @@ -19977,12 +20714,15 @@ gUnknown_083E3270:: @ 83E3270 .4byte sub_80F0A24 .4byte sub_80F0A74 +gPokenavIconPalette:: .incbin "graphics/pokenav/icon.gbapal" gUnknown_083E329C:: @ 83E329C .incbin "graphics/pokenav/icon.4bpp.lz" +gPokenavContestPokeballTiles:: .incbin "graphics/pokenav/contest_pokeball.4bpp" - .incbin "baserom.gba", 0x003E3780, 0x20 +gUnknown_083E3780: @ 83E3780 + .incbin "baserom.gba", 0x3e3780, 0x20 .align 2 gContestSparkle_Pal:: @@ -19992,8 +20732,11 @@ gContestSparkle_Pal:: gContestSparkle_Gfx:: .incbin "graphics/pokenav/contest_sparkle.4bpp" +gContestArrows_Gfx:: .incbin "graphics/pokenav/contest_arrows.4bpp" +gUnknown_083E3BC0:: .incbin "baserom.gba", 0x003E3BC0, 0x20 +gTiles_083E3BE0:: .incbin "graphics/unknown/unknown_3E3BE0.4bpp" gUnknown_083E3C60:: @ 83E3C60 @@ -20015,7 +20758,8 @@ gUnknownPal_083E41D8:: gUnknownGfx_083E41D8:: .incbin "graphics/unknown/unknown_3E41D8.4bpp" - .incbin "baserom.gba", 0x003e42D8, 0x20 +Palette_3E42D8: @ 83E42D8 + .incbin "baserom.gba", 0x3e42d8, 0x20 gUnknown_083E42F8:: @ 83E42F8 .incbin "baserom.gba", 0x003e42f8, 0x20 @@ -20202,7 +20946,9 @@ gSpriteTemplate_83E4484:: @ 83E4484 spr_template 25, 17, gOamData_83E447C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80F2654 gUnknown_083E449C:: @ 83E449C - .incbin "baserom.gba", 0x003e449c, 0x18 + obj_pal Palette_E88A68, 2 + obj_pal Palette_E8ACE4, 3 + obj_pal 0x0, 0 .align 2 gOamData_83E44B4:: @ 83E44B4 @@ -20285,11 +21031,15 @@ gSpriteTemplate_83E4570:: @ 83E4570 gUnknown_083E4588:: @ 83E4588 .incbin "baserom.gba", 0x003e4588, 0x8 + .align 2 gUnknown_083E4590:: @ 83E4590 - .incbin "baserom.gba", 0x003e4590, 0x18 + obj_tiles Tiles_E9F9A8, 0x40, 9 + obj_tiles gContestArrows_Gfx, 0x80, 10 + null_obj_tiles + .align 2 gUnknown_083E45A8:: @ 83E45A8 - .incbin "baserom.gba", 0x003e45a8, 0x8 + obj_pal gPokenavContestArrowsPalette, 9 .align 2 gOamData_83E45B0:: @ 83E45B0 @@ -20347,11 +21097,18 @@ gSpriteAnimTable_83E4620:: @ 83E4620 .4byte gSpriteAnim_83E4610 .4byte gSpriteAnim_83E4618 + .align 2 gUnknown_083E4628:: @ 83E4628 - .incbin "baserom.gba", 0x003e4628, 0x20 + obj_tiles gPokenavContestPokeballTiles, 0x100, 3 + obj_tiles gUnknown_083E3780, 0x20, 4 + obj_tiles gTiles_08E8A498, 0x100, 5 + null_obj_tiles + .align 2 gUnknown_083E4648:: @ 83E4648 - .incbin "baserom.gba", 0x003e4648, 0x18 + obj_pal PokenavContestPokeballPalette, 4 + obj_pal Palette_E8A5B8, 5 + .space 8 .align 2 gSpriteTemplate_83E4660:: @ 83E4660 @@ -20431,8 +21188,10 @@ gSpriteAnimTable_83E47E4:: @ 83E47E4 .4byte gSpriteAnim_83E47C4 + 0x10 .4byte gSpriteAnim_83E47C4 + 0x18 - .align 2 - .incbin "baserom.gba", 0x003e47f4, 0xc + @ unused? + .4byte gSpriteAnim_83E47C4 + 0x20 + .4byte gSpriteAnim_83E47C4 + 0x28 + .4byte gSpriteAnim_83E47C4 + 0x30 .align 2 gSpriteTemplate_83E4800:: @ 83E4800 @@ -20440,7 +21199,7 @@ gSpriteTemplate_83E4800:: @ 83E4800 .align 2 gUnknown_083E4818:: @ 83E4818 - .incbin "baserom.gba", 0x003e4818, 0x8 + obj_pal gPokenavIconPalette, 16 .align 2 gSpriteAnim_83E4820:: @ 83E4820 @@ -20470,7 +21229,7 @@ gSpriteTemplate_83E4850:: @ 83E4850 .align 2 gUnknown_083E4868:: @ 83E4868 - .incbin "baserom.gba", 0x003e4868, 0x8 + obj_pal Palette_3E42D8, 18 .align 2 gOamData_83E4870:: @ 83E4870 @@ -20716,11 +21475,46 @@ gUnknown_083E53A8:: @ 83E53A8 gUnknown_083E53C8:: @ 83E53C8 .incbin "baserom.gba", 0x003e53c8, 0x18 + .align 2 gUnknown_083E53E0:: @ 83E53E0 - .incbin "baserom.gba", 0x003e53e0, 0x230 + .4byte 0x132, UnknownString_81AEFFC, UnknownString_81AF013, UnknownString_81AF022 + .4byte 0x102, UnknownString_81AF0A3, UnknownString_81AF0BB, UnknownString_81AF0CA + .4byte 0x103, UnknownString_81AF149, UnknownString_81AF164, UnknownString_81AF174 + .4byte 0x104, UnknownString_81AF1E5, UnknownString_81AF1FD, UnknownString_81AF20A + .4byte 0x106, UnknownString_81AF281, UnknownString_81AF299, UnknownString_81AF2A9 + .4byte 0x109, UnknownString_81AF32C, UnknownString_81AF345, UnknownString_81AF34D + .4byte 0x10b, UnknownString_81AF3D0, UnknownString_81AF3ED, UnknownString_81AF3FC + .4byte 0x10c, UnknownString_81AF46D, UnknownString_81AF481, UnknownString_81AF49B + .4byte 0x10d, UnknownString_81AF511, UnknownString_81AF529, UnknownString_81AF536 + .4byte 0x10e, UnknownString_81AF5A9, UnknownString_81AF5BD, UnknownString_81AF5CD + .4byte 0x10f, UnknownString_81AF63F, UnknownString_81AF661, UnknownString_81AF676 + .4byte 0x110, UnknownString_81AF711, UnknownString_81AF726, UnknownString_81AF73D + .4byte 0x111, UnknownString_81AF7BF, UnknownString_81AF7D9, UnknownString_81AF7F1 + .4byte 0x112, UnknownString_81AF88A, UnknownString_81AF8A1, UnknownString_81AF8AA + .4byte 0x113, UnknownString_81AF91B, UnknownString_81AF935, UnknownString_81AF943 + .4byte 0x114, UnknownString_81AF9C8, UnknownString_81AF9E0, UnknownString_81AF9F6 + .4byte 0x11a, UnknownString_81AFA79, UnknownString_81AFA92, UnknownString_81AFA9E + .4byte 0x11b, UnknownString_81AFB17, UnknownString_81AFB2D, UnknownString_81AFB48 + .4byte 0x11c, UnknownString_81AFBD8, UnknownString_81AFBE7, UnknownString_81AFC04 + .4byte 0x21d, UnknownString_81AFC8A, UnknownString_81AFC9D, UnknownString_81AFCBE + .4byte 0x11e, UnknownString_81AFD44, UnknownString_81AFD60, UnknownString_81AFD80 + .4byte 0x121, UnknownString_81AFE1D, UnknownString_81AFE36, UnknownString_81AFE42 + .4byte 0x124, UnknownString_81AFEC2, UnknownString_81AFEDD, UnknownString_81AFEEE + .4byte 0x125, UnknownString_81AFF68, UnknownString_81AFF7B, UnknownString_81AFF88 + .4byte 0x126, UnknownString_81AFFFB, UnknownString_81B000D, UnknownString_81B0015 + .4byte 0x127, UnknownString_81B009D, UnknownString_81B00B6, UnknownString_81B00C9 + .4byte 0x128, UnknownString_81B014D, UnknownString_81B0165, UnknownString_81B0173 + .4byte 0x129, UnknownString_81B01E9, UnknownString_81B0201, UnknownString_81B0213 + .4byte 0x12a, UnknownString_81B0290, UnknownString_81B02A5, UnknownString_81B02B6 + .4byte 0x12b, UnknownString_81B0337, UnknownString_81B0351, UnknownString_81B0364 + .4byte 0x12c, UnknownString_81B03E9, UnknownString_81B0401, UnknownString_81B040C + .4byte 0x12d, UnknownString_81B046E, UnknownString_81B0489, UnknownString_81B049A + .4byte 0x12e, UnknownString_81B0523, UnknownString_81B053E, UnknownString_81B0554 + .4byte 0x12f, UnknownString_81B05D8, UnknownString_81B05F3, UnknownString_81B0610 + .4byte 0x130, UnknownString_81B06A9, UnknownString_81B06C6, UnknownString_81B06D9 gUnknown_083E5610:: @ 83E5610 - .incbin "baserom.gba", 0x003e5610, 0x10 + .4byte 0x131, UnknownString_81B0763, UnknownString_81B0781, UnknownString_81B0797 gUnknown_083E5620:: @ 83E5620 .incbin "baserom.gba", 0x003e5620, 0xc @@ -20826,13 +21620,69 @@ gMailGraphicsTable:: @ 83E5634 .2byte 0x294A .2byte 0x6739 - .incbin "baserom.gba", 0x003e5724, 0xC + .align 2 +Unknown_3E5724: @ 83E5724 + .incbin "baserom.gba", 0x3e5724, 0xc gUnknown_083E5730:: @ 83E5730 - .incbin "baserom.gba", 0x003e5730, 0x74 + .byte 3, 15, 27, 52 + .4byte Unknown_3E5724 + .byte 3, 15, 27, 52 + .4byte Unknown_3E5724 + .byte 3, 15, 27, 52 + .4byte Unknown_3E5724 + .byte 3, 15, 27, 52 + .4byte Unknown_3E5724 + .byte 3, 15, 27, 52 + .4byte Unknown_3E5724 + .byte 3, 15, 27, 52 + .4byte Unknown_3E5724 + .byte 3, 15, 27, 52 + .4byte Unknown_3E5724 + .byte 3, 15, 27, 52 + .4byte Unknown_3E5724 + .byte 3, 15, 27, 52 + .4byte Unknown_3E5724 + .byte 3, 15, 27, 52 + .4byte Unknown_3E5724 + .byte 3, 16, 27, 52 + .4byte Unknown_3E5724 + .byte 3, 15, 27, 52 + .4byte Unknown_3E5724 + + .align 2 +Unknown_3E5790: @ 83E5790 + .incbin "baserom.gba", 0x3e5790, 0x14 + .align 2 gUnknown_083E57A4:: @ 83E57A4 - .incbin "baserom.gba", 0x003e57a4, 0x64 + .byte 5, 15, 15, 52 + .4byte Unknown_3E5790 + .byte 5, 15, 15, 52 + .4byte Unknown_3E5790 + .byte 5, 15, 16, 52 + .4byte Unknown_3E5790 + .byte 5, 15, 15, 52 + .4byte Unknown_3E5790 + .byte 5, 15, 15, 52 + .4byte Unknown_3E5790 + .byte 5, 15, 16, 52 + .4byte Unknown_3E5790 + .byte 5, 15, 16, 52 + .4byte Unknown_3E5790 + .byte 5, 15, 15, 52 + .4byte Unknown_3E5790 + .byte 5, 15, 15, 52 + .4byte Unknown_3E5790 + .byte 5, 15, 15, 52 + .4byte Unknown_3E5790 + .byte 5, 16, 15, 52 + .4byte Unknown_3E5790 + .byte 5, 15, 15, 52 + .4byte Unknown_3E5790 + + .align 2 + .incbin "baserom.gba", 0x3e5804, 0x4 .align 2 gSpriteImage_83E5808:: @ 83E5808 @@ -20859,10 +21709,12 @@ gSpriteImage_83E5928:: @ 83E5928 .incbin "graphics/unknown_sprites/83E59C0/1.4bpp" .align 2 - .incbin "baserom.gba", 0x003e5948, 0x20 +Palette_3E5948: @ 83E5948 + .incbin "baserom.gba", 0x3e5948, 0x20 + .align 2 gUnknown_083E5968:: @ 83E5968 - .incbin "baserom.gba", 0x003e5968, 0x8 + obj_pal Palette_3E5948, 6 .align 2 gOamData_83E5970:: @ 83E5970 @@ -21035,15 +21887,23 @@ gUnknown_083E784C:: @ 83E784C .incbin "graphics/pokenav/map_misc.4bpp.lz" gUnknown_083E7920:: @ 83E7920 - .incbin "baserom.gba", 0x003e7920, 0xa0 + .incbin "baserom.gba", 0x3e7920, 0x98 + .align 2 +Unknown_3E79B8: @ 83E79B8 + .4byte OtherText_PokeLeague + .4byte OtherText_PokeCenter + + .align 2 gUnknown_083E79C0:: @ 83E79C0 - .incbin "baserom.gba", 0x003e79c0, 0xc + .4byte Unknown_3E79B8 + .incbin "baserom.gba", 0x3e79c4, 0x8 .align 2 gUnknown_083E79CC:: @ 83E79CC obj_pal gPokenavMapMisc_Pal, 0x0002 + .align 2 gUnknown_083E79D4:: @ 83E79D4 .incbin "baserom.gba", 0x003e79d4, 0x8 @@ -21148,20 +22008,128 @@ gUnknown_083EC654:: @ 83EC654 .incbin "baserom.gba", 0x003ec654, 0x6 gUnknown_083EC65A:: @ 83EC65A - .incbin "baserom.gba", 0x003ec65a, 0x206 + .incbin "baserom.gba", 0x3ec65a, 0x6 + +Unknown_3EC660: @ 83EC660 + .incbin "baserom.gba", 0x3ec660, 0x4 + +Unknown_3EC664: @ 83EC664 + .incbin "baserom.gba", 0x3ec664, 0xc + +Unknown_3EC670: @ 83EC670 + .incbin "baserom.gba", 0x3ec670, 0x10 + +Unknown_3EC680: @ 83EC680 + .incbin "baserom.gba", 0x3ec680, 0xc + +Unknown_3EC68C: @ 83EC68C + .incbin "baserom.gba", 0x3ec68c, 0x8 + +Unknown_3EC694: @ 83EC694 + .incbin "baserom.gba", 0x3ec694, 0x20 + +Unknown_3EC6B4: @ 83EC6B4 + .incbin "baserom.gba", 0x3ec6b4, 0x24 + +Unknown_3EC6D8: @ 83EC6D8 + .incbin "baserom.gba", 0x3ec6d8, 0x18 + +Unknown_3EC6F0: @ 83EC6F0 + .incbin "baserom.gba", 0x3ec6f0, 0x4 + +Unknown_3EC6F4: @ 83EC6F4 + .incbin "baserom.gba", 0x3ec6f4, 0x8 + +Unknown_3EC6FC: @ 83EC6FC + .incbin "baserom.gba", 0x3ec6fc, 0xc + +Unknown_3EC708: @ 83EC708 + .incbin "baserom.gba", 0x3ec708, 0x20 + +Unknown_3EC728: @ 83EC728 + .incbin "baserom.gba", 0x3ec728, 0x10 + +Unknown_3EC738: @ 83EC738 + .incbin "baserom.gba", 0x3ec738, 0x8 + +Unknown_3EC740: @ 83EC740 + .incbin "baserom.gba", 0x3ec740, 0xc + +Unknown_3EC74C: @ 83EC74C + .incbin "baserom.gba", 0x3ec74c, 0x20 + +Unknown_3EC76C: @ 83EC76C + .incbin "baserom.gba", 0x3ec76c, 0x24 + +Unknown_3EC790: @ 83EC790 + .incbin "baserom.gba", 0x3ec790, 0x18 + +Unknown_3EC7A8: @ 83EC7A8 + .incbin "baserom.gba", 0x3ec7a8, 0x4 +Unknown_3EC7AC: @ 83EC7AC + .incbin "baserom.gba", 0x3ec7ac, 0x8 + +Unknown_3EC7B4: @ 83EC7B4 + .incbin "baserom.gba", 0x3ec7b4, 0xc + +Unknown_3EC7C0: @ 83EC7C0 + .incbin "baserom.gba", 0x3ec7c0, 0x20 + +Unknown_3EC7E0: @ 83EC7E0 + .incbin "baserom.gba", 0x3ec7e0, 0x10 + +Unknown_3EC7F0: @ 83EC7F0 + .incbin "baserom.gba", 0x3ec7f0, 0x8 + +Unknown_3EC7F8: @ 83EC7F8 + .incbin "baserom.gba", 0x3ec7f8, 0xc + +Unknown_3EC804: @ 83EC804 + .incbin "baserom.gba", 0x3ec804, 0x20 + +Unknown_3EC824: @ 83EC824 + .incbin "baserom.gba", 0x3ec824, 0x24 + +Unknown_3EC848: @ 83EC848 + .incbin "baserom.gba", 0x3ec848, 0x18 + + .align 2 gUnknown_083EC860:: @ 83EC860 - .incbin "baserom.gba", 0x003ec860, 0xa0 + .4byte Unknown_3EC660, Unknown_3EC6F0, Unknown_3EC7A8, 0x4 + .4byte Unknown_3EC68C, Unknown_3EC6F4, Unknown_3EC7AC, 0x8 + .4byte Unknown_3EC664, Unknown_3EC6FC, Unknown_3EC7B4, 0xc + .4byte Unknown_3EC694, Unknown_3EC708, Unknown_3EC7C0, 0x20 + .4byte Unknown_3EC670, Unknown_3EC728, Unknown_3EC7E0, 0x10 + .4byte Unknown_3EC68C, Unknown_3EC738, Unknown_3EC7F0, 0x8 + .4byte Unknown_3EC680, Unknown_3EC740, Unknown_3EC7F8, 0xc + .4byte Unknown_3EC694, Unknown_3EC74C, Unknown_3EC804, 0x20 + .4byte Unknown_3EC6B4, Unknown_3EC76C, Unknown_3EC824, 0x24 + .4byte Unknown_3EC6D8, Unknown_3EC790, Unknown_3EC848, 0x18 gUnknown_083EC900:: @ 83EC900 - .incbin "baserom.gba", 0x003ec900, 0x3c + .incbin "baserom.gba", 0x3ec900, 0x28 -gUnknown_083EC93C:: @ 83EC93C - .incbin "baserom.gba", 0x003ec93c, 0x18 + .align 2 +gSpriteAnim_83EC928:: @ 83EC928 + obj_image_anim_frame 0, 0 + obj_image_anim_end + + .align 2 +gSpriteAnimTable_83EC930:: @ 83EC930 + .4byte gSpriteAnim_83EC928 + + .align 2 +gSpriteImageTable_83EC934: @ 83EC934 + obj_frame_tiles 0x02038984, 0x800 + + .align 2 +gSpriteTemplate_83EC93C:: @ 83EC93C + spr_template 0xFFFF, 3000, 0x20391AC, gSpriteAnimTable_83EC930, gSpriteImageTable_83EC934, gDummySpriteAffineAnimTable, sub_81009A8 .align 2 gUnknown_083EC954:: @ 83EC954 - obj_pal 0x02039184, 0x0bb8 + obj_pal 0x02039184, 3000 .align 2 gUnknown_083EC95C:: @ 83EC95C @@ -21190,7 +22158,9 @@ gUnknown_083EC984:: @ 83EC984 gUnknown_083EC98C:: .incbin "baserom.gba", 0x003ec98c, 0x20 - .incbin "baserom.gba", 0x003ec9ac, 0x20 + .align 2 +Unknown_3EC9AC: @ 83EC9AC + .incbin "baserom.gba", 0x3ec9ac, 0x20 .align 2 gUnknown_083EC9CC:: @ 83EC9CC @@ -21210,8 +22180,9 @@ gSpriteImage_83EC9DC:: @ 83EC9DC gUnknown_083ECA5C:: @ 83ECA5C obj_pal gUnknown_083EC98C, 0x0008 + .align 2 gUnknown_083ECA64:: @ 83ECA64 - .incbin "baserom.gba", 0x003eca64, 0x8 + obj_pal Unknown_3EC9AC, 0x0008 .align 2 gOamData_83ECA6C:: @ 83ECA6C @@ -21480,8 +22451,44 @@ gUnknown_083ECE6C:: @ 83ECE6C gUnknown_083ECE7E:: @ 83ECE7E .incbin "baserom.gba", 0x003ece7e, 0x8e + .align 2 gUnknown_083ECF0C:: @ 83ECF0C - .incbin "baserom.gba", 0x003ECF0C, 0x8C + .4byte sub_8105C64 + .4byte sub_8105F54 + .4byte sub_8105F54 + .4byte sub_8105F54 + .4byte sub_8105F54 + .4byte sub_8105F9C + .4byte sub_8105EB4 + .4byte sub_8105C64 + .4byte sub_8105C64 + .4byte sub_8105C6C + .4byte sub_8105CF0 + .4byte sub_8105D08 + .4byte sub_8105D20 + .4byte sub_8105D3C + .4byte sub_8105DA4 + .4byte sub_8105E08 + .4byte sub_8105C64 + .4byte sub_8106058 + .4byte sub_81060FC + .4byte sub_81060FC + .4byte sub_81060FC + .4byte sub_81060FC + .4byte sub_81060FC + .4byte sub_81060FC + .4byte sub_81060FC + .4byte sub_81060FC + .4byte sub_81061C8 + .4byte sub_81061C8 + .4byte sub_81061C8 + .4byte sub_81061C8 + .4byte sub_81061C8 + .4byte sub_81061C8 + .4byte sub_81061C8 + .4byte sub_81061C8 + .4byte sub_8106230 + Unknown_83ECF98: .incbin "baserom.gba", 0x003ECF98, 0x10 Unknown_83ECFA8: @@ -21507,6 +22514,7 @@ gUnknown_083ED048:: @ 83ED048 .4byte Unknown_83ED020 .4byte Unknown_83ECFF8 + .align 2 gUnknown_083ED064:: @ 83ED064 .4byte sub_810639C .4byte sub_8106364 @@ -21565,7 +22573,24 @@ gOamData_83ED0B8:: @ 83ED0B8 .2byte 0x0000 .align 2 - .incbin "baserom.gba", 0x003ed0c0, 0x40 +gSpriteImageTable_83ED0C0:: @ 83ED0C0 + obj_frame_tiles 0x02013200, 0x800 + obj_frame_tiles 0x02013A00, 0x800 + obj_frame_tiles 0x02014200, 0x800 + obj_frame_tiles 0x02014A00, 0x800 + obj_frame_tiles 0x02015200, 0x800 + + .align 2 +gSpriteImageTable_83ED0E8:: @ 83ED0E8 + obj_frame_tiles 0x02015A00, 0x300 + + .align 2 +gSpriteImageTable_83ED0F0:: @ 83ED0F0 + obj_frame_tiles 0x02015D00, 0x500 + + .align 2 +gSpriteImageTable_83ED0F8:: @ 83ED0F8 + obj_frame_tiles 0x02016200, 0x600 .align 2 gSpriteImageTable_83ED100:: @ 83ED100 @@ -21607,7 +22632,68 @@ gSpriteImageTable_83ED170:: @ 83ED170 obj_frame_tiles gSpriteImage_8E98868, 0x80 .align 2 - .incbin "baserom.gba", 0x003ed178, 0xb0 +gSpriteImageTable_83ED178:: @ 83ED178 + obj_frame_tiles 0x02010000, 0x600 + + .align 2 +gSpriteImageTable_83ED180:: @ 83ED180 + obj_frame_tiles 0x02010600, 0x200 + + .align 2 +gSpriteImageTable_83ED188:: @ 83ED188 + obj_frame_tiles 0x02010800, 0x200 + + .align 2 +gSpriteImageTable_83ED190:: @ 83ED190 + obj_frame_tiles 0x02010A00, 0x200 + + .align 2 +gSpriteImageTable_83ED198:: @ 83ED198 + obj_frame_tiles 0x02010C00, 0x300 + + .align 2 +gSpriteImageTable_83ED1A0:: @ 83ED1A0 + obj_frame_tiles 0x02011000, 0x400 + + .align 2 +gSpriteImageTable_83ED1A8:: @ 83ED1A8 + obj_frame_tiles 0x02011400, 0x200 + + .align 2 +gSpriteImageTable_83ED1B0:: @ 83ED1B0 + obj_frame_tiles 0x02011600, 0x300 + + .align 2 +gSpriteImageTable_83ED1B8:: @ 83ED1B8 + obj_frame_tiles 0x02011900, 0x300 + + .align 2 +gSpriteImageTable_83ED1C0:: @ 83ED1C0 + obj_frame_tiles 0x02011C00, 0x200 + obj_frame_tiles 0x02011E00, 0x200 + obj_frame_tiles 0x02011E00, 0x200 + + .align 2 +gSpriteImageTable_83ED1D8:: @ 83ED1D8 + obj_frame_tiles 0x02012000, 0x280 + + .align 2 +gSpriteImageTable_83ED1E0:: @ 83ED1E0 + obj_frame_tiles 0x02012280, 0x80 + obj_frame_tiles 0x02012300, 0x80 + obj_frame_tiles 0x02012380, 0x80 + obj_frame_tiles 0x02012400, 0x80 + obj_frame_tiles 0x02012480, 0x80 + + .align 2 +gSpriteImageTable_83ED208:: @ 83ED208 + obj_frame_tiles 0x02012600, 0x480 + obj_frame_tiles 0x02012A80, 0x480 + + .align 2 +gSpriteImageTable_83ED218:: @ 83ED218 + obj_frame_tiles 0x02012F00, 0x180 + obj_frame_tiles 0x02013080, 0x180 .align 2 gSpriteImageTable_83ED228:: @ 83ED228 @@ -21853,19 +22939,19 @@ gSpriteTemplate_83ED444:: @ 83ED444 .align 2 gSpriteTemplate_83ED45C:: @ 83ED45C - spr_template 0xFFFF, 1, gOamData_83ED0B8, gSpriteAnimTable_83ED334, 0x83ED0C0, gDummySpriteAffineAnimTable, sub_8105170 + spr_template 0xFFFF, 1, gOamData_83ED0B8, gSpriteAnimTable_83ED334, gSpriteImageTable_83ED0C0, gDummySpriteAffineAnimTable, sub_8105170 .align 2 gSpriteTemplate_83ED474:: @ 83ED474 - spr_template 0xFFFF, 2, gOamData_83ED088, gSpriteAnimTable_83ED32C, 0x83ED0E8, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 2, gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0E8, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED48C:: @ 83ED48C - spr_template 0xFFFF, 3, gOamData_83ED088, gSpriteAnimTable_83ED32C, 0x83ED0F0, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 3, gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F0, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED4A4:: @ 83ED4A4 - spr_template 0xFFFF, 3, gOamData_83ED088, gSpriteAnimTable_83ED32C, 0x83ED0F8, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 3, gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F8, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED4BC:: @ 83ED4BC @@ -21901,59 +22987,59 @@ gSpriteTemplate_83ED564:: @ 83ED564 .align 2 gSpriteTemplate_83ED57C:: @ 83ED57C - spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, 0x83ED178, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED178, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED594:: @ 83ED594 - spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, 0x83ED180, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED180, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED5AC:: @ 83ED5AC - spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, 0x83ED188, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED188, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED5C4:: @ 83ED5C4 - spr_template 18, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, 0x83ED190, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 18, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED190, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED5DC:: @ 83ED5DC - spr_template 0xFFFF, 6, gOamData_83ED0B0, gSpriteAnimTable_83ED32C, 0x83ED198, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 6, gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED198, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED5F4:: @ 83ED5F4 - spr_template 0xFFFF, 6, gOamData_83ED0B0, gSpriteAnimTable_83ED32C, 0x83ED1A0, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 6, gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A0, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED60C:: @ 83ED60C - spr_template 19, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, 0x83ED1A8, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 19, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A8, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED624:: @ 83ED624 - spr_template 20, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, 0x83ED1B0, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 20, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B0, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED63C:: @ 83ED63C - spr_template 21, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, 0x83ED1B8, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 21, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B8, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED654:: @ 83ED654 - spr_template 0xFFFF, 6, gOamData_83ED0A0, gSpriteAnimTable_83ED36C, 0x83ED1C0, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 6, gOamData_83ED0A0, gSpriteAnimTable_83ED36C, gSpriteImageTable_83ED1C0, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED66C:: @ 83ED66C - spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, 0x83ED1D8, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1D8, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED684:: @ 83ED684 - spr_template 0xFFFF, 6, gOamData_83ED090, gSpriteAnimTable_83ED380, 0x83ED1E0, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 6, gOamData_83ED090, gSpriteAnimTable_83ED380, gSpriteImageTable_83ED1E0, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED69C:: @ 83ED69C - spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED378, 0x83ED208, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED378, gSpriteImageTable_83ED208, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED6B4:: @ 83ED6B4 - spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED374, 0x83ED218, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 6, gOamData_83ED080, gSpriteAnimTable_83ED374, gSpriteImageTable_83ED218, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83ED6CC:: @ 83ED6CC @@ -22144,8 +23230,30 @@ gUnknown_083EDBC4:: @ 83EDBC4 .4byte Unknown_083EDB54 .4byte 0 @ dummied out + .align 2 gUnknown_083EDC2C:: @ 83EDC2C - .incbin "baserom.gba", 0x003edc2c, 0xb0 + obj_tiles gSlotMachineReelSymbol1Tiles, 0x200, 0 + obj_tiles gSlotMachineReelSymbol2Tiles, 0x200, 1 + obj_tiles gSlotMachineReelSymbol3Tiles, 0x200, 2 + obj_tiles gSlotMachineReelSymbol4Tiles, 0x200, 3 + obj_tiles gSlotMachineReelSymbol5Tiles, 0x200, 4 + obj_tiles gSlotMachineReelSymbol6Tiles, 0x200, 5 + obj_tiles gSlotMachineReelSymbol7Tiles, 0x200, 6 + obj_tiles gSlotMachineNumber0Tiles, 0x40, 7 + obj_tiles gSlotMachineNumber1Tiles, 0x40, 8 + obj_tiles gSlotMachineNumber2Tiles, 0x40, 9 + obj_tiles gSlotMachineNumber3Tiles, 0x40, 10 + obj_tiles gSlotMachineNumber4Tiles, 0x40, 11 + obj_tiles gSlotMachineNumber5Tiles, 0x40, 12 + obj_tiles gSlotMachineNumber6Tiles, 0x40, 13 + obj_tiles gSlotMachineNumber7Tiles, 0x40, 14 + obj_tiles gSlotMachineNumber8Tiles, 0x40, 15 + obj_tiles gSlotMachineNumber9Tiles, 0x40, 16 + obj_tiles 0x2010a00, 0x200, 18 + obj_tiles 0x2011400, 0x200, 19 + obj_tiles 0x2011600, 0x300, 20 + obj_tiles 0x2011900, 0x300, 21 + null_obj_tiles .align 2 gUnknown_083EDCDC:: @ 83EDCDC @@ -22179,19 +23287,37 @@ gUnknown_083EDD1C:: @ 83EDD1C .4byte gUnknown_08E95A18 + 156 gUnknown_083EDD30:: @ 83EDD30 - .incbin "baserom.gba", 0x003edd30, 0x5 + .byte 0x4A, 0x4B, 0x4C, 0x4E, 0x4D gUnknown_083EDD35:: @ 83EDD35 - .incbin "baserom.gba", 0x003edd35, 0x6 + .byte 0, 0, 1, 2, 3, 4 gUnknown_083EDD3B:: @ 83EDD3B - .incbin "baserom.gba", 0x003edd3b, 0x3 + .byte 1, 2, 2 + + .align 1 Unknown_83EDD3E: - .incbin "baserom.gba", 0x003edd3e, 0x20 + .ifdef SAPPHIRE + .incbin "graphics/unknown/sapphire_83EDD96.gbapal" + .else + .incbin "graphics/unknown/ruby_83EDD3E.gbapal" + .endif + + .align 1 Unknown_83EDD5E: - .incbin "baserom.gba", 0x003edd5e, 0x20 + .ifdef SAPPHIRE + .incbin "graphics/unknown/sapphire_83EDDB6.gbapal" + .else + .incbin "graphics/unknown/ruby_83EDD5E.gbapal" + .endif + + .align 1 Unknown_83EDD7E: - .incbin "baserom.gba", 0x003edd7e, 0x20 + .ifdef SAPPHIRE + .incbin "graphics/unknown/sapphire_83EDDD6.gbapal" + .else + .incbin "graphics/unknown/ruby_83EDD7E.gbapal" + .endif .align 2 gUnknown_083EDDA0:: @ 83EDDA0 @@ -22781,7 +23907,42 @@ gUnknown_083F7F9C:: @ 83F7F9C .incbin "baserom.gba", 0x003f7f9c, 0x28 gUnknown_083F7FC4:: @ 83F7FC4 - .incbin "baserom.gba", 0x003f7fc4, 0x88 + .byte 1, 4, 1, 0 + .4byte sub_810CFF8 + .byte 2, 4, 1, 0 + .4byte sub_810CFF8 + .byte 3, 4, 1, 0 + .4byte sub_810CFF8 + .byte 5, 4, 1, 0 + .4byte sub_810CFF8 + .byte 6, 4, 1, 0 + .4byte sub_810CFF8 + .byte 7, 4, 1, 0 + .4byte sub_810CFF8 + .byte 8, 4, 1, 0 + .4byte sub_810CFF8 + .byte 9, 4, 1, 0 + .4byte sub_810CFF8 + + .byte 4, 1, 0, 1 + .4byte sub_810CE48 + .byte 4, 2, 0, 1 + .4byte sub_810CE48 + .byte 4, 3, 0, 1 + .4byte sub_810CE48 + .byte 4, 5, 0, 1 + .4byte sub_810CE48 + .byte 4, 6, 0, 1 + .4byte sub_810CE48 + .byte 4, 7, 0, 1 + .4byte sub_810CE48 + .byte 4, 8, 0, 1 + .4byte sub_810CE48 + .byte 4, 9, 0, 1 + .4byte sub_810CE48 + + .byte 0, 0, 0, 0 + .4byte NULL gUnknown_083F804C:: @ 83F804C .incbin "baserom.gba", 0x003f804c, 0x20 @@ -23481,7 +24642,11 @@ gOamData_83FA328:: @ 83FA328 .2byte 0x0800 .align 2 - .incbin "baserom.gba", 0x003fa330, 0x20 +gSpriteImageTable_83FA330:: @ 83FA330 + obj_frame_tiles 0x02017E00, 0x80 + obj_frame_tiles 0x02017E80, 0x80 + obj_frame_tiles 0x02017F00, 0x80 + obj_frame_tiles 0x02017F80, 0x80 .align 2 gSpriteAnim_83FA350:: @ 83FA350 @@ -23547,7 +24712,7 @@ gSpriteAnimTable_83FA3E8:: @ 83FA3E8 .align 2 gSpriteTemplate_83FA40C:: @ 83FA40C - spr_template 0xFFFF, 2, gOamData_83FA328, gSpriteAnimTable_83FA3E8, 0x83FA330, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 2, gOamData_83FA328, gSpriteAnimTable_83FA3E8, gSpriteImageTable_83FA330, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gOamData_83FA424:: @ 83FA424 @@ -23576,7 +24741,14 @@ gOamData_83FA454:: @ 83FA454 .2byte 0x0800 .align 2 - .incbin "baserom.gba", 0x003fa45c, 0x38 +gSpriteImageTable_83FA45C:: @ 83FA45C + obj_frame_tiles 0x02017000, 0x200 + obj_frame_tiles 0x02017200, 0x200 + obj_frame_tiles 0x02017400, 0x200 + obj_frame_tiles 0x02017600, 0x200 + obj_frame_tiles 0x02017800, 0x200 + obj_frame_tiles 0x02017A00, 0x200 + obj_frame_tiles 0x02017C00, 0x200 .align 2 gSpriteAnim_83FA494:: @ 83FA494 @@ -23637,11 +24809,11 @@ gSpriteAnimTable_83FA4F4:: @ 83FA4F4 .align 2 gSpriteTemplate_83FA50C:: @ 83FA50C - spr_template 0xFFFF, 6, gOamData_83FA44C, gSpriteAnimTable_83FA4F0, 0x83FA45C, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 6, gOamData_83FA44C, gSpriteAnimTable_83FA4F0, gSpriteImageTable_83FA45C, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83FA524:: @ 83FA524 - spr_template 0xFFFF, 7, gOamData_83FA454, gSpriteAnimTable_83FA4F4, 0x83FA45C, gDummySpriteAffineAnimTable, sub_8119D80 + spr_template 0xFFFF, 7, gOamData_83FA454, gSpriteAnimTable_83FA4F4, gSpriteImageTable_83FA45C, gDummySpriteAffineAnimTable, sub_8119D80 .align 2 gOamData_83FA53C:: @ 83FA53C @@ -23662,8 +24834,15 @@ gOamData_83FA54C:: @ 83FA54C .2byte 0x0800 .align 2 - .incbin "baserom.gba", 0x003fa554, 0x10 -Unknown_083FA564: +gSpriteImageTable_83FA554: @ 83FA554 + obj_frame_tiles 0x02018000, 0x80 + + .align 2 +gSpriteImageTable_83FA55C: @ 83FA55C + obj_frame_tiles 0x02018080, 0x100 + + .align 2 +gUnknown_083FA564: @ 83FA564 .incbin "baserom.gba", 0x003fa564, 0x18 .align 2 @@ -23675,26 +24854,31 @@ gSpriteAffineAnim_83FA57C:: @ 83FA57C obj_rot_scal_anim_end .align 2 - .4byte Unknown_083FA564 + .4byte gUnknown_083FA564 .align 2 gSpriteAffineAnimTable_83FA5A8:: @ 83FA5A8 .4byte gSpriteAffineAnim_83FA57C .align 2 - .incbin "baserom.gba", 0x003fa5ac, 0x14 +gUnknown_083FA5AC:: @ 83FA5AC + .incbin "baserom.gba", 0x003fa5ac, 0x10 + + .align 2 +@ unreferenced + .4byte gUnknown_083FA5AC .align 2 gSpriteTemplate_83FA5C0:: @ 83FA5C0 - spr_template 0xFFFF, 1, gOamData_83FA53C, gSpriteAnimTable_83F9ED8, 0x83FA554, gDummySpriteAffineAnimTable, SpriteCallbackDummy + spr_template 0xFFFF, 1, gOamData_83FA53C, gSpriteAnimTable_83F9ED8, gSpriteImageTable_83FA554, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 gSpriteTemplate_83FA5D8:: @ 83FA5D8 - spr_template 0xFFFF, 1, gOamData_83FA544, gSpriteAnimTable_83F9ED8, 0x83FA55C, gDummySpriteAffineAnimTable, sub_8119964 + spr_template 0xFFFF, 1, gOamData_83FA544, gSpriteAnimTable_83F9ED8, gSpriteImageTable_83FA55C, gDummySpriteAffineAnimTable, sub_8119964 .align 2 gSpriteTemplate_83FA5F0:: @ 83FA5F0 - spr_template 0xFFFF, 1, gOamData_83FA54C, gSpriteAnimTable_83F9ED8, 0x83FA55C, gSpriteAffineAnimTable_83FA5A8, sub_8119D80 + spr_template 0xFFFF, 1, gOamData_83FA54C, gSpriteAnimTable_83F9ED8, gSpriteImageTable_83FA55C, gSpriteAffineAnimTable_83FA5A8, sub_8119D80 gUnknown_083FA608:: @ 83FA608 .incbin "baserom.gba", 0x003fa608, 0x6 @@ -24166,16 +25350,37 @@ gUnknown_084017B0:: @ 84017B0 .4byte OtherText_NoEntry, sub_8122770 .4byte UnknownText_Exit, sub_8122838 - .incbin "baserom.gba", 0x004017d0, 0x8 +gUnknown_084017D0:: @ 84017D0 + .incbin "baserom.gba", 0x4017d0, 0x3 + +gUnknown_084017D3: @ 84017D3 + .incbin "baserom.gba", 0x4017d3, 0x3 +gUnknown_084017D6: @ 84017D6 + .incbin "baserom.gba", 0x4017d6, 0x2 + + .align 2 gUnknown_084017D8:: @ 84017D8 - .incbin "baserom.gba", 0x004017d8, 0x18 + .4byte 2307, gUnknown_084017D0 + .4byte 2307, gUnknown_084017D3 + .4byte 2306, gUnknown_084017D6 + .align 2 gUnknown_084017F0:: @ 84017F0 - .incbin "baserom.gba", 0x004017f0, 0x20 + .4byte OtherText_Store, sub_8122F70 + .4byte OtherText_Summary, sub_81230BC + .4byte UnknownText_Exit, sub_81230F4 + +gUnknown_08401808:: @ 8401808 + .incbin "baserom.gba", 0x401808, 0x3 + +gUnknown_0840180B:: @ 840180B + .incbin "baserom.gba", 0x40180b, 0x5 + .align 2 gUnknown_08401810:: @ 8401810 - .incbin "baserom.gba", 0x00401810, 0x10 + .4byte 2307, gUnknown_08401808 + .4byte 2306, gUnknown_0840180B gUnknown_08401820:: @ 8401820 .incbin "baserom.gba", 0x00401820, 0x158 @@ -24198,11 +25403,17 @@ gUnknown_08401CC8:: @ 8401CC8 gUnknown_08401CD4:: @ 8401CD4 .incbin "baserom.gba", 0x00401cd4, 0x24 + .align 2 gUnknown_08401CF8:: @ 8401CF8 - .incbin "baserom.gba", 0x00401cf8, 0x20 + obj_tiles gUnknown_08E80614, 0x800, 1 + obj_tiles gUnknown_08E80914, 0x40, 2 + obj_tiles gUnknown_08E80944, 0x80, 3 + .space 8 + .align 2 gUnknown_08401D18:: @ 8401D18 - .incbin "baserom.gba", 0x00401d18, 0x10 + obj_pal Palette_08E7EC1C, 1 + .space 8 .align 2 gOamData_8401D28:: @ 8401D28 @@ -25099,7 +26310,23 @@ gUnknown_08402CF8:: @ 8402CF8 .incbin "baserom.gba", 0x00402cf8, 0x10 gUnknown_08402D08:: @ 8402D08 - .incbin "baserom.gba", 0x00402d08, 0x48 + .4byte OtherText_Battle + .byte 1, 1, 0, 0 + .4byte OtherText_Power + .byte 1, 4, 1, 0 + .4byte OtherText_Accuracy + .byte 1, 9, 2, 0 + .space 8 + + .4byte OtherText_Contest + .byte 1, 1, 0, 0 + .4byte OtherText_Appeal + .byte 1, 4, 1, 0 + .4byte OtherText_Jam + .byte 1, 9, 2, 0 + .space 8 + + .incbin "baserom.gba", 0x402d48, 0x8 .align 2 gOamData_8402D50:: @ 8402D50 @@ -25416,25 +26643,33 @@ gUnknown_084062F8:: @ 84062F8 .4byte OtherText_Cancel2, sub_813B734 gUnknown_08406318:: @ 8406318 - .incbin "baserom.gba", 0x00406318, 0x6 + .string "{STR_VAR_1}{CLEAR_TO 80}$" gUnknown_0840631E:: @ 840631E - .incbin "baserom.gba", 0x0040631e, 0x9 + .string "{COLOR RED}{STR_VAR_1}{CLEAR_TO 80}$" gUnknown_08406327:: @ 8406327 - .incbin "baserom.gba", 0x00406327, 0x3 + .string "{STR_VAR_1}$" gUnknown_0840632A:: @ 840632A - .incbin "baserom.gba", 0x0040632a, 0x6 + .string "{COLOR RED}{STR_VAR_1}$" gUnknown_08406330:: @ 8406330 - .incbin "baserom.gba", 0x00406330, 0x4 + .string "{CLEAR_TO 32}$" gUnknown_08406334:: @ 8406334 .incbin "baserom.gba", 0x00406334, 0x6 gUnknown_0840633A:: @ 840633A - .incbin "baserom.gba", 0x0040633a, 0x46 + .string "{COLOR RED}{STR_VAR_1}$" + +Palette_406340:: @ 8406340 + .incbin "baserom.gba", 0x406340, 0x20 + +Palette_406360:: @ 8406360 + .incbin "baserom.gba", 0x406360, 0x20 + +gIntroTiles:: .incbin "graphics/intro/intro.4bpp.lz" gUnknown_08406974:: @ 8406974 @@ -25491,10 +26726,16 @@ gUnknown_0840A778:: @ 840A778 gUnknown_0840A7E4:: @ 840A7E4 .incbin "baserom.gba", 0x0040a7e4, 0x13c + +gIntro3Misc1Palette:: .incbin "graphics/intro/intro3_misc1.gbapal" +gIntro3Misc2Palette:: .incbin "graphics/intro/intro3_misc2.gbapal" +gIntro3MiscTiles:: .incbin "graphics/intro/intro3_misc.4bpp.lz" +gIntro1EonPalette:: .incbin "graphics/intro/intro1_eon.gbapal" +gIntro1EonTiles:: .incbin "graphics/intro/intro1_eon.4bpp.lz" .align 2 @@ -25535,10 +26776,27 @@ gSpriteTemplate_840AE20:: @ 840AE20 spr_template 2000, 2000, gOamData_840ADE8, gSpriteAnimTable_840AE10, NULL, gDummySpriteAffineAnimTable, sub_813D208 .align 2 - .incbin "baserom.gba", 0x0040ae38, 0x48 +Unknown_40AE38: @ 840AE38 + .incbin "baserom.gba", 0x40ae38, 0x14 + .align 2 +Unknown_40AE4C: @ 840AE4C + .incbin "baserom.gba", 0x40ae4c, 0x14 + + .align 2 +Unknown_40AE60: @ 840AE60 + .incbin "baserom.gba", 0x40ae60, 0x10 + + .align 2 +Unknown_40AE70: @ 840AE70 + .incbin "baserom.gba", 0x40ae70, 0x10 + + .align 2 gUnknown_0840AE80:: @ 840AE80 - .incbin "baserom.gba", 0x0040ae80, 0x10 + .4byte Unknown_40AE38 + .4byte Unknown_40AE4C + .4byte Unknown_40AE60 + .4byte Unknown_40AE70 .align 2 gOamData_840AE90:: @ 840AE90 @@ -25688,17 +26946,37 @@ gSpriteAnimTable_840AFEC:: @ 840AFEC gSpriteTemplate_840AFF0:: @ 840AFF0 spr_template 2002, 2002, gOamData_840AFDC, gSpriteAnimTable_840AFEC, NULL, gDummySpriteAffineAnimTable, sub_813DA64 + .align 2 gUnknown_0840B008:: @ 840B008 - .incbin "baserom.gba", 0x0040b008, 0x10 + obj_tiles gIntroTiles, 0x1400, 2000 + .space 8 + .align 2 gUnknown_0840B018:: @ 840B018 - .incbin "baserom.gba", 0x0040b018, 0x10 + obj_tiles gIntro1EonTiles, 0x400, 2002 + .space 8 + .align 2 gUnknown_0840B028:: @ 840B028 - .incbin "baserom.gba", 0x0040b028, 0x3c + obj_pal Palette_406340, 2000 + obj_pal Palette_406360, 2001 + obj_pal gIntro1EonPalette, 2002 + .space 8 + +gUnknown_0840B048:: @ 840B048 + .incbin "baserom.gba", 0x40b048, 0x8 +gUnknown_0840B050:: @ 840B050 + .incbin "baserom.gba", 0x40b050, 0x8 + +gUnknown_0840B058:: @ 840B058 + .incbin "baserom.gba", 0x40b058, 0xc + + .align 2 gUnknown_0840B064:: @ 840B064 - .incbin "baserom.gba", 0x0040b064, 0xc + .4byte gUnknown_0840B048 + .4byte gUnknown_0840B050 + .4byte gUnknown_0840B058 .align 2 gOamData_840B070:: @ 840B070 @@ -25852,17 +27130,28 @@ gSpriteAnimTable_840B1F0:: @ 840B1F0 gSpriteTemplate_840B1F4:: @ 840B1F4 spr_template 2003, 2003, gOamData_840B1E0, gSpriteAnimTable_840B1F0, NULL, gDummySpriteAffineAnimTable, sub_813EDFC + .align 2 gUnknown_0840B20C:: @ 840B20C - .incbin "baserom.gba", 0x0040b20c, 0x10 + obj_tiles gInterfaceGfx_PokeBall, 0x100, 2002 + .space 8 + .align 2 gUnknown_0840B21C:: @ 840B21C - .incbin "baserom.gba", 0x0040b21c, 0x10 + obj_tiles gIntro3MiscTiles, 0xa00, 2003 + .space 8 + .align 2 gUnknown_0840B22C:: @ 840B22C - .incbin "baserom.gba", 0x0040b22c, 0x10 + obj_pal gInterfacePal_PokeBall, 2002 + .space 8 + .align 2 gUnknown_0840B23C:: @ 840B23C - .incbin "baserom.gba", 0x0040b23c, 0x1c + obj_pal gIntro3Misc1Palette, 2003 + obj_pal gIntro3Misc2Palette, 2004 + .space 8 + + .incbin "baserom.gba", 0x0040b254, 0x4 .align 2 gUnknown_0840B258:: @ 840B258 @@ -26014,10 +27303,12 @@ gBattleAnimSpriteTemplate_840B4FC:: @ 840B4FC .align 2 gUnknown_0840B514:: @ 840B514 - .incbin "baserom.gba", 0x0040b514, 0x10 + obj_tiles gContestConfetti_Gfx, 0x220, 1001 + .space 8 gUnknown_0840B524:: @ 840B524 - .incbin "baserom.gba", 0x0040b524, 0x10 + obj_pal gContestConfetti_Pal, 1001 + .space 8 gUnknown_0840B534:: @ 840B534 .incbin "baserom.gba", 0x0040b534, 0x6 @@ -26032,38 +27323,85 @@ gUnknown_0840B56A:: @ 840B56A .incbin "baserom.gba", 0x0040b56a, 0x12 gUnknown_0840B57C:: @ 840B57C - .incbin "baserom.gba", 0x0040b57c, 0x24 + .incbin "baserom.gba", 0x0040b57c, 0x1c + .align 2 +gOamData_840B598:: @ 840B598 + .2byte 0x0000 + .2byte 0xC000 + .2byte 0x0000 + + .align 2 gUnknown_0840B5A0:: @ 840B5A0 -Unknown_840B5A0: - .incbin "baserom.gba", 0x0040b5a0, 0x1C -Unknown_840B5BC: - .incbin "baserom.gba", 0x0040b5bc, 0x20 -Unknown_840B5DC: - .incbin "baserom.gba", 0x0040b5dc, 0x20 -Unknown_840B5FC: - .incbin "baserom.gba", 0x0040b5fc, 0x20 -Unknown_840B61C: - .incbin "baserom.gba", 0x0040b61c, 0x20 -Unknown_840B63C: - .incbin "baserom.gba", 0x0040b63c, 0x20 -Unknown_840B65C: - .incbin "baserom.gba", 0x0040b65c, 0x20 -Unknown_840B67C: - .incbin "baserom.gba", 0x0040b67c, 0x20 + .4byte 0x02008000 + .4byte 0x0200A000 + .4byte 0x0200C000 + .4byte 0x0200E000 + .4byte 0x02010000 + .4byte 0x02014000 + .4byte 0x02018000 + + .align 2 +gSpriteImageTable_840B5BC:: @ 840B5BC + obj_frame_tiles 0x02008000, 0x800 + obj_frame_tiles 0x02008800, 0x800 + obj_frame_tiles 0x02009000, 0x800 + obj_frame_tiles 0x02009800, 0x800 + + .align 2 +gSpriteImageTable_840B5DC:: @ 840B5DC + obj_frame_tiles 0x0200A000, 0x800 + obj_frame_tiles 0x0200A800, 0x800 + obj_frame_tiles 0x0200B000, 0x800 + obj_frame_tiles 0x0200B800, 0x800 + + .align 2 +gSpriteImageTable_840B5FC:: @ 840B5FC + obj_frame_tiles 0x0200C000, 0x800 + obj_frame_tiles 0x0200C800, 0x800 + obj_frame_tiles 0x0200D000, 0x800 + obj_frame_tiles 0x0200D800, 0x800 + + .align 2 +gSpriteImageTable_840B61C:: @ 840B61C + obj_frame_tiles 0x0200E000, 0x800 + obj_frame_tiles 0x0200E800, 0x800 + obj_frame_tiles 0x0200F000, 0x800 + obj_frame_tiles 0x0200F800, 0x800 + + .align 2 +gSpriteImageTable_840B63C:: @ 840B63C + obj_frame_tiles 0x02010000, 0x800 + obj_frame_tiles 0x02010800, 0x800 + obj_frame_tiles 0x02011000, 0x800 + obj_frame_tiles 0x02011800, 0x800 + + .align 2 +gSpriteImageTable_840B65C:: @ 840B65C + obj_frame_tiles 0x02014000, 0x800 + obj_frame_tiles 0x02014800, 0x800 + obj_frame_tiles 0x02015000, 0x800 + obj_frame_tiles 0x02015800, 0x800 + + .align 2 +gSpriteImageTable_840B67C:: @ 840B67C + obj_frame_tiles 0x02018000, 0x800 + obj_frame_tiles 0x02018800, 0x800 + obj_frame_tiles 0x02019000, 0x800 + obj_frame_tiles 0x02019800, 0x800 .align 2 gUnknown_0840B69C:: @ 840B69C - .4byte Unknown_840B5BC - .4byte Unknown_840B5DC - .4byte Unknown_840B5FC - .4byte Unknown_840B61C - .4byte Unknown_840B63C - .4byte Unknown_840B65C - .4byte Unknown_840B67C + .4byte gSpriteImageTable_840B5BC + .4byte gSpriteImageTable_840B5DC + .4byte gSpriteImageTable_840B5FC + .4byte gSpriteImageTable_840B61C + .4byte gSpriteImageTable_840B63C + .4byte gSpriteImageTable_840B65C + .4byte gSpriteImageTable_840B67C gUnknown_0840B6B8:: @ 840B6B8 - .incbin "baserom.gba", 0x0040b6b8, 0x18 + spr_template -1, -1, gOamData_840B598, NULL, gSpriteImageTable_840B5BC, gDummySpriteAffineAnimTable, nullsub_81 .align 2 gOamData_840B6D0:: @ 840B6D0 @@ -26204,8 +27542,8 @@ gUnknown_0840B878:: .include "data/text/credits.s" gUnknown_0840CA00:: @ 840CA00 -Unknown_840CA00: .incbin "baserom.gba", 0x0040ca00, 0x8 + Unknown_840CA08: .incbin "baserom.gba", 0x0040ca08, 0x14 Unknown_840CA1C: @@ -26217,11 +27555,11 @@ Unknown_840CA40: .align 2 gUnknown_0840CA54:: @ 840CA54 -Unknown_840CA54: .4byte Unknown_840CA08 .4byte Unknown_840CA1C .4byte Unknown_840CA30 .4byte Unknown_840CA40 + Unknown_840CA64: .incbin "baserom.gba", 0x0040ca64, 0x14 Unknown_840CA78: @@ -26376,24 +27714,24 @@ SystemText_InternalBatteryIsDry: .string "The internal battery has run dry.\nThe game can be played.\pHowever, clock-based events will\nno longer occur.$" gUnknown_0840DF7C:: @ 840DF7C -SystemText_Player2: +SystemText_Player2:: .string "PLAYER$" gUnknown_0840DF83:: @ 840DF83 -SystemText_Pokedex2: +SystemText_Pokedex2:: .string "POKéDEX$" gUnknown_0840DF8B:: @ 840DF8B -SystemText_Time: +SystemText_Time:: .string "TIME$" gUnknown_0840DF90:: @ 840DF90 -SystemText_Badges: +SystemText_Badges:: .string "BADGES$" gBirchText_Boy:: .string "BOY$" -gBirchText_Girl: +gBirchText_Girl:: .string "GIRL$" gBirchText_NewName:: .string "NEW NAME$" @@ -26424,15 +27762,15 @@ gDefaultGirlName3:: gDefaultGirlName4:: .string "SARA$" -SystemText_IntroWeCall: +SystemText_IntroWeCall:: .string "This is what we call\na POKéMON.$" gUnknown_0840DFF7:: @ 840DFF7 -SystemText_NewPara: +SystemText_NewPara:: .string "\p$" gUnknown_0840DFF9:: @ 840DFF9 -DexText_UnknownPoke: +DexText_UnknownPoke:: .string " ????? POKéMON$" @ why 12 spaces? gUnknown_0840E013:: @ 840E013 @@ -26466,167 +27804,167 @@ DexText_SearchComplete: .string "Search completed.$" gUnknown_0840E093:: @ 840E093 -DexText_NoMatching: +DexText_NoMatching:: .string "No matching POKéMON were found.$" -DexText_SearchForPoke: +DexText_SearchForPoke:: .string "Search for POKéMON based on\nselected parameters.$" -DexText_SwitchDex: +DexText_SwitchDex:: .string "Switch POKéDEX listings.$" -DexText_ReturnToDex: +DexText_ReturnToDex:: .string "Return to the POKéDEX.$" -DexText_SelectDexMode: +DexText_SelectDexMode:: .string "Select the POKéDEX mode.$" -DexText_SelectDexList: +DexText_SelectDexList:: .string "Select the POKéDEX listing mode.$" -DexText_ListByABC: +DexText_ListByABC:: .string "List by the first letter in the name.\n/Spotted POKéMON only.$" -DexText_ListByColor: +DexText_ListByColor:: .string "List by body color.\n/Spotted POKéMON only.$" -DexText_ListByType: +DexText_ListByType:: .string "List by type.\n/Owned POKéMON only.$" -DexText_ExecuteSearchSwitch: +DexText_ExecuteSearchSwitch:: .string "Execute search/switch.$" -DexText_HoennDex: +DexText_HoennDex:: .string "HOENN DEX$" -DexText_NationalDex: +DexText_NationalDex:: .string "NATIONAL DEX$" -DexText_NumericalMode: +DexText_NumericalMode:: .string "NUMERICAL MODE$" -DexText_ABCMode: +DexText_ABCMode:: .string "A TO Z MODE$" -DexText_HeaviestMode: +DexText_HeaviestMode:: .string "HEAVIEST MODE$" -DexText_LightestMode: +DexText_LightestMode:: .string "LIGHTEST MODE$" -DexText_TallestMode: +DexText_TallestMode:: .string "TALLEST MODE$" -DexText_SmallestMode: +DexText_SmallestMode:: .string "SMALLEST MODE$" -DexText_ABC: +DexText_ABC:: .string "ABC$" -DexText_DEF: +DexText_DEF:: .string "DEF$" -DexText_GHI: +DexText_GHI:: .string "GHI$" -DexText_JKL: +DexText_JKL:: .string "JKL$" -DexText_MNO: +DexText_MNO:: .string "MNO$" -DexText_PQR: +DexText_PQR:: .string "PQR$" -DexText_STU: +DexText_STU:: .string "STU$" -DexText_VWX: +DexText_VWX:: .string "VWX$" -DexText_YZ: +DexText_YZ:: .string "YZ$" -DexText_Red: +DexText_Red:: .string "RED$" -DexText_Blue: +DexText_Blue:: .string "BLUE$" -DexText_Yellow: +DexText_Yellow:: .string "YELLOW$" -DexText_Green: +DexText_Green:: .string "GREEN$" -DexText_Black: +DexText_Black:: .string "BLACK$" -DexText_Brown: +DexText_Brown:: .string "BROWN$" -DexText_Purple: +DexText_Purple:: .string "PURPLE$" -DexText_Gray: +DexText_Gray:: .string "GRAY$" -DexText_White: +DexText_White:: .string "WHITE$" -DexText_Pink: +DexText_Pink:: .string "PINK$" -DexText_HoennDex2: +DexText_HoennDex2:: .string "HOENN region’s POKéDEX$" -DexText_NationalDex2: +DexText_NationalDex2:: .string "National edition POKéDEX$" -DexText_ListByNumber: +DexText_ListByNumber:: .string "POKéMON are listed according to their\nnumber.$" -DexText_ListByABC2: +DexText_ListByABC2:: .string "Spotted and owned POKéMON are listed\nalphabetically.$" -DexText_ListByHeavyToLightest: +DexText_ListByHeavyToLightest:: .string "Owned POKéMON are listed from the\nheaviest to the lightest.$" -DexText_ListByLightToHeaviest: +DexText_ListByLightToHeaviest:: .string "Owned POKéMON are listed from the\nlightest to the heaviest.$" -DexText_ListByTallToSmallest: +DexText_ListByTallToSmallest:: .string "Owned POKéMON are listed from the\ntallest to the smallest.$" -DexText_ListBySmallToTallest: +DexText_ListBySmallToTallest:: .string "Owned POKéMON are listed from the\nsmallest to the tallest.$" -DexText_Terminator5: +DexText_Terminator5:: .string "$" -DexText_DontSpecify: +DexText_DontSpecify:: .string "DON’T SPECIFY.$" -DexText_None: +DexText_None:: .string "NONE$" -DexText_RightPointingTriangle: +DexText_RightPointingTriangle:: .string "▶$" @ right-pointing triangle -DexText_Terminator6: +DexText_Terminator6:: .string " $" gUnknown_0840E44F:: @ 840E44F -MenuText_WelcomeToHOF: +MenuText_WelcomeToHOF:: .string "Welcome to the HALL OF FAME!$" -MenuText_HOFDexRate: +MenuText_HOFDexRate:: .string "Spotted POKéMON: {STR_VAR_1}!\nOwned POKéMON: {STR_VAR_2}!\pPROF. BIRCH’s POKéDEX rating!\pPROF. BIRCH: Let’s see...\p$" gUnknown_0840E4CD:: @ 840E4CD -MenuText_HOFSaving: +MenuText_HOFSaving:: .string "SAVING...\nDON’T TURN OFF THE POWER.$" gUnknown_0840E4F1:: @ 840E4F1 -MenuText_HOFCorrupt: +MenuText_HOFCorrupt:: .string "The HALL OF FAME data is corrupt.$" gUnknown_0840E513:: @ 840E513 -MenuText_HOFNumber: +MenuText_HOFNumber:: .string "HALL OF FAME No. $" gUnknown_0840E525:: @ 840E525 -MenuText_HOFCongratulations: +MenuText_HOFCongratulations:: .string "LEAGUE CHAMPION!\nCONGRATULATIONS!$" gUnknown_0840E547:: @ 840E547 -OtherText_Number2: +OtherText_Number2:: .string "No. $" gUnknown_0840E54C:: @ 840E54C -OtherText_Level3: +OtherText_Level3:: .string "Lv. $" gUnknown_0840E551:: @ 840E551 -OtherText_IDNumber: +OtherText_IDNumber:: .string "IDNo. /$" gUnknown_0840E559:: @ 840E559 -OtherText_Name: +OtherText_Name:: .string "NAME /$" gUnknown_0840E560:: @ 840E560 -OtherText_IDNumber2: +OtherText_IDNumber2:: .string "IDNo. /$" @ identical string for no reason? gUnknown_0840E568:: @ 840E568 -OtherText_BirchInTrouble: +OtherText_BirchInTrouble:: .string "{HIGHLIGHT WHITE2}{COLOR DARK_GREY}PROF. BIRCH is in trouble!\nRelease a POKéMON and rescue him!$" gUnknown_0840E5AB:: @ 840E5AB -OtherText_DoYouChoosePoke: +OtherText_DoYouChoosePoke:: .string "{HIGHLIGHT WHITE2}{COLOR DARK_GREY}Do you choose this POKéMON?$" gUnknown_0840E5CD:: @ 840E5CD -OtherText_Poke: +OtherText_Poke:: .string "POKéMON$" gUnknown_0840E5D5:: @ 840E5D5 -SystemText_SaveErrorExchangeBackup: +SystemText_SaveErrorExchangeBackup:: .string "Save error.\pPlease exchange the\nbackup memory.$" gUnknown_0840E604:: @ 840E604 -OtherText_FlyToWhere: +OtherText_FlyToWhere:: .string "FLY to where?$" OtherText_Use:: @@ -26643,113 +27981,113 @@ OtherText_Confirm:: .string "CONFIRM$" gUnknown_0840E63B:: @ 840E63B -OtherText_Walk: +OtherText_Walk:: .string "WALK$" gUnknown_0840E640:: @ 840E640 -UnknownText_Exit: +UnknownText_Exit:: .string "EXIT$" gUnknown_0840E645:: @ 840E645 -OtherText_Cancel2: +OtherText_Cancel2:: .string "CANCEL$" gUnknown_0840E64C:: @ 840E64C -OtherText_Terminator19: +OtherText_Terminator19:: .string "$" -OtherText_Cancel3: +OtherText_Cancel3:: .string "CANCEL$" -OtherText_Item: +OtherText_Item:: .string "ITEM$" -OtherText_Mail: +OtherText_Mail:: .string "MAIL$" -OtherText_Take2: +OtherText_Take2:: .string "TAKE$" -OtherText_Store: +OtherText_Store:: .string "STORE$" gUnknown_0840E669:: @ 840E669 -OtherText_Check: +OtherText_Check:: .string "CHECK$" gUnknown_0840E66F:: @ 840E66F -OtherText_None: +OtherText_None:: .string "NONE$" gUnknown_0840E674:: @ 840E674 -OtherText_ThreeQuestions2: +OtherText_ThreeQuestions2:: .string "???$" gUnknown_0840E678:: @ 840E678 -OtherText_FiveQuestions: +OtherText_FiveQuestions:: .string "?????$" -OtherText_Backslash: +OtherText_Backslash:: .string "/$" gUnknown_0840E680:: @ 840E680 -OtherText_OneDash: +OtherText_OneDash:: .string "-$" gUnknown_0840E682:: @ 840E682 -OtherText_TwoDashes: +OtherText_TwoDashes:: .string "--$" gUnknown_0840E685:: @ 840E685 -OtherText_ThreeDashes2: +OtherText_ThreeDashes2:: .string "---$" gUnknown_0840E689:: @ 840E689 -OtherText_MaleSymbol2: +OtherText_MaleSymbol2:: .string "♂$" gUnknown_0840E68B:: @ 840E68B -OtherText_FemaleSymbol2: +OtherText_FemaleSymbol2:: .string "♀$" -OtherText_Level2: +OtherText_Level2:: .string "Lv.$" gUnknown_0840E691:: @ 840E691 -OtherText_TallPlus: +OtherText_TallPlus:: .string "{TALL_PLUS}$" -OtherText_RightArrow: +OtherText_RightArrow:: .string "{RIGHT_ARROW}$" gUnknown_0840E697:: @ 840E697 -MenuText_GoBackToPrev: +MenuText_GoBackToPrev:: .string "Go back to the\nprevious menu.$" gUnknown_0840E6B5:: @ 840E6B5 -OtherText_WhatWillYouDo: +OtherText_WhatWillYouDo:: .string "What would you like to do?$" gUnknown_0840E6D0:: @ 840E6D0 -OtherText_xString1: +OtherText_xString1:: .string "×{STR_VAR_1}$" gUnknown_0840E6D4:: @ 840E6D4 -OtherText_Berry2: +OtherText_Berry2:: .string " BERRY$" gUnknown_0840E6DB:: @ 840E6DB -OtherText_Coins2: +OtherText_Coins2:: .string "{STR_VAR_1} COINS$" gUnknown_0840E6E4:: @ 840E6E4 -OtherText_CloseBag: +OtherText_CloseBag:: .string "CLOSE BAG$" -OtherText_TheField3: +OtherText_TheField3:: .string "the field.$" -OtherText_TheBattle: +OtherText_TheBattle:: .string "the battle.$" -OtherText_ThePokeList: +OtherText_ThePokeList:: .string "the POKéMON LIST.$" -OtherText_TheShop: +OtherText_TheShop:: .string "the shop.$" -OtherText_TheField: +OtherText_TheField:: .string "the field.$" -OtherText_TheField2: +OtherText_TheField2:: .string "the field.$" -OtherText_ThePC: +OtherText_ThePC:: .string "the PC.$" .align 2 @@ -27053,27 +28391,27 @@ OtherText_CanPay: .string "I can pay ¥{STR_VAR_1}.\nWould that be okay?$" gUnknown_0840EF0C:: @ 840EF0C -OtherText_SoldItem: +OtherText_SoldItem:: .string "Turned over the {STR_VAR_2}\nand received ¥{STR_VAR_1}.$" -OtherText_Money: +OtherText_Money:: .string "¥{STR_VAR_1}$" -OtherText_Shift: +OtherText_Shift:: .string "SHIFT$" -OtherText_SendOut: +OtherText_SendOut:: .string "SEND OUT$" -OtherText_Switch2: +OtherText_Switch2:: .string "SWITCH$" -OtherText_Summary: +OtherText_Summary:: .string "SUMMARY$" -OtherText_Moves: +OtherText_Moves:: .string "MOVES$" -OtherText_Enter2: +OtherText_Enter2:: .string "ENTER$" -OtherText_NoEntry: +OtherText_NoEntry:: .string "NO ENTRY$" -OtherText_Take: +OtherText_Take:: .string "TAKE$" -OtherText_Read2: +OtherText_Read2:: .string "READ$" gUnknown_0840EF72:: @ 840EF72 @@ -27269,47 +28607,47 @@ OtherText_SnapConfusion: .string "{STR_VAR_1} snapped out of its\nconfusion.{PAUSE_UNTIL_PRESS}$" gUnknown_0840F5FA:: @ 840F5FA -OtherText_GotOverLove: +OtherText_GotOverLove:: .string "{STR_VAR_1} got over its\ninfatuation.{PAUSE_UNTIL_PRESS}$" -OtherText_ChoosePoke: +OtherText_ChoosePoke:: .string "Choose a POKéMON.$" -OtherText_MovePokeTo: +OtherText_MovePokeTo:: .string "Move to where?$" -OtherText_TeachWhat: +OtherText_TeachWhat:: .string "Teach which POKéMON?$" -OtherText_UseWhat: +OtherText_UseWhat:: .string "Use on which POKéMON?$" -OtherText_GiveWhat: +OtherText_GiveWhat:: .string "Give to which POKéMON?$" -OtherText_DoWhat: +OtherText_DoWhat:: .string "Do what with {STR_VAR_1}?$" -OtherText_NothingToCut: +OtherText_NothingToCut:: .string "There’s nothing to CUT.$" -OtherText_CantSurf: +OtherText_CantSurf:: .string "You can’t SURF here.$" -OtherText_AlreadySurfing: +OtherText_AlreadySurfing:: .string "You’re already SURFING.$" -OtherText_CantUseThatHere: +OtherText_CantUseThatHere:: .string "Can’t use that here.$" -OtherText_RestoreWhatMove: +OtherText_RestoreWhatMove:: .string "Restore which move?$" -OtherText_BoostPP: +OtherText_BoostPP:: .string "Boost PP of which move?$" -OtherText_DoWhatWithItem: +OtherText_DoWhatWithItem:: .string "Do what with an item?$" -OtherText_NoPokeForBattle: +OtherText_NoPokeForBattle:: .string "No POKéMON for battle!$" -OtherText_ChoosePoke2: +OtherText_ChoosePoke2:: .string "Choose a POKéMON.$" -OtherText_NotEnoughHP: +OtherText_NotEnoughHP:: .string "Not enough HP...$" -OtherText_ThreePokeNeeded: +OtherText_ThreePokeNeeded:: .string "Three POKéMON are needed.$" -OtherText_PokeCantBeSame: +OtherText_PokeCantBeSame:: .string "POKéMON can’t be the same.$" -OtherText_NoIdenticalHoldItems: +OtherText_NoIdenticalHoldItems:: .string "No identical hold items.$" -OtherText_TeachWhichPoke: +OtherText_TeachWhichPoke:: .string "Teach which POKéMON?$" gUnknown_0840F7C6:: @ 840F7C6 @@ -27377,21 +28715,21 @@ OtherText_NextLv: .string "NEXT LV.$" gUnknown_0840F82F:: @ 840F82F -OtherText_Ribbons00: +OtherText_Ribbons00:: .string "RIBBONS: 00$" -OtherText_Event: +OtherText_Event:: .string "EVENT$" -OtherText_Switch: +OtherText_Switch:: .string "SWITCH$" -OtherText_PokeInfo: +OtherText_PokeInfo:: .string "POKéMON INFO$" -OtherText_PokeSkills: +OtherText_PokeSkills:: .string "POKéMON SKILLS$" -OtherText_BattleMoves: +OtherText_BattleMoves:: .string "BATTLE MOVES$" -OtherText_ContestMoves: +OtherText_ContestMoves:: .string "C0NTEST MOVES$" @why the l33t 0, that's stupid -OtherText_Info: +OtherText_Info:: .string "INFO$" gUnknown_0840F884:: @ 840F884 @@ -27427,41 +28765,41 @@ OtherText_RegisteredDataDeleted: .string "The registered data was deleted.{PAUSE_UNTIL_PRESS}$" gUnknown_0840F9BB:: @ 840F9BB -SecretBaseText_NoRegistry: +SecretBaseText_NoRegistry:: .string "There is no REGISTRY.{PAUSE_UNTIL_PRESS}$" -SecretBaseText_DelRegist: +SecretBaseText_DelRegist:: .string "DEL REGIST.$" -SecretBaseText_Decorate: +SecretBaseText_Decorate:: .string "DECORATE$" -SecretBaseText_PutAway: +SecretBaseText_PutAway:: .string "PUT AWAY$" -SecretBaseText_Toss: +SecretBaseText_Toss:: .string "TOSS$" -SecretBaseText_PutOutDecor: +SecretBaseText_PutOutDecor:: .string "Put out the selected decoration item.$" -SecretBaseText_StoreChosenDecor: +SecretBaseText_StoreChosenDecor:: .string "Store the chosen decoration in the PC.$" -SecretBaseText_ThrowAwayDecor: +SecretBaseText_ThrowAwayDecor:: .string "Throw away unwanted decorations.$" gUnknown_0840FA64:: @ 840FA64 -SecretBaseText_NoDecors: +SecretBaseText_NoDecors:: .string "There are no decorations.{PAUSE_UNTIL_PRESS}$" -SecretBaseText_Desk: +SecretBaseText_Desk:: .string "DESK$" -SecretBaseText_Chair: +SecretBaseText_Chair:: .string "CHAIR$" -SecretBaseText_Plant: +SecretBaseText_Plant:: .string "PLANT$" -SecretBaseText_Ornament: +SecretBaseText_Ornament:: .string "ORNAMENT$" -SecretBaseText_Mat: +SecretBaseText_Mat:: .string "MAT$" -SecretBaseText_Poster: +SecretBaseText_Poster:: .string "POSTER$" -SecretBaseText_Doll: +SecretBaseText_Doll:: .string "DOLL$" -SecretBaseText_Cushion: +SecretBaseText_Cushion:: .string "CUSHION$" gUnknown_0840FAB2:: @ 840FAB2 @@ -27531,37 +28869,37 @@ SecretBaseText_DecorReturned: .string "The decoration was returned to the PC.$" gUnknown_0840FD11:: @ 840FD11 -SecretBaseText_NoDecorInUse: +SecretBaseText_NoDecorInUse:: .string "There are no decorations in use.{PAUSE_UNTIL_PRESS}$" -SecretBaseText_Tristan: +SecretBaseText_Tristan:: .string "TRISTAN$" -SecretBaseText_Philip: +SecretBaseText_Philip:: .string "PHILIP$" -SecretBaseText_Dennis: +SecretBaseText_Dennis:: .string "DENNIS$" -SecretBaseText_Roberto: +SecretBaseText_Roberto:: .string "ROBERTO$" -SecretBaseText_TurnOff: +SecretBaseText_TurnOff:: .string "TURN OFF$" -SecretBaseText_Decoration: +SecretBaseText_Decoration:: .string "DECORATION$" -SecretBaseText_ItemStorage: +SecretBaseText_ItemStorage:: .string "ITEM STORAGE$" gUnknown_0840FD73:: @ 840FD73 -PCText_Mailbox: +PCText_Mailbox:: .string "MAILBOX$" -PCText_DepositItem: +PCText_DepositItem:: .string "DEPOSIT ITEM$" -PCText_WithdrawItem: +PCText_WithdrawItem:: .string "WITHDRAW ITEM$" -PCText_TossItem: +PCText_TossItem:: .string "TOSS ITEM$" -PCText_StoreItems: +PCText_StoreItems:: .string "Store items in the PC.$" -PCText_TakeOutItems: +PCText_TakeOutItems:: .string "Take out items from the PC.$" -PCText_ThrowAwayItems: +PCText_ThrowAwayItems:: .string "Throw away items stored in the PC.$" gUnknown_0840FDF6:: @ 840FDF6 @@ -27579,13 +28917,13 @@ OtherText_HowManyToWithdraw: gUnknown_0840FE50:: @ 840FE50 OtherText_WithdrewThing: .string "Withdrew {STR_VAR_2}\n{STR_VAR_1}(s).$" -OtherText_Read: +OtherText_Read:: .string "READ$" gUnknown_0840FE68:: @ 840FE68 -OtherText_MoveToBag: +OtherText_MoveToBag:: .string "MOVE TO BAG$" -OtherText_Give: +OtherText_Give:: .string "GIVE$" gUnknown_0840FE79:: @ 840FE79 @@ -27646,77 +28984,77 @@ ContestText_ContestWinner: gUnknown_0840FF75:: @ 840FF75 @ come back to this one and clean up -OtherText_Unknown1: +OtherText_Unknown1:: .string "’s $" -OtherText_Cool: +OtherText_Cool:: .string "COOL $" -OtherText_Beauty2: +OtherText_Beauty2:: .string "BEAUTY $" -OtherText_Cute: +OtherText_Cute:: .string "CUTE $" -OtherText_Smart: +OtherText_Smart:: .string "SMART $" -OtherText_Tough: +OtherText_Tough:: .string "TOUGH $" -OtherText_NonstopSuperCool: +OtherText_NonstopSuperCool:: .string "Nonstop super-cool -\nthe inestimable $" -OtherText_Terminator6: +OtherText_Terminator6:: .string "$" -OtherText_GoodLookingPoke: +OtherText_GoodLookingPoke:: .string "Hey, there!\nThe good-looking POKéMON $" -OtherText_Terminator7: +OtherText_Terminator7:: .string "$" -OtherText_MarvelousGreat: +OtherText_MarvelousGreat:: .string "The marvelous, wonderful, and\nvery great $" -OtherText_Terminator8: +OtherText_Terminator8:: .string "$" -OtherText_CenturyLastVenus: +OtherText_CenturyLastVenus:: .string "This century’s last Venus -\nthe beautiful $" -OtherText_Terminator9: +OtherText_Terminator9:: .string "$" -OtherText_Terminator10: +OtherText_Terminator10:: .string "$" -OtherText_DazzlingSlime: +OtherText_DazzlingSlime:: .string "’s dazzling,\nglittering smile$" -OtherText_PokeCenterIdol: +OtherText_PokeCenterIdol:: .string "POKéMON CENTER’s super idol -\nthe incomparable $" -OtherText_Terminator11: +OtherText_Terminator11:: .string "$" -OtherText_LovelyAndSweet: +OtherText_LovelyAndSweet:: .string "The lovely and sweet $" -OtherText_Terminator12: +OtherText_Terminator12:: .string "$" -OtherText_ThePretty: +OtherText_ThePretty:: .string "The pretty $" -OtherText_WinningPortrait: +OtherText_WinningPortrait:: .string "’s\nwinning portrait$" -OtherText_GiveUsWink: +OtherText_GiveUsWink:: .string "Give us a wink!\nThe cutie POKéMON $" -OtherText_Terminator13: +OtherText_Terminator13:: .string "$" -OtherText_SmartnessMaestro: +OtherText_SmartnessMaestro:: .string "The smartness maestro -\nThe wise POKéMON $" -OtherText_Terminator14: +OtherText_Terminator14:: .string "$" -OtherText_ChosenPokeAmong: +OtherText_ChosenPokeAmong:: .string "The chosen POKéMON -\nThe one among POKéMON $" -OtherText_Terminator15: +OtherText_Terminator15:: .string "$" -OtherText_TheExcellent: +OtherText_TheExcellent:: .string "The excellent $" -OtherText_ItsMomentOfElegance: +OtherText_ItsMomentOfElegance:: .string "’s\nmoment of elegance$" -OtherText_PowerfullyMuscular: +OtherText_PowerfullyMuscular:: .string "The powerfully muscular\nspeedster $" -OtherText_Terminator16: +OtherText_Terminator16:: .string "$" -OtherText_StrongErEst: +OtherText_StrongErEst:: .string "The strong, stronger, and\nstrongest $" -OtherText_Terminator17: +OtherText_Terminator17:: .string "$" -OtherText_MightyTough: +OtherText_MightyTough:: .string "The mighty tough\nhyper POKéMON $" -OtherText_Exclamation: +OtherText_Exclamation:: .string "!$" OtherText_Petalburg:: @@ -28333,57 +29671,57 @@ OtherText_Number: .string "No. $" gUnknown_08410E8C:: @ 8410E8C -OtherText_Ribbons: +OtherText_Ribbons:: .string "RIBBONS$" -OtherText_MakeProfilePage1: +OtherText_MakeProfilePage1:: .string "Make your profile by combining$" -OtherText_MakeProfilePage2: +OtherText_MakeProfilePage2:: .string "four words or phrases.$" -OtherText_MakeMessagePage1: +OtherText_MakeMessagePage1:: .string "Make a message with 6 phrases.$" -OtherText_MakeMessagePage2: +OtherText_MakeMessagePage2:: .string "Max. two 12-letter phrases/line.$" -OtherText_DescribeFeelingsPage1: +OtherText_DescribeFeelingsPage1:: .string "Find words that describe your$" -OtherText_DescribeFeelingsPage2: +OtherText_DescribeFeelingsPage2:: .string "feelings right now.$" -OtherText_WithFourPhrases: +OtherText_WithFourPhrases:: .string "With four phrases,$" -OtherText_CombineNinePhrasesPage1: +OtherText_CombineNinePhrasesPage1:: .string "Combine nine phrases and$" -OtherText_CombineNinePhrasesPage2: +OtherText_CombineNinePhrasesPage2:: .string "make a message.$" -OtherText_ImproveBardSongPage1: +OtherText_ImproveBardSongPage1:: .string "Change just one word or phrase$" -OtherText_ImproveBardSongPage2: +OtherText_ImproveBardSongPage2:: .string "and improve the BARD’s song.$" -OtherText_YourProfile: +OtherText_YourProfile:: .string "Your profile $" -OtherText_YourFeelingBattle: +OtherText_YourFeelingBattle:: .string "Your feeling at the battle’s start$" -OtherText_SetWinMessage: +OtherText_SetWinMessage:: .string "What you say if you win a battle$" -OtherText_SetLossMessage: +OtherText_SetLossMessage:: .string "What you say if you lose a battle$" -OtherText_TheAnswer: +OtherText_TheAnswer:: .string "The answer$" -OtherText_MailMessage: +OtherText_MailMessage:: .string "The MAIL message$" -OtherText_MailSalutation: +OtherText_MailSalutation:: .string "The MAIL salutation$" -OtherText_NewSong: +OtherText_NewSong:: .string "The new song$" -OtherText_CombineTwoPhrasesPage1: +OtherText_CombineTwoPhrasesPage1:: .string "Combine two phrases and$" -OtherText_CombineTwoPhrasesPage2: +OtherText_CombineTwoPhrasesPage2:: .string "make a trendy saying.$" -OtherText_ConfirmTrendyPage1: +OtherText_ConfirmTrendyPage1:: .string "The trendy saying$" -OtherText_ConfirmTrendyPage2: +OtherText_ConfirmTrendyPage2:: .string "is as shown. Okay?$" -OtherText_HipsterPage1: +OtherText_HipsterPage1:: .string "I’ll combine two phrases and$" -OtherText_HipsterPage2: +OtherText_HipsterPage2:: .string "teach you a good saying.$" gUnknown_084110EE:: @ 84110EE @@ -28467,23 +29805,23 @@ OtherText_Interview: .string "Interview$" gUnknown_084112D7:: @ 84112D7 -OtherText_GoodSaying: +OtherText_GoodSaying:: .string "Good saying$" -OtherText_SoPretty: +OtherText_SoPretty:: .string " so pretty!$" -OtherText_SoDarling: +OtherText_SoDarling:: .string " so darling!$" -OtherText_SoRelaxed: +OtherText_SoRelaxed:: .string " so relaxed!$" -OtherText_SoSunny: +OtherText_SoSunny:: .string " so sunny!$" -OtherText_SoDesirable: +OtherText_SoDesirable:: .string " so desirable!$" -OtherText_SoExciting: +OtherText_SoExciting:: .string " so exciting!$" -OtherText_SoAmusing: +OtherText_SoAmusing:: .string " so amusing!$" -OtherText_SoMagical: +OtherText_SoMagical:: .string " so magical!$" gUnknown_0841134B:: @ 841134B @@ -28491,41 +29829,41 @@ OtherText_Is: .string " is$" gUnknown_0841134F:: @ 841134F -OtherText_DontYouAgree: +OtherText_DontYouAgree:: .string "\nDon’t you agree?$" -OtherText_WantVacationNicePlace: +OtherText_WantVacationNicePlace:: .string "I so want to go on a vacation.\nWould you happen to know a nice place?$" -OtherText_BoughtCrayonsIsNice: +OtherText_BoughtCrayonsIsNice:: .string "I bought crayons with 120 colors!\nDon’t you think that’s nice?$" -OtherText_IfWeCouldFloat: +OtherText_IfWeCouldFloat:: .string "Wouldn’t it be nice if we could float\naway on a cloud of bubbles?$" -OtherText_SandWashesAwayMakeSad: +OtherText_SandWashesAwayMakeSad:: .string "When you write on a sandy beach,\nthey wash away. It makes me sad.$" -OtherText_WhatsBottomSeaLike: +OtherText_WhatsBottomSeaLike:: .string "What’s the bottom of the sea like?\nJust once I would so love to go!$" -OtherText_SeeSettingSun: +OtherText_SeeSettingSun:: .string "When you see the setting sun, does it\nmake you want to go home?$" -OtherText_LyingInGreenGrass: +OtherText_LyingInGreenGrass:: .string "Lying back in the green grass...\nOh, it’s so, so nice!$" -OtherText_SecretBasesWonderful: +OtherText_SecretBasesWonderful:: .string "SECRET BASES are so wonderful!\nCan’t you feel the excitement?$" -OtherText_PokeLeague: +OtherText_PokeLeague:: .string "POKéMON LEAGUE$" -OtherText_PokeCenter: +OtherText_PokeCenter:: .string "POKéMON CENTER$" gUnknown_08411581:: @ 8411581 -OtherText_GetAPokeBlock: +OtherText_GetAPokeBlock:: .string " gets a {POKEBLOCK}?$" -OtherText_Coolness: +OtherText_Coolness:: .string "Coolness $" -OtherText_Beauty: +OtherText_Beauty:: .string "Beauty $" -OtherText_Cuteness: +OtherText_Cuteness:: .string "Cuteness $" -OtherText_Smartness: +OtherText_Smartness:: .string "Smartness $" -OtherText_Toughness: +OtherText_Toughness:: .string "Toughness $" gUnknown_084115C2:: @ 84115C2 @@ -29174,18 +30512,26 @@ gIntro2SpritePalettes:: @ 8416DFC .space 8 gUnknown_08416E24:: @ 8416E24 - .incbin "baserom.gba", 0x00416e24, 0x10 + obj_tiles gIntro2BrendanTiles, 0x2000, 1002 + .space 8 gUnknown_08416E34:: @ 8416E34 - .incbin "baserom.gba", 0x00416e34, 0x10 + obj_tiles gIntro2MayTiles, 0x2000, 1003 + .space 8 + +gEvoSparklePalette: @ 8416E44 .incbin "graphics/misc/evo_sparkle.gbapal" + +gEvoSparkleTiles: @ 8416E64 .incbin "graphics/misc/evo_sparkle.4bpp.lz" gUnknown_08416E84:: @ 8416E84 - .incbin "baserom.gba", 0x00416e84, 0x10 + obj_tiles gEvoSparkleTiles, 0x20, 1001 + .space 8 gUnknown_08416E94:: @ 8416E94 - .incbin "baserom.gba", 0x00416e94, 0x10 + obj_pal gEvoSparklePalette, 1001 + .space 8 .align 2 gOamData_8416EA4:: @ 8416EA4 @@ -29610,84 +30956,84 @@ OtherText_FourQuestions: .include "data/text/easy_chat/group_name_strings.s" gUnknown_0842C890:: @ 842C890 -OtherText_ThreeQuestions: +OtherText_ThreeQuestions:: .string "???$" gUnknown_0842C894:: @ 842C894 -OtherText_From: +OtherText_From:: .string "From $" gUnknown_0842C89A:: @ 842C89A -OtherText_MixingRecordsWithFriend: +OtherText_MixingRecordsWithFriend:: .string "Mixing records...$" gUnknown_0842C8AC:: @ 842C8AC -OtherText_MixingComplete: +OtherText_MixingComplete:: .string "Record mixing completed.\nThank you for waiting.$" gUnknown_0842C8DC:: @ 842C8DC -OtherText_TrainersTrainerCard: @ redundant but couldnt think of a better desc +OtherText_TrainersTrainerCard:: @ redundant but couldnt think of a better desc .string "’s TRAINER CARD$" gUnknown_0842C8EC:: @ 842C8EC -OtherText_FirstHOF: +OtherText_FirstHOF:: .string "FIRST HALL OF FAME$" gUnknown_0842C8FF:: @ 842C8FF -OtherText_LinkCableBattles: +OtherText_LinkCableBattles:: .string "LINK CABLE BATTLES W/ L/$" gUnknown_0842C924:: @ 842C924 -OtherText_BattleTowerWinRecord: +OtherText_BattleTowerWinRecord:: .string "BATTLE TOWER W/{CLEAR_TO 0x72}&{CLEAR_TO 0x98}STRAIGHT$" gUnknown_0842C943:: @ 842C943 -OtherText_ContestRecord: +OtherText_ContestRecord:: .string "CONTESTS W/FRIENDS W/$" gUnknown_0842C959:: @ 842C959 -OtherText_MixingRecord: +OtherText_MixingRecord:: .string "{POKEBLOCK}S W/FRIENDS$" gUnknown_0842C96A:: @ 842C96A -OtherText_TradeRecord: +OtherText_TradeRecord:: .string "POKéMON TRADES$" gUnknown_0842C979:: @ 842C979 -OtherText_Boy: +OtherText_Boy:: .string "BOY$" gUnknown_0842C97D:: @ 842C97D -OtherText_Girl: +OtherText_Girl:: .string "GIRL$" -OtherText_Terminator3: +OtherText_Terminator3:: .string "$" gUnknown_0842C983:: @ 842C983 -OtherText_Player: +OtherText_Player:: .string "PLAYER$" gUnknown_0842C98A:: @ 842C98A -OtherText_Badges: +OtherText_Badges:: .string "BADGES$" .string "$" gUnknown_0842C992:: @ 842C992 -OtherText_Pokedex: +OtherText_Pokedex:: .string "POKéDEX$" gUnknown_0842C99A:: @ 842C99A -OtherText_PlayTime: +OtherText_PlayTime:: .string "PLAY TIME$" gUnknown_0842C9A4:: @ 842C9A4 -OtherText_SentToPc: +OtherText_SentToPc:: .string "{STR_VAR_1} was sent to\nthe PC.{PAUSE_UNTIL_PRESS}$" -OtherText_YourName: +OtherText_YourName:: .string "YOUR NAME?$" -OtherText_BoxName: +OtherText_BoxName:: .string "BOX NAME?$" -OtherText_PokeName: +OtherText_PokeName:: .string "{STR_VAR_1}’s nickname?$" gUnknown_0842C9E1:: @ 842C9E1 @@ -29763,29 +31109,29 @@ OtherText_DontHaveThreeCoins: .string "You don’t have three COINS.$" gUnknown_0842CAF7:: @ 842CAF7 -OtherText_ReelTime: +OtherText_ReelTime:: .string "REEL TIME\nHere’s your chance to take\naim and nail marks!\nThe Reel Time continues for\nas often as the drawn number.\nIt all ends on a Big Bonus.$" -DaycareText_GetAlongVeryWell: +DaycareText_GetAlongVeryWell:: .string "The two seem to get along very well.$" -DaycareText_GetAlong: +DaycareText_GetAlong:: .string "The two seem to get along.$" -DaycareText_DontLikeOther: +DaycareText_DontLikeOther:: .string "The two don’t seem to like each other.$" -DaycareText_PlayOther: +DaycareText_PlayOther:: .string "The two prefer to play with other\nPOKéMON than each other.$" gUnknown_0842CC28:: @ 842CC28 -OtherText_NewLine2: +OtherText_NewLine2:: .string "\n$" gUnknown_0842CC2A:: @ 842CC2A -OtherText_Cancel: +OtherText_Cancel:: .string "CANCEL$" -OtherText_Lv: +OtherText_Lv:: .string "LV$" gUnknown_0842CC34:: @ 842CC34 -OtherText_Egg: +OtherText_Egg:: .string "EGG$" gUnknown_0842CC38:: @ 842CC38 @@ -29795,21 +31141,21 @@ OtherText_HatchedFromEgg: gUnknown_0842CC5A:: @ 842CC5A OtherText_NickHatchPrompt: .string "{COLOR WHITE2}{HIGHLIGHT TRANSPARENT}{SHADOW DARK_GREY}Would you like to nickname the newly\nhatched {STR_VAR_1}?$" -OtherText_Battle: +OtherText_Battle:: .string "BATTLE$" -OtherText_Contest: +OtherText_Contest:: .string "CONTEST$" -OtherText_Type: +OtherText_Type:: .string "TYPE/$" -OtherText_PP: +OtherText_PP:: .string "PP/$" -OtherText_Power: +OtherText_Power:: .string "POWER$" -OtherText_Accuracy: +OtherText_Accuracy:: .string "ACCURACY$" -OtherText_Appeal: +OtherText_Appeal:: .string "APPEAL$" -OtherText_Jam: +OtherText_Jam:: .string "JAM$" gUnknown_0842CCC7:: @ 842CCC7 @@ -30229,44 +31575,45 @@ gSpriteTemplate_842F2B0:: @ 842F2B0 spr_template 65521, 0xFFFF, gOamData_842F12C, gSpriteAnimTable_842F13C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 2 -Unknown_842F2C8: +Unknown_842F2C8: @ 842F2C8 .incbin "baserom.gba", 0x0042f2c8, 0x10 -Unknown_842F2D8: +Unknown_842F2D8: @ 842F2D8 .incbin "baserom.gba", 0x0042f2d8, 0x18 -Unknown_842F2F0: +Unknown_842F2F0: @ 842F2F0 .incbin "baserom.gba", 0x0042f2f0, 0x20 -Unknown_842F310: +Unknown_842F310: @ 842F310 .incbin "baserom.gba", 0x0042f310, 0x18 -Unknown_842F328: +Unknown_842F328: @ 842F328 .incbin "baserom.gba", 0x0042f328, 0x18 -Unknown_842F340: +Unknown_842F340: @ 842F340 .incbin "baserom.gba", 0x0042f340, 0x20 -Unknown_842F360: +Unknown_842F360: @ 842F360 .incbin "baserom.gba", 0x0042f360, 0x20 -Unknown_842F380: +Unknown_842F380: @ 842F380 .incbin "baserom.gba", 0x0042f380, 0x20 -Unknown_842F3A0: +Unknown_842F3A0: @ 842F3A0 .incbin "baserom.gba", 0x0042f3a0, 0x20 -Unknown_842F3C0: +Unknown_842F3C0: @ 842F3C0 .incbin "baserom.gba", 0x0042f3c0, 0x28 -Unknown_842F3E8: +Unknown_842F3E8: @ 842F3E8 .incbin "baserom.gba", 0x0042f3e8, 0x28 -Unknown_842F410: +Unknown_842F410: @ 842F410 .incbin "baserom.gba", 0x0042f410, 0x28 -Unknown_842F438: +Unknown_842F438: @ 842F438 .incbin "baserom.gba", 0x0042f438, 0x28 -Unknown_842F460: +Unknown_842F460: @ 842F460 .incbin "baserom.gba", 0x0042f460, 0x30 -Unknown_842F490: +Unknown_842F490: @ 842F490 .incbin "baserom.gba", 0x0042f490, 0x30 -Unknown_842F4C0: +Unknown_842F4C0: @ 842F4C0 .incbin "baserom.gba", 0x0042f4c0, 0x30 -Unknown_842F4F0: +Unknown_842F4F0: @ 842F4F0 .incbin "baserom.gba", 0x0042f4f0, 0x30 -Unknown_842F520: +Unknown_842F520: @ 842F520 .incbin "baserom.gba", 0x0042f520, 0x38 -Unknown_842F558: +Unknown_842F558: @ 842F558 .incbin "baserom.gba", 0x0042f558, 0x18 + .4byte Unknown_842F2C8 .4byte Unknown_842F2C8 .4byte Unknown_842F2D8 @@ -30293,8 +31640,27 @@ gUnknown_0842F5BC:: @ 842F5BC gUnknown_0842F5C0:: @ 842F5C0 .incbin "baserom.gba", 0x0042f5c0, 0x100 + .align 2 gUnknown_0842F6C0:: @ 842F6C0 - .incbin "baserom.gba", 0x0042f6c0, 0x98 + .4byte 0x2, Unknown_842F2C8 + .4byte 0x2, Unknown_842F2C8 + .4byte 0x3, Unknown_842F2D8 + .4byte 0x4, Unknown_842F2F0 + .4byte 0x3, Unknown_842F310 + .4byte 0x3, Unknown_842F328 + .4byte 0x4, Unknown_842F340 + .4byte 0x4, Unknown_842F360 + .4byte 0x4, Unknown_842F380 + .4byte 0x4, Unknown_842F3A0 + .4byte 0x5, Unknown_842F3C0 + .4byte 0x5, Unknown_842F3E8 + .4byte 0x5, Unknown_842F410 + .4byte 0x5, Unknown_842F438 + .4byte 0x6, Unknown_842F460 + .4byte 0x6, Unknown_842F490 + .4byte 0x6, Unknown_842F4C0 + .4byte 0x6, Unknown_842F4F0 + .4byte 0x7, Unknown_842F520 gUnknown_0842F758:: @ 842F758 .incbin "baserom.gba", 0x0042f758, 0x28 diff --git a/data/graphics.s b/data/graphics.s index acf4617ca..5edddac3b 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -895,7 +895,10 @@ gUnknown_08D1212C:: gUnknown_08D1214C:: .incbin "baserom.gba", 0xd1214c, 0x20 gUnknown_08D1216C:: @ 8D1216C - .incbin "baserom.gba", 0x00d1216c, 0xec0 + .incbin "baserom.gba", 0xd1216c, 0x840 + +Tiles_D129AC:: @ 8D129AC + .incbin "baserom.gba", 0xd129ac, 0x680 .align 2 gBattleAnimSpriteSheet_116:: @ 8D1302C @@ -3081,10 +3084,22 @@ gBattleAnimSpriteSheet_271:: @ 8E7EB3C .incbin "graphics/battle_anims/sprites/271.4bpp.lz" gUnknown_08E7EB9C:: @ 8E7EB9C - .incbin "baserom.gba", 0x00e7eb9c, 0xa0 + .incbin "baserom.gba", 0xe7eb9c, 0x80 + +Palette_08E7EC1C:: @ 8E7EC1C + .incbin "baserom.gba", 0xe7ec1c, 0x20 gUnknown_08E7EC3C:: @ 8E7EC3C - .incbin "baserom.gba", 0x00e7ec3c, 0x1d30 + .incbin "baserom.gba", 0xe7ec3c, 0x19d8 + +gUnknown_08E80614:: @ 8E80614 + .incbin "baserom.gba", 0xe80614, 0x300 + +gUnknown_08E80914:: @ 8E80914 + .incbin "baserom.gba", 0xe80914, 0x30 + +gUnknown_08E80944:: @ 8E80944 + .incbin "baserom.gba", 0xe80944, 0x28 gUnknown_08E8096C:: @ 8E8096C .incbin "baserom.gba", 0x00e8096c, 0x72c @@ -3362,7 +3377,10 @@ gUnknown_08E88A28:: @ 8E88A28 .incbin "baserom.gba", 0x00e88a28, 0x20 gUnknown_08E88A48:: @ 8E88A48 - .incbin "baserom.gba", 0x00e88a48, 0x40 + .incbin "baserom.gba", 0xe88a48, 0x20 + +Palette_E88A68:: @ 8E88A68 + .incbin "baserom.gba", 0xe88a68, 0x20 gUnknown_08E88A88:: @ 8E88A88 .incbin "baserom.gba", 0x00e88a88, 0x2c4 @@ -3398,15 +3416,25 @@ gUnknown_08E8A1C2:: @ 8E8A1C2 .incbin "baserom.gba", 0x00e8a1c2, 0x1e gUnknown_08E8A1E0:: @ 8E8A1E0 - .incbin "baserom.gba", 0x00e8a1e0, 0x3b8 + .incbin "baserom.gba", 0xe8a1e0, 0x2b8 + +gTiles_08E8A498:: @ 8E8A498 + .incbin "baserom.gba", 0xe8a498, 0x100 + +PokenavContestPokeballPalette:: @ 8E8A598 .incbin "graphics/pokenav/contest_pokeball.gbapal" - .incbin "baserom.gba", 0x00E8A5B8, 0x20 + +Palette_E8A5B8:: @ 8E8A5B8 + .incbin "baserom.gba", 0xe8a5b8, 0x20 gUnknown_08E8A5D8:: @ 8E8A5D8 .incbin "baserom.gba", 0x00e8a5d8, 0x1ec gUnknown_08E8A7C4:: @ 8E8A7C4 - .incbin "baserom.gba", 0x00e8a7c4, 0x540 + .incbin "baserom.gba", 0xe8a7c4, 0x520 + +Palette_E8ACE4:: @ 8E8ACE4 + .incbin "baserom.gba", 0xe8ace4, 0x20 gUnknown_08E8AD04:: @ 8E8AD04 .incbin "baserom.gba", 0x00e8ad04, 0x4c0 @@ -3680,8 +3708,41 @@ gSlotMachineSpritePalette5:: @ 8E97768 gSlotMachineSpritePalette6:: @ 8E97788 .incbin "graphics/slot_machine/spr6.gbapal" - .incbin "graphics/slot_machine/reel_symbols.4bpp" - .incbin "graphics/slot_machine/numbers.4bpp" +gSlotMachineReelSymbol1Tiles:: + .incbin "graphics/slot_machine/reel_symbols/1.4bpp" +gSlotMachineReelSymbol2Tiles:: + .incbin "graphics/slot_machine/reel_symbols/2.4bpp" +gSlotMachineReelSymbol3Tiles:: + .incbin "graphics/slot_machine/reel_symbols/3.4bpp" +gSlotMachineReelSymbol4Tiles:: + .incbin "graphics/slot_machine/reel_symbols/4.4bpp" +gSlotMachineReelSymbol5Tiles:: + .incbin "graphics/slot_machine/reel_symbols/5.4bpp" +gSlotMachineReelSymbol6Tiles:: + .incbin "graphics/slot_machine/reel_symbols/6.4bpp" +gSlotMachineReelSymbol7Tiles:: + .incbin "graphics/slot_machine/reel_symbols/7.4bpp" + +gSlotMachineNumber0Tiles:: + .incbin "graphics/slot_machine/numbers/0.4bpp" +gSlotMachineNumber1Tiles:: + .incbin "graphics/slot_machine/numbers/1.4bpp" +gSlotMachineNumber2Tiles:: + .incbin "graphics/slot_machine/numbers/2.4bpp" +gSlotMachineNumber3Tiles:: + .incbin "graphics/slot_machine/numbers/3.4bpp" +gSlotMachineNumber4Tiles:: + .incbin "graphics/slot_machine/numbers/4.4bpp" +gSlotMachineNumber5Tiles:: + .incbin "graphics/slot_machine/numbers/5.4bpp" +gSlotMachineNumber6Tiles:: + .incbin "graphics/slot_machine/numbers/6.4bpp" +gSlotMachineNumber7Tiles:: + .incbin "graphics/slot_machine/numbers/7.4bpp" +gSlotMachineNumber8Tiles:: + .incbin "graphics/slot_machine/numbers/8.4bpp" +gSlotMachineNumber9Tiles:: + .incbin "graphics/slot_machine/numbers/9.4bpp" .align 2 gSpriteImage_8E98828:: @ 8E98828 @@ -3911,16 +3972,25 @@ gUnknown_08E9CA24:: @ 8E9CA24 .incbin "baserom.gba", 0x00e9ca24, 0x20 gUnknown_08E9CA44:: @ 8E9CA44 - .incbin "baserom.gba", 0x00e9ca44, 0xe68 + .incbin "baserom.gba", 0xe9ca44, 0x500 + +Tiles_E9CF44:: @ 8E9CF44 + .incbin "baserom.gba", 0xe9cf44, 0x700 +Tiles_E9D644:: @ 8E9D644 + .incbin "baserom.gba", 0xe9d644, 0x268 + +gTitleScreenLogoShinePalette:: .incbin "graphics/title_screen/logo_shine.gbapal" gUnknown_08E9D8CC:: @ 8E9D8CC .ifdef SAPPHIRE .incbin "graphics/title_screen/pokemon_sapphire.8bpp.lz" +gVersionTiles:: .incbin "graphics/title_screen/sapphireversion.8bpp.lz" .else .incbin "graphics/title_screen/pokemon_ruby.8bpp.lz" +gVersionTiles:: .incbin "graphics/title_screen/rubyversion.8bpp.lz" .endif @@ -3933,10 +4003,15 @@ gUnknown_08E9F624:: @ 8E9F624 gUnknown_08E9F7E4:: @ 8E9F7E4 .incbin "baserom.gba", 0x00e9f7e4, 0x184 + +gPokenavContestArrowsPalette:: .incbin "graphics/pokenav/contest_arrows.gbapal" gUnknown_08E9F988:: @ 8E9F988 - .incbin "baserom.gba", 0x00e9f988, 0x60 + .incbin "baserom.gba", 0xe9f988, 0x20 + +Tiles_E9F9A8:: @ 8E9F9A8 + .incbin "baserom.gba", 0xe9f9a8, 0x40 gUnknown_08E9F9E8:: @ 8E9F9E8 .incbin "baserom.gba", 0x00e9f9e8, 0x20 diff --git a/data/text/credits.s b/data/text/credits.s index c689fc0f7..2f7aa5478 100644 --- a/data/text/credits.s +++ b/data/text/credits.s @@ -283,7 +283,11 @@ CreditsTerminator:: credits_entry 0, Text_CreditsTerminator CreditsVersion:: + .ifdef SAPPHIRE + credits_entry 7, Text_Version + .else credits_entry 8, Text_Version + .endif CreditsCredits:: credits_entry 11, Category_Credits diff --git a/data/text/pokemon_news.s b/data/text/pokemon_news.s index c17f7c043..79bf0f81c 100644 --- a/data/text/pokemon_news.s +++ b/data/text/pokemon_news.s @@ -1,4 +1,4 @@ -UnknownString_81AD135: @ 81AD135 +UnknownString_81AD135:: @ 81AD135 .string "Greetings!\n" .string "It’s time for POKéMON NEWS.\p" .string "SLATEPORT’s most popular kind of guy,\n" @@ -13,7 +13,7 @@ UnknownString_81AD135: @ 81AD135 .string "would be well worth your while that day.\p" .string "That’s the news on POKéMON NEWS.$" -UnknownString_81AD2E0: @ 81AD2E0 +UnknownString_81AD2E0:: @ 81AD2E0 .string "Greetings!\n" .string "It’s time for POKéMON NEWS.\p" .string "This is the news you’ve all been\n" @@ -27,7 +27,7 @@ UnknownString_81AD2E0: @ 81AD2E0 .string "to your heart’s content?\p" .string "That’s the news on POKéMON NEWS.$" -UnknownString_81AD434: @ 81AD434 +UnknownString_81AD434:: @ 81AD434 .string "Greetings!\n" .string "It’s time for POKéMON NEWS.\p" .string "This is the news you’ve all been\n" @@ -42,7 +42,7 @@ UnknownString_81AD434: @ 81AD434 .string "a most enjoyable shopping trip?\p" .string "That’s the news on POKéMON NEWS.$" -UnknownString_81AD5B0: @ 81AD5B0 +UnknownString_81AD5B0:: @ 81AD5B0 .string "Greetings!\n" .string "It’s time for POKéMON NEWS.\p" .string "It’s approaching!\n" @@ -53,7 +53,7 @@ UnknownString_81AD5B0: @ 81AD5B0 .string "may be lucky on this particular day!\p" .string "That’s the news on POKéMON NEWS.$" -UnknownString_81AD6AE: @ 81AD6AE +UnknownString_81AD6AE:: @ 81AD6AE .string "Greetings!\n" .string "It’s time for POKéMON NEWS.\p" .string "It’s here!\n" @@ -66,7 +66,7 @@ UnknownString_81AD6AE: @ 81AD6AE .string "This is the place!\p" .string "That’s the news on POKéMON NEWS.$" -UnknownString_81AD7A7: @ 81AD7A7 +UnknownString_81AD7A7:: @ 81AD7A7 .string "Greetings!\n" .string "It’s time for POKéMON NEWS.\p" .string "It’s here!\n" @@ -79,7 +79,7 @@ UnknownString_81AD7A7: @ 81AD7A7 .string "The location is MAUVILLE CITY.\p" .string "That’s the news on POKéMON NEWS.$" -UnknownString_81AD8B4: @ 81AD8B4 +UnknownString_81AD8B4:: @ 81AD8B4 .string "Greetings!\n" .string "It’s time for POKéMON NEWS.\p" .string "We’ve just received wonderful news\n" @@ -90,7 +90,7 @@ UnknownString_81AD8B4: @ 81AD8B4 .string "you’ve always wanted could be yours!\p" .string "That’s the news on POKéMON NEWS.$" -UnknownString_81AD9D3: @ 81AD9D3 +UnknownString_81AD9D3:: @ 81AD9D3 .string "Greetings!\n" .string "It’s time for POKéMON NEWS.\p" .string "This is the news you’ve all been\n" @@ -103,7 +103,7 @@ UnknownString_81AD9D3: @ 81AD9D3 .string "with them all!\p" .string "That’s the news on POKéMON NEWS.$" -UnknownString_81ADB01: @ 81ADB01 +UnknownString_81ADB01:: @ 81ADB01 .string "Greetings!\n" .string "It’s time for POKéMON NEWS.\p" .string "This is the news you’ve all been\n" @@ -116,27 +116,27 @@ UnknownString_81ADB01: @ 81ADB01 .string "with them all!\p" .string "That’s the news on POKéMON NEWS.$" -UnknownString_81ADC2F: @ 81ADC2F +UnknownString_81ADC2F:: @ 81ADC2F .string "This program has been brought to you\n" .string "by the DEVON CORPORATION.$" -UnknownString_81ADC6E: @ 81ADC6E +UnknownString_81ADC6E:: @ 81ADC6E .string "What’s important is love for POKéMON.\p" .string "What you need is a little courage.\p" .string "Let your cherished POKéMON take\n" .string "center stage! POKéMON CONTESTS!$" -UnknownString_81ADCF7: @ 81ADCF7 +UnknownString_81ADCF7:: @ 81ADCF7 .string "We raise your beloved POKéMON with\n" .string "all of our love!\p" .string "For all your POKéMON-training needs,\n" .string "visit our DAY CARE on ROUTE 117.$" -UnknownString_81ADD71: @ 81ADD71 +UnknownString_81ADD71:: @ 81ADD71 .string "The cauldron of good times and laughs!\n" .string "LAVARIDGE SPA.$" -UnknownString_81ADDA7: @ 81ADDA7 +UnknownString_81ADDA7:: @ 81ADDA7 .string "Overflowing with great merchandise\n" .string "and excitement!\p" .string "A great place to find that something\n" diff --git a/data/text/storyteller.s b/data/text/storyteller.s index 933ee74f0..3cfa8a698 100644 --- a/data/text/storyteller.s +++ b/data/text/storyteller.s @@ -51,13 +51,13 @@ MauvilleCity_PokemonCenter_1F_Text_1AEFA5:: @ 81AEFA5 .string "in hearing my epic tales of legendary\l" .string "TRAINERS.$" -UnknownString_81AEFFC: @ 81AEFFC +UnknownString_81AEFFC:: @ 81AEFFC .string "The Save-Happy TRAINER$" -UnknownString_81AF013: @ 81AF013 +UnknownString_81AF013:: @ 81AF013 .string "Saved the game$" -UnknownString_81AF022: @ 81AF022 +UnknownString_81AF022:: @ 81AF022 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER saved the game\n" @@ -65,13 +65,13 @@ UnknownString_81AF022: @ 81AF022 .string "A more cautious TRAINER than\n" .string "{STR_VAR_3} one will never find!$" -UnknownString_81AF0A3: @ 81AF0A3 +UnknownString_81AF0A3:: @ 81AF0A3 .string "The Trendsetter TRAINER$" -UnknownString_81AF0BB: @ 81AF0BB +UnknownString_81AF0BB:: @ 81AF0BB .string "Started trends$" -UnknownString_81AF0CA: @ 81AF0CA +UnknownString_81AF0CA:: @ 81AF0CA .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER started new trends\n" @@ -79,13 +79,13 @@ UnknownString_81AF0CA: @ 81AF0CA .string "{STR_VAR_3} is setting trends for all\n" .string "the HOENN region!$" -UnknownString_81AF149: @ 81AF149 +UnknownString_81AF149:: @ 81AF149 .string "The BERRY-Planting TRAINER$" -UnknownString_81AF164: @ 81AF164 +UnknownString_81AF164:: @ 81AF164 .string "Planted BERRIES$" -UnknownString_81AF174: @ 81AF174 +UnknownString_81AF174:: @ 81AF174 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER planted BERRIES\n" @@ -93,13 +93,13 @@ UnknownString_81AF174: @ 81AF174 .string "{STR_VAR_3} is a legendary lover of\n" .string "BERRIES!$" -UnknownString_81AF1E5: @ 81AF1E5 +UnknownString_81AF1E5:: @ 81AF1E5 .string "The BIKE-Loving TRAINER$" -UnknownString_81AF1FD: @ 81AF1FD +UnknownString_81AF1FD:: @ 81AF1FD .string "Traded BIKES$" -UnknownString_81AF20A: @ 81AF20A +UnknownString_81AF20A:: @ 81AF20A .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER swapped BIKES\n" @@ -107,13 +107,13 @@ UnknownString_81AF20A: @ 81AF20A .string "{STR_VAR_3} must love BIKES deeply\n" .string "and passionately!$" -UnknownString_81AF281: @ 81AF281 +UnknownString_81AF281:: @ 81AF281 .string "The Interviewed TRAINER$" -UnknownString_81AF299: @ 81AF299 +UnknownString_81AF299:: @ 81AF299 .string "Got interviewed$" -UnknownString_81AF2A9: @ 81AF2A9 +UnknownString_81AF2A9:: @ 81AF2A9 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER got interviewed\n" @@ -121,26 +121,26 @@ UnknownString_81AF2A9: @ 81AF2A9 .string "{STR_VAR_3} must be a TRAINER who’s\n" .string "attracting much attention!$" -UnknownString_81AF32C: @ 81AF32C +UnknownString_81AF32C:: @ 81AF32C .string "The Battle-Happy TRAINER$" -UnknownString_81AF345: @ 81AF345 +UnknownString_81AF345:: @ 81AF345 .string "Battled$" -UnknownString_81AF34D: @ 81AF34D +UnknownString_81AF34D:: @ 81AF34D .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER battled {STR_VAR_1} times!\p" .string "{STR_VAR_3} must be a TRAINER who can\n" .string "never refuse a chance to battle!$" -UnknownString_81AF3D0: @ 81AF3D0 +UnknownString_81AF3D0:: @ 81AF3D0 .string "The POKéMON-Catching TRAINER$" -UnknownString_81AF3ED: @ 81AF3ED +UnknownString_81AF3ED:: @ 81AF3ED .string "Caught POKéMON$" -UnknownString_81AF3FC: @ 81AF3FC +UnknownString_81AF3FC:: @ 81AF3FC .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER caught\n" @@ -148,13 +148,13 @@ UnknownString_81AF3FC: @ 81AF3FC .string "{STR_VAR_3} is a legendary catcher of\n" .string "wild POKéMON!$" -UnknownString_81AF46D: @ 81AF46D +UnknownString_81AF46D:: @ 81AF46D .string "The Fishing TRAINER$" -UnknownString_81AF481: @ 81AF481 +UnknownString_81AF481:: @ 81AF481 .string "Caught POKéMON with a ROD$" -UnknownString_81AF49B: @ 81AF49B +UnknownString_81AF49B:: @ 81AF49B .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER caught\n" @@ -162,13 +162,13 @@ UnknownString_81AF49B: @ 81AF49B .string "{STR_VAR_3} is a legendary fishing\n" .string "expert!$" -UnknownString_81AF511: @ 81AF511 +UnknownString_81AF511:: @ 81AF511 .string "The EGG-Warming TRAINER$" -UnknownString_81AF529: @ 81AF529 +UnknownString_81AF529:: @ 81AF529 .string "Hatched EGGS$" -UnknownString_81AF536: @ 81AF536 +UnknownString_81AF536:: @ 81AF536 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER hatched {STR_VAR_1} POKéMON\n" @@ -176,13 +176,13 @@ UnknownString_81AF536: @ 81AF536 .string "{STR_VAR_3} is a legendary warmer\n" .string "of EGGS!$" -UnknownString_81AF5A9: @ 81AF5A9 +UnknownString_81AF5A9:: @ 81AF5A9 .string "The Evolver TRAINER$" -UnknownString_81AF5BD: @ 81AF5BD +UnknownString_81AF5BD:: @ 81AF5BD .string "Evolved POKéMON$" -UnknownString_81AF5CD: @ 81AF5CD +UnknownString_81AF5CD:: @ 81AF5CD .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER made {STR_VAR_1} POKéMON\n" @@ -190,13 +190,13 @@ UnknownString_81AF5CD: @ 81AF5CD .string "{STR_VAR_3} is the ultimate evolver\n" .string "of POKéMON!$" -UnknownString_81AF63F: @ 81AF63F +UnknownString_81AF63F:: @ 81AF63F .string "The POKéMON CENTER-Loving TRAINER$" -UnknownString_81AF661: @ 81AF661 +UnknownString_81AF661:: @ 81AF661 .string "Used POKéMON CENTERS$" -UnknownString_81AF676: @ 81AF676 +UnknownString_81AF676:: @ 81AF676 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER healed POKéMON\n" @@ -204,13 +204,13 @@ UnknownString_81AF676: @ 81AF676 .string "There could be no greater lover of\n" .string "POKéMON CENTERS than {STR_VAR_3}!$" -UnknownString_81AF711: @ 81AF711 +UnknownString_81AF711:: @ 81AF711 .string "The Homebody TRAINER$" -UnknownString_81AF726: @ 81AF726 +UnknownString_81AF726:: @ 81AF726 .string "Rested POKéMON at home$" -UnknownString_81AF73D: @ 81AF73D +UnknownString_81AF73D:: @ 81AF73D .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER healed POKéMON\n" @@ -218,13 +218,13 @@ UnknownString_81AF73D: @ 81AF73D .string "There could be no more of a homebody\n" .string "than {STR_VAR_3}!$" -UnknownString_81AF7BF: @ 81AF7BF +UnknownString_81AF7BF:: @ 81AF7BF .string "The SAFARI-Loving TRAINER$" -UnknownString_81AF7D9: @ 81AF7D9 +UnknownString_81AF7D9:: @ 81AF7D9 .string "Entered the SAFARI ZONE$" -UnknownString_81AF7F1: @ 81AF7F1 +UnknownString_81AF7F1:: @ 81AF7F1 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER went into the SAFARI ZONE\n" @@ -232,13 +232,13 @@ UnknownString_81AF7F1: @ 81AF7F1 .string "{STR_VAR_3} is a TRAINER whose wild side\n" .string "must come out in the SAFARI ZONE!$" -UnknownString_81AF88A: @ 81AF88A +UnknownString_81AF88A:: @ 81AF88A .string "The CUT-Frenzy TRAINER$" -UnknownString_81AF8A1: @ 81AF8A1 +UnknownString_81AF8A1:: @ 81AF8A1 .string "Used CUT$" -UnknownString_81AF8AA: @ 81AF8AA +UnknownString_81AF8AA:: @ 81AF8AA .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used CUT\n" @@ -246,13 +246,13 @@ UnknownString_81AF8AA: @ 81AF8AA .string "{STR_VAR_3} is a TRAINER who just must\n" .string "love to CUT!$" -UnknownString_81AF91B: @ 81AF91B +UnknownString_81AF91B:: @ 81AF91B .string "The ROCK-SMASHING TRAINER$" -UnknownString_81AF935: @ 81AF935 +UnknownString_81AF935:: @ 81AF935 .string "Smashed rocks$" -UnknownString_81AF943: @ 81AF943 +UnknownString_81AF943:: @ 81AF943 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used ROCK SMASH\n" @@ -260,13 +260,13 @@ UnknownString_81AF943: @ 81AF943 .string "{STR_VAR_3} must be a TRAINER who\n" .string "can’t leave a stone unsmashed!$" -UnknownString_81AF9C8: @ 81AF9C8 +UnknownString_81AF9C8:: @ 81AF9C8 .string "The Move-Loving TRAINER$" -UnknownString_81AF9E0: @ 81AF9E0 +UnknownString_81AF9E0:: @ 81AF9E0 .string "Moved the SECRET BASE$" -UnknownString_81AF9F6: @ 81AF9F6 +UnknownString_81AF9F6:: @ 81AF9F6 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER moved the SECRET BASE\n" @@ -274,13 +274,13 @@ UnknownString_81AF9F6: @ 81AF9F6 .string "{STR_VAR_3} is a TRAINER who loves\n" .string "to move houses often!$" -UnknownString_81AFA79: @ 81AFA79 +UnknownString_81AFA79:: @ 81AFA79 .string "The SPLASH-Happy TRAINER$" -UnknownString_81AFA92: @ 81AFA92 +UnknownString_81AFA92:: @ 81AFA92 .string "Used SPLASH$" -UnknownString_81AFA9E: @ 81AFA9E +UnknownString_81AFA9E:: @ 81AFA9E .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used SPLASH\n" @@ -288,13 +288,13 @@ UnknownString_81AFA9E: @ 81AFA9E .string "{STR_VAR_3} is a TRAINER who must love\n" .string "SPLASHING around!$" -UnknownString_81AFB17: @ 81AFB17 +UnknownString_81AFB17:: @ 81AFB17 .string "The Tenacious TRAINER$" -UnknownString_81AFB2D: @ 81AFB2D +UnknownString_81AFB2D:: @ 81AFB2D .string "Resorted to using STRUGGLE$" -UnknownString_81AFB48: @ 81AFB48 +UnknownString_81AFB48:: @ 81AFB48 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER had to rely on STRUGGLE\n" @@ -302,13 +302,13 @@ UnknownString_81AFB48: @ 81AFB48 .string "{STR_VAR_3} is a tenacious TRAINER\n" .string "who never gives in to adversity!$" -UnknownString_81AFBD8: @ 81AFBD8 +UnknownString_81AFBD8:: @ 81AFBD8 .string "The SLOT Champ$" -UnknownString_81AFBE7: @ 81AFBE7 +UnknownString_81AFBE7:: @ 81AFBE7 .string "Won the jackpot on the SLOTS$" -UnknownString_81AFC04: @ 81AFC04 +UnknownString_81AFC04:: @ 81AFC04 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won the jackpot on\n" @@ -316,13 +316,13 @@ UnknownString_81AFC04: @ 81AFC04 .string "{STR_VAR_3} is a TRAINER who was lucky\n" .string "on the SLOTS!$" -UnknownString_81AFC8A: @ 81AFC8A +UnknownString_81AFC8A:: @ 81AFC8A .string "The ROULETTE Champ$" -UnknownString_81AFC9D: @ 81AFC9D +UnknownString_81AFC9D:: @ 81AFC9D .string "Had consecutive ROULETTE wins of$" -UnknownString_81AFCBE: @ 81AFCBE +UnknownString_81AFCBE:: @ 81AFCBE .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won in ROULETTE\n" @@ -330,13 +330,13 @@ UnknownString_81AFCBE: @ 81AFCBE .string "{STR_VAR_3} was lucky when the ball\n" .string "bounced in ROULETTE!$" -UnknownString_81AFD44: @ 81AFD44 +UnknownString_81AFD44:: @ 81AFD44 .string "The BATTLE TOWER Challenger$" -UnknownString_81AFD60: @ 81AFD60 +UnknownString_81AFD60:: @ 81AFD60 .string "Took the BATTLE TOWER challenge$" -UnknownString_81AFD80: @ 81AFD80 +UnknownString_81AFD80:: @ 81AFD80 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER took the BATTLE TOWER\n" @@ -344,13 +344,13 @@ UnknownString_81AFD80: @ 81AFD80 .string "{STR_VAR_3} is a TRAINER who aspires\n" .string "for excellence in the BATTLE TOWER!$" -UnknownString_81AFE1D: @ 81AFE1D +UnknownString_81AFE1D:: @ 81AFE1D .string "The Blend-Loving TRAINER$" -UnknownString_81AFE36: @ 81AFE36 +UnknownString_81AFE36:: @ 81AFE36 .string "Made {POKEBLOCK}S$" -UnknownString_81AFE42: @ 81AFE42 +UnknownString_81AFE42:: @ 81AFE42 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER made {POKEBLOCK}S\n" @@ -358,13 +358,13 @@ UnknownString_81AFE42: @ 81AFE42 .string "There is none better at using a BERRY\n" .string "BLENDER than {STR_VAR_3}!$" -UnknownString_81AFEC2: @ 81AFEC2 +UnknownString_81AFEC2:: @ 81AFEC2 .string "The CONTEST-Loving TRAINER$" -UnknownString_81AFEDD: @ 81AFEDD +UnknownString_81AFEDD:: @ 81AFEDD .string "Entered CONTESTS$" -UnknownString_81AFEEE: @ 81AFEEE +UnknownString_81AFEEE:: @ 81AFEEE .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER entered CONTESTS\n" @@ -372,13 +372,13 @@ UnknownString_81AFEEE: @ 81AFEEE .string "{STR_VAR_3} must love showing off\n" .string "POKéMON to others!$" -UnknownString_81AFF68: @ 81AFF68 +UnknownString_81AFF68:: @ 81AFF68 .string "The CONTEST Master$" -UnknownString_81AFF7B: @ 81AFF7B +UnknownString_81AFF7B:: @ 81AFF7B .string "Won CONTESTS$" -UnknownString_81AFF88: @ 81AFF88 +UnknownString_81AFF88:: @ 81AFF88 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won CONTESTS\n" @@ -386,13 +386,13 @@ UnknownString_81AFF88: @ 81AFF88 .string "{STR_VAR_3} must be an incredible\n" .string "CONTEST master!$" -UnknownString_81AFFFB: @ 81AFFFB +UnknownString_81AFFFB:: @ 81AFFFB .string "The Happy Shopper$" -UnknownString_81B000D: @ 81B000D +UnknownString_81B000D:: @ 81B000D .string "Shopped$" -UnknownString_81B0015: @ 81B0015 +UnknownString_81B0015:: @ 81B0015 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER bought items in shops\n" @@ -400,13 +400,13 @@ UnknownString_81B0015: @ 81B0015 .string "{STR_VAR_3} must be one of those\n" .string "people who are born to shop.$" -UnknownString_81B009D: @ 81B009D +UnknownString_81B009D:: @ 81B009D .string "The Item-Finding TRAINER$" -UnknownString_81B00B6: @ 81B00B6 +UnknownString_81B00B6:: @ 81B00B6 .string "Used an ITEMFINDER$" -UnknownString_81B00C9: @ 81B00C9 +UnknownString_81B00C9:: @ 81B00C9 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER used an ITEMFINDER\n" @@ -414,13 +414,13 @@ UnknownString_81B00C9: @ 81B00C9 .string "{STR_VAR_3} must enjoy scouring the\n" .string "ground for hidden items!$" -UnknownString_81B014D: @ 81B014D +UnknownString_81B014D:: @ 81B014D .string "The Rain-Soaked TRAINER$" -UnknownString_81B0165: @ 81B0165 +UnknownString_81B0165:: @ 81B0165 .string "Got rained on$" -UnknownString_81B0173: @ 81B0173 +UnknownString_81B0173:: @ 81B0173 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER got soaked by rain\n" @@ -428,13 +428,13 @@ UnknownString_81B0173: @ 81B0173 .string "{STR_VAR_3}’s charisma must even\n" .string "attract rain!$" -UnknownString_81B01E9: @ 81B01E9 +UnknownString_81B01E9:: @ 81B01E9 .string "The Avid POKéDEX Reader$" -UnknownString_81B0201: @ 81B0201 +UnknownString_81B0201:: @ 81B0201 .string "Checked a POKéDEX$" -UnknownString_81B0213: @ 81B0213 +UnknownString_81B0213:: @ 81B0213 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER checked a POKéDEX\n" @@ -442,13 +442,13 @@ UnknownString_81B0213: @ 81B0213 .string "{STR_VAR_3} must love inspecting\n" .string "POKéMON in a POKéDEX!$" -UnknownString_81B0290: @ 81B0290 +UnknownString_81B0290:: @ 81B0290 .string "The RIBBON Collector$" -UnknownString_81B02A5: @ 81B02A5 +UnknownString_81B02A5:: @ 81B02A5 .string "Received RIBBONS$" -UnknownString_81B02B6: @ 81B02B6 +UnknownString_81B02B6:: @ 81B02B6 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER received RIBBONS\n" @@ -456,13 +456,13 @@ UnknownString_81B02B6: @ 81B02B6 .string "{STR_VAR_3} must be a TRAINER who\n" .string "loves to collect RIBBONS!$" -UnknownString_81B0337: @ 81B0337 +UnknownString_81B0337:: @ 81B0337 .string "The Ledge-Jumping TRAINER$" -UnknownString_81B0351: @ 81B0351 +UnknownString_81B0351:: @ 81B0351 .string "Jumped down ledges$" -UnknownString_81B0364: @ 81B0364 +UnknownString_81B0364:: @ 81B0364 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER jumped down ledges\n" @@ -470,26 +470,26 @@ UnknownString_81B0364: @ 81B0364 .string "If there’s a ledge to be jumped,\n" .string "{STR_VAR_3} can’t ignore it!$" -UnknownString_81B03E9: @ 81B03E9 +UnknownString_81B03E9:: @ 81B03E9 .string "The Legendary TV Viewer$" -UnknownString_81B0401: @ 81B0401 +UnknownString_81B0401:: @ 81B0401 .string "Watched TV$" -UnknownString_81B040C: @ 81B040C +UnknownString_81B040C:: @ 81B040C .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER watched TV\n" .string "{STR_VAR_1} times!\p" .string "{STR_VAR_3} must love watching TV!$" -UnknownString_81B046E: @ 81B046E +UnknownString_81B046E:: @ 81B046E .string "The Time-Conscious TRAINER$" -UnknownString_81B0489: @ 81B0489 +UnknownString_81B0489:: @ 81B0489 .string "Checked the time$" -UnknownString_81B049A: @ 81B049A +UnknownString_81B049A:: @ 81B049A .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER checked the time\n" @@ -497,13 +497,13 @@ UnknownString_81B049A: @ 81B049A .string "{STR_VAR_3} must be a punctual TRAINER\n" .string "who’s conscious of the time.$" -UnknownString_81B0523: @ 81B0523 +UnknownString_81B0523:: @ 81B0523 .string "The POKéMON LOTTERY Wizard$" -UnknownString_81B053E: @ 81B053E +UnknownString_81B053E:: @ 81B053E .string "Won POKéMON LOTTERIES$" -UnknownString_81B0554: @ 81B0554 +UnknownString_81B0554:: @ 81B0554 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER won POKéMON LOTTERIES\n" @@ -511,13 +511,13 @@ UnknownString_81B0554: @ 81B0554 .string "{STR_VAR_3} must have many friends\n" .string "to trade POKéMON with!$" -UnknownString_81B05D8: @ 81B05D8 +UnknownString_81B05D8:: @ 81B05D8 .string "The DAY CARE-Using Trainer$" -UnknownString_81B05F3: @ 81B05F3 +UnknownString_81B05F3:: @ 81B05F3 .string "Left POKéMON at the DAY CARE$" -UnknownString_81B0610: @ 81B0610 +UnknownString_81B0610:: @ 81B0610 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER left POKéMON with the\n" @@ -525,13 +525,13 @@ UnknownString_81B0610: @ 81B0610 .string "{STR_VAR_3} must be a real go-getter\n" .string "who raises POKéMON aggressively!$" -UnknownString_81B06A9: @ 81B06A9 +UnknownString_81B06A9:: @ 81B06A9 .string "The CABLE CAR-Loving TRAINER$" -UnknownString_81B06C6: @ 81B06C6 +UnknownString_81B06C6:: @ 81B06C6 .string "Rode the CABLE CAR$" -UnknownString_81B06D9: @ 81B06D9 +UnknownString_81B06D9:: @ 81B06D9 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER rode the CABLE CAR\n" @@ -539,13 +539,13 @@ UnknownString_81B06D9: @ 81B06D9 .string "{STR_VAR_3} must be a busy TRAINER\n" .string "who’s up and down all the time!$" -UnknownString_81B0763: @ 81B0763 +UnknownString_81B0763:: @ 81B0763 .string "The Hot Spring-Loving TRAINER$" -UnknownString_81B0781: @ 81B0781 +UnknownString_81B0781:: @ 81B0781 .string "Bathed in hot springs$" -UnknownString_81B0797: @ 81B0797 +UnknownString_81B0797:: @ 81B0797 .string "This is a tale of a TRAINER\n" .string "named {STR_VAR_3}.\p" .string "This TRAINER bathed in hot springs\n" diff --git a/data/tilesets/metatiles.s b/data/tilesets/metatiles.s index 9a9559981..6a13d3f72 100644 --- a/data/tilesets/metatiles.s +++ b/data/tilesets/metatiles.s @@ -1,529 +1,424 @@ .align 1 - gMetatiles_General:: @ 8259C1C - .incbin "baserom.gba", 0x259c1c, 0x2000 + .incbin "data/tilesets/primary/general/metatiles.bin" .align 1 - gMetatileAttributes_General:: @ 825BC1C - .incbin "baserom.gba", 0x25bc1c, 0x400 + .incbin "data/tilesets/primary/general/metatile_attributes.bin" .align 1 - gMetatiles_Petalburg:: @ 825C01C - .incbin "baserom.gba", 0x25c01c, 0x900 + .incbin "data/tilesets/secondary/petalburg/metatiles.bin" .align 1 - gMetatileAttributes_Petalburg:: @ 825C91C - .incbin "baserom.gba", 0x25c91c, 0x120 + .incbin "data/tilesets/secondary/petalburg/metatile_attributes.bin" .align 1 - gMetatiles_Rustboro:: @ 825CA3C - .incbin "baserom.gba", 0x25ca3c, 0x15e0 + .incbin "data/tilesets/secondary/rustboro/metatiles.bin" .align 1 - gMetatileAttributes_Rustboro:: @ 825E01C - .incbin "baserom.gba", 0x25e01c, 0x2bc + .incbin "data/tilesets/secondary/rustboro/metatile_attributes.bin" .align 1 - gMetatiles_Dewford:: @ 825E2D8 - .incbin "baserom.gba", 0x25e2d8, 0x900 + .incbin "data/tilesets/secondary/dewford/metatiles.bin" .align 1 - gMetatileAttributes_Dewford:: @ 825EBD8 - .incbin "baserom.gba", 0x25ebd8, 0x120 + .incbin "data/tilesets/secondary/dewford/metatile_attributes.bin" .align 1 - gMetatiles_Slateport:: @ 825ECF8 - .incbin "baserom.gba", 0x25ecf8, 0x16c0 + .incbin "data/tilesets/secondary/slateport/metatiles.bin" .align 1 - gMetatileAttributes_Slateport:: @ 82603B8 - .incbin "baserom.gba", 0x2603b8, 0x2d8 + .incbin "data/tilesets/secondary/slateport/metatile_attributes.bin" .align 1 - gMetatiles_Mauville:: @ 8260690 - .incbin "baserom.gba", 0x260690, 0x1b20 + .incbin "data/tilesets/secondary/mauville/metatiles.bin" .align 1 - gMetatileAttributes_Mauville:: @ 82621B0 - .incbin "baserom.gba", 0x2621b0, 0x364 + .incbin "data/tilesets/secondary/mauville/metatile_attributes.bin" .align 1 - gMetatiles_Lavaridge:: @ 8262514 - .incbin "baserom.gba", 0x262514, 0x11e0 + .incbin "data/tilesets/secondary/lavaridge/metatiles.bin" .align 1 - gMetatileAttributes_Lavaridge:: @ 82636F4 - .incbin "baserom.gba", 0x2636f4, 0x23c + .incbin "data/tilesets/secondary/lavaridge/metatile_attributes.bin" .align 1 - gMetatiles_Fallarbor:: @ 8263930 - .incbin "baserom.gba", 0x263930, 0x1520 + .incbin "data/tilesets/secondary/fallarbor/metatiles.bin" .align 1 - gMetatileAttributes_Fallarbor:: @ 8264E50 - .incbin "baserom.gba", 0x264e50, 0x2a4 + .incbin "data/tilesets/secondary/fallarbor/metatile_attributes.bin" .align 1 - gMetatiles_Fortree:: @ 82650F4 - .incbin "baserom.gba", 0x2650f4, 0x10b0 + .incbin "data/tilesets/secondary/fortree/metatiles.bin" .align 1 - gMetatileAttributes_Fortree:: @ 82661A4 - .incbin "baserom.gba", 0x2661a4, 0x216 + .incbin "data/tilesets/secondary/fortree/metatile_attributes.bin" .align 1 - gMetatiles_Lilycove:: @ 82663BA - .incbin "baserom.gba", 0x2663ba, 0x15f0 + .incbin "data/tilesets/secondary/lilycove/metatiles.bin" .align 1 - gMetatileAttributes_Lilycove:: @ 82679AA - .incbin "baserom.gba", 0x2679aa, 0x2be + .incbin "data/tilesets/secondary/lilycove/metatile_attributes.bin" .align 1 - gMetatiles_Mossdeep:: @ 8267C68 - .incbin "baserom.gba", 0x267c68, 0x16b0 + .incbin "data/tilesets/secondary/mossdeep/metatiles.bin" .align 1 - gMetatileAttributes_Mossdeep:: @ 8269318 - .incbin "baserom.gba", 0x269318, 0x2d6 + .incbin "data/tilesets/secondary/mossdeep/metatile_attributes.bin" .align 1 - gMetatiles_EverGrande:: @ 82695EE - .incbin "baserom.gba", 0x2695ee, 0xa80 + .incbin "data/tilesets/secondary/ever_grande/metatiles.bin" .align 1 - gMetatileAttributes_EverGrande:: @ 826A06E - .incbin "baserom.gba", 0x26a06e, 0x150 + .incbin "data/tilesets/secondary/ever_grande/metatile_attributes.bin" .align 1 - gMetatiles_Pacifidlog:: @ 826A1BE - .incbin "baserom.gba", 0x26a1be, 0xbf0 + .incbin "data/tilesets/secondary/pacifidlog/metatiles.bin" .align 1 - gMetatileAttributes_Pacifidlog:: @ 826ADAE - .incbin "baserom.gba", 0x26adae, 0x17e + .incbin "data/tilesets/secondary/pacifidlog/metatile_attributes.bin" .align 1 - gMetatiles_Sootopolis:: @ 826AF2C - .incbin "baserom.gba", 0x26af2c, 0xfe0 + .incbin "data/tilesets/secondary/sootopolis/metatiles.bin" .align 1 - gMetatileAttributes_Sootopolis:: @ 826BF0C - .incbin "baserom.gba", 0x26bf0c, 0x1fc + .incbin "data/tilesets/secondary/sootopolis/metatile_attributes.bin" .align 1 - gMetatiles_Building:: @ 826C108 - .incbin "baserom.gba", 0x26c108, 0x80 + .incbin "data/tilesets/primary/building/metatiles.bin" .align 1 - gMetatileAttributes_Building:: @ 826C188 - .incbin "baserom.gba", 0x26c188, 0x10 + .incbin "data/tilesets/primary/building/metatile_attributes.bin" .align 1 - gMetatiles_Shop:: @ 826C198 - .incbin "baserom.gba", 0x26c198, 0x1180 + .incbin "data/tilesets/secondary/shop/metatiles.bin" .align 1 - gMetatileAttributes_Shop:: @ 826D318 - .incbin "baserom.gba", 0x26d318, 0x230 + .incbin "data/tilesets/secondary/shop/metatile_attributes.bin" .align 1 - gMetatiles_PokemonCenter:: @ 826D548 - .incbin "baserom.gba", 0x26d548, 0xc60 + .incbin "data/tilesets/secondary/pokemon_center/metatiles.bin" .align 1 - gMetatileAttributes_PokemonCenter:: @ 826E1A8 - .incbin "baserom.gba", 0x26e1a8, 0x18c + .incbin "data/tilesets/secondary/pokemon_center/metatile_attributes.bin" .align 1 - gMetatiles_Cave:: @ 826E334 - .incbin "baserom.gba", 0x26e334, 0x19e0 + .incbin "data/tilesets/secondary/cave/metatiles.bin" .align 1 - gMetatileAttributes_Cave:: @ 826FD14 - .incbin "baserom.gba", 0x26fd14, 0x33c + .incbin "data/tilesets/secondary/cave/metatile_attributes.bin" .align 1 - gMetatiles_PokemonSchool:: @ 8270050 - .incbin "baserom.gba", 0x270050, 0x3a0 + .incbin "data/tilesets/secondary/pokemon_school/metatiles.bin" .align 1 - gMetatileAttributes_PokemonSchool:: @ 82703F0 - .incbin "baserom.gba", 0x2703f0, 0x74 + .incbin "data/tilesets/secondary/pokemon_school/metatile_attributes.bin" .align 1 - gMetatiles_PokemonFanClub:: @ 8270464 - .incbin "baserom.gba", 0x270464, 0x680 + .incbin "data/tilesets/secondary/pokemon_fan_club/metatiles.bin" .align 1 - gMetatileAttributes_PokemonFanClub:: @ 8270AE4 - .incbin "baserom.gba", 0x270ae4, 0xd0 + .incbin "data/tilesets/secondary/pokemon_fan_club/metatile_attributes.bin" .align 1 - gMetatiles_Unused1:: @ 8270BB4 - .incbin "baserom.gba", 0x270bb4, 0x20 + .incbin "data/tilesets/secondary/unused_1/metatiles.bin" .align 1 - gMetatileAttributes_Unused1:: @ 8270BD4 - .incbin "baserom.gba", 0x270bd4, 0x4 + .incbin "data/tilesets/secondary/unused_1/metatile_attributes.bin" .align 1 - gMetatiles_MeteorFalls:: @ 8270BD8 - .incbin "baserom.gba", 0x270bd8, 0x9f0 + .incbin "data/tilesets/secondary/meteor_falls/metatiles.bin" .align 1 - gMetatileAttributes_MeteorFalls:: @ 82715C8 - .incbin "baserom.gba", 0x2715c8, 0x13e + .incbin "data/tilesets/secondary/meteor_falls/metatile_attributes.bin" .align 1 - gMetatiles_OceanicMuseum:: @ 8271706 - .incbin "baserom.gba", 0x271706, 0x650 + .incbin "data/tilesets/secondary/oceanic_museum/metatiles.bin" .align 1 - gMetatileAttributes_OceanicMuseum:: @ 8271D56 - .incbin "baserom.gba", 0x271d56, 0xca + .incbin "data/tilesets/secondary/oceanic_museum/metatile_attributes.bin" .align 1 - gMetatiles_CableClub:: @ 8271E20 - .incbin "baserom.gba", 0x271e20, 0x1000 + .incbin "data/tilesets/secondary/cable_club/metatiles.bin" .align 1 - gMetatileAttributes_CableClub:: @ 8272E20 - .incbin "baserom.gba", 0x272e20, 0x200 + .incbin "data/tilesets/secondary/cable_club/metatile_attributes.bin" .align 1 - gMetatiles_SeashoreHouse:: @ 8273020 - .incbin "baserom.gba", 0x273020, 0x380 + .incbin "data/tilesets/secondary/seashore_house/metatiles.bin" .align 1 - gMetatileAttributes_SeashoreHouse:: @ 82733A0 - .incbin "baserom.gba", 0x2733a0, 0x70 + .incbin "data/tilesets/secondary/seashore_house/metatile_attributes.bin" .align 1 - gMetatiles_PrettyPetalFlowerShop:: @ 8273410 - .incbin "baserom.gba", 0x273410, 0x480 + .incbin "data/tilesets/secondary/pretty_petal_flower_shop/metatiles.bin" .align 1 - gMetatileAttributes_PrettyPetalFlowerShop:: @ 8273890 - .incbin "baserom.gba", 0x273890, 0x90 + .incbin "data/tilesets/secondary/pretty_petal_flower_shop/metatile_attributes.bin" .align 1 - gMetatiles_PokemonDayCare:: @ 8273920 - .incbin "baserom.gba", 0x273920, 0x440 + .incbin "data/tilesets/secondary/pokemon_day_care/metatiles.bin" .align 1 - gMetatileAttributes_PokemonDayCare:: @ 8273D60 - .incbin "baserom.gba", 0x273d60, 0x88 + .incbin "data/tilesets/secondary/pokemon_day_care/metatile_attributes.bin" .align 1 - gMetatiles_Facility:: @ 8273DE8 - .incbin "baserom.gba", 0x273de8, 0x1fe0 + .incbin "data/tilesets/secondary/facility/metatiles.bin" .align 1 - gMetatileAttributes_Facility:: @ 8275DC8 - .incbin "baserom.gba", 0x275dc8, 0x3fc + .incbin "data/tilesets/secondary/facility/metatile_attributes.bin" .align 1 - gMetatiles_BikeShop:: @ 82761C4 - .incbin "baserom.gba", 0x2761c4, 0xf80 + .incbin "data/tilesets/secondary/bike_shop/metatiles.bin" .align 1 - gMetatileAttributes_BikeShop:: @ 8277144 - .incbin "baserom.gba", 0x277144, 0x1f0 + .incbin "data/tilesets/secondary/bike_shop/metatile_attributes.bin" .align 1 - gMetatiles_RusturfTunnel:: @ 8277334 - .incbin "baserom.gba", 0x277334, 0x530 + .incbin "data/tilesets/secondary/rusturf_tunnel/metatiles.bin" .align 1 - gMetatileAttributes_RusturfTunnel:: @ 8277864 - .incbin "baserom.gba", 0x277864, 0xa6 + .incbin "data/tilesets/secondary/rusturf_tunnel/metatile_attributes.bin" .align 1 - gMetatiles_SecretBaseSecondary:: @ 827790A - .incbin "baserom.gba", 0x27790a, 0x1440 + .incbin "data/tilesets/secondary/secret_base/metatiles.bin" .align 1 - gMetatileAttributes_SecretBaseSecondary:: @ 8278D4A - .incbin "baserom.gba", 0x278d4a, 0x288 + .incbin "data/tilesets/secondary/secret_base/metatile_attributes.bin" .align 1 - gMetatiles_InsideOfTruck:: @ 8278FD2 - .incbin "baserom.gba", 0x278fd2, 0x260 + .incbin "data/tilesets/secondary/inside_of_truck/metatiles.bin" .align 1 - gMetatileAttributes_InsideOfTruck:: @ 8279232 - .incbin "baserom.gba", 0x279232, 0x4c + .incbin "data/tilesets/secondary/inside_of_truck/metatile_attributes.bin" .align 1 - gMetatiles_Contest:: @ 827927E - .incbin "baserom.gba", 0x27927e, 0xe00 + .incbin "data/tilesets/secondary/contest/metatiles.bin" .align 1 - gMetatileAttributes_Contest:: @ 827A07E - .incbin "baserom.gba", 0x27a07e, 0x1c0 + .incbin "data/tilesets/secondary/contest/metatile_attributes.bin" .align 1 - gMetatiles_LilycoveMuseum:: @ 827A23E - .incbin "baserom.gba", 0x27a23e, 0x8f0 + .incbin "data/tilesets/secondary/lilycove_museum/metatiles.bin" .align 1 - gMetatileAttributes_LilycoveMuseum:: @ 827AB2E - .incbin "baserom.gba", 0x27ab2e, 0x11e + .incbin "data/tilesets/secondary/lilycove_museum/metatile_attributes.bin" .align 1 - gMetatiles_BrendansMaysHouse:: @ 827AC4C - .incbin "baserom.gba", 0x27ac4c, 0xab0 + .incbin "data/tilesets/secondary/brendans_mays_house/metatiles.bin" .align 1 - gMetatileAttributes_BrendansMaysHouse:: @ 827B6FC - .incbin "baserom.gba", 0x27b6fc, 0x156 + .incbin "data/tilesets/secondary/brendans_mays_house/metatile_attributes.bin" .align 1 - gMetatiles_Lab:: @ 827B852 - .incbin "baserom.gba", 0x27b852, 0x9a0 + .incbin "data/tilesets/secondary/lab/metatiles.bin" .align 1 - gMetatileAttributes_Lab:: @ 827C1F2 - .incbin "baserom.gba", 0x27c1f2, 0x134 + .incbin "data/tilesets/secondary/lab/metatile_attributes.bin" .align 1 - gMetatiles_Underwater:: @ 827C326 - .incbin "baserom.gba", 0x27c326, 0xec0 + .incbin "data/tilesets/secondary/underwater/metatiles.bin" .align 1 - gMetatileAttributes_Underwater:: @ 827D1E6 - .incbin "baserom.gba", 0x27d1e6, 0x1d8 + .incbin "data/tilesets/secondary/underwater/metatile_attributes.bin" .align 1 - gMetatiles_GenericBuilding:: @ 827D3BE - .incbin "baserom.gba", 0x27d3be, 0x2000 + .incbin "data/tilesets/secondary/generic_building/metatiles.bin" .align 1 - gMetatileAttributes_GenericBuilding:: @ 827F3BE - .incbin "baserom.gba", 0x27f3be, 0x400 + .incbin "data/tilesets/secondary/generic_building/metatile_attributes.bin" .align 1 - gMetatiles_MauvilleGameCorner:: @ 827F7BE - .incbin "baserom.gba", 0x27f7be, 0x600 + .incbin "data/tilesets/secondary/mauville_game_corner/metatiles.bin" .align 1 - gMetatileAttributes_MauvilleGameCorner:: @ 827FDBE - .incbin "baserom.gba", 0x27fdbe, 0xc0 + .incbin "data/tilesets/secondary/mauville_game_corner/metatile_attributes.bin" .align 1 - gMetatiles_Unused2:: @ 827FE7E - .incbin "baserom.gba", 0x27fe7e, 0x3a0 + .incbin "data/tilesets/secondary/unused_2/metatiles.bin" .align 1 - gMetatileAttributes_Unused2:: @ 828021E - .incbin "baserom.gba", 0x28021e, 0x74 + .incbin "data/tilesets/secondary/unused_2/metatile_attributes.bin" .align 1 - gMetatiles_RustboroGym:: @ 8280292 - .incbin "baserom.gba", 0x280292, 0x380 + .incbin "data/tilesets/secondary/rustboro_gym/metatiles.bin" .align 1 - gMetatileAttributes_RustboroGym:: @ 8280612 - .incbin "baserom.gba", 0x280612, 0x70 + .incbin "data/tilesets/secondary/rustboro_gym/metatile_attributes.bin" .align 1 - gMetatiles_DewfordGym:: @ 8280682 - .incbin "baserom.gba", 0x280682, 0x3d0 + .incbin "data/tilesets/secondary/dewford_gym/metatiles.bin" .align 1 - gMetatileAttributes_DewfordGym:: @ 8280A52 - .incbin "baserom.gba", 0x280a52, 0x7a + .incbin "data/tilesets/secondary/dewford_gym/metatile_attributes.bin" .align 1 - gMetatiles_MauvilleGym:: @ 8280ACC - .incbin "baserom.gba", 0x280acc, 0x750 + .incbin "data/tilesets/secondary/mauville_gym/metatiles.bin" .align 1 - gMetatileAttributes_MauvilleGym:: @ 828121C - .incbin "baserom.gba", 0x28121c, 0xea + .incbin "data/tilesets/secondary/mauville_gym/metatile_attributes.bin" .align 1 - gMetatiles_LavaridgeGym:: @ 8281306 - .incbin "baserom.gba", 0x281306, 0x2a0 + .incbin "data/tilesets/secondary/lavaridge_gym/metatiles.bin" .align 1 - gMetatileAttributes_LavaridgeGym:: @ 82815A6 - .incbin "baserom.gba", 0x2815a6, 0x54 + .incbin "data/tilesets/secondary/lavaridge_gym/metatile_attributes.bin" .align 1 - gMetatiles_PetalburgGym:: @ 82815FA - .incbin "baserom.gba", 0x2815fa, 0x8c0 + .incbin "data/tilesets/secondary/petalburg_gym/metatiles.bin" .align 1 - gMetatileAttributes_PetalburgGym:: @ 8281EBA - .incbin "baserom.gba", 0x281eba, 0x118 + .incbin "data/tilesets/secondary/petalburg_gym/metatile_attributes.bin" .align 1 - gMetatiles_FortreeGym:: @ 8281FD2 - .incbin "baserom.gba", 0x281fd2, 0x350 + .incbin "data/tilesets/secondary/fortree_gym/metatiles.bin" .align 1 - gMetatileAttributes_FortreeGym:: @ 8282322 - .incbin "baserom.gba", 0x282322, 0x6a + .incbin "data/tilesets/secondary/fortree_gym/metatile_attributes.bin" .align 1 - gMetatiles_MossdeepGym:: @ 828238C - .incbin "baserom.gba", 0x28238c, 0x500 + .incbin "data/tilesets/secondary/mossdeep_gym/metatiles.bin" .align 1 - gMetatileAttributes_MossdeepGym:: @ 828288C - .incbin "baserom.gba", 0x28288c, 0xa0 + .incbin "data/tilesets/secondary/mossdeep_gym/metatile_attributes.bin" .align 1 - gMetatiles_SootopolisGym:: @ 828292C - .incbin "baserom.gba", 0x28292c, 0x630 + .incbin "data/tilesets/secondary/sootopolis_gym/metatiles.bin" .align 1 - gMetatileAttributes_SootopolisGym:: @ 8282F5C - .incbin "baserom.gba", 0x282f5c, 0xc6 + .incbin "data/tilesets/secondary/sootopolis_gym/metatile_attributes.bin" .align 1 - gMetatiles_TrickHousePuzzle:: @ 8283022 - .incbin "baserom.gba", 0x283022, 0x950 + .incbin "data/tilesets/secondary/trick_house_puzzle/metatiles.bin" .align 1 - gMetatileAttributes_TrickHousePuzzle:: @ 8283972 - .incbin "baserom.gba", 0x283972, 0x12a + .incbin "data/tilesets/secondary/trick_house_puzzle/metatile_attributes.bin" .align 1 - gMetatiles_Ship:: @ 8283A9C - .incbin "baserom.gba", 0x283a9c, 0xfc0 + .incbin "data/tilesets/secondary/ship/metatiles.bin" .align 1 - gMetatileAttributes_Ship:: @ 8284A5C - .incbin "baserom.gba", 0x284a5c, 0x1f8 + .incbin "data/tilesets/secondary/ship/metatile_attributes.bin" .align 1 - gMetatiles_SecretBasePrimary:: @ 8284C54 - .incbin "baserom.gba", 0x284c54, 0x20 + .incbin "data/tilesets/primary/secret_base/metatiles.bin" .align 1 - gMetatileAttributes_SecretBasePrimary:: @ 8284C74 - .incbin "baserom.gba", 0x284c74, 0x4 + .incbin "data/tilesets/primary/secret_base/metatile_attributes.bin" .align 1 - gMetatiles_EliteFour:: @ 8284C78 - .incbin "baserom.gba", 0x284c78, 0x14b0 + .incbin "data/tilesets/secondary/elite_four/metatiles.bin" .align 1 - gMetatileAttributes_EliteFour:: @ 8286128 - .incbin "baserom.gba", 0x286128, 0x296 + .incbin "data/tilesets/secondary/elite_four/metatile_attributes.bin" .align 1 - gMetatiles_BattleTower:: @ 82863BE - .incbin "baserom.gba", 0x2863be, 0x830 + .incbin "data/tilesets/secondary/battle_tower/metatiles.bin" .align 1 - gMetatileAttributes_BattleTower:: @ 8286BEE - .incbin "baserom.gba", 0x286bee, 0x106 + .incbin "data/tilesets/secondary/battle_tower/metatile_attributes.bin" + diff --git a/data/tilesets/primary/building/metatile_attributes.bin b/data/tilesets/primary/building/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..efc3708aa --- /dev/null +++ b/data/tilesets/primary/building/metatile_attributes.bin diff --git a/data/tilesets/primary/building/metatiles.bin b/data/tilesets/primary/building/metatiles.bin Binary files differnew file mode 100644 index 000000000..21830728c --- /dev/null +++ b/data/tilesets/primary/building/metatiles.bin diff --git a/data/tilesets/primary/general/metatile_attributes.bin b/data/tilesets/primary/general/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..d9cd29016 --- /dev/null +++ b/data/tilesets/primary/general/metatile_attributes.bin diff --git a/data/tilesets/primary/general/metatiles.bin b/data/tilesets/primary/general/metatiles.bin Binary files differnew file mode 100644 index 000000000..ef9d935ac --- /dev/null +++ b/data/tilesets/primary/general/metatiles.bin diff --git a/data/tilesets/primary/secret_base/metatile_attributes.bin b/data/tilesets/primary/secret_base/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..593f4708d --- /dev/null +++ b/data/tilesets/primary/secret_base/metatile_attributes.bin diff --git a/data/tilesets/primary/secret_base/metatiles.bin b/data/tilesets/primary/secret_base/metatiles.bin Binary files differnew file mode 100644 index 000000000..2067e0970 --- /dev/null +++ b/data/tilesets/primary/secret_base/metatiles.bin diff --git a/data/tilesets/secondary/battle_tower/metatile_attributes.bin b/data/tilesets/secondary/battle_tower/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..ec6fa2317 --- /dev/null +++ b/data/tilesets/secondary/battle_tower/metatile_attributes.bin diff --git a/data/tilesets/secondary/battle_tower/metatiles.bin b/data/tilesets/secondary/battle_tower/metatiles.bin Binary files differnew file mode 100644 index 000000000..872bd1263 --- /dev/null +++ b/data/tilesets/secondary/battle_tower/metatiles.bin diff --git a/data/tilesets/secondary/bike_shop/metatile_attributes.bin b/data/tilesets/secondary/bike_shop/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..722085d98 --- /dev/null +++ b/data/tilesets/secondary/bike_shop/metatile_attributes.bin diff --git a/data/tilesets/secondary/bike_shop/metatiles.bin b/data/tilesets/secondary/bike_shop/metatiles.bin Binary files differnew file mode 100644 index 000000000..2b334222c --- /dev/null +++ b/data/tilesets/secondary/bike_shop/metatiles.bin diff --git a/data/tilesets/secondary/brendans_mays_house/metatile_attributes.bin b/data/tilesets/secondary/brendans_mays_house/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..bf22acc95 --- /dev/null +++ b/data/tilesets/secondary/brendans_mays_house/metatile_attributes.bin diff --git a/data/tilesets/secondary/brendans_mays_house/metatiles.bin b/data/tilesets/secondary/brendans_mays_house/metatiles.bin Binary files differnew file mode 100644 index 000000000..ed9b9f360 --- /dev/null +++ b/data/tilesets/secondary/brendans_mays_house/metatiles.bin diff --git a/data/tilesets/secondary/cable_club/metatile_attributes.bin b/data/tilesets/secondary/cable_club/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..ce4ceaa28 --- /dev/null +++ b/data/tilesets/secondary/cable_club/metatile_attributes.bin diff --git a/data/tilesets/secondary/cable_club/metatiles.bin b/data/tilesets/secondary/cable_club/metatiles.bin Binary files differnew file mode 100644 index 000000000..5d3345691 --- /dev/null +++ b/data/tilesets/secondary/cable_club/metatiles.bin diff --git a/data/tilesets/secondary/cave/metatile_attributes.bin b/data/tilesets/secondary/cave/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..91acdafed --- /dev/null +++ b/data/tilesets/secondary/cave/metatile_attributes.bin diff --git a/data/tilesets/secondary/cave/metatiles.bin b/data/tilesets/secondary/cave/metatiles.bin Binary files differnew file mode 100644 index 000000000..bdafd513a --- /dev/null +++ b/data/tilesets/secondary/cave/metatiles.bin diff --git a/data/tilesets/secondary/contest/metatile_attributes.bin b/data/tilesets/secondary/contest/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..db591e34d --- /dev/null +++ b/data/tilesets/secondary/contest/metatile_attributes.bin diff --git a/data/tilesets/secondary/contest/metatiles.bin b/data/tilesets/secondary/contest/metatiles.bin Binary files differnew file mode 100644 index 000000000..9bf4066a7 --- /dev/null +++ b/data/tilesets/secondary/contest/metatiles.bin diff --git a/data/tilesets/secondary/dewford/metatile_attributes.bin b/data/tilesets/secondary/dewford/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..03b6c846f --- /dev/null +++ b/data/tilesets/secondary/dewford/metatile_attributes.bin diff --git a/data/tilesets/secondary/dewford/metatiles.bin b/data/tilesets/secondary/dewford/metatiles.bin Binary files differnew file mode 100644 index 000000000..c7d940214 --- /dev/null +++ b/data/tilesets/secondary/dewford/metatiles.bin diff --git a/data/tilesets/secondary/dewford_gym/metatile_attributes.bin b/data/tilesets/secondary/dewford_gym/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..275d9ee9f --- /dev/null +++ b/data/tilesets/secondary/dewford_gym/metatile_attributes.bin diff --git a/data/tilesets/secondary/dewford_gym/metatiles.bin b/data/tilesets/secondary/dewford_gym/metatiles.bin Binary files differnew file mode 100644 index 000000000..6fb9f68ef --- /dev/null +++ b/data/tilesets/secondary/dewford_gym/metatiles.bin diff --git a/data/tilesets/secondary/elite_four/metatile_attributes.bin b/data/tilesets/secondary/elite_four/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..337e8def1 --- /dev/null +++ b/data/tilesets/secondary/elite_four/metatile_attributes.bin diff --git a/data/tilesets/secondary/elite_four/metatiles.bin b/data/tilesets/secondary/elite_four/metatiles.bin Binary files differnew file mode 100644 index 000000000..e9f546bc7 --- /dev/null +++ b/data/tilesets/secondary/elite_four/metatiles.bin diff --git a/data/tilesets/secondary/ever_grande/metatile_attributes.bin b/data/tilesets/secondary/ever_grande/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..173bf5619 --- /dev/null +++ b/data/tilesets/secondary/ever_grande/metatile_attributes.bin diff --git a/data/tilesets/secondary/ever_grande/metatiles.bin b/data/tilesets/secondary/ever_grande/metatiles.bin Binary files differnew file mode 100644 index 000000000..3dff277f9 --- /dev/null +++ b/data/tilesets/secondary/ever_grande/metatiles.bin diff --git a/data/tilesets/secondary/facility/metatile_attributes.bin b/data/tilesets/secondary/facility/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..f1efb66d5 --- /dev/null +++ b/data/tilesets/secondary/facility/metatile_attributes.bin diff --git a/data/tilesets/secondary/facility/metatiles.bin b/data/tilesets/secondary/facility/metatiles.bin Binary files differnew file mode 100644 index 000000000..47838caa1 --- /dev/null +++ b/data/tilesets/secondary/facility/metatiles.bin diff --git a/data/tilesets/secondary/fallarbor/metatile_attributes.bin b/data/tilesets/secondary/fallarbor/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..f40c4d271 --- /dev/null +++ b/data/tilesets/secondary/fallarbor/metatile_attributes.bin diff --git a/data/tilesets/secondary/fallarbor/metatiles.bin b/data/tilesets/secondary/fallarbor/metatiles.bin Binary files differnew file mode 100644 index 000000000..55ae0c33e --- /dev/null +++ b/data/tilesets/secondary/fallarbor/metatiles.bin diff --git a/data/tilesets/secondary/fortree/metatile_attributes.bin b/data/tilesets/secondary/fortree/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..4e3d1cbce --- /dev/null +++ b/data/tilesets/secondary/fortree/metatile_attributes.bin diff --git a/data/tilesets/secondary/fortree/metatiles.bin b/data/tilesets/secondary/fortree/metatiles.bin Binary files differnew file mode 100644 index 000000000..6771238bb --- /dev/null +++ b/data/tilesets/secondary/fortree/metatiles.bin diff --git a/data/tilesets/secondary/fortree_gym/metatile_attributes.bin b/data/tilesets/secondary/fortree_gym/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..fce734d59 --- /dev/null +++ b/data/tilesets/secondary/fortree_gym/metatile_attributes.bin diff --git a/data/tilesets/secondary/fortree_gym/metatiles.bin b/data/tilesets/secondary/fortree_gym/metatiles.bin Binary files differnew file mode 100644 index 000000000..f63ba67b6 --- /dev/null +++ b/data/tilesets/secondary/fortree_gym/metatiles.bin diff --git a/data/tilesets/secondary/generic_building/metatile_attributes.bin b/data/tilesets/secondary/generic_building/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..dfaf9d431 --- /dev/null +++ b/data/tilesets/secondary/generic_building/metatile_attributes.bin diff --git a/data/tilesets/secondary/generic_building/metatiles.bin b/data/tilesets/secondary/generic_building/metatiles.bin Binary files differnew file mode 100644 index 000000000..2d12e667c --- /dev/null +++ b/data/tilesets/secondary/generic_building/metatiles.bin diff --git a/data/tilesets/secondary/inside_of_truck/metatile_attributes.bin b/data/tilesets/secondary/inside_of_truck/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..a39e5716d --- /dev/null +++ b/data/tilesets/secondary/inside_of_truck/metatile_attributes.bin diff --git a/data/tilesets/secondary/inside_of_truck/metatiles.bin b/data/tilesets/secondary/inside_of_truck/metatiles.bin Binary files differnew file mode 100644 index 000000000..c8fdbc871 --- /dev/null +++ b/data/tilesets/secondary/inside_of_truck/metatiles.bin diff --git a/data/tilesets/secondary/lab/metatile_attributes.bin b/data/tilesets/secondary/lab/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..5b7b746b5 --- /dev/null +++ b/data/tilesets/secondary/lab/metatile_attributes.bin diff --git a/data/tilesets/secondary/lab/metatiles.bin b/data/tilesets/secondary/lab/metatiles.bin Binary files differnew file mode 100644 index 000000000..9944f9b61 --- /dev/null +++ b/data/tilesets/secondary/lab/metatiles.bin diff --git a/data/tilesets/secondary/lavaridge/metatile_attributes.bin b/data/tilesets/secondary/lavaridge/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..c26cc8998 --- /dev/null +++ b/data/tilesets/secondary/lavaridge/metatile_attributes.bin diff --git a/data/tilesets/secondary/lavaridge/metatiles.bin b/data/tilesets/secondary/lavaridge/metatiles.bin Binary files differnew file mode 100644 index 000000000..3a9e52a46 --- /dev/null +++ b/data/tilesets/secondary/lavaridge/metatiles.bin diff --git a/data/tilesets/secondary/lavaridge_gym/metatile_attributes.bin b/data/tilesets/secondary/lavaridge_gym/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..deef2afa8 --- /dev/null +++ b/data/tilesets/secondary/lavaridge_gym/metatile_attributes.bin diff --git a/data/tilesets/secondary/lavaridge_gym/metatiles.bin b/data/tilesets/secondary/lavaridge_gym/metatiles.bin Binary files differnew file mode 100644 index 000000000..2c6ad5d60 --- /dev/null +++ b/data/tilesets/secondary/lavaridge_gym/metatiles.bin diff --git a/data/tilesets/secondary/lilycove/metatile_attributes.bin b/data/tilesets/secondary/lilycove/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..0f4e01b92 --- /dev/null +++ b/data/tilesets/secondary/lilycove/metatile_attributes.bin diff --git a/data/tilesets/secondary/lilycove/metatiles.bin b/data/tilesets/secondary/lilycove/metatiles.bin Binary files differnew file mode 100644 index 000000000..031fdc752 --- /dev/null +++ b/data/tilesets/secondary/lilycove/metatiles.bin diff --git a/data/tilesets/secondary/lilycove_museum/metatile_attributes.bin b/data/tilesets/secondary/lilycove_museum/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..e0b0f9016 --- /dev/null +++ b/data/tilesets/secondary/lilycove_museum/metatile_attributes.bin diff --git a/data/tilesets/secondary/lilycove_museum/metatiles.bin b/data/tilesets/secondary/lilycove_museum/metatiles.bin Binary files differnew file mode 100644 index 000000000..dd53c8c05 --- /dev/null +++ b/data/tilesets/secondary/lilycove_museum/metatiles.bin diff --git a/data/tilesets/secondary/mauville/metatile_attributes.bin b/data/tilesets/secondary/mauville/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..5f12e1cce --- /dev/null +++ b/data/tilesets/secondary/mauville/metatile_attributes.bin diff --git a/data/tilesets/secondary/mauville/metatiles.bin b/data/tilesets/secondary/mauville/metatiles.bin Binary files differnew file mode 100644 index 000000000..79526e01d --- /dev/null +++ b/data/tilesets/secondary/mauville/metatiles.bin diff --git a/data/tilesets/secondary/mauville_game_corner/metatile_attributes.bin b/data/tilesets/secondary/mauville_game_corner/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..2ebca58dd --- /dev/null +++ b/data/tilesets/secondary/mauville_game_corner/metatile_attributes.bin diff --git a/data/tilesets/secondary/mauville_game_corner/metatiles.bin b/data/tilesets/secondary/mauville_game_corner/metatiles.bin Binary files differnew file mode 100644 index 000000000..07cf8c1c9 --- /dev/null +++ b/data/tilesets/secondary/mauville_game_corner/metatiles.bin diff --git a/data/tilesets/secondary/mauville_gym/metatile_attributes.bin b/data/tilesets/secondary/mauville_gym/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..926bb7801 --- /dev/null +++ b/data/tilesets/secondary/mauville_gym/metatile_attributes.bin diff --git a/data/tilesets/secondary/mauville_gym/metatiles.bin b/data/tilesets/secondary/mauville_gym/metatiles.bin Binary files differnew file mode 100644 index 000000000..641984e13 --- /dev/null +++ b/data/tilesets/secondary/mauville_gym/metatiles.bin diff --git a/data/tilesets/secondary/meteor_falls/metatile_attributes.bin b/data/tilesets/secondary/meteor_falls/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..63d91a5e1 --- /dev/null +++ b/data/tilesets/secondary/meteor_falls/metatile_attributes.bin diff --git a/data/tilesets/secondary/meteor_falls/metatiles.bin b/data/tilesets/secondary/meteor_falls/metatiles.bin Binary files differnew file mode 100644 index 000000000..394b8c903 --- /dev/null +++ b/data/tilesets/secondary/meteor_falls/metatiles.bin diff --git a/data/tilesets/secondary/mossdeep/metatile_attributes.bin b/data/tilesets/secondary/mossdeep/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..3af5c2a85 --- /dev/null +++ b/data/tilesets/secondary/mossdeep/metatile_attributes.bin diff --git a/data/tilesets/secondary/mossdeep/metatiles.bin b/data/tilesets/secondary/mossdeep/metatiles.bin Binary files differnew file mode 100644 index 000000000..3701c2c13 --- /dev/null +++ b/data/tilesets/secondary/mossdeep/metatiles.bin diff --git a/data/tilesets/secondary/mossdeep_gym/metatile_attributes.bin b/data/tilesets/secondary/mossdeep_gym/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..d18ec800b --- /dev/null +++ b/data/tilesets/secondary/mossdeep_gym/metatile_attributes.bin diff --git a/data/tilesets/secondary/mossdeep_gym/metatiles.bin b/data/tilesets/secondary/mossdeep_gym/metatiles.bin Binary files differnew file mode 100644 index 000000000..17b977794 --- /dev/null +++ b/data/tilesets/secondary/mossdeep_gym/metatiles.bin diff --git a/data/tilesets/secondary/oceanic_museum/metatile_attributes.bin b/data/tilesets/secondary/oceanic_museum/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..6720eae9c --- /dev/null +++ b/data/tilesets/secondary/oceanic_museum/metatile_attributes.bin diff --git a/data/tilesets/secondary/oceanic_museum/metatiles.bin b/data/tilesets/secondary/oceanic_museum/metatiles.bin Binary files differnew file mode 100644 index 000000000..1e36d3cc9 --- /dev/null +++ b/data/tilesets/secondary/oceanic_museum/metatiles.bin diff --git a/data/tilesets/secondary/pacifidlog/metatile_attributes.bin b/data/tilesets/secondary/pacifidlog/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..d20bee131 --- /dev/null +++ b/data/tilesets/secondary/pacifidlog/metatile_attributes.bin diff --git a/data/tilesets/secondary/pacifidlog/metatiles.bin b/data/tilesets/secondary/pacifidlog/metatiles.bin Binary files differnew file mode 100644 index 000000000..0619b9a9c --- /dev/null +++ b/data/tilesets/secondary/pacifidlog/metatiles.bin diff --git a/data/tilesets/secondary/petalburg/metatile_attributes.bin b/data/tilesets/secondary/petalburg/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..091061b4e --- /dev/null +++ b/data/tilesets/secondary/petalburg/metatile_attributes.bin diff --git a/data/tilesets/secondary/petalburg/metatiles.bin b/data/tilesets/secondary/petalburg/metatiles.bin Binary files differnew file mode 100644 index 000000000..974a44aeb --- /dev/null +++ b/data/tilesets/secondary/petalburg/metatiles.bin diff --git a/data/tilesets/secondary/petalburg_gym/metatile_attributes.bin b/data/tilesets/secondary/petalburg_gym/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..629fbf54d --- /dev/null +++ b/data/tilesets/secondary/petalburg_gym/metatile_attributes.bin diff --git a/data/tilesets/secondary/petalburg_gym/metatiles.bin b/data/tilesets/secondary/petalburg_gym/metatiles.bin Binary files differnew file mode 100644 index 000000000..f3a0640e7 --- /dev/null +++ b/data/tilesets/secondary/petalburg_gym/metatiles.bin diff --git a/data/tilesets/secondary/pokemon_center/metatile_attributes.bin b/data/tilesets/secondary/pokemon_center/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..e5d115321 --- /dev/null +++ b/data/tilesets/secondary/pokemon_center/metatile_attributes.bin diff --git a/data/tilesets/secondary/pokemon_center/metatiles.bin b/data/tilesets/secondary/pokemon_center/metatiles.bin Binary files differnew file mode 100644 index 000000000..d794be01d --- /dev/null +++ b/data/tilesets/secondary/pokemon_center/metatiles.bin diff --git a/data/tilesets/secondary/pokemon_day_care/metatile_attributes.bin b/data/tilesets/secondary/pokemon_day_care/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..d946b8164 --- /dev/null +++ b/data/tilesets/secondary/pokemon_day_care/metatile_attributes.bin diff --git a/data/tilesets/secondary/pokemon_day_care/metatiles.bin b/data/tilesets/secondary/pokemon_day_care/metatiles.bin Binary files differnew file mode 100644 index 000000000..20d3f77b0 --- /dev/null +++ b/data/tilesets/secondary/pokemon_day_care/metatiles.bin diff --git a/data/tilesets/secondary/pokemon_fan_club/metatile_attributes.bin b/data/tilesets/secondary/pokemon_fan_club/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..971349200 --- /dev/null +++ b/data/tilesets/secondary/pokemon_fan_club/metatile_attributes.bin diff --git a/data/tilesets/secondary/pokemon_fan_club/metatiles.bin b/data/tilesets/secondary/pokemon_fan_club/metatiles.bin Binary files differnew file mode 100644 index 000000000..535c60b8d --- /dev/null +++ b/data/tilesets/secondary/pokemon_fan_club/metatiles.bin diff --git a/data/tilesets/secondary/pokemon_school/metatile_attributes.bin b/data/tilesets/secondary/pokemon_school/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..e9687cff9 --- /dev/null +++ b/data/tilesets/secondary/pokemon_school/metatile_attributes.bin diff --git a/data/tilesets/secondary/pokemon_school/metatiles.bin b/data/tilesets/secondary/pokemon_school/metatiles.bin Binary files differnew file mode 100644 index 000000000..be592773e --- /dev/null +++ b/data/tilesets/secondary/pokemon_school/metatiles.bin diff --git a/data/tilesets/secondary/pretty_petal_flower_shop/metatile_attributes.bin b/data/tilesets/secondary/pretty_petal_flower_shop/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..8433ffa0f --- /dev/null +++ b/data/tilesets/secondary/pretty_petal_flower_shop/metatile_attributes.bin diff --git a/data/tilesets/secondary/pretty_petal_flower_shop/metatiles.bin b/data/tilesets/secondary/pretty_petal_flower_shop/metatiles.bin Binary files differnew file mode 100644 index 000000000..d553d57b0 --- /dev/null +++ b/data/tilesets/secondary/pretty_petal_flower_shop/metatiles.bin diff --git a/data/tilesets/secondary/rustboro/metatile_attributes.bin b/data/tilesets/secondary/rustboro/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..ae1fc31da --- /dev/null +++ b/data/tilesets/secondary/rustboro/metatile_attributes.bin diff --git a/data/tilesets/secondary/rustboro/metatiles.bin b/data/tilesets/secondary/rustboro/metatiles.bin Binary files differnew file mode 100644 index 000000000..21bee8ab4 --- /dev/null +++ b/data/tilesets/secondary/rustboro/metatiles.bin diff --git a/data/tilesets/secondary/rustboro_gym/metatile_attributes.bin b/data/tilesets/secondary/rustboro_gym/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..618ba0beb --- /dev/null +++ b/data/tilesets/secondary/rustboro_gym/metatile_attributes.bin diff --git a/data/tilesets/secondary/rustboro_gym/metatiles.bin b/data/tilesets/secondary/rustboro_gym/metatiles.bin Binary files differnew file mode 100644 index 000000000..eb9483c26 --- /dev/null +++ b/data/tilesets/secondary/rustboro_gym/metatiles.bin diff --git a/data/tilesets/secondary/rusturf_tunnel/metatile_attributes.bin b/data/tilesets/secondary/rusturf_tunnel/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..fd992b211 --- /dev/null +++ b/data/tilesets/secondary/rusturf_tunnel/metatile_attributes.bin diff --git a/data/tilesets/secondary/rusturf_tunnel/metatiles.bin b/data/tilesets/secondary/rusturf_tunnel/metatiles.bin Binary files differnew file mode 100644 index 000000000..b731d5792 --- /dev/null +++ b/data/tilesets/secondary/rusturf_tunnel/metatiles.bin diff --git a/data/tilesets/secondary/seashore_house/metatile_attributes.bin b/data/tilesets/secondary/seashore_house/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..786eae706 --- /dev/null +++ b/data/tilesets/secondary/seashore_house/metatile_attributes.bin diff --git a/data/tilesets/secondary/seashore_house/metatiles.bin b/data/tilesets/secondary/seashore_house/metatiles.bin Binary files differnew file mode 100644 index 000000000..d935b6200 --- /dev/null +++ b/data/tilesets/secondary/seashore_house/metatiles.bin diff --git a/data/tilesets/secondary/secret_base/metatile_attributes.bin b/data/tilesets/secondary/secret_base/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..1317e433c --- /dev/null +++ b/data/tilesets/secondary/secret_base/metatile_attributes.bin diff --git a/data/tilesets/secondary/secret_base/metatiles.bin b/data/tilesets/secondary/secret_base/metatiles.bin Binary files differnew file mode 100644 index 000000000..addad4e43 --- /dev/null +++ b/data/tilesets/secondary/secret_base/metatiles.bin diff --git a/data/tilesets/secondary/ship/metatile_attributes.bin b/data/tilesets/secondary/ship/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..70639c966 --- /dev/null +++ b/data/tilesets/secondary/ship/metatile_attributes.bin diff --git a/data/tilesets/secondary/ship/metatiles.bin b/data/tilesets/secondary/ship/metatiles.bin Binary files differnew file mode 100644 index 000000000..cacf47265 --- /dev/null +++ b/data/tilesets/secondary/ship/metatiles.bin diff --git a/data/tilesets/secondary/shop/metatile_attributes.bin b/data/tilesets/secondary/shop/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..6e38f542e --- /dev/null +++ b/data/tilesets/secondary/shop/metatile_attributes.bin diff --git a/data/tilesets/secondary/shop/metatiles.bin b/data/tilesets/secondary/shop/metatiles.bin Binary files differnew file mode 100644 index 000000000..474d535b1 --- /dev/null +++ b/data/tilesets/secondary/shop/metatiles.bin diff --git a/data/tilesets/secondary/slateport/metatile_attributes.bin b/data/tilesets/secondary/slateport/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..ed765e817 --- /dev/null +++ b/data/tilesets/secondary/slateport/metatile_attributes.bin diff --git a/data/tilesets/secondary/slateport/metatiles.bin b/data/tilesets/secondary/slateport/metatiles.bin Binary files differnew file mode 100644 index 000000000..82d58bdde --- /dev/null +++ b/data/tilesets/secondary/slateport/metatiles.bin diff --git a/data/tilesets/secondary/sootopolis/metatile_attributes.bin b/data/tilesets/secondary/sootopolis/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..5f9516fb9 --- /dev/null +++ b/data/tilesets/secondary/sootopolis/metatile_attributes.bin diff --git a/data/tilesets/secondary/sootopolis/metatiles.bin b/data/tilesets/secondary/sootopolis/metatiles.bin Binary files differnew file mode 100644 index 000000000..af197dccf --- /dev/null +++ b/data/tilesets/secondary/sootopolis/metatiles.bin diff --git a/data/tilesets/secondary/sootopolis_gym/metatile_attributes.bin b/data/tilesets/secondary/sootopolis_gym/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..302436c1a --- /dev/null +++ b/data/tilesets/secondary/sootopolis_gym/metatile_attributes.bin diff --git a/data/tilesets/secondary/sootopolis_gym/metatiles.bin b/data/tilesets/secondary/sootopolis_gym/metatiles.bin Binary files differnew file mode 100644 index 000000000..0f57683b5 --- /dev/null +++ b/data/tilesets/secondary/sootopolis_gym/metatiles.bin diff --git a/data/tilesets/secondary/trick_house_puzzle/metatile_attributes.bin b/data/tilesets/secondary/trick_house_puzzle/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..e3894a7f6 --- /dev/null +++ b/data/tilesets/secondary/trick_house_puzzle/metatile_attributes.bin diff --git a/data/tilesets/secondary/trick_house_puzzle/metatiles.bin b/data/tilesets/secondary/trick_house_puzzle/metatiles.bin Binary files differnew file mode 100644 index 000000000..7929f40fe --- /dev/null +++ b/data/tilesets/secondary/trick_house_puzzle/metatiles.bin diff --git a/data/tilesets/secondary/underwater/metatile_attributes.bin b/data/tilesets/secondary/underwater/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..519b7715f --- /dev/null +++ b/data/tilesets/secondary/underwater/metatile_attributes.bin diff --git a/data/tilesets/secondary/underwater/metatiles.bin b/data/tilesets/secondary/underwater/metatiles.bin Binary files differnew file mode 100644 index 000000000..61c652903 --- /dev/null +++ b/data/tilesets/secondary/underwater/metatiles.bin diff --git a/data/tilesets/secondary/unused_1/metatile_attributes.bin b/data/tilesets/secondary/unused_1/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..593f4708d --- /dev/null +++ b/data/tilesets/secondary/unused_1/metatile_attributes.bin diff --git a/data/tilesets/secondary/unused_1/metatiles.bin b/data/tilesets/secondary/unused_1/metatiles.bin Binary files differnew file mode 100644 index 000000000..5b47cf201 --- /dev/null +++ b/data/tilesets/secondary/unused_1/metatiles.bin diff --git a/data/tilesets/secondary/unused_2/metatile_attributes.bin b/data/tilesets/secondary/unused_2/metatile_attributes.bin Binary files differnew file mode 100644 index 000000000..e709804da --- /dev/null +++ b/data/tilesets/secondary/unused_2/metatile_attributes.bin diff --git a/data/tilesets/secondary/unused_2/metatiles.bin b/data/tilesets/secondary/unused_2/metatiles.bin Binary files differnew file mode 100644 index 000000000..d9d5c19fd --- /dev/null +++ b/data/tilesets/secondary/unused_2/metatiles.bin diff --git a/graphics/slot_machine/numbers.png b/graphics/slot_machine/numbers.png Binary files differdeleted file mode 100755 index 1ec3d11dd..000000000 --- a/graphics/slot_machine/numbers.png +++ /dev/null diff --git a/graphics/slot_machine/numbers/0.png b/graphics/slot_machine/numbers/0.png Binary files differnew file mode 100755 index 000000000..07c668eea --- /dev/null +++ b/graphics/slot_machine/numbers/0.png diff --git a/graphics/slot_machine/numbers/1.png b/graphics/slot_machine/numbers/1.png Binary files differnew file mode 100755 index 000000000..0aa67e201 --- /dev/null +++ b/graphics/slot_machine/numbers/1.png diff --git a/graphics/slot_machine/numbers/2.png b/graphics/slot_machine/numbers/2.png Binary files differnew file mode 100755 index 000000000..0ff2a0265 --- /dev/null +++ b/graphics/slot_machine/numbers/2.png diff --git a/graphics/slot_machine/numbers/3.png b/graphics/slot_machine/numbers/3.png Binary files differnew file mode 100755 index 000000000..ea5f1e496 --- /dev/null +++ b/graphics/slot_machine/numbers/3.png diff --git a/graphics/slot_machine/numbers/4.png b/graphics/slot_machine/numbers/4.png Binary files differnew file mode 100755 index 000000000..d5353c752 --- /dev/null +++ b/graphics/slot_machine/numbers/4.png diff --git a/graphics/slot_machine/numbers/5.png b/graphics/slot_machine/numbers/5.png Binary files differnew file mode 100755 index 000000000..121a7b3c9 --- /dev/null +++ b/graphics/slot_machine/numbers/5.png diff --git a/graphics/slot_machine/numbers/6.png b/graphics/slot_machine/numbers/6.png Binary files differnew file mode 100755 index 000000000..95a9ae0ff --- /dev/null +++ b/graphics/slot_machine/numbers/6.png diff --git a/graphics/slot_machine/numbers/7.png b/graphics/slot_machine/numbers/7.png Binary files differnew file mode 100755 index 000000000..1b8b77b2a --- /dev/null +++ b/graphics/slot_machine/numbers/7.png diff --git a/graphics/slot_machine/numbers/8.png b/graphics/slot_machine/numbers/8.png Binary files differnew file mode 100755 index 000000000..17fe7938f --- /dev/null +++ b/graphics/slot_machine/numbers/8.png diff --git a/graphics/slot_machine/numbers/9.png b/graphics/slot_machine/numbers/9.png Binary files differnew file mode 100755 index 000000000..f684e0be7 --- /dev/null +++ b/graphics/slot_machine/numbers/9.png diff --git a/graphics/slot_machine/reel_symbols.png b/graphics/slot_machine/reel_symbols.png Binary files differdeleted file mode 100755 index 30e2dc4d8..000000000 --- a/graphics/slot_machine/reel_symbols.png +++ /dev/null diff --git a/graphics/slot_machine/reel_symbols/1.png b/graphics/slot_machine/reel_symbols/1.png Binary files differnew file mode 100755 index 000000000..73e9d3345 --- /dev/null +++ b/graphics/slot_machine/reel_symbols/1.png diff --git a/graphics/slot_machine/reel_symbols/2.png b/graphics/slot_machine/reel_symbols/2.png Binary files differnew file mode 100755 index 000000000..866f4cead --- /dev/null +++ b/graphics/slot_machine/reel_symbols/2.png diff --git a/graphics/slot_machine/reel_symbols/3.png b/graphics/slot_machine/reel_symbols/3.png Binary files differnew file mode 100755 index 000000000..9641dc4c5 --- /dev/null +++ b/graphics/slot_machine/reel_symbols/3.png diff --git a/graphics/slot_machine/reel_symbols/4.png b/graphics/slot_machine/reel_symbols/4.png Binary files differnew file mode 100755 index 000000000..b3319e0e4 --- /dev/null +++ b/graphics/slot_machine/reel_symbols/4.png diff --git a/graphics/slot_machine/reel_symbols/5.png b/graphics/slot_machine/reel_symbols/5.png Binary files differnew file mode 100755 index 000000000..16ae0f318 --- /dev/null +++ b/graphics/slot_machine/reel_symbols/5.png diff --git a/graphics/slot_machine/reel_symbols/6.png b/graphics/slot_machine/reel_symbols/6.png Binary files differnew file mode 100755 index 000000000..3d170585f --- /dev/null +++ b/graphics/slot_machine/reel_symbols/6.png diff --git a/graphics/slot_machine/reel_symbols/7.png b/graphics/slot_machine/reel_symbols/7.png Binary files differnew file mode 100755 index 000000000..e6535b380 --- /dev/null +++ b/graphics/slot_machine/reel_symbols/7.png diff --git a/graphics/unknown/ruby_83EDD3E.pal b/graphics/unknown/ruby_83EDD3E.pal new file mode 100644 index 000000000..74358acf8 --- /dev/null +++ b/graphics/unknown/ruby_83EDD3E.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 222 222 +255 255 255 +222 41 0 +255 255 131 +255 180 65 +255 255 255 +255 255 131 +255 255 131 +255 180 65 +255 180 65 +255 90 0 +255 90 0 +222 41 0 +255 0 255 +156 0 0 +0 0 0 diff --git a/graphics/unknown/ruby_83EDD5E.pal b/graphics/unknown/ruby_83EDD5E.pal new file mode 100644 index 000000000..40b466b4f --- /dev/null +++ b/graphics/unknown/ruby_83EDD5E.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 222 222 +255 255 255 +222 41 0 +255 180 65 +255 90 0 +255 255 131 +255 180 65 +255 255 255 +255 255 131 +255 255 131 +255 180 65 +255 180 65 +255 90 0 +255 0 255 +156 0 0 +0 0 0 diff --git a/graphics/unknown/ruby_83EDD7E.pal b/graphics/unknown/ruby_83EDD7E.pal new file mode 100644 index 000000000..3a0b7ab23 --- /dev/null +++ b/graphics/unknown/ruby_83EDD7E.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 222 222 +255 255 255 +222 41 0 +255 90 0 +222 41 0 +255 180 65 +255 90 0 +255 255 131 +255 180 65 +255 255 255 +255 255 131 +255 255 131 +255 180 65 +255 0 255 +156 0 0 +0 0 0 diff --git a/graphics/unknown/sapphire_83EDD96.pal b/graphics/unknown/sapphire_83EDD96.pal new file mode 100644 index 000000000..177099e1c --- /dev/null +++ b/graphics/unknown/sapphire_83EDD96.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 222 222 +255 255 255 +115 172 255 +255 255 131 +255 180 65 +255 255 255 +255 255 131 +255 255 131 +255 180 65 +255 180 65 +255 90 0 +255 90 0 +222 41 0 +255 0 255 +156 0 0 +0 0 0 diff --git a/graphics/unknown/sapphire_83EDDB6.pal b/graphics/unknown/sapphire_83EDDB6.pal new file mode 100644 index 000000000..7a3fb93af --- /dev/null +++ b/graphics/unknown/sapphire_83EDDB6.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 222 222 +255 255 255 +115 172 255 +255 180 65 +255 90 0 +255 255 131 +255 180 65 +255 255 255 +255 255 131 +255 255 131 +255 180 65 +255 180 65 +255 90 0 +255 0 255 +156 0 0 +0 0 0 diff --git a/graphics/unknown/sapphire_83EDDD6.pal b/graphics/unknown/sapphire_83EDDD6.pal new file mode 100644 index 000000000..bfc60b703 --- /dev/null +++ b/graphics/unknown/sapphire_83EDDD6.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 222 222 +255 255 255 +115 172 255 +255 90 0 +222 41 0 +255 180 65 +255 90 0 +255 255 131 +255 180 65 +255 255 255 +255 255 131 +255 255 131 +255 180 65 +255 0 255 +156 0 0 +0 0 0 diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h index c09cde31f..8539af2e0 100644 --- a/include/gba/m4a_internal.h +++ b/include/gba/m4a_internal.h @@ -45,8 +45,8 @@ struct WaveData #define TONEDATA_TYPE_CGB 0x07 #define TONEDATA_TYPE_FIX 0x08 -#define TONEDATA_TYPE_SPL 0x40 -#define TONEDATA_TYPE_RHY 0x80 +#define TONEDATA_TYPE_SPL 0x40 // key split +#define TONEDATA_TYPE_RHY 0x80 // rhythm #define TONEDATA_P_S_PAN 0xc0 #define TONEDATA_P_S_PAM TONEDATA_P_S_PAN @@ -241,9 +241,9 @@ struct MusicPlayerTrack u8 wai; u8 patP; u8 repN; - u8 gat; + u8 gateTime; u8 key; - u8 vel; + u8 velocity; u8 run; u8 keyM; u8 pitM; diff --git a/tools/mid2agb/.gitignore b/tools/mid2agb/.gitignore new file mode 100644 index 000000000..0e7264c86 --- /dev/null +++ b/tools/mid2agb/.gitignore @@ -0,0 +1 @@ +mid2agb diff --git a/tools/mid2agb/LICENSE b/tools/mid2agb/LICENSE new file mode 100644 index 000000000..534d15349 --- /dev/null +++ b/tools/mid2agb/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2016 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/mid2agb/Makefile b/tools/mid2agb/Makefile new file mode 100644 index 000000000..3215169d3 --- /dev/null +++ b/tools/mid2agb/Makefile @@ -0,0 +1,15 @@ +CXX := g++ + +CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch + +SRCS := agb.cpp error.cpp main.cpp midi.cpp tables.cpp + +HEADERS := agb.h error.h main.h midi.h tables.h + +.PHONY: clean + +mid2agb: $(SRCS) $(HEADERS) + $(CXX) $(CXXFLAGS) $(SRCS) -o $@ + +clean: + $(RM) mid2agb mid2agb.exe diff --git a/tools/mid2agb/agb.cpp b/tools/mid2agb/agb.cpp new file mode 100644 index 000000000..e3e5d8efe --- /dev/null +++ b/tools/mid2agb/agb.cpp @@ -0,0 +1,442 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdarg> +#include <cstring> +#include <vector> +#include "agb.h" +#include "main.h" +#include "midi.h" +#include "tables.h" + +int g_agbTrack; + +static std::string s_lastOpName; +static int s_blockNum; +static bool s_keepLastOpName; +static int s_lastNote; +static int s_lastVelocity; +static bool s_noteChanged; +static bool s_velocityChanged; +static bool s_inPattern; + +void PrintAgbHeader() +{ + std::fprintf(g_outputFile, "\t.include \"MPlayDef.s\"\n\n"); + std::fprintf(g_outputFile, "\t.equ\t%s_grp, voicegroup%03u\n", g_asmLabel.c_str(), g_voiceGroup); + std::fprintf(g_outputFile, "\t.equ\t%s_pri, %u\n", g_asmLabel.c_str(), g_priority); + + if (g_reverb >= 0) + std::fprintf(g_outputFile, "\t.equ\t%s_rev, reverb_set+%u\n", g_asmLabel.c_str(), g_reverb); + else + std::fprintf(g_outputFile, "\t.equ\t%s_rev, 0\n", g_asmLabel.c_str()); + + std::fprintf(g_outputFile, "\t.equ\t%s_mvl, %u\n", g_asmLabel.c_str(), g_masterVolume); + std::fprintf(g_outputFile, "\t.equ\t%s_key, %u\n", g_asmLabel.c_str(), 0); + std::fprintf(g_outputFile, "\t.equ\t%s_tbs, %u\n", g_asmLabel.c_str(), g_clocksPerBeat); + std::fprintf(g_outputFile, "\t.equ\t%s_exg, %u\n", g_asmLabel.c_str(), g_exactGateTime); + std::fprintf(g_outputFile, "\t.equ\t%s_cmp, %u\n", g_asmLabel.c_str(), g_compressionEnabled); + + std::fprintf(g_outputFile, "\n\t.section .rodata\n"); + std::fprintf(g_outputFile, "\t.global\t%s\n", g_asmLabel.c_str()); + + std::fprintf(g_outputFile, "\t.align\t2\n"); +} + +void ResetTrackVars() +{ + s_lastVelocity = -1; + s_lastNote = -1; + s_velocityChanged = false; + s_noteChanged = false; + s_keepLastOpName = false; + s_lastOpName = ""; + s_inPattern = false; +} + +void PrintWait(int wait) +{ + if (wait > 0) + { + std::fprintf(g_outputFile, "\t.byte\tW%02d\n", wait); + s_velocityChanged = true; + s_noteChanged = true; + s_keepLastOpName = true; + } +} + +void PrintOp(int wait, std::string name, const char *format, ...) +{ + std::va_list args; + va_start(args, format); + std::fprintf(g_outputFile, "\t.byte\t\t"); + + if (format != nullptr) + { + if (!g_compressionEnabled || s_lastOpName != name) + { + std::fprintf(g_outputFile, "%s, ", name.c_str()); + s_lastOpName = name; + } + else + { + std::fprintf(g_outputFile, " "); + } + std::vfprintf(g_outputFile, format, args); + } + else + { + std::fputs(name.c_str(), g_outputFile); + s_lastOpName = name; + } + + std::fprintf(g_outputFile, "\n"); + + va_end(args); + + PrintWait(wait); +} + +void PrintByte(const char *format, ...) +{ + std::va_list args; + va_start(args, format); + std::fprintf(g_outputFile, "\t.byte\t"); + std::vfprintf(g_outputFile, format, args); + std::fprintf(g_outputFile, "\n"); + s_velocityChanged = true; + s_noteChanged = true; + s_keepLastOpName = true; + va_end(args); +} + +void PrintWord(const char *format, ...) +{ + std::va_list args; + va_start(args, format); + std::fprintf(g_outputFile, "\t .word\t"); + std::vfprintf(g_outputFile, format, args); + std::fprintf(g_outputFile, "\n"); + va_end(args); +} + +void PrintNote(const Event& event) +{ + int note = event.note; + int velocity = g_noteVelocityLUT[event.param1]; + int duration = -1; + + if (event.param2 != -1) + duration = g_noteDurationLUT[event.param2]; + + int gateTimeParam = 0; + + if (g_exactGateTime && duration != -1) + gateTimeParam = event.param2 - duration; + + char gtpBuf[16]; + + if (gateTimeParam > 0) + std::snprintf(gtpBuf, sizeof(gtpBuf), ", gtp%u", gateTimeParam); + else + gtpBuf[0] = 0; + + char opName[16]; + + if (duration == -1) + std::strcpy(opName, "TIE "); + else + std::snprintf(opName, sizeof(opName), "N%02u ", duration); + + bool noteChanged = true; + bool velocityChanged = true; + + if (g_compressionEnabled) + { + noteChanged = (note != s_lastNote); + velocityChanged = (velocity != s_lastVelocity); + } + + if (s_keepLastOpName) + s_keepLastOpName = false; + else + s_lastOpName = ""; + + if (noteChanged || velocityChanged || (gateTimeParam > 0)) + { + s_lastNote = note; + + char noteBuf[16]; + + if (note >= 24) + std::snprintf(noteBuf, sizeof(noteBuf), g_noteTable[note % 12], note / 12 - 2); + else + std::snprintf(noteBuf, sizeof(noteBuf), g_minusNoteTable[note % 12], note / -12 + 2); + + char velocityBuf[16]; + + if (velocityChanged || (gateTimeParam > 0)) + { + s_lastVelocity = velocity; + std::snprintf(velocityBuf, sizeof(velocityBuf), ", v%03u", velocity); + } + else + { + velocityBuf[0] = 0; + } + + PrintOp(event.time, opName, "%s%s%s", noteBuf, velocityBuf, gtpBuf); + } + else + { + PrintOp(event.time, opName, 0); + } + + s_noteChanged = noteChanged; + s_velocityChanged = velocityChanged; +} + +void PrintEndOfTieOp(const Event& event) +{ + int note = event.note; + bool noteChanged = (note != s_lastNote); + + if (!noteChanged || !s_noteChanged) + s_lastOpName = ""; + + if (!noteChanged && g_compressionEnabled) + { + PrintOp(event.time, "EOT ", nullptr); + } + else + { + s_lastNote = note; + if (note >= 24) + PrintOp(event.time, "EOT ", g_noteTable[note % 12], note / 12 - 2); + else + PrintOp(event.time, "EOT ", g_minusNoteTable[note % 12], note / -12 + 2); + } + + s_noteChanged = noteChanged; +} + +void PrintSeqLoopLabel(const Event& event) +{ + s_blockNum = event.param1 + 1; + std::fprintf(g_outputFile, "%s_%u_B%u:\n", g_asmLabel.c_str(), g_agbTrack, s_blockNum); + PrintWait(event.time); + ResetTrackVars(); +} + +void PrintControllerOp(const Event& event) +{ + switch (event.param1) + { + case 0x01: + PrintOp(event.time, "MOD ", "%u", event.param2); + break; + case 0x07: + PrintOp(event.time, "VOL ", "%u*%s_mvl/mxv", event.param2, g_asmLabel.c_str()); + break; + case 0x0A: + PrintOp(event.time, "PAN ", "c_v%+d", event.param2 - 64); + break; + case 0x0C: + case 0x10: + // TODO: memacc + break; + case 0x0D: + // TODO: memacc var + break; + case 0x0E: + // TODO: memacc var + break; + case 0x0F: + // TODO: memacc var + break; + case 0x11: + std::fprintf(g_outputFile, "%s_%u_L%u:\n", g_asmLabel.c_str(), g_agbTrack, event.param2); + PrintWait(event.time); + ResetTrackVars(); + break; + case 0x14: + PrintOp(event.time, "BENDR ", "%u", event.param2); + break; + case 0x15: + PrintOp(event.time, "LFOS ", "%u", event.param2); + break; + case 0x16: + PrintOp(event.time, "MODT ", "%u", event.param2); + break; + case 0x18: + PrintOp(event.time, "TUNE ", "c_v%+d", event.param2 - 64); + break; + case 0x1A: + PrintOp(event.time, "LFODL ", "%u", event.param2); + break; + case 0x1D: + case 0x1F: + // TODO: extended op + break; + case 0x1E: + // TODO: loop op + break; + case 0x21: + case 0x27: + PrintByte("PRIO , %u", event.param2); + PrintWait(event.time); + break; + default: + PrintWait(event.time); + break; + } +} + +void PrintAgbTrack(std::vector<Event>& events) +{ + std::fprintf(g_outputFile, "\n@**************** Track %u (Midi-Chn.%u) ****************@\n\n", g_agbTrack, g_midiChan + 1); + std::fprintf(g_outputFile, "%s_%u:\n", g_asmLabel.c_str(), g_agbTrack); + PrintWait(g_initialWait); + PrintByte("KEYSH , %s_key%+d", g_asmLabel.c_str(), 0); + + int wholeNoteCount = 0; + int loopEndBlockNum = 0; + + ResetTrackVars(); + + bool foundVolBeforeNote = false; + + for (const Event& event : events) + { + if (event.type == EventType::Note) + break; + + if (event.type == EventType::Controller && event.param1 == 0x07) + { + foundVolBeforeNote = true; + break; + } + } + + if (!foundVolBeforeNote) + PrintByte("\tVOL , 127*%s_mvl/mxv", g_asmLabel.c_str()); + + for (unsigned i = 0; events[i].type != EventType::EndOfTrack; i++) + { + const Event& event = events[i]; + + if (IsPatternBoundary(event.type)) + { + if (s_inPattern) + PrintByte("PEND"); + s_inPattern = false; + } + + if (event.type == EventType::WholeNoteMark || event.type == EventType::Pattern) + std::fprintf(g_outputFile, "@ %03d ----------------------------------------\n", wholeNoteCount++); + + switch (event.type) + { + case EventType::Note: + PrintNote(event); + break; + case EventType::EndOfTie: + PrintEndOfTieOp(event); + break; + case EventType::Label: + PrintSeqLoopLabel(event); + break; + case EventType::LoopEnd: + PrintByte("GOTO"); + PrintWord("%s_%u_B%u", g_asmLabel.c_str(), g_agbTrack, loopEndBlockNum); + PrintSeqLoopLabel(event); + break; + case EventType::LoopEndBegin: + PrintByte("GOTO"); + PrintWord("%s_%u_B%u", g_asmLabel.c_str(), g_agbTrack, loopEndBlockNum); + PrintSeqLoopLabel(event); + loopEndBlockNum = s_blockNum; + break; + case EventType::LoopBegin: + PrintSeqLoopLabel(event); + loopEndBlockNum = s_blockNum; + break; + case EventType::WholeNoteMark: + if (event.param2 & 0x80000000) + { + std::fprintf(g_outputFile, "%s_%u_%03lu:\n", g_asmLabel.c_str(), g_agbTrack, (unsigned long)(event.param2 & 0x7FFFFFFF)); + ResetTrackVars(); + s_inPattern = true; + } + PrintWait(event.time); + break; + case EventType::Pattern: + PrintByte("PATT"); + PrintWord("%s_%u_%03lu", g_asmLabel.c_str(), g_agbTrack, event.param2); + + while (!IsPatternBoundary(events[i + 1].type)) + i++; + + ResetTrackVars(); + break; + case EventType::Tempo: + PrintByte("TEMPO , %u*%s_tbs/2", 60000000 / event.param2, g_asmLabel.c_str()); + PrintWait(event.time); + break; + case EventType::InstrumentChange: + PrintOp(event.time, "VOICE ", "%u", event.param1); + break; + case EventType::PitchBend: + PrintOp(event.time, "BEND ", "c_v%+d", event.param2 - 64); + break; + case EventType::Controller: + PrintControllerOp(event); + break; + default: + PrintWait(event.time); + break; + } + } + + PrintByte("FINE"); +} + +void PrintAgbFooter() +{ + int trackCount = g_agbTrack - 1; + + std::fprintf(g_outputFile, "\n@******************************************************@\n"); + std::fprintf(g_outputFile, "\t.align\t2\n"); + std::fprintf(g_outputFile, "\n%s:\n", g_asmLabel.c_str()); + std::fprintf(g_outputFile, "\t.byte\t%u\t@ NumTrks\n", trackCount); + std::fprintf(g_outputFile, "\t.byte\t%u\t@ NumBlks\n", 0); + std::fprintf(g_outputFile, "\t.byte\t%s_pri\t@ Priority\n", g_asmLabel.c_str()); + std::fprintf(g_outputFile, "\t.byte\t%s_rev\t@ Reverb.\n", g_asmLabel.c_str()); + std::fprintf(g_outputFile, "\n"); + std::fprintf(g_outputFile, "\t.word\t%s_grp\n", g_asmLabel.c_str()); + std::fprintf(g_outputFile, "\n"); + + // track pointers + for (int i = 1; i <= trackCount; i++) + std::fprintf(g_outputFile, "\t.word\t%s_%u\n", g_asmLabel.c_str(), i); + + std::fprintf(g_outputFile, "\n\t.end\n"); +} diff --git a/tools/mid2agb/agb.h b/tools/mid2agb/agb.h new file mode 100644 index 000000000..7eab3c143 --- /dev/null +++ b/tools/mid2agb/agb.h @@ -0,0 +1,33 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef AGB_H +#define AGB_H + +#include <vector> +#include "midi.h" + +void PrintAgbHeader(); +void PrintAgbTrack(std::vector<Event>& events); +void PrintAgbFooter(); + +extern int g_agbTrack; + +#endif // AGB_H diff --git a/tools/mid2agb/error.cpp b/tools/mid2agb/error.cpp new file mode 100644 index 000000000..13e38ffa8 --- /dev/null +++ b/tools/mid2agb/error.cpp @@ -0,0 +1,36 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdlib> +#include <cstdarg> + +// Reports an error diagnostic and terminates the program. +[[noreturn]] void RaiseError(const char* format, ...) +{ + const int bufferSize = 1024; + char buffer[bufferSize]; + std::va_list args; + va_start(args, format); + std::vsnprintf(buffer, bufferSize, format, args); + std::fprintf(stderr, "error: %s\n", buffer); + va_end(args); + std::exit(1); +} diff --git a/tools/mid2agb/error.h b/tools/mid2agb/error.h new file mode 100644 index 000000000..da4f01142 --- /dev/null +++ b/tools/mid2agb/error.h @@ -0,0 +1,26 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef ERROR_H +#define ERROR_H + +[[noreturn]] void RaiseError(const char* format, ...); + +#endif // ERROR_H diff --git a/tools/mid2agb/main.cpp b/tools/mid2agb/main.cpp new file mode 100644 index 000000000..9b883fba5 --- /dev/null +++ b/tools/mid2agb/main.cpp @@ -0,0 +1,230 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdlib> +#include <cstring> +#include <cctype> +#include <cassert> +#include <string> +#include <set> +#include "main.h" +#include "error.h" +#include "midi.h" +#include "agb.h" + +FILE* g_inputFile = nullptr; +FILE* g_outputFile = nullptr; + +std::string g_asmLabel; +int g_masterVolume = 127; +int g_voiceGroup = 0; +int g_priority = 0; +int g_reverb = -1; +int g_clocksPerBeat = 1; +bool g_exactGateTime = false; +bool g_compressionEnabled = true; + +[[noreturn]] static void PrintUsage() +{ + std::printf( + "Usage: MID2AGB name [options]\n" + "\n" + " input_file filename(.mid) of MIDI file\n" + " output_file filename(.s) for AGB file (default:input_file)\n" + "\n" + "options -V??? master volume (default:127)\n" + " -G??? voice group number (default:0)\n" + " -P??? priority (default:0)\n" + " -R??? reverb (default:off)\n" + " -X 48 clocks/beat (default:24 clocks/beat)\n" + " -E exact gate-time\n" + " -N no compression\n" + ); + std::exit(1); +} + +static std::string StripExtension(std::string s) +{ + std::size_t pos = s.find_last_of('.'); + + if (pos > 0 && pos != std::string::npos) + { + s = s.substr(0, pos); + } + + return s; +} + +static std::string GetExtension(std::string s) +{ + std::size_t pos = s.find_last_of('.'); + + if (pos > 0 && pos != std::string::npos) + { + return s.substr(pos + 1); + } + + return ""; +} + +struct Option +{ + char letter = 0; + const char *arg = NULL; +}; + +static Option ParseOption(int& index, const int argc, char** argv) +{ + static std::set<char> optionsWithArg = { 'L', 'V', 'G', 'P', 'R' }; + static std::set<char> optionsWithoutArg = { 'X', 'E', 'N' }; + + assert(index >= 0 && index < argc); + + const char *opt = argv[index]; + + assert(opt[0] == '-'); + assert(std::strlen(opt) == 2); + + char letter = std::toupper(opt[1]); + + bool isOption = false; + bool hasArg = false; + + if (optionsWithArg.count(letter) != 0) + { + isOption = true; + hasArg = true; + } + else if (optionsWithoutArg.count(letter) != 0) + { + isOption = true; + } + + if (!isOption) + PrintUsage(); + + Option retVal; + + retVal.letter = letter; + + if (hasArg) + { + index++; + + if (index >= argc) + RaiseError("missing argument for \"-%c\"", letter); + + retVal.arg = argv[index]; + } + + return retVal; +} + +int main(int argc, char** argv) +{ + std::string inputFilename; + std::string outputFilename; + + for (int i = 1; i < argc; i++) + { + if (argv[i][0] == '-' && std::strlen(argv[i]) == 2) + { + Option option = ParseOption(i, argc, argv); + + switch (option.letter) + { + case 'E': + g_exactGateTime = true; + break; + case 'G': + g_voiceGroup = std::stoi(option.arg); + break; + case 'L': + g_asmLabel = option.arg; + break; + case 'N': + g_compressionEnabled = false; + break; + case 'P': + g_priority = std::stoi(option.arg); + break; + case 'R': + g_reverb = std::stoi(option.arg); + break; + case 'V': + g_masterVolume = std::stoi(option.arg); + break; + case 'X': + g_clocksPerBeat = 2; + break; + } + } + else + { + switch (i) + { + case 1: + inputFilename = argv[i]; + break; + case 2: + outputFilename = argv[i]; + break; + default: + PrintUsage(); + } + } + } + + if (inputFilename.empty()) + PrintUsage(); + + if (GetExtension(inputFilename) != "mid") + RaiseError("input filename extension is not \"mid\""); + + if (outputFilename.empty()) + outputFilename = StripExtension(inputFilename) + ".s"; + + if (GetExtension(outputFilename) != "s") + RaiseError("output filename extension is not \"s\""); + + if (g_asmLabel.empty()) + g_asmLabel = StripExtension(outputFilename); + + g_inputFile = std::fopen(inputFilename.c_str(), "rb"); + + if (g_inputFile == nullptr) + RaiseError("failed to open \"%s\" for reading", inputFilename.c_str()); + + g_outputFile = std::fopen(outputFilename.c_str(), "w"); + + if (g_outputFile == nullptr) + RaiseError("failed to open \"%s\" for writing", outputFilename.c_str()); + + ReadMidiFileHeader(); + PrintAgbHeader(); + ReadMidiTracks(); + PrintAgbFooter(); + + std::fclose(g_inputFile); + std::fclose(g_outputFile); + + return 0; +} diff --git a/tools/mid2agb/main.h b/tools/mid2agb/main.h new file mode 100644 index 000000000..6e71e73fd --- /dev/null +++ b/tools/mid2agb/main.h @@ -0,0 +1,39 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef MAIN_H +#define MAIN_H + +#include <cstdio> +#include <string> + +extern FILE* g_inputFile; +extern FILE* g_outputFile; + +extern std::string g_asmLabel; +extern int g_masterVolume; +extern int g_voiceGroup; +extern int g_priority; +extern int g_reverb; +extern int g_clocksPerBeat; +extern bool g_exactGateTime; +extern bool g_compressionEnabled; + +#endif // MAIN_H diff --git a/tools/mid2agb/midi.cpp b/tools/mid2agb/midi.cpp new file mode 100644 index 000000000..ba5dd654a --- /dev/null +++ b/tools/mid2agb/midi.cpp @@ -0,0 +1,942 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cassert> +#include <string> +#include <vector> +#include <algorithm> +#include <memory> +#include "midi.h" +#include "main.h" +#include "error.h" +#include "agb.h" +#include "tables.h" + +enum class MidiEventCategory +{ + Control, + SysEx, + Meta, + Invalid, +}; + +MidiFormat g_midiFormat; +std::int_fast32_t g_midiTrackCount; +std::int16_t g_midiTimeDiv; + +int g_midiChan; +std::int32_t g_initialWait; + +static long s_trackDataStart; +static std::vector<Event> s_seqEvents; +static std::vector<Event> s_trackEvents; +static std::int32_t s_absoluteTime; +static int s_blockCount = 0; +static int s_minNote; +static int s_maxNote; + +void Seek(long offset) +{ + if (std::fseek(g_inputFile, offset, SEEK_SET) != 0) + RaiseError("failed to seek to %l", offset); +} + +void Skip(long offset) +{ + if (std::fseek(g_inputFile, offset, SEEK_CUR) != 0) + RaiseError("failed to skip %l bytes", offset); +} + +std::string ReadSignature() +{ + char signature[4]; + + if (std::fread(signature, 4, 1, g_inputFile) != 1) + RaiseError("failed to read signature"); + + return std::string(signature, 4); +} + +std::uint32_t ReadInt8() +{ + int c = std::fgetc(g_inputFile); + + if (c < 0) + RaiseError("unexpected EOF"); + + return c; +} + +std::uint32_t ReadInt16() +{ + std::uint32_t val = 0; + val |= ReadInt8() << 8; + val |= ReadInt8(); + return val; +} + +std::uint32_t ReadInt24() +{ + std::uint32_t val = 0; + val |= ReadInt8() << 16; + val |= ReadInt8() << 8; + val |= ReadInt8(); + return val; +} + +std::uint32_t ReadInt32() +{ + std::uint32_t val = 0; + val |= ReadInt8() << 24; + val |= ReadInt8() << 16; + val |= ReadInt8() << 8; + val |= ReadInt8(); + return val; +} + +std::uint32_t ReadVLQ() +{ + std::uint32_t val = 0; + std::uint32_t c; + + do + { + c = ReadInt8(); + val <<= 7; + val |= (c & 0x7F); + } while (c & 0x80); + + return val; +} + +void ReadMidiFileHeader() +{ + Seek(0); + + if (ReadSignature() != "MThd") + RaiseError("MIDI file header signature didn't match \"MThd\""); + + std::uint32_t headerLength = ReadInt32(); + + if (headerLength != 6) + RaiseError("MIDI file header length isn't 6"); + + std::uint16_t midiFormat = ReadInt16(); + + if (midiFormat >= 2) + RaiseError("unsupported MIDI format (%u)", midiFormat); + + g_midiFormat = (MidiFormat)midiFormat; + g_midiTrackCount = ReadInt16(); + g_midiTimeDiv = ReadInt16(); + + if (g_midiTimeDiv < 0) + RaiseError("unsupported MIDI time division (%d)", g_midiTimeDiv); +} + +long ReadMidiTrackHeader(long offset) +{ + Seek(offset); + + if (ReadSignature() != "MTrk") + RaiseError("MIDI track header signature didn't match \"MTrk\""); + + long size = ReadInt32(); + + s_trackDataStart = std::ftell(g_inputFile); + + return size + 8; +} + +void StartTrack() +{ + Seek(s_trackDataStart); + s_absoluteTime = 0; +} + +void SkipEventData() +{ + Skip(ReadVLQ()); +} + +void DetermineEventCategory(MidiEventCategory& category, int& typeChan, int& size) +{ + typeChan = ReadInt8(); + + if (typeChan == 0xFF) + { + category = MidiEventCategory::Meta; + size = 0; + } + else if (typeChan >= 0xF0) + { + category = MidiEventCategory::SysEx; + size = 0; + } + else if (typeChan >= 0x80) + { + category = MidiEventCategory::Control; + + switch (typeChan >> 4) + { + case 0xC: + case 0xD: + size = 1; + break; + default: + size = 2; + break; + } + } + else + { + category = MidiEventCategory::Invalid; + } +} + +void MakeBlockEvent(Event& event, EventType type) +{ + event.type = type; + event.param1 = s_blockCount++; + event.param2 = 0; +} + +std::string ReadEventText() +{ + char buffer[2]; + std::uint32_t length = ReadVLQ(); + + if (length <= 2) + { + if (fread(buffer, length, 1, g_inputFile) != 1) + RaiseError("failed to read event text"); + } + else + { + Skip(length); + length = 0; + } + + return std::string(buffer, length); +} + +bool ReadSeqEvent(Event& event) +{ + s_absoluteTime += ReadVLQ(); + event.time = s_absoluteTime; + + MidiEventCategory category; + int typeChan; + int size; + + DetermineEventCategory(category, typeChan, size); + + if (category == MidiEventCategory::Control) + { + Skip(size); + return false; + } + + if (category == MidiEventCategory::SysEx) + { + SkipEventData(); + return false; + } + + if (category == MidiEventCategory::Invalid) + RaiseError("invalid event"); + + // meta event + int metaEventType = ReadInt8(); + + if (metaEventType >= 1 && metaEventType <= 7) + { + // text event + std::string text = ReadEventText(); + + if (text == "[") + MakeBlockEvent(event, EventType::LoopBegin); + else if (text == "][") + MakeBlockEvent(event, EventType::LoopEndBegin); + else if (text == "]") + MakeBlockEvent(event, EventType::LoopEnd); + else if (text == ":") + MakeBlockEvent(event, EventType::Label); + else + return false; + } + else + { + switch (metaEventType) + { + case 0x2F: // end of track + SkipEventData(); + event.type = EventType::EndOfTrack; + event.param1 = 0; + event.param2 = 0; + break; + case 0x51: // tempo + if (ReadVLQ() != 3) + RaiseError("invalid tempo size"); + + event.type = EventType::Tempo; + event.param1 = 0; + event.param2 = ReadInt24(); + break; + case 0x58: // time signature + { + if (ReadVLQ() != 4) + RaiseError("invalid time signature size"); + + int numerator = ReadInt8(); + int denominatorExponent = ReadInt8(); + + if (denominatorExponent >= 16) + RaiseError("invalid time signature denominator"); + + Skip(2); // ignore other values + + int clockTicks = 96 * numerator * g_clocksPerBeat; + int denominator = 1 << denominatorExponent; + int timeSig = clockTicks / denominator; + + if (timeSig <= 0 || timeSig >= 0x10000) + RaiseError("invalid time signature"); + + event.type = EventType::TimeSignature; + event.param1 = 0; + event.param2 = timeSig; + break; + } + default: + SkipEventData(); + return false; + } + } + + return true; +} + +void ReadSeqEvents() +{ + StartTrack(); + + for (;;) + { + Event event = {}; + + if (ReadSeqEvent(event)) + { + s_seqEvents.push_back(event); + + if (event.type == EventType::EndOfTrack) + return; + } + } +} + +bool CheckNoteEnd(Event& event) +{ + event.param2 += ReadVLQ(); + + MidiEventCategory category; + int typeChan; + int size; + + DetermineEventCategory(category, typeChan, size); + + if (category == MidiEventCategory::Control) + { + int chan = typeChan & 0xF; + + if (chan != g_midiChan) + { + Skip(size); + return false; + } + + switch (typeChan & 0xF0) + { + case 0x80: // note off + { + int note = ReadInt8(); + ReadInt8(); // ignore velocity + if (note == event.note) + return true; + break; + } + case 0x90: // note on + { + int note = ReadInt8(); + int velocity = ReadInt8(); + if (velocity == 0 && note == event.note) + return true; + break; + } + default: + Skip(size); + break; + } + + return false; + } + + if (category == MidiEventCategory::SysEx) + { + SkipEventData(); + return false; + } + + if (category == MidiEventCategory::Meta) + { + int metaEventType = ReadInt8(); + SkipEventData(); + + if (metaEventType == 0x2F) + RaiseError("note doesn't end"); + + return false; + } + + RaiseError("invalid event"); +} + +void FindNoteEnd(Event& event) +{ + long startPos = ftell(g_inputFile); + + event.param2 = 0; + + while (!CheckNoteEnd(event)) + ; + + Seek(startPos); +} + +bool ReadTrackEvent(Event& event) +{ + s_absoluteTime += ReadVLQ(); + event.time = s_absoluteTime; + + MidiEventCategory category; + int typeChan; + int size; + + DetermineEventCategory(category, typeChan, size); + + if (category == MidiEventCategory::Control) + { + int chan = typeChan & 0xF; + + if (chan != g_midiChan) + { + Skip(size); + return false; + } + + switch (typeChan & 0xF0) + { + case 0x90: // note on + { + int note = ReadInt8(); + int velocity = ReadInt8(); + + if (velocity != 0) + { + event.type = EventType::Note; + event.note = note; + event.param1 = velocity; + FindNoteEnd(event); + if (event.param2 > 0) + { + if (note < s_minNote) + s_minNote = note; + if (note > s_maxNote) + s_maxNote = note; + } + } + break; + } + case 0xB0: // controller event + event.type = EventType::Controller; + event.param1 = ReadInt8(); // controller index + event.param2 = ReadInt8(); // value + break; + case 0xC0: // instrument change + event.type = EventType::InstrumentChange; + event.param1 = ReadInt8(); // instrument + event.param2 = 0; + break; + case 0xE0: // pitch bend + event.type = EventType::PitchBend; + event.param1 = ReadInt8(); + event.param2 = ReadInt8(); + break; + default: + Skip(size); + return false; + } + + return true; + } + + if (category == MidiEventCategory::SysEx) + { + SkipEventData(); + return false; + } + + if (category == MidiEventCategory::Meta) + { + int metaEventType = ReadInt8(); + SkipEventData(); + + if (metaEventType == 0x2F) + { + event.type = EventType::EndOfTrack; + event.param1 = 0; + event.param2 = 0; + return true; + } + + return false; + } + + RaiseError("invalid event"); +} + +void ReadTrackEvents() +{ + StartTrack(); + + s_trackEvents.clear(); + + s_minNote = 0xFF; + s_maxNote = 0; + + for (;;) + { + Event event = {}; + + if (ReadTrackEvent(event)) + { + s_trackEvents.push_back(event); + + if (event.type == EventType::EndOfTrack) + return; + } + } +} + +bool EventCompare(const Event& event1, const Event& event2) +{ + if (event1.time < event2.time) + return true; + + if (event1.time > event2.time) + return false; + + unsigned event1Type = (unsigned)event1.type; + unsigned event2Type = (unsigned)event2.type; + + if (event1.type == EventType::Note) + event1Type += event1.note; + + if (event2.type == EventType::Note) + event2Type += event2.note; + + if (event1Type < event2Type) + return true; + + if (event1Type > event2Type) + return false; + + if (event1.type == EventType::EndOfTie) + { + if (event1.note < event2.note) + return true; + + if (event1.note > event2.note) + return false; + } + + return false; +} + +std::unique_ptr<std::vector<Event>> MergeEvents() +{ + std::unique_ptr<std::vector<Event>> events(new std::vector<Event>()); + + unsigned trackEventPos = 0; + unsigned seqEventPos = 0; + + while (s_trackEvents[trackEventPos].type != EventType::EndOfTrack + && s_seqEvents[seqEventPos].type != EventType::EndOfTrack) + { + if (EventCompare(s_trackEvents[trackEventPos], s_seqEvents[seqEventPos])) + events->push_back(s_trackEvents[trackEventPos++]); + else + events->push_back(s_seqEvents[seqEventPos++]); + } + + while (s_trackEvents[trackEventPos].type != EventType::EndOfTrack) + events->push_back(s_trackEvents[trackEventPos++]); + + while (s_seqEvents[seqEventPos].type != EventType::EndOfTrack) + events->push_back(s_seqEvents[seqEventPos++]); + + // Push the EndOfTrack event with the larger time. + if (EventCompare(s_trackEvents[trackEventPos], s_seqEvents[seqEventPos])) + events->push_back(s_seqEvents[seqEventPos]); + else + events->push_back(s_trackEvents[trackEventPos]); + + return events; +} + +void ConvertTimes(std::vector<Event>& events) +{ + for (Event& event : events) + { + event.time = (24 * g_clocksPerBeat * event.time) / g_midiTimeDiv; + + if (event.type == EventType::Note) + { + event.param1 = g_noteVelocityLUT[event.param1]; + + std::uint32_t duration = (24 * g_clocksPerBeat * event.param2) / g_midiTimeDiv; + + if (duration == 0) + duration = 1; + + if (!g_exactGateTime && duration < 96) + duration = g_noteDurationLUT[duration]; + + event.param2 = duration; + } + } +} + +std::unique_ptr<std::vector<Event>> InsertTimingEvents(std::vector<Event>& inEvents) +{ + std::unique_ptr<std::vector<Event>> outEvents(new std::vector<Event>()); + + Event timingEvent = {}; + timingEvent.time = 0; + timingEvent.type = EventType::TimeSignature; + timingEvent.param2 = 96 * g_clocksPerBeat; + + for (const Event& event : inEvents) + { + while (EventCompare(timingEvent, event)) + { + outEvents->push_back(timingEvent); + timingEvent.time += timingEvent.param2; + } + + if (event.type == EventType::TimeSignature) + { + if (g_agbTrack == 1 && event.param2 != timingEvent.param2) + { + Event originalTimingEvent = event; + originalTimingEvent.type = EventType::OriginalTimeSignature; + outEvents->push_back(originalTimingEvent); + } + timingEvent.param2 = event.param2; + timingEvent.time = event.time + timingEvent.param2; + } + + outEvents->push_back(event); + } + + return outEvents; +} + +std::unique_ptr<std::vector<Event>> SplitTime(std::vector<Event>& inEvents) +{ + std::unique_ptr<std::vector<Event>> outEvents(new std::vector<Event>()); + + std::int32_t time = 0; + + for (const Event& event : inEvents) + { + std::int32_t diff = event.time - time; + + if (diff > 96) + { + int wholeNoteCount = (diff - 1) / 96; + diff -= 96 * wholeNoteCount; + + for (int i = 0; i < wholeNoteCount; i++) + { + time += 96; + Event timeSplitEvent = {}; + timeSplitEvent.time = time; + timeSplitEvent.type = EventType::TimeSplit; + outEvents->push_back(timeSplitEvent); + } + } + + std::int32_t lutValue = g_noteDurationLUT[diff]; + + if (lutValue != diff) + { + Event timeSplitEvent = {}; + timeSplitEvent.time = time + lutValue; + timeSplitEvent.type = EventType::TimeSplit; + outEvents->push_back(timeSplitEvent); + } + + time = event.time; + + outEvents->push_back(event); + } + + return outEvents; +} + +std::unique_ptr<std::vector<Event>> CreateTies(std::vector<Event>& inEvents) +{ + std::unique_ptr<std::vector<Event>> outEvents(new std::vector<Event>()); + + for (const Event& event : inEvents) + { + if (event.type == EventType::Note && event.param2 > 96) + { + Event tieEvent = event; + tieEvent.param2 = -1; + outEvents->push_back(tieEvent); + + Event eotEvent = {}; + eotEvent.time = event.time + event.param2; + eotEvent.type = EventType::EndOfTie; + eotEvent.note = event.note; + outEvents->push_back(eotEvent); + } + else + { + outEvents->push_back(event); + } + } + + return outEvents; +} + +void CalculateWaits(std::vector<Event>& events) +{ + g_initialWait = events[0].time; + int wholeNoteCount = 0; + + for (unsigned i = 0; i < events.size() && events[i].type != EventType::EndOfTrack; i++) + { + events[i].time = events[i + 1].time - events[i].time; + + if (events[i].type == EventType::TimeSignature) + { + events[i].type = EventType::WholeNoteMark; + events[i].param2 = wholeNoteCount++; + } + } +} + +int CalculateCompressionScore(std::vector<Event>& events, int index) +{ + int score = 0; + std::uint8_t lastParam1 = events[index].param1; + std::uint8_t lastVelocity = 0x80u; + EventType lastType = events[index].type; + std::int32_t lastDuration = 0x80000000; + std::uint8_t lastNote = 0x80u; + + if (events[index].time > 0) + score++; + + for (int i = index + 1; !IsPatternBoundary(events[i].type); i++) + { + if (events[i].type == EventType::Note) + { + int val = 0; + + if (events[i].note != lastNote) + { + val++; + lastNote = events[i].note; + } + + if (events[i].param1 != lastVelocity) + { + val++; + lastVelocity = events[i].param1; + } + + std::int32_t duration = events[i].param2; + + if (g_noteDurationLUT[duration] != lastDuration) + { + val++; + lastDuration = g_noteDurationLUT[duration]; + } + + if (duration != lastDuration) + val++; + + if (val == 0) + val = 1; + + score += val; + } + else + { + lastDuration = 0x80000000; + + if (events[i].type == lastType) + { + if ((lastType != EventType::Controller && (int)lastType != 0x25 && lastType != EventType::EndOfTie) || events[i].param1 == lastParam1) + { + score++; + } + else + { + score += 2; + } + } + else + { + score += 2; + } + } + + lastParam1 = events[i].param1; + lastType = events[i].type; + + if (events[i].time) + ++score; + } + + return score; +} + +bool IsCompressionMatch(std::vector<Event>& events, int index1, int index2) +{ + index1++; + index2++; + + do + { + if (events[index1] != events[index2]) + return false; + + index1++; + index2++; + } while (!IsPatternBoundary(events[index1].type)); + + return IsPatternBoundary(events[index2].type); +} + +void CompressWholeNote(std::vector<Event>& events, int index) +{ + for (int j = index + 1; events[j].type != EventType::EndOfTrack; j++) + { + while (events[j].type != EventType::WholeNoteMark) + { + j++; + + if (events[j].type == EventType::EndOfTrack) + return; + } + + if (IsCompressionMatch(events, index, j)) + { + events[j].type = EventType::Pattern; + events[j].param2 = events[index].param2 & 0x7FFFFFFF; + events[index].param2 |= 0x80000000; + } + } +} + +void Compress(std::vector<Event>& events) +{ + for (int i = 0; events[i].type != EventType::EndOfTrack; i++) + { + while (events[i].type != EventType::WholeNoteMark) + { + i++; + + if (events[i].type == EventType::EndOfTrack) + return; + } + + if (CalculateCompressionScore(events, i) >= 6) + { + CompressWholeNote(events, i); + } + } +} + +void ReadMidiTracks() +{ + long trackHeaderStart = 14; + + ReadMidiTrackHeader(trackHeaderStart); + ReadSeqEvents(); + + g_agbTrack = 1; + + for (int midiTrack = 0; midiTrack < g_midiTrackCount; midiTrack++) + { + trackHeaderStart += ReadMidiTrackHeader(trackHeaderStart); + + for (g_midiChan = 0; g_midiChan < 16; g_midiChan++) + { + ReadTrackEvents(); + + if (s_minNote != 0xFF) + { +#ifdef DEBUG + printf("Track%d = Midi-Ch.%d\n", g_agbTrack, g_midiChan + 1); +#endif + + std::unique_ptr<std::vector<Event>> events(MergeEvents()); + + // We don't need TEMPO in anything but track 1. + if (g_agbTrack == 1) + { + auto it = std::remove_if(s_seqEvents.begin(), s_seqEvents.end(), [](const Event& event) { return event.type == EventType::Tempo; }); + s_seqEvents.erase(it, s_seqEvents.end()); + } + + ConvertTimes(*events); + events = InsertTimingEvents(*events); + events = CreateTies(*events); + std::stable_sort(events->begin(), events->end(), EventCompare); + events = SplitTime(*events); + CalculateWaits(*events); + + if (g_compressionEnabled) + Compress(*events); + + PrintAgbTrack(*events); + + g_agbTrack++; + } + } + } +} diff --git a/tools/mid2agb/midi.h b/tools/mid2agb/midi.h new file mode 100644 index 000000000..434c8e8e8 --- /dev/null +++ b/tools/mid2agb/midi.h @@ -0,0 +1,87 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef MIDI_H +#define MIDI_H + +#include <cstdint> + +enum class MidiFormat +{ + SingleTrack, + MultiTrack +}; + +enum class EventType +{ + EndOfTie = 0x01, + Label = 0x11, + LoopEnd = 0x12, + LoopEndBegin = 0x13, + LoopBegin = 0x14, + OriginalTimeSignature = 0x15, + WholeNoteMark = 0x16, + Pattern = 0x17, + TimeSignature = 0x18, + Tempo = 0x19, + InstrumentChange = 0x21, + Controller = 0x22, + PitchBend = 0x23, + KeyShift = 0x31, + Note = 0x40, + TimeSplit = 0xFE, + EndOfTrack = 0xFF, +}; + +struct Event +{ + std::int32_t time; + EventType type; + std::uint8_t note; + std::uint8_t param1; + std::int32_t param2; + + bool operator==(const Event& other) + { + return (time == other.time + && type == other.type + && note == other.note + && param1 == other.param1 + && param2 == other.param2); + } + + bool operator!=(const Event& other) + { + return !(*this == other); + } +}; + +void ReadMidiFileHeader(); +void ReadMidiTracks(); + +extern int g_midiChan; +extern std::int32_t g_initialWait; + +inline bool IsPatternBoundary(EventType type) +{ + return type == EventType::EndOfTrack || (int)type <= 0x17; +} + +#endif // MIDI_H diff --git a/tools/mid2agb/tables.cpp b/tools/mid2agb/tables.cpp new file mode 100644 index 000000000..f254664a4 --- /dev/null +++ b/tools/mid2agb/tables.cpp @@ -0,0 +1,286 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include "tables.h" + +const int g_noteDurationLUT[] = +{ + 0, // 0 + 1, // 1 + 2, // 2 + 3, // 3 + 4, // 4 + 5, // 5 + 6, // 6 + 7, // 7 + 8, // 8 + 9, // 9 + 10, // 10 + 11, // 11 + 12, // 12 + 13, // 13 + 14, // 14 + 15, // 15 + 16, // 16 + 17, // 17 + 18, // 18 + 19, // 19 + 20, // 20 + 21, // 21 + 22, // 22 + 23, // 23 + 24, // 24 + 24, // 25 + 24, // 26 + 24, // 27 + 28, // 28 + 28, // 29 + 30, // 30 + 30, // 31 + 32, // 32 + 32, // 33 + 32, // 34 + 32, // 35 + 36, // 36 + 36, // 37 + 36, // 38 + 36, // 39 + 40, // 40 + 40, // 41 + 42, // 42 + 42, // 43 + 44, // 44 + 44, // 45 + 44, // 46 + 44, // 47 + 48, // 48 + 48, // 49 + 48, // 50 + 48, // 51 + 52, // 52 + 52, // 53 + 54, // 54 + 54, // 55 + 56, // 56 + 56, // 57 + 56, // 58 + 56, // 59 + 60, // 60 + 60, // 61 + 60, // 62 + 60, // 63 + 64, // 64 + 64, // 65 + 66, // 66 + 66, // 67 + 68, // 68 + 68, // 69 + 68, // 70 + 68, // 71 + 72, // 72 + 72, // 73 + 72, // 74 + 72, // 75 + 76, // 76 + 76, // 77 + 78, // 78 + 78, // 79 + 80, // 80 + 80, // 81 + 80, // 82 + 80, // 83 + 84, // 84 + 84, // 85 + 84, // 86 + 84, // 87 + 88, // 88 + 88, // 89 + 90, // 90 + 90, // 91 + 92, // 92 + 92, // 93 + 92, // 94 + 92, // 95 + 96, // 96 +}; + +const int g_noteVelocityLUT[] = +{ + 0, // 0 + 4, // 1 + 4, // 2 + 4, // 3 + 4, // 4 + 8, // 5 + 8, // 6 + 8, // 7 + 8, // 8 + 12, // 9 + 12, // 10 + 12, // 11 + 12, // 12 + 16, // 13 + 16, // 14 + 16, // 15 + 16, // 16 + 20, // 17 + 20, // 18 + 20, // 19 + 20, // 20 + 24, // 21 + 24, // 22 + 24, // 23 + 24, // 24 + 28, // 25 + 28, // 26 + 28, // 27 + 28, // 28 + 32, // 29 + 32, // 30 + 32, // 31 + 32, // 32 + 36, // 33 + 36, // 34 + 36, // 35 + 36, // 36 + 40, // 37 + 40, // 38 + 40, // 39 + 40, // 40 + 44, // 41 + 44, // 42 + 44, // 43 + 44, // 44 + 48, // 45 + 48, // 46 + 48, // 47 + 48, // 48 + 52, // 49 + 52, // 50 + 52, // 51 + 52, // 52 + 56, // 53 + 56, // 54 + 56, // 55 + 56, // 56 + 60, // 57 + 60, // 58 + 60, // 59 + 60, // 60 + 64, // 61 + 64, // 62 + 64, // 63 + 64, // 64 + 68, // 65 + 68, // 66 + 68, // 67 + 68, // 68 + 72, // 69 + 72, // 70 + 72, // 71 + 72, // 72 + 76, // 73 + 76, // 74 + 76, // 75 + 76, // 76 + 80, // 77 + 80, // 78 + 80, // 79 + 80, // 80 + 84, // 81 + 84, // 82 + 84, // 83 + 84, // 84 + 88, // 85 + 88, // 86 + 88, // 87 + 88, // 88 + 92, // 89 + 92, // 90 + 92, // 91 + 92, // 92 + 96, // 93 + 96, // 94 + 96, // 95 + 96, // 96 + 100, // 97 + 100, // 98 + 100, // 99 + 100, // 100 + 104, // 101 + 104, // 102 + 104, // 103 + 104, // 104 + 108, // 105 + 108, // 106 + 108, // 107 + 108, // 108 + 112, // 109 + 112, // 110 + 112, // 111 + 112, // 112 + 116, // 113 + 116, // 114 + 116, // 115 + 116, // 116 + 120, // 117 + 120, // 118 + 120, // 119 + 120, // 120 + 124, // 121 + 124, // 122 + 124, // 123 + 124, // 124 + 127, // 125 + 127, // 126 + 127, // 127 +}; + +const char* g_noteTable[] = +{ + "Cn%01u ", + "Cs%01u ", + "Dn%01u ", + "Ds%01u ", + "En%01u ", + "Fn%01u ", + "Fs%01u ", + "Gn%01u ", + "Gs%01u ", + "An%01u ", + "As%01u ", + "Bn%01u ", +}; + +const char* g_minusNoteTable[] = +{ + "CnM%01u", + "CsM%01u", + "DnM%01u", + "DsM%01u", + "EnM%01u", + "FnM%01u", + "FsM%01u", + "GnM%01u", + "GsM%01u", + "AnM%01u", + "AsM%01u", + "BnM%01u", +}; diff --git a/tools/mid2agb/tables.h b/tools/mid2agb/tables.h new file mode 100644 index 000000000..da3c9072d --- /dev/null +++ b/tools/mid2agb/tables.h @@ -0,0 +1,29 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef TABLES_H +#define TABLES_H + +extern const int g_noteDurationLUT[]; +extern const int g_noteVelocityLUT[]; +extern const char* g_noteTable[]; +extern const char* g_minusNoteTable[]; + +#endif // TABLES_H |