diff options
author | Paul Sander <nintendo6496@googlemail.com> | 2018-12-17 16:26:00 +0100 |
---|---|---|
committer | Paul Sander <nintendo6496@googlemail.com> | 2018-12-17 16:26:00 +0100 |
commit | 478c7b5421f596ac9c1e6f4faedfe3faec6a68cf (patch) | |
tree | 255fa2842f0020dbcd498d87ba8f61456fc804a9 | |
parent | fc1fd9c983b0ea35414f699ab6c4b4fdd617e8d0 (diff) | |
parent | 4cd02d59b4dfef1129f0e2f23e6409e75848af24 (diff) |
Merge remote-tracking branch 'upstream/master'
198 files changed, 12297 insertions, 9155 deletions
@@ -84,10 +84,12 @@ clean: tidy rm -f sound/direct_sound_samples/*.bin rm -f $(SONG_OBJS) find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + + @$(MAKE) -C berry_fix clean tidy: rm -f $(ROM) $(ELF) $(MAP) rm -r build/* + @$(MAKE) -C berry_fix tidy include graphics_file_rules.mk @@ -164,8 +166,11 @@ $(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_comm cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../../$< | sed "s#tools/#../../tools/#g" > ld_script.ld $(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) - cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) $(LIB) + cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(LIB) $(ROM): $(ELF) $(OBJCOPY) -O binary $< $@ $(FIX) $@ -p -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent + +berry_fix/berry_fix.gba: + @$(MAKE) -C berry_fix diff --git a/asm/battle_2.s b/asm/battle_2.s index eba29102c..b11014d6b 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -638,7 +638,7 @@ _080102C0: mov r8, r4 _080102D8: lsls r0, r5, 8 - ldr r1, _08010348 @ =gUnknown_202211C + ldr r1, _08010348 @ =gBlockRecvBuffer + 4 adds r7, r0, r1 lsls r0, r5, 3 subs r0, r5 @@ -694,14 +694,14 @@ _0801031C: .align 2, 0 _08010340: .4byte gEnigmaBerries _08010344: .4byte gLinkPlayers -_08010348: .4byte gUnknown_202211C +_08010348: .4byte gBlockRecvBuffer + 4 _0801034C: movs r5, 0 ldr r4, _0801040C @ =gEnigmaBerries mov r9, r4 _08010352: lsls r0, r5, 8 - ldr r1, _08010410 @ =gUnknown_202211C + ldr r1, _08010410 @ =gBlockRecvBuffer + 4 adds r7, r0, r1 movs r4, 0 adds r2, r5, 0x1 @@ -797,7 +797,7 @@ _080103FC: bx r0 .align 2, 0 _0801040C: .4byte gEnigmaBerries -_08010410: .4byte gUnknown_202211C +_08010410: .4byte gBlockRecvBuffer + 4 thumb_func_end sub_801017C thumb_func_start sub_8010414 @@ -810,7 +810,7 @@ sub_8010414: @ 8010414 lsls r1, 24 lsrs r3, r1, 24 movs r6, 0 - ldr r0, _08010440 @ =gUnknown_2022118 + ldr r0, _08010440 @ =gBlockRecvBuffer ldrh r2, [r0] movs r1, 0x80 lsls r1, 1 @@ -824,7 +824,7 @@ sub_8010414: @ 8010414 movs r2, 0xC b _0801044E .align 2, 0 -_08010440: .4byte gUnknown_2022118 +_08010440: .4byte gBlockRecvBuffer _08010444: .4byte gBattleTypeFlags _08010448: ldr r0, _0801048C @ =gBattleTypeFlags @@ -842,7 +842,7 @@ _08010458: movs r2, 0 cmp r2, r4 bge _0801047C - ldr r1, _08010490 @ =gUnknown_2022118 + ldr r1, _08010490 @ =gBlockRecvBuffer mov r8, r1 movs r5, 0x80 lsls r5, 1 @@ -867,7 +867,7 @@ _0801047C: b _0801049A .align 2, 0 _0801048C: .4byte gBattleTypeFlags -_08010490: .4byte gUnknown_2022118 +_08010490: .4byte gBlockRecvBuffer _08010494: ldr r0, _080104EC @ =gBattleTypeFlags ldr r1, [r0] @@ -1126,7 +1126,7 @@ _0801067E: lsls r0, 8 orrs r1, r0 strh r1, [r2, 0xE] - ldr r0, _080106EC @ =gUnknown_2022118 + ldr r0, _080106EC @ =gBlockRecvBuffer lsls r1, r5, 8 adds r0, 0x2 adds r1, r0 @@ -1139,7 +1139,7 @@ _0801067E: _080106E0: .4byte sub_800F6FC _080106E4: .4byte gTasks _080106E8: .4byte gBattleStruct -_080106EC: .4byte gUnknown_2022118 +_080106EC: .4byte gBlockRecvBuffer _080106F0: .4byte gUnknown_2023E82 _080106F4: bl sub_800A4BC @@ -1170,7 +1170,7 @@ _0801072A: bl ResetBlockReceivedFlags ldr r0, _08010740 @ =gEnemyParty lsls r1, r5, 8 - ldr r2, _08010744 @ =gUnknown_2022118 + ldr r2, _08010744 @ =gBlockRecvBuffer adds r1, r2 movs r2, 0xC8 bl memcpy @@ -1178,7 +1178,7 @@ _0801072A: b _080108B2 .align 2, 0 _08010740: .4byte gEnemyParty -_08010744: .4byte gUnknown_2022118 +_08010744: .4byte gBlockRecvBuffer _08010748: .4byte gUnknown_2023E82 _0801074C: bl sub_800A4BC @@ -1209,7 +1209,7 @@ _08010782: bl ResetBlockReceivedFlags ldr r0, _08010798 @ =gUnknown_20240F4 lsls r1, r5, 8 - ldr r2, _0801079C @ =gUnknown_2022118 + ldr r2, _0801079C @ =gBlockRecvBuffer adds r1, r2 movs r2, 0xC8 bl memcpy @@ -1217,7 +1217,7 @@ _08010782: b _080108B2 .align 2, 0 _08010798: .4byte gUnknown_20240F4 -_0801079C: .4byte gUnknown_2022118 +_0801079C: .4byte gBlockRecvBuffer _080107A0: .4byte gUnknown_2023E82 _080107A4: bl sub_800A4BC @@ -1246,7 +1246,7 @@ _080107CC: bl ResetBlockReceivedFlags ldr r4, _08010820 @ =gUnknown_20241BC lsls r1, r5, 8 - ldr r0, _08010824 @ =gUnknown_2022118 + ldr r0, _08010824 @ =gBlockRecvBuffer adds r1, r0 adds r0, r4, 0 movs r2, 0xC8 @@ -1272,7 +1272,7 @@ _080107CC: b _080108B2 .align 2, 0 _08010820: .4byte gUnknown_20241BC -_08010824: .4byte gUnknown_2022118 +_08010824: .4byte gBlockRecvBuffer _08010828: .4byte 0xfffffe70 _0801082C: .4byte 0xfffffed4 _08010830: .4byte gUnknown_2023E82 @@ -1586,7 +1586,7 @@ _08010AA0: beq _08010ABA _08010AAC: lsls r1, r4, 8 - ldr r0, _08010AE4 @ =gUnknown_2022118 + ldr r0, _08010AE4 @ =gBlockRecvBuffer adds r1, r0 ldr r0, _08010AE8 @ =gUnknown_2022B58 movs r2, 0x60 @@ -1613,7 +1613,7 @@ _08010ABA: bl sub_8128198 b _08010B82 .align 2, 0 -_08010AE4: .4byte gUnknown_2022118 +_08010AE4: .4byte gBlockRecvBuffer _08010AE8: .4byte gUnknown_2022B58 _08010AEC: .4byte gUnknown_2023E82 _08010AF0: .4byte gMain @@ -1860,7 +1860,7 @@ _08010CE2: strh r2, [r1, 0xE] strh r2, [r1, 0x10] adds r2, r1, 0 - ldr r0, _08010D5C @ =gUnknown_2022118 + ldr r0, _08010D5C @ =gBlockRecvBuffer adds r3, r0, 0x2 ldr r5, _08010D60 @ =gLinkPlayers movs r4, 0x3F @@ -1881,7 +1881,7 @@ _08010D4C: .4byte gDecompressionBuffer _08010D50: .4byte gPlayerParty _08010D54: .4byte sub_800F6FC _08010D58: .4byte gTasks -_08010D5C: .4byte gUnknown_2022118 +_08010D5C: .4byte gBlockRecvBuffer _08010D60: .4byte gLinkPlayers _08010D64: cmp r0, 0x2 @@ -1962,7 +1962,7 @@ _08010DEE: subs r0, r7 lsls r0, 2 mov r8, r0 - ldr r4, _08010E18 @ =gUnknown_2022118 + ldr r4, _08010E18 @ =gBlockRecvBuffer movs r5, 0 _08010E00: cmp r6, r7 @@ -1978,7 +1978,7 @@ _08010E00: beq _08010E24 b _08010EBE .align 2, 0 -_08010E18: .4byte gUnknown_2022118 +_08010E18: .4byte gBlockRecvBuffer _08010E1C: .4byte gLinkPlayers _08010E20: cmp r0, 0x3 @@ -2115,7 +2115,7 @@ _08010F0E: subs r0, r7 lsls r0, 2 mov r8, r0 - ldr r4, _08010F38 @ =gUnknown_2022118 + ldr r4, _08010F38 @ =gBlockRecvBuffer movs r5, 0 _08010F20: cmp r6, r7 @@ -2131,7 +2131,7 @@ _08010F20: beq _08010F44 b _08010FDE .align 2, 0 -_08010F38: .4byte gUnknown_2022118 +_08010F38: .4byte gBlockRecvBuffer _08010F3C: .4byte gLinkPlayers _08010F40: cmp r0, 0x3 @@ -2375,7 +2375,7 @@ sub_8011100: @ 8011100 ands r0, r1 cmp r0, 0 beq _08011158 - ldr r2, _08011168 @ =gUnknown_20370D0 + ldr r2, _08011168 @ =gSpecialVar_Result ldr r1, _0801116C @ =gUnknown_2023E8A movs r0, 0x3 strb r0, [r1] @@ -2398,7 +2398,7 @@ _08011158: .align 2, 0 _08011160: .4byte gMain _08011164: .4byte gBattleTypeFlags -_08011168: .4byte gUnknown_20370D0 +_08011168: .4byte gSpecialVar_Result _0801116C: .4byte gUnknown_2023E8A _08011170: .4byte CB2_QuitRecordedBattle thumb_func_end sub_8011100 @@ -11652,7 +11652,7 @@ _08015B74: cmp r0, 0 bne _08015BD4 _08015B86: - ldr r1, _08015BE8 @ =gUnknown_20370D0 + ldr r1, _08015BE8 @ =gSpecialVar_Result ldr r5, _08015BEC @ =gUnknown_2023E8A ldrb r0, [r5] strh r0, [r1] @@ -11697,7 +11697,7 @@ _08015BD4: _08015BDC: .4byte gBattleTypeFlags _08015BE0: .4byte gPlayerParty _08015BE4: .4byte gUnknown_3003F64 -_08015BE8: .4byte gUnknown_20370D0 +_08015BE8: .4byte gSpecialVar_Result _08015BEC: .4byte gUnknown_2023E8A _08015BF0: .4byte gMain _08015BF4: .4byte 0x00000439 diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index 94a49dd4e..29ae446f6 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -677,7 +677,7 @@ sub_80E7AC4: @ 80E7AC4 lsls r0, 24 cmp r0, 0 bne _080E7B34 - ldr r0, _080E7B20 @ =gUnknown_203AD30 + ldr r0, _080E7B20 @ =gSpecialVar_ItemId ldrh r0, [r0] cmp r0, 0xD bne _080E7B34 @@ -701,13 +701,13 @@ sub_80E7AC4: @ 80E7AC4 _080E7B14: .4byte gMain _080E7B18: .4byte sub_8011100 _080E7B1C: .4byte gPaletteFade -_080E7B20: .4byte gUnknown_203AD30 +_080E7B20: .4byte gSpecialVar_ItemId _080E7B24: .4byte gBattleTypeFlags _080E7B28: .4byte gUnknown_3004FE0 _080E7B2C: .4byte gActiveBattler _080E7B30: .4byte sub_80E8704 _080E7B34: - ldr r0, _080E7B48 @ =gUnknown_203AD30 + ldr r0, _080E7B48 @ =gSpecialVar_ItemId ldrh r1, [r0] movs r0, 0x1 bl EmitOneReturnValue @@ -716,7 +716,7 @@ _080E7B42: pop {r0} bx r0 .align 2, 0 -_080E7B48: .4byte gUnknown_203AD30 +_080E7B48: .4byte gSpecialVar_ItemId thumb_func_end sub_80E7AC4 thumb_func_start sub_80E7B4C @@ -2341,7 +2341,7 @@ _080E8880: cmp r4, 0 bne _080E88AA bl sub_80EB524 - ldr r0, _080E88B8 @ =gUnknown_203AD30 + ldr r0, _080E88B8 @ =gSpecialVar_ItemId ldrh r1, [r0] movs r0, 0x1 bl EmitOneReturnValue @@ -2357,7 +2357,7 @@ _080E88AA: bx r0 .align 2, 0 _080E88B4: .4byte gPaletteFade -_080E88B8: .4byte gUnknown_203AD30 +_080E88B8: .4byte gSpecialVar_ItemId _080E88BC: .4byte gBattleStruct thumb_func_end sub_80E8704 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index c009baf03..477f73144 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -4435,7 +4435,7 @@ CompleteWhenChoseItem: @ 803073C ands r0, r1 cmp r0, 0 bne _08030762 - ldr r0, _08030774 @ =gUnknown_203AD30 + ldr r0, _08030774 @ =gSpecialVar_ItemId ldrh r1, [r0] movs r0, 0x1 bl EmitOneReturnValue @@ -4447,7 +4447,7 @@ _08030762: _08030768: .4byte gMain _0803076C: .4byte sub_8011100 _08030770: .4byte gPaletteFade -_08030774: .4byte gUnknown_203AD30 +_08030774: .4byte gSpecialVar_ItemId thumb_func_end CompleteWhenChoseItem thumb_func_start CompleteOnSpecialAnimDone diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 36b4f62d9..58fad294a 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -22,7 +22,7 @@ sub_81560A4: @ 81560A4 ldr r2, _081560D4 @ =gBattleStruct ldr r0, [r2] adds r0, 0x96 - ldr r1, _081560D8 @ =gUnknown_20370C0 + ldr r1, _081560D8 @ =gSpecialVar_0x8004 ldrh r1, [r1] strb r1, [r0] ldr r0, [r2] @@ -35,7 +35,7 @@ _081560C8: .4byte gUnknown_3004FE0 _081560CC: .4byte gActiveBattler _081560D0: .4byte sub_81560DC _081560D4: .4byte gBattleStruct -_081560D8: .4byte gUnknown_20370C0 +_081560D8: .4byte gSpecialVar_0x8004 thumb_func_end sub_81560A4 thumb_func_start sub_81560DC @@ -642,7 +642,7 @@ sub_8156594: @ 8156594 str r1, [r0] bl nullsub_44 bl FreeAllWindowBuffers - ldr r0, _081565D8 @ =gUnknown_20370C0 + ldr r0, _081565D8 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x1 beq _081565C4 @@ -656,7 +656,7 @@ _081565C8: .4byte gPaletteFade _081565CC: .4byte gUnknown_3004FE0 _081565D0: .4byte gActiveBattler _081565D4: .4byte sub_81565E8 -_081565D8: .4byte gUnknown_20370C0 +_081565D8: .4byte gSpecialVar_0x8004 _081565DC: movs r0, 0x8 _081565DE: @@ -680,7 +680,7 @@ sub_81565E8: @ 81565E8 ands r0, r1 cmp r0, 0 bne _0815660E - ldr r0, _08156620 @ =gUnknown_203AD30 + ldr r0, _08156620 @ =gSpecialVar_ItemId ldrh r1, [r0] movs r0, 0x1 bl EmitOneReturnValue @@ -692,7 +692,7 @@ _0815660E: _08156614: .4byte gMain _08156618: .4byte sub_8011100 _0815661C: .4byte gPaletteFade -_08156620: .4byte gUnknown_203AD30 +_08156620: .4byte gSpecialVar_ItemId thumb_func_end sub_81565E8 thumb_func_start sub_8156624 diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s index 10e702da5..405d4c45b 100644 --- a/asm/battle_controller_safari.s +++ b/asm/battle_controller_safari.s @@ -431,7 +431,7 @@ CompleteWhenChosePokeblock: @ 80DD85C ands r0, r1 cmp r0, 0 bne _080DD882 - ldr r0, _080DD894 @ =gUnknown_203AD30 + ldr r0, _080DD894 @ =gSpecialVar_ItemId ldrh r1, [r0] movs r0, 0x1 bl EmitOneReturnValue @@ -443,7 +443,7 @@ _080DD882: _080DD888: .4byte gMain _080DD88C: .4byte sub_8011100 _080DD890: .4byte gPaletteFade -_080DD894: .4byte gUnknown_203AD30 +_080DD894: .4byte gSpecialVar_ItemId thumb_func_end CompleteWhenChosePokeblock thumb_func_start CompleteOnFinishedBattleAnimation_3 diff --git a/asm/battle_controllers.s b/asm/battle_controllers.s index 71c39120f..8ef9408a0 100644 --- a/asm/battle_controllers.s +++ b/asm/battle_controllers.s @@ -1420,7 +1420,7 @@ sub_800DD28: @ 800DD28 bne _0800DE28 bl sub_80FBB4C movs r4, 0 - ldr r0, _0800DD6C @ =gUnknown_2022118 + ldr r0, _0800DD6C @ =gBlockRecvBuffer mov r10, r0 b _0800DE1C .align 2, 0 @@ -1428,7 +1428,7 @@ _0800DD5C: .4byte gUnknown_3003F64 _0800DD60: .4byte gBattleTypeFlags _0800DD64: .4byte gLinkPlayers _0800DD68: .4byte 0x00002211 -_0800DD6C: .4byte gUnknown_2022118 +_0800DD6C: .4byte gBlockRecvBuffer _0800DD70: bl GetBlockReceivedStatus lsls r0, 24 @@ -1447,7 +1447,7 @@ _0800DD70: lsls r0, r4, 8 mov r4, r10 adds r3, r0, r4 - ldr r1, _0800DE3C @ =gUnknown_202211C + ldr r1, _0800DE3C @ =gBlockRecvBuffer + 4 adds r0, r1 ldrh r6, [r0] ldr r7, _0800DE40 @ =gTasks @@ -1534,7 +1534,7 @@ _0800DE28: bx r0 .align 2, 0 _0800DE38: .4byte gBitTable -_0800DE3C: .4byte gUnknown_202211C +_0800DE3C: .4byte gBlockRecvBuffer + 4 _0800DE40: .4byte gTasks _0800DE44: .4byte gUnknown_202286D _0800DE48: .4byte gUnknown_2023FF0 diff --git a/asm/battle_interface.s b/asm/battle_interface.s index 3a27c29ea..8e109b6d6 100644 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -3770,7 +3770,7 @@ sub_804981C: @ 804981C lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _0804991C diff --git a/asm/battle_records.s b/asm/battle_records.s index bd847561c..392161676 100644 --- a/asm/battle_records.s +++ b/asm/battle_records.s @@ -129,7 +129,7 @@ _080CD338: bl sub_80CD628 ldr r0, _080CD350 @ =sub_80CD38C bl SetVBlankCallback - ldr r0, _080CD354 @ =gUnknown_20370C0 + ldr r0, _080CD354 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0 beq _080CD358 @@ -137,7 +137,7 @@ _080CD338: b _080CD35C .align 2, 0 _080CD350: .4byte sub_80CD38C -_080CD354: .4byte gUnknown_20370C0 +_080CD354: .4byte gSpecialVar_0x8004 _080CD358: bl sub_80CDBE4 _080CD35C: diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 1e99186bc..ed0e6cb50 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -31945,7 +31945,7 @@ _0802D5D8: lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 movs r4, 0xA cmp r0, 0 @@ -32356,7 +32356,7 @@ sub_802D95C: @ 802D95C lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _0802D9B4 diff --git a/asm/battle_setup.s b/asm/battle_setup.s index faa32be0e..499d565f0 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -721,13 +721,13 @@ _0807FC30: ldrb r0, [r4] cmp r0, 0x1 bne _0807FC40 - ldr r0, _0807FC3C @ =gUnknown_20370D0 + ldr r0, _0807FC3C @ =gSpecialVar_Result strh r1, [r0] b _0807FC46 .align 2, 0 -_0807FC3C: .4byte gUnknown_20370D0 +_0807FC3C: .4byte gSpecialVar_Result _0807FC40: - ldr r1, _0807FC54 @ =gUnknown_20370D0 + ldr r1, _0807FC54 @ =gSpecialVar_Result movs r0, 0x1 strh r0, [r1] _0807FC46: @@ -739,7 +739,7 @@ _0807FC4C: pop {r0} bx r0 .align 2, 0 -_0807FC54: .4byte gUnknown_20370D0 +_0807FC54: .4byte gSpecialVar_Result _0807FC58: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music thumb_func_end sub_807FBF0 @@ -1503,7 +1503,7 @@ battle_80801F0: @ 80801F0 ldrh r1, [r0] cmp r1, 0 beq _08080212 - ldr r0, _0808021C @ =gUnknown_20370D2 + ldr r0, _0808021C @ =gSpecialVar_LastTalked strh r1, [r0] lsls r0, r1, 24 lsrs r0, 24 @@ -1519,7 +1519,7 @@ _08080212: bx r0 .align 2, 0 _08080218: .4byte gUnknown_20386B0 -_0808021C: .4byte gUnknown_20370D2 +_0808021C: .4byte gSpecialVar_LastTalked _08080220: .4byte gSaveBlock1Ptr _08080224: .4byte gUnknown_3005074 thumb_func_end battle_80801F0 @@ -1649,7 +1649,7 @@ TrainerWantsBattle: @ 8080334 lsrs r0, 24 ldr r2, _08080368 @ =gUnknown_3005074 strb r0, [r2] - ldr r4, _0808036C @ =gUnknown_20370D2 + ldr r4, _0808036C @ =gSpecialVar_LastTalked ldr r3, _08080370 @ =gMapObjects lsls r2, r0, 3 adds r2, r0 @@ -1668,7 +1668,7 @@ TrainerWantsBattle: @ 8080334 bx r0 .align 2, 0 _08080368: .4byte gUnknown_3005074 -_0808036C: .4byte gUnknown_20370D2 +_0808036C: .4byte gSpecialVar_LastTalked _08080370: .4byte gMapObjects _08080374: .4byte gUnknown_81A4EB4 thumb_func_end TrainerWantsBattle @@ -1859,7 +1859,7 @@ sub_80804AC: @ 80804AC adds r1, r0, 0 cmp r1, 0x1 bne _080804E8 - ldr r0, _080804E0 @ =gUnknown_20370D0 + ldr r0, _080804E0 @ =gSpecialVar_Result strh r1, [r0] ldr r0, _080804E4 @ =gUnknown_20386CC ldrh r0, [r0] @@ -1871,10 +1871,10 @@ sub_80804AC: @ 80804AC .align 2, 0 _080804D8: .4byte gUnknown_20386AC _080804DC: .4byte gUnknown_2023E8A -_080804E0: .4byte gUnknown_20370D0 +_080804E0: .4byte gSpecialVar_Result _080804E4: .4byte gUnknown_20386CC _080804E8: - ldr r0, _08080500 @ =gUnknown_20370D0 + ldr r0, _08080500 @ =gSpecialVar_Result movs r1, 0 strh r1, [r0] _080804EE: @@ -1884,7 +1884,7 @@ _080804EE: bl sub_81139BC b _0808054E .align 2, 0 -_08080500: .4byte gUnknown_20370D0 +_08080500: .4byte gSpecialVar_Result _08080504: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music _08080508: ldr r0, _0808051C @ =gTrainerBattleOpponent_A diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 10b07d2e0..82922b88f 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -143,8 +143,8 @@ sub_80E5A70: @ 80E5A70 add r4, sp, 0x28 movs r0, 0 strb r0, [r4] - bl sub_80E7490 - ldr r0, _080E5AA4 @ =gUnknown_20370D0 + bl ValidateEReaderTrainer + ldr r0, _080E5AA4 @ =gSpecialVar_Result ldrh r0, [r0] adds r7, r4, 0 cmp r0, 0 @@ -160,7 +160,7 @@ _080E5A9E: movs r0, 0 b _080E5B02 .align 2, 0 -_080E5AA4: .4byte gUnknown_20370D0 +_080E5AA4: .4byte gSpecialVar_Result _080E5AA8: .4byte gSaveBlock2Ptr _080E5AAC: .4byte 0x000004a2 _080E5AB0: @@ -1506,7 +1506,7 @@ sub_80E64C0: @ 80E64C0 lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _080E6554 @@ -1747,7 +1747,7 @@ _080E6662: adds r2, r0, 0 lsls r2, 16 lsrs r2, 16 - ldr r5, _080E6728 @ =gUnknown_20370D0 + ldr r5, _080E6728 @ =gSpecialVar_Result ldrb r3, [r5] str r4, [sp] add r0, sp, 0x10 @@ -1769,7 +1769,7 @@ _080E6662: ldr r1, _080E672C @ =gStringVar1 movs r0, 0xFF strb r0, [r1] - ldr r1, _080E6730 @ =gUnknown_20370C0 + ldr r1, _080E6730 @ =gSpecialVar_0x8004 movs r0, 0x1 strh r0, [r1] movs r0, 0 @@ -1810,9 +1810,9 @@ _080E6704: b _080E6742 .align 2, 0 _080E6724: .4byte gPlayerParty -_080E6728: .4byte gUnknown_20370D0 +_080E6728: .4byte gSpecialVar_Result _080E672C: .4byte gStringVar1 -_080E6730: .4byte gUnknown_20370C0 +_080E6730: .4byte gSpecialVar_0x8004 _080E6734: .4byte gUnknown_84020C4 _080E6738: .4byte 0x0000ffff _080E673C: .4byte gUnknown_83FE860 @@ -1825,7 +1825,7 @@ _080E6742: .align 2, 0 _080E674C: .4byte gUnknown_83FE864 _080E6750: - ldr r1, _080E6780 @ =gUnknown_20370C0 + ldr r1, _080E6780 @ =gSpecialVar_0x8004 movs r0, 0 strh r0, [r1] ldr r0, _080E6784 @ =gSaveBlock2Ptr @@ -1851,7 +1851,7 @@ _080E6770: pop {r0} bx r0 .align 2, 0 -_080E6780: .4byte gUnknown_20370C0 +_080E6780: .4byte gSpecialVar_0x8004 _080E6784: .4byte gSaveBlock2Ptr _080E6788: .4byte 0x0000055c thumb_func_end sub_80E6648 @@ -2053,7 +2053,7 @@ sub_80E6900: @ 80E6900 push {r4-r6,lr} sub sp, 0x4 ldr r0, _080E691C @ =gUnknown_203AAB8 - ldr r1, _080E6920 @ =gUnknown_20370C0 + ldr r1, _080E6920 @ =gSpecialVar_0x8004 ldrh r1, [r1] strh r1, [r0] ldrh r2, [r0] @@ -2066,7 +2066,7 @@ sub_80E6900: @ 80E6900 b _080E69E6 .align 2, 0 _080E691C: .4byte gUnknown_203AAB8 -_080E6920: .4byte gUnknown_20370C0 +_080E6920: .4byte gSpecialVar_0x8004 _080E6924: cmp r2, 0x2 beq _080E6998 @@ -2180,7 +2180,7 @@ sub_80E6A0C: @ 80E6A0C ldrb r0, [r0] lsls r0, 31 lsrs r5, r0, 31 - ldr r0, _080E6A3C @ =gUnknown_20370C0 + ldr r0, _080E6A3C @ =gSpecialVar_0x8004 ldrh r0, [r0] adds r6, r1, 0 cmp r0, 0xE @@ -2195,7 +2195,7 @@ _080E6A28: .align 2, 0 _080E6A34: .4byte gSaveBlock2Ptr _080E6A38: .4byte 0x0000055c -_080E6A3C: .4byte gUnknown_20370C0 +_080E6A3C: .4byte gSpecialVar_0x8004 _080E6A40: .4byte _080E6A44 .align 2, 0 _080E6A44: @@ -2339,7 +2339,7 @@ _080E6B66: adds r0, 0x1 strh r0, [r1] bl sub_80E6E48 - ldr r1, _080E6B9C @ =gUnknown_20370D0 + ldr r1, _080E6B9C @ =gSpecialVar_Result ldr r0, [r6] adds r0, r4 adds r0, r5 @@ -2354,7 +2354,7 @@ _080E6B66: .align 2, 0 _080E6B94: .4byte 0x0000056c _080E6B98: .4byte 0x0000270e -_080E6B9C: .4byte gUnknown_20370D0 +_080E6B9C: .4byte gSpecialVar_Result _080E6BA0: .4byte gStringVar1 _080E6BA4: ldr r0, [r6] @@ -2370,7 +2370,7 @@ _080E6BA4: strh r0, [r2] _080E6BBA: bl sub_80E6E48 - ldr r0, _080E6BD4 @ =gUnknown_20370D0 + ldr r0, _080E6BD4 @ =gSpecialVar_Result ldr r1, [r6] adds r1, r4 adds r1, r5 @@ -2381,7 +2381,7 @@ _080E6BC6: .align 2, 0 _080E6BCC: .4byte 0x00000564 _080E6BD0: .4byte 0x00000595 -_080E6BD4: .4byte gUnknown_20370D0 +_080E6BD4: .4byte gSpecialVar_Result _080E6BD8: ldr r3, [r6] ldr r0, _080E6BF8 @ =gSpecialVar_0x8005 @@ -2481,7 +2481,7 @@ sub_80E6C8C: @ 80E6C8C ldrb r0, [r0] lsls r0, 31 lsrs r4, r0, 31 - ldr r0, _080E6CBC @ =gUnknown_20370C0 + ldr r0, _080E6CBC @ =gSpecialVar_0x8004 ldrh r0, [r0] adds r3, r1, 0 cmp r0, 0xE @@ -2496,7 +2496,7 @@ _080E6CA8: .align 2, 0 _080E6CB4: .4byte gSaveBlock2Ptr _080E6CB8: .4byte 0x0000055c -_080E6CBC: .4byte gUnknown_20370C0 +_080E6CBC: .4byte gSpecialVar_0x8004 _080E6CC0: .4byte _080E6CC4 .align 2, 0 _080E6CC4: @@ -2516,17 +2516,17 @@ _080E6CC4: .4byte _080E6DD4 .4byte _080E6DF4 _080E6D00: - ldr r0, _080E6D0C @ =gUnknown_20370D0 + ldr r0, _080E6D0C @ =gSpecialVar_Result ldr r1, [r3] ldr r3, _080E6D10 @ =0x0000055e adds r1, r3 adds r1, r4 b _080E6D60 .align 2, 0 -_080E6D0C: .4byte gUnknown_20370D0 +_080E6D0C: .4byte gSpecialVar_Result _080E6D10: .4byte 0x0000055e _080E6D14: - ldr r0, _080E6D24 @ =gUnknown_20370D0 + ldr r0, _080E6D24 @ =gSpecialVar_Result ldr r1, [r3] ldr r2, _080E6D28 @ =0x0000055c adds r1, r2 @@ -2534,19 +2534,19 @@ _080E6D14: lsls r1, 31 b _080E6D7C .align 2, 0 -_080E6D24: .4byte gUnknown_20370D0 +_080E6D24: .4byte gSpecialVar_Result _080E6D28: .4byte 0x0000055c _080E6D2C: - ldr r2, _080E6D38 @ =gUnknown_20370D0 + ldr r2, _080E6D38 @ =gSpecialVar_Result ldr r0, [r3] lsls r1, r4, 1 movs r3, 0xAC lsls r3, 3 b _080E6D44 .align 2, 0 -_080E6D38: .4byte gUnknown_20370D0 +_080E6D38: .4byte gSpecialVar_Result _080E6D3C: - ldr r2, _080E6D50 @ =gUnknown_20370D0 + ldr r2, _080E6D50 @ =gSpecialVar_Result ldr r0, [r3] lsls r1, r4, 1 ldr r3, _080E6D54 @ =0x00000564 @@ -2557,10 +2557,10 @@ _080E6D44: strh r0, [r2] b _080E6E08 .align 2, 0 -_080E6D50: .4byte gUnknown_20370D0 +_080E6D50: .4byte gSpecialVar_Result _080E6D54: .4byte 0x00000564 _080E6D58: - ldr r0, _080E6D68 @ =gUnknown_20370D0 + ldr r0, _080E6D68 @ =gSpecialVar_Result ldr r1, [r3] ldr r2, _080E6D6C @ =0x0000056c adds r1, r2 @@ -2569,10 +2569,10 @@ _080E6D60: strh r1, [r0] b _080E6E08 .align 2, 0 -_080E6D68: .4byte gUnknown_20370D0 +_080E6D68: .4byte gSpecialVar_Result _080E6D6C: .4byte 0x0000056c _080E6D70: - ldr r0, _080E6D84 @ =gUnknown_20370D0 + ldr r0, _080E6D84 @ =gSpecialVar_Result ldr r1, [r3] ldr r3, _080E6D88 @ =0x0000055c adds r1, r3 @@ -2583,16 +2583,16 @@ _080E6D7C: strh r1, [r0] b _080E6E08 .align 2, 0 -_080E6D84: .4byte gUnknown_20370D0 +_080E6D84: .4byte gSpecialVar_Result _080E6D88: .4byte 0x0000055c _080E6D8C: adds r0, r4, 0 bl sub_80E7188 - ldr r1, _080E6D98 @ =gUnknown_20370D0 + ldr r1, _080E6D98 @ =gSpecialVar_Result strh r0, [r1] b _080E6E08 .align 2, 0 -_080E6D98: .4byte gUnknown_20370D0 +_080E6D98: .4byte gSpecialVar_Result _080E6D9C: ldr r0, [r3] ldr r1, _080E6DAC @ =0x0000057a @@ -2868,7 +2868,7 @@ sub_80E6FB8: @ 80E6FB8 ldrb r0, [r0] lsls r0, 31 lsrs r5, r0, 31 - ldr r0, _080E7044 @ =gUnknown_20370C0 + ldr r0, _080E7044 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x3 beq _080E6FD4 @@ -2899,7 +2899,7 @@ _080E6FF2: ldr r2, _080E7050 @ =0x0000055d adds r0, r2 strb r1, [r0] - ldr r0, _080E7044 @ =gUnknown_20370C0 + ldr r0, _080E7044 @ =gSpecialVar_0x8004 ldrh r1, [r0] cmp r1, 0x3 beq _080E7016 @@ -2928,7 +2928,7 @@ _080E7016: .align 2, 0 _080E703C: .4byte gSaveBlock2Ptr _080E7040: .4byte 0x0000055c -_080E7044: .4byte gUnknown_20370C0 +_080E7044: .4byte gSpecialVar_0x8004 _080E7048: .4byte 0x00000564 _080E704C: .4byte gUnknown_2023E8A _080E7050: .4byte 0x0000055d @@ -3230,16 +3230,16 @@ sub_80E724C: @ 80E724C ldrh r0, [r0] ldr r1, _080E7290 @ =gStringVar1 bl sub_8099E90 - ldr r0, _080E7294 @ =gUnknown_20370D0 + ldr r0, _080E7294 @ =gSpecialVar_Result strh r4, [r0] b _080E72AA .align 2, 0 _080E7288: .4byte gSaveBlock2Ptr _080E728C: .4byte 0x0000055c _080E7290: .4byte gStringVar1 -_080E7294: .4byte gUnknown_20370D0 +_080E7294: .4byte gSpecialVar_Result _080E7298: - ldr r1, _080E72B0 @ =gUnknown_20370D0 + ldr r1, _080E72B0 @ =gSpecialVar_Result movs r0, 0 strh r0, [r1] ldr r0, [r5] @@ -3253,7 +3253,7 @@ _080E72AA: pop {r0} bx r0 .align 2, 0 -_080E72B0: .4byte gUnknown_20370D0 +_080E72B0: .4byte gSpecialVar_Result _080E72B4: .4byte 0x0000055e thumb_func_end sub_80E724C @@ -3273,7 +3273,7 @@ sub_80E72B8: @ 80E72B8 beq _080E72D2 movs r7, 0x45 _080E72D2: - ldr r4, _080E733C @ =gUnknown_20370D0 + ldr r4, _080E733C @ =gSpecialVar_Result movs r0, 0 strh r0, [r4] adds r0, r1, 0 @@ -3312,7 +3312,7 @@ _080E731A: cmp r5, 0x2 ble _080E72EA _080E7320: - ldr r0, _080E733C @ =gUnknown_20370D0 + ldr r0, _080E733C @ =gSpecialVar_Result ldrh r0, [r0] cmp r0, 0 beq _080E732E @@ -3325,7 +3325,7 @@ _080E732E: .align 2, 0 _080E7334: .4byte gSaveBlock2Ptr _080E7338: .4byte 0x0000055c -_080E733C: .4byte gUnknown_20370D0 +_080E733C: .4byte gSpecialVar_Result _080E7340: .4byte 0x0000056d _080E7344: .4byte gPlayerParty thumb_func_end sub_80E72B8 @@ -3497,10 +3497,10 @@ _080E7488: .4byte gSaveBlock2Ptr _080E748C: .4byte 0x000004a4 thumb_func_end sub_80E7460 - thumb_func_start sub_80E7490 -sub_80E7490: @ 80E7490 + thumb_func_start ValidateEReaderTrainer +ValidateEReaderTrainer: @ 80E7490 push {r4-r6,lr} - ldr r2, _080E74C0 @ =gUnknown_20370D0 + ldr r2, _080E74C0 @ =gSpecialVar_Result movs r0, 0 strh r0, [r2] ldr r1, _080E74C4 @ =gSaveBlock2Ptr @@ -3524,7 +3524,7 @@ _080E74AA: strh r0, [r2] b _080E74F6 .align 2, 0 -_080E74C0: .4byte gUnknown_20370D0 +_080E74C0: .4byte gSpecialVar_Result _080E74C4: .4byte gSaveBlock2Ptr _080E74C8: movs r4, 0 @@ -3547,7 +3547,7 @@ _080E74CE: lsls r3, 3 adds r0, r1, r3 bl sub_80E7524 - ldr r1, _080E74FC @ =gUnknown_20370D0 + ldr r1, _080E74FC @ =gSpecialVar_Result movs r0, 0x1 strh r0, [r1] _080E74F6: @@ -3555,8 +3555,8 @@ _080E74F6: pop {r0} bx r0 .align 2, 0 -_080E74FC: .4byte gUnknown_20370D0 - thumb_func_end sub_80E7490 +_080E74FC: .4byte gSpecialVar_Result + thumb_func_end ValidateEReaderTrainer thumb_func_start sub_80E7500 sub_80E7500: @ 80E7500 diff --git a/asm/berry.s b/asm/berry.s index 8b9593a2a..5537e3590 100644 --- a/asm/berry.s +++ b/asm/berry.s @@ -89,8 +89,8 @@ _0809C7BC: .4byte 0x000030ec _0809C7C0: .4byte 0x0100001a thumb_func_end sub_809C794 - thumb_func_start sub_809C7C4 -sub_809C7C4: @ 809C7C4 + thumb_func_start SetEnigmaBerry +SetEnigmaBerry: @ 809C7C4 push {r4-r7,lr} adds r4, r0, 0 bl sub_809C794 @@ -144,7 +144,7 @@ _0809C828: .4byte 0x000030ec _0809C82C: .4byte 0x00003108 _0809C830: .4byte 0x00000516 _0809C834: .4byte 0x00000529 - thumb_func_end sub_809C7C4 + thumb_func_end SetEnigmaBerry thumb_func_start GetEnigmaBerryChecksum GetEnigmaBerryChecksum: @ 809C838 diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 304efdd74..b58832931 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -52,7 +52,7 @@ _0813CD98: strb r0, [r1, 0x6] movs r2, 0 ldr r6, _0813CDF0 @ =gTextFlags - ldr r0, _0813CDF4 @ =gUnknown_203AD30 + ldr r0, _0813CDF4 @ =gSpecialVar_ItemId mov r12, r0 ldr r1, _0813CDF8 @ =sub_813CE30 mov r8, r1 @@ -89,7 +89,7 @@ _0813CDE2: .align 2, 0 _0813CDEC: .4byte gUnknown_203F370 _0813CDF0: .4byte gTextFlags -_0813CDF4: .4byte gUnknown_203AD30 +_0813CDF4: .4byte gSpecialVar_ItemId _0813CDF8: .4byte sub_813CE30 _0813CDFC: .4byte 0x0000080c thumb_func_end sub_813CD50 @@ -1708,7 +1708,7 @@ _0813DA9E: bne _0813DAEC movs r0, 0x5 bl PlaySE - ldr r0, _0813DAE8 @ =gUnknown_203AD30 + ldr r0, _0813DAE8 @ =gSpecialVar_ItemId mov r1, r8 strh r1, [r0] b _0813DB48 @@ -1717,7 +1717,7 @@ _0813DAD8: .4byte gTasks+0x8 _0813DADC: .4byte gPaletteFade _0813DAE0: .4byte gUnknown_203F37A _0813DAE4: .4byte gMain -_0813DAE8: .4byte gUnknown_203AD30 +_0813DAE8: .4byte gSpecialVar_ItemId _0813DAEC: movs r0, 0x2 negs r0, r0 @@ -1749,11 +1749,11 @@ _0813DB10: lsrs r1, 16 movs r0, 0x5 bl sub_809A798 - ldr r1, _0813DB34 @ =gUnknown_203AD30 + ldr r1, _0813DB34 @ =gSpecialVar_ItemId b _0813DB46 .align 2, 0 _0813DB30: .4byte gUnknown_203F370 -_0813DB34: .4byte gUnknown_203AD30 +_0813DB34: .4byte gSpecialVar_ItemId _0813DB38: ldr r0, _0813DB50 @ =gUnknown_203F36C ldr r0, [r0] @@ -1761,7 +1761,7 @@ _0813DB38: cmp r5, r0 bne _0813DB58 _0813DB42: - ldr r1, _0813DB54 @ =gUnknown_203AD30 + ldr r1, _0813DB54 @ =gSpecialVar_ItemId movs r0, 0 _0813DB46: strh r0, [r1] @@ -1771,7 +1771,7 @@ _0813DB48: b _0813DB9E .align 2, 0 _0813DB50: .4byte gUnknown_203F36C -_0813DB54: .4byte gUnknown_203AD30 +_0813DB54: .4byte gSpecialVar_ItemId _0813DB58: bl sub_813D684 movs r0, 0x1 @@ -1789,7 +1789,7 @@ _0813DB58: movs r0, 0x5 adds r1, r4, 0 bl sub_809A798 - ldr r1, _0813DBA8 @ =gUnknown_203AD30 + ldr r1, _0813DBA8 @ =gSpecialVar_ItemId strh r0, [r1] ldr r0, _0813DBAC @ =gTasks lsls r1, r6, 2 @@ -1810,7 +1810,7 @@ _0813DB9E: pop {r0} bx r0 .align 2, 0 -_0813DBA8: .4byte gUnknown_203AD30 +_0813DBA8: .4byte gSpecialVar_ItemId _0813DBAC: .4byte gTasks _0813DBB0: .4byte gUnknown_8464358 thumb_func_end sub_813DA68 @@ -1878,7 +1878,7 @@ _0813DC24: cmp r0, 0x1 bne _0813DC7C _0813DC38: - ldr r0, _0813DC54 @ =gUnknown_203AD30 + ldr r0, _0813DC54 @ =gSpecialVar_ItemId ldrh r0, [r0] bl sub_80BF6A8 lsls r0, 24 @@ -1891,7 +1891,7 @@ _0813DC38: movs r0, 0x1 b _0813DC86 .align 2, 0 -_0813DC54: .4byte gUnknown_203AD30 +_0813DC54: .4byte gSpecialVar_ItemId _0813DC58: .4byte gUnknown_203F384 _0813DC5C: .4byte gUnknown_84643AC _0813DC60: .4byte gUnknown_203F388 @@ -2118,7 +2118,7 @@ sub_813DE0C: @ 813DE0C ldrb r0, [r0, 0x4] cmp r0, 0x4 bne _0813DE78 - ldr r4, _0813DE64 @ =gUnknown_203AD30 + ldr r4, _0813DE64 @ =gSpecialVar_ItemId ldrh r0, [r4] bl ItemId_GetBattleFunc cmp r0, 0 @@ -2129,7 +2129,7 @@ sub_813DE0C: @ 813DE0C .align 2, 0 _0813DE5C: .4byte gUnknown_203F388 _0813DE60: .4byte gUnknown_203F370 -_0813DE64: .4byte gUnknown_203AD30 +_0813DE64: .4byte gSpecialVar_ItemId _0813DE68: ldrh r0, [r4] bl ItemId_GetBattleFunc @@ -2142,7 +2142,7 @@ _0813DE78: lsls r0, 24 cmp r0, 0 bne _0813DEA0 - ldr r0, _0813DE9C @ =gUnknown_203AD30 + ldr r0, _0813DE9C @ =gSpecialVar_ItemId ldrh r0, [r0] bl ItemId_GetType lsls r0, 24 @@ -2153,9 +2153,9 @@ _0813DE78: bl sub_813E274 b _0813DEB0 .align 2, 0 -_0813DE9C: .4byte gUnknown_203AD30 +_0813DE9C: .4byte gSpecialVar_ItemId _0813DEA0: - ldr r0, _0813DEB8 @ =gUnknown_203AD30 + ldr r0, _0813DEB8 @ =gSpecialVar_ItemId ldrh r0, [r0] bl ItemId_GetFieldFunc adds r1, r0, 0 @@ -2166,7 +2166,7 @@ _0813DEB0: pop {r0} bx r0 .align 2, 0 -_0813DEB8: .4byte gUnknown_203AD30 +_0813DEB8: .4byte gSpecialVar_ItemId thumb_func_end sub_813DE0C thumb_func_start sub_813DEBC @@ -2494,7 +2494,7 @@ sub_813E164: @ 813E164 _0813E18A: movs r0, 0x5 bl PlaySE - ldr r0, _0813E1F4 @ =gUnknown_203AD30 + ldr r0, _0813E1F4 @ =gSpecialVar_ItemId ldrh r0, [r0] ldrh r1, [r5, 0x10] bl sub_809A1D8 @@ -2532,7 +2532,7 @@ _0813E1E4: .align 2, 0 _0813E1EC: .4byte gTasks+0x8 _0813E1F0: .4byte gMain -_0813E1F4: .4byte gUnknown_203AD30 +_0813E1F4: .4byte gSpecialVar_ItemId _0813E1F8: .4byte gUnknown_203F37A _0813E1FC: .4byte gUnknown_3005E70 thumb_func_end sub_813E164 @@ -2807,7 +2807,7 @@ sub_813E428: @ 813E428 lsls r0, 3 ldr r1, _0813E470 @ =gTasks+0x8 adds r4, r0, r1 - ldr r6, _0813E474 @ =gUnknown_203AD30 + ldr r6, _0813E474 @ =gSpecialVar_ItemId ldrh r0, [r6] bl itemid_get_market_price lsls r0, 16 @@ -2831,7 +2831,7 @@ sub_813E428: @ 813E428 b _0813E4CE .align 2, 0 _0813E470: .4byte gTasks+0x8 -_0813E474: .4byte gUnknown_203AD30 +_0813E474: .4byte gSpecialVar_ItemId _0813E478: .4byte gStringVar1 _0813E47C: .4byte gStringVar4 _0813E480: .4byte gUnknown_84168F1 @@ -3185,7 +3185,7 @@ sub_813E768: @ 813E768 bl PutWindowTilemap movs r0, 0 bl schedule_bg_copy_tilemap_to_vram - ldr r0, _0813E7D8 @ =gUnknown_203AD30 + ldr r0, _0813E7D8 @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _0813E7DC @ =gStringVar1 bl sub_8099E90 @@ -3219,7 +3219,7 @@ sub_813E768: @ 813E768 bx r0 .align 2, 0 _0813E7D4: .4byte gTasks+0x8 -_0813E7D8: .4byte gUnknown_203AD30 +_0813E7D8: .4byte gSpecialVar_ItemId _0813E7DC: .4byte gStringVar1 _0813E7E0: .4byte gStringVar3 _0813E7E4: .4byte gStringVar4 @@ -3246,7 +3246,7 @@ sub_813E7F0: @ 813E7F0 mov r8, r1 movs r0, 0xF8 bl PlaySE - ldr r5, _0813E8C0 @ =gUnknown_203AD30 + ldr r5, _0813E8C0 @ =gSpecialVar_ItemId ldrh r0, [r5] mov r2, r8 ldrh r1, [r2, 0x10] @@ -3319,7 +3319,7 @@ sub_813E7F0: @ 813E7F0 bx r0 .align 2, 0 _0813E8BC: .4byte gTasks+0x8 -_0813E8C0: .4byte gUnknown_203AD30 +_0813E8C0: .4byte gSpecialVar_ItemId _0813E8C4: .4byte gSaveBlock1Ptr _0813E8C8: .4byte gUnknown_203F37A _0813E8CC: .4byte gUnknown_3005E70 diff --git a/asm/cable_club.s b/asm/cable_club.s index 1d49bfcaa..03b1e3497 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -243,7 +243,7 @@ sub_80808F0: @ 80808F0 lsrs r1, r0, 24 cmp r1, 0 bne _08080934 - ldr r0, _08080928 @ =gUnknown_202271A + ldr r0, _08080928 @ =gLinkType strh r1, [r0] ldr r1, _0808092C @ =gTasks lsls r0, r4, 2 @@ -256,7 +256,7 @@ sub_80808F0: @ 80808F0 b _08080936 .align 2, 0 _08080924: .4byte gMain -_08080928: .4byte gUnknown_202271A +_08080928: .4byte gLinkType _0808092C: .4byte gTasks _08080930: .4byte sub_8080FB4 _08080934: @@ -290,7 +290,7 @@ _08080952: .align 2, 0 _08080964: .4byte gMain _08080968: - ldr r1, _08080984 @ =gUnknown_202271A + ldr r1, _08080984 @ =gLinkType movs r0, 0 strh r0, [r1] ldr r1, _08080988 @ =gTasks @@ -306,7 +306,7 @@ _0808097E: pop {r1} bx r1 .align 2, 0 -_08080984: .4byte gUnknown_202271A +_08080984: .4byte gLinkType _08080988: .4byte gTasks _0808098C: .4byte sub_8080FB4 thumb_func_end sub_808093C @@ -696,7 +696,7 @@ sub_8080C6C: @ 8080C6C _08080CB0: .4byte gTasks _08080CB4: .4byte sub_8080FF0 _08080CB8: - ldr r4, _08080CD4 @ =gUnknown_20370D0 + ldr r4, _08080CD4 @ =gSpecialVar_Result adds r0, r7, 0 adds r1, r6, 0 bl sub_8080844 @@ -712,7 +712,7 @@ _08080CCE: pop {r0} bx r0 .align 2, 0 -_08080CD4: .4byte gUnknown_20370D0 +_08080CD4: .4byte gSpecialVar_Result _08080CD8: .4byte sub_8080DC0 thumb_func_end sub_8080C6C @@ -736,7 +736,7 @@ sub_8080CDC: @ 8080CDC bl sub_80808BC cmp r0, 0x1 beq _08080D74 - ldr r4, _08080D34 @ =gUnknown_20370D0 + ldr r4, _08080D34 @ =gSpecialVar_Result adds r0, r7, 0 adds r1, r6, 0 bl sub_8080844 @@ -757,7 +757,7 @@ sub_8080CDC: @ 8080CDC b _08080D72 .align 2, 0 _08080D30: .4byte gTasks -_08080D34: .4byte gUnknown_20370D0 +_08080D34: .4byte gSpecialVar_Result _08080D38: .4byte sub_8080F78 _08080D3C: cmp r2, 0x7 @@ -780,7 +780,7 @@ _08080D54: strb r0, [r1] ldrb r0, [r4] bl sub_800A900 - ldr r0, _08080D84 @ =gUnknown_2022618 + ldr r0, _08080D84 @ =gBlockSendBuffer bl sub_80898E8 ldr r0, _08080D88 @ =sub_8080E6C _08080D72: @@ -792,7 +792,7 @@ _08080D74: .align 2, 0 _08080D7C: .4byte gUnknown_3005030 _08080D80: .4byte gUnknown_300502C -_08080D84: .4byte gUnknown_2022618 +_08080D84: .4byte gBlockSendBuffer _08080D88: .4byte sub_8080E6C thumb_func_end sub_8080CDC @@ -838,7 +838,7 @@ sub_8080DC0: @ 8080DC0 bl sub_80808BC cmp r0, 0x1 beq _08080E50 - ldr r0, _08080DE8 @ =gUnknown_20370D0 + ldr r0, _08080DE8 @ =gSpecialVar_Result ldrh r0, [r0] cmp r0, 0x4 bne _08080DEC @@ -848,7 +848,7 @@ sub_8080DC0: @ 8080DC0 bl sub_800AAC0 b _08080E02 .align 2, 0 -_08080DE8: .4byte gUnknown_20370D0 +_08080DE8: .4byte gSpecialVar_Result _08080DEC: cmp r0, 0x3 bne _08080DF6 @@ -883,7 +883,7 @@ _08080E20: strb r0, [r1] ldrb r0, [r4] bl sub_800A900 - ldr r0, _08080E60 @ =gUnknown_2022618 + ldr r0, _08080E60 @ =gBlockSendBuffer bl sub_80898E8 ldr r1, _08080E64 @ =gTasks lsls r0, r5, 2 @@ -901,7 +901,7 @@ _08080E50: .align 2, 0 _08080E58: .4byte gUnknown_3005030 _08080E5C: .4byte gUnknown_300502C -_08080E60: .4byte gUnknown_2022618 +_08080E60: .4byte gBlockSendBuffer _08080E64: .4byte gTasks _08080E68: .4byte sub_8080E6C thumb_func_end sub_8080DC0 @@ -941,7 +941,7 @@ _08080E9A: cmp r0, 0x1 bls _08080EDC lsls r1, r5, 8 - ldr r0, _08080ED4 @ =gUnknown_2022118 + ldr r0, _08080ED4 @ =gBlockRecvBuffer adds r1, r0 ldr r0, _08080ED8 @ =gUnknown_2039624 lsls r4, r5, 1 @@ -957,11 +957,11 @@ _08080E9A: b _08080EF2 .align 2, 0 _08080ED0: .4byte gLinkPlayers -_08080ED4: .4byte gUnknown_2022118 +_08080ED4: .4byte gBlockRecvBuffer _08080ED8: .4byte gUnknown_2039624 _08080EDC: lsls r1, r5, 8 - ldr r0, _08080F3C @ =gUnknown_2022118 + ldr r0, _08080F3C @ =gBlockRecvBuffer adds r1, r0 ldr r2, _08080F40 @ =gUnknown_2039624 lsls r0, r5, 1 @@ -984,11 +984,11 @@ _08080EF8: bl SetSuppressLinkErrorMessage bl ResetBlockReceivedFlags bl HideFieldMessageBox - ldr r0, _08080F44 @ =gUnknown_20370D0 + ldr r0, _08080F44 @ =gSpecialVar_Result ldrh r0, [r0] cmp r0, 0x1 bne _08080F54 - ldr r0, _08080F48 @ =gUnknown_202271A + ldr r0, _08080F48 @ =gLinkType ldrh r1, [r0] ldr r0, _08080F4C @ =0x00004411 ldr r0, _08080F50 @ =gTasks @@ -1003,10 +1003,10 @@ _08080EF8: bl DestroyTask b _08080F66 .align 2, 0 -_08080F3C: .4byte gUnknown_2022118 +_08080F3C: .4byte gBlockRecvBuffer _08080F40: .4byte gUnknown_2039624 -_08080F44: .4byte gUnknown_20370D0 -_08080F48: .4byte gUnknown_202271A +_08080F44: .4byte gSpecialVar_Result +_08080F48: .4byte gLinkType _08080F4C: .4byte 0x00004411 _08080F50: .4byte gTasks _08080F54: @@ -1065,7 +1065,7 @@ sub_8080FB4: @ 8080FB4 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r1, _08080FE8 @ =gUnknown_20370D0 + ldr r1, _08080FE8 @ =gSpecialVar_Result movs r0, 0x5 strh r0, [r1] ldr r1, _08080FEC @ =gTasks @@ -1083,7 +1083,7 @@ sub_8080FB4: @ 8080FB4 pop {r0} bx r0 .align 2, 0 -_08080FE8: .4byte gUnknown_20370D0 +_08080FE8: .4byte gSpecialVar_Result _08080FEC: .4byte gTasks thumb_func_end sub_8080FB4 @@ -1093,7 +1093,7 @@ sub_8080FF0: @ 8080FF0 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r1, _08081024 @ =gUnknown_20370D0 + ldr r1, _08081024 @ =gSpecialVar_Result movs r0, 0x6 strh r0, [r1] ldr r1, _08081028 @ =gTasks @@ -1111,7 +1111,7 @@ sub_8080FF0: @ 8080FF0 pop {r0} bx r0 .align 2, 0 -_08081024: .4byte gUnknown_20370D0 +_08081024: .4byte gSpecialVar_Result _08081028: .4byte gTasks thumb_func_end sub_8080FF0 @@ -1153,7 +1153,7 @@ sub_8081064: @ 8081064 push {r4,lr} movs r3, 0x2 movs r2, 0x2 - ldr r0, _0808107C @ =gUnknown_20370C0 + ldr r0, _0808107C @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x2 beq _08081098 @@ -1163,31 +1163,31 @@ sub_8081064: @ 8081064 beq _08081086 b _080810B4 .align 2, 0 -_0808107C: .4byte gUnknown_20370C0 +_0808107C: .4byte gSpecialVar_0x8004 _08081080: cmp r0, 0x5 beq _080810A8 b _080810B4 _08081086: movs r3, 0x2 - ldr r1, _08081090 @ =gUnknown_202271A + ldr r1, _08081090 @ =gLinkType ldr r4, _08081094 @ =0x00002233 b _080810B0 .align 2, 0 -_08081090: .4byte gUnknown_202271A +_08081090: .4byte gLinkType _08081094: .4byte 0x00002233 _08081098: movs r3, 0x2 - ldr r1, _080810A0 @ =gUnknown_202271A + ldr r1, _080810A0 @ =gLinkType ldr r4, _080810A4 @ =0x00002244 b _080810B0 .align 2, 0 -_080810A0: .4byte gUnknown_202271A +_080810A0: .4byte gLinkType _080810A4: .4byte 0x00002244 _080810A8: movs r3, 0x4 movs r2, 0x4 - ldr r1, _080810C4 @ =gUnknown_202271A + ldr r1, _080810C4 @ =gLinkType ldr r4, _080810C8 @ =0x00002255 _080810B0: adds r0, r4, 0 @@ -1200,14 +1200,14 @@ _080810B4: pop {r0} bx r0 .align 2, 0 -_080810C4: .4byte gUnknown_202271A +_080810C4: .4byte gLinkType _080810C8: .4byte 0x00002255 thumb_func_end sub_8081064 thumb_func_start sub_80810CC sub_80810CC: @ 80810CC push {lr} - ldr r1, _080810E8 @ =gUnknown_202271A + ldr r1, _080810E8 @ =gLinkType ldr r2, _080810EC @ =0x00001133 adds r0, r2, 0 strh r0, [r1] @@ -1220,7 +1220,7 @@ sub_80810CC: @ 80810CC pop {r0} bx r0 .align 2, 0 -_080810E8: .4byte gUnknown_202271A +_080810E8: .4byte gLinkType _080810EC: .4byte 0x00001133 _080810F0: .4byte gBattleTypeFlags thumb_func_end sub_80810CC @@ -1228,10 +1228,10 @@ _080810F0: .4byte gBattleTypeFlags thumb_func_start sub_80810F4 sub_80810F4: @ 80810F4 push {lr} - ldr r1, _08081118 @ =gUnknown_20370D0 + ldr r1, _08081118 @ =gSpecialVar_Result movs r0, 0 strh r0, [r1] - ldr r1, _0808111C @ =gUnknown_202271A + ldr r1, _0808111C @ =gLinkType ldr r2, _08081120 @ =0x00003311 adds r0, r2, 0 strh r0, [r1] @@ -1244,8 +1244,8 @@ sub_80810F4: @ 80810F4 pop {r0} bx r0 .align 2, 0 -_08081118: .4byte gUnknown_20370D0 -_0808111C: .4byte gUnknown_202271A +_08081118: .4byte gSpecialVar_Result +_0808111C: .4byte gLinkType _08081120: .4byte 0x00003311 _08081124: .4byte gBattleTypeFlags thumb_func_end sub_80810F4 @@ -1253,7 +1253,7 @@ _08081124: .4byte gBattleTypeFlags thumb_func_start sub_8081128 sub_8081128: @ 8081128 push {lr} - ldr r1, _08081144 @ =gUnknown_202271A + ldr r1, _08081144 @ =gLinkType ldr r2, _08081148 @ =0x00006601 adds r0, r2, 0 strh r0, [r1] @@ -1266,7 +1266,7 @@ sub_8081128: @ 8081128 pop {r0} bx r0 .align 2, 0 -_08081144: .4byte gUnknown_202271A +_08081144: .4byte gLinkType _08081148: .4byte 0x00006601 _0808114C: .4byte gBattleTypeFlags thumb_func_end sub_8081128 @@ -1284,7 +1284,7 @@ sub_8081150: @ 8081150 .align 2, 0 _08081164: .4byte sub_80811FC _08081168: - ldr r0, _0808117C @ =gUnknown_20370C0 + ldr r0, _0808117C @ =gSpecialVar_0x8004 ldrh r0, [r0] subs r0, 0x1 cmp r0, 0x4 @@ -1295,7 +1295,7 @@ _08081168: ldr r0, [r0] mov pc, r0 .align 2, 0 -_0808117C: .4byte gUnknown_20370C0 +_0808117C: .4byte gSpecialVar_0x8004 _08081180: .4byte _08081184 .align 2, 0 _08081184: @@ -1305,35 +1305,35 @@ _08081184: .4byte _080811D8 .4byte _080811B8 _08081198: - ldr r1, _080811A0 @ =gUnknown_202271A + ldr r1, _080811A0 @ =gLinkType ldr r2, _080811A4 @ =0x00002233 b _080811DC .align 2, 0 -_080811A0: .4byte gUnknown_202271A +_080811A0: .4byte gLinkType _080811A4: .4byte 0x00002233 _080811A8: - ldr r1, _080811B0 @ =gUnknown_202271A + ldr r1, _080811B0 @ =gLinkType ldr r2, _080811B4 @ =0x00002244 b _080811DC .align 2, 0 -_080811B0: .4byte gUnknown_202271A +_080811B0: .4byte gLinkType _080811B4: .4byte 0x00002244 _080811B8: - ldr r1, _080811C0 @ =gUnknown_202271A + ldr r1, _080811C0 @ =gLinkType ldr r2, _080811C4 @ =0x00002255 b _080811DC .align 2, 0 -_080811C0: .4byte gUnknown_202271A +_080811C0: .4byte gLinkType _080811C4: .4byte 0x00002255 _080811C8: - ldr r1, _080811D0 @ =gUnknown_202271A + ldr r1, _080811D0 @ =gLinkType ldr r2, _080811D4 @ =0x00001111 b _080811DC .align 2, 0 -_080811D0: .4byte gUnknown_202271A +_080811D0: .4byte gLinkType _080811D4: .4byte 0x00001111 _080811D8: - ldr r1, _080811F0 @ =gUnknown_202271A + ldr r1, _080811F0 @ =gLinkType ldr r2, _080811F4 @ =0x00003322 _080811DC: adds r0, r2, 0 @@ -1348,7 +1348,7 @@ _080811EC: pop {r1} bx r1 .align 2, 0 -_080811F0: .4byte gUnknown_202271A +_080811F0: .4byte gLinkType _080811F4: .4byte 0x00003322 _080811F8: .4byte sub_80811FC thumb_func_end sub_8081150 @@ -1537,14 +1537,14 @@ _0808135C: movs r0, 0x1 movs r1, 0 bl fade_screen - ldr r1, _08081374 @ =gUnknown_202271A + ldr r1, _08081374 @ =gLinkType ldr r2, _08081378 @ =0x00002211 adds r0, r2, 0 strh r0, [r1] bl sub_800A068 b _080813AA .align 2, 0 -_08081374: .4byte gUnknown_202271A +_08081374: .4byte gLinkType _08081378: .4byte 0x00002211 _0808137C: ldr r0, _08081388 @ =gPaletteFade @@ -1597,7 +1597,7 @@ _080813D4: lsls r0, 1 bl PlayMapChosenOrBattleBGM _080813DC: - ldr r0, _080813F0 @ =gUnknown_20370C0 + ldr r0, _080813F0 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x2 beq _08081404 @@ -1607,7 +1607,7 @@ _080813DC: beq _080813FA b _0808141A .align 2, 0 -_080813F0: .4byte gUnknown_20370C0 +_080813F0: .4byte gSpecialVar_0x8004 _080813F4: cmp r0, 0x5 beq _08081410 @@ -1694,7 +1694,7 @@ _080814A0: movs r0, 0x1 movs r1, 0 bl fade_screen - ldr r0, _080814BC @ =gUnknown_202271A + ldr r0, _080814BC @ =gLinkType ldr r2, _080814C0 @ =0x00002211 adds r1, r2, 0 strh r1, [r0] @@ -1703,7 +1703,7 @@ _080814A0: strh r0, [r6] b _0808160A .align 2, 0 -_080814BC: .4byte gUnknown_202271A +_080814BC: .4byte gLinkType _080814C0: .4byte 0x00002211 _080814C4: ldr r0, _080814D8 @ =gPaletteFade @@ -1720,7 +1720,7 @@ _080814D2: .align 2, 0 _080814D8: .4byte gPaletteFade _080814DC: - ldr r1, _080814EC @ =gUnknown_2022720 + ldr r1, _080814EC @ =gLocalLinkPlayer movs r0, 0 movs r2, 0x1C bl SendBlock @@ -1728,7 +1728,7 @@ _080814DC: strh r0, [r6] b _0808160A .align 2, 0 -_080814EC: .4byte gUnknown_2022720 +_080814EC: .4byte gLocalLinkPlayer _080814F0: bl GetBlockReceivedStatus adds r4, r0, 0 @@ -1746,7 +1746,7 @@ _08081504: _0808150C: .4byte gLinkPlayers _08081510: lsls r1, r4, 8 - ldr r2, _08081548 @ =gUnknown_2022118 + ldr r2, _08081548 @ =gBlockRecvBuffer adds r0, r5, 0 adds r1, r2 ldm r1!, {r2,r3,r7} @@ -1772,7 +1772,7 @@ _08081536: strh r0, [r6] b _0808160A .align 2, 0 -_08081548: .4byte gUnknown_2022118 +_08081548: .4byte gBlockRecvBuffer _0808154C: ldrh r0, [r6, 0x2] adds r0, 0x1 @@ -1818,7 +1818,7 @@ _080815A0: ldr r0, _080815B8 @ =gLinkPlayers ldr r1, _080815BC @ =0x00002211 str r1, [r0, 0x14] - ldr r0, _080815C0 @ =gUnknown_20370C0 + ldr r0, _080815C0 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x2 beq _080815D4 @@ -1830,7 +1830,7 @@ _080815A0: .align 2, 0 _080815B8: .4byte gLinkPlayers _080815BC: .4byte 0x00002211 -_080815C0: .4byte gUnknown_20370C0 +_080815C0: .4byte gSpecialVar_0x8004 _080815C4: cmp r0, 0x5 beq _080815E0 @@ -1927,7 +1927,7 @@ sub_8081668: @ 8081668 bl LoadPlayerParty bl SavePlayerBag bl sub_81134B8 - ldr r0, _080816B8 @ =gUnknown_20370C0 + ldr r0, _080816B8 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x5 beq _0808170A @@ -1950,7 +1950,7 @@ sub_8081668: @ 8081668 .align 2, 0 _080816B0: .4byte gBattleTypeFlags _080816B4: .4byte 0x0000ffdf -_080816B8: .4byte gUnknown_20370C0 +_080816B8: .4byte gSpecialVar_0x8004 _080816BC: .4byte gUnknown_300502C _080816C0: .4byte gUnknown_3003F3C _080816C4: .4byte gUnknown_2023E8A @@ -2015,7 +2015,7 @@ _08081740: .4byte sub_806FB7C thumb_func_start sub_8081744 sub_8081744: @ 8081744 push {lr} - ldr r0, _0808176C @ =gUnknown_20370C0 + ldr r0, _0808176C @ =gSpecialVar_0x8004 ldrh r1, [r0] subs r0, r1, 0x1 lsls r0, 16 @@ -2033,7 +2033,7 @@ _08081760: pop {r0} bx r0 .align 2, 0 -_0808176C: .4byte gUnknown_20370C0 +_0808176C: .4byte gSpecialVar_0x8004 thumb_func_end sub_8081744 thumb_func_start sub_8081770 @@ -2343,7 +2343,7 @@ sub_80819B8: @ 80819B8 thumb_func_start sub_80819C8 sub_80819C8: @ 80819C8 push {lr} - ldr r1, _080819E4 @ =gUnknown_202271A + ldr r1, _080819E4 @ =gLinkType ldr r2, _080819E8 @ =0x00002211 adds r0, r2, 0 strh r0, [r1] @@ -2355,7 +2355,7 @@ sub_80819C8: @ 80819C8 bl sub_8081828 b _080819FA .align 2, 0 -_080819E4: .4byte gUnknown_202271A +_080819E4: .4byte gLinkType _080819E8: .4byte 0x00002211 _080819EC: .4byte gUnknown_3003F3C _080819F0: .4byte sub_8081454 @@ -2385,14 +2385,14 @@ _08081A18: .4byte sub_808177C thumb_func_start sp02A_crash_sound sp02A_crash_sound: @ 8081A1C push {lr} - ldr r0, _08081A2C @ =gUnknown_20370C4 + ldr r0, _08081A2C @ =gSpecialVar_0x8006 ldrb r0, [r0] ldr r1, _08081A30 @ =c2_exit_to_overworld_1_continue_scripts_restart_music bl sub_808B700 pop {r0} bx r0 .align 2, 0 -_08081A2C: .4byte gUnknown_20370C4 +_08081A2C: .4byte gSpecialVar_0x8006 _08081A30: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music thumb_func_end sp02A_crash_sound @@ -2402,7 +2402,7 @@ sub_8081A34: @ 8081A34 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _08081A74 @ =gUnknown_20370C4 + ldr r0, _08081A74 @ =gSpecialVar_0x8006 strh r4, [r0] ldr r0, _08081A78 @ =gStringVar1 lsls r1, r4, 3 @@ -2427,7 +2427,7 @@ sub_8081A34: @ 8081A34 movs r0, 0x1 b _08081A8A .align 2, 0 -_08081A74: .4byte gUnknown_20370C4 +_08081A74: .4byte gSpecialVar_0x8006 _08081A78: .4byte gStringVar1 _08081A7C: .4byte gLinkPlayers + 8 _08081A80: .4byte gStringVar2 diff --git a/asm/daycare.s b/asm/daycare.s index f6bc7b0e1..3b7d7ffe0 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -458,7 +458,7 @@ TakePokemonFromDaycare: @ 8045728 movs r1, 0xBE lsls r1, 6 adds r0, r1 - ldr r1, _08045748 @ =gUnknown_20370C0 + ldr r1, _08045748 @ =gSpecialVar_0x8004 ldrb r1, [r1] bl TakeSelectedPokemonMonFromDaycareShiftSlots lsls r0, 16 @@ -467,7 +467,7 @@ TakePokemonFromDaycare: @ 8045728 bx r1 .align 2, 0 _08045744: .4byte gSaveBlock1Ptr -_08045748: .4byte gUnknown_20370C0 +_08045748: .4byte gSpecialVar_0x8004 thumb_func_end TakePokemonFromDaycare thumb_func_start GetLevelAfterDaycareSteps @@ -598,7 +598,7 @@ GetDaycareCost: @ 8045838 movs r1, 0xBE lsls r1, 6 adds r0, r1 - ldr r1, _08045858 @ =gUnknown_20370C0 + ldr r1, _08045858 @ =gSpecialVar_0x8004 ldrb r1, [r1] bl GetDaycareCostForMon ldr r1, _0804585C @ =gSpecialVar_0x8005 @@ -607,7 +607,7 @@ GetDaycareCost: @ 8045838 bx r0 .align 2, 0 _08045854: .4byte gSaveBlock1Ptr -_08045858: .4byte gUnknown_20370C0 +_08045858: .4byte gSpecialVar_0x8004 _0804585C: .4byte gSpecialVar_0x8005 thumb_func_end GetDaycareCost @@ -644,7 +644,7 @@ _08045894: .4byte 0x00003d20 GetNumLevelsGainedFromDaycare: @ 8045898 push {r4-r6,lr} ldr r6, _080458C0 @ =gSaveBlock1Ptr - ldr r5, _080458C4 @ =gUnknown_20370C0 + ldr r5, _080458C4 @ =gSpecialVar_0x8004 ldrh r0, [r5] movs r4, 0x8C adds r1, r0, 0 @@ -662,7 +662,7 @@ GetNumLevelsGainedFromDaycare: @ 8045898 b _080458E0 .align 2, 0 _080458C0: .4byte gSaveBlock1Ptr -_080458C4: .4byte gUnknown_20370C0 +_080458C4: .4byte gSpecialVar_0x8004 _080458C8: ldrh r0, [r5] adds r1, r0, 0 @@ -2076,13 +2076,13 @@ _08046350: str r0, [sp] cmp r0, 0 bne _08046390 - ldr r0, _0804638C @ =gUnknown_20370C0 + ldr r0, _0804638C @ =gSpecialVar_0x8004 strh r5, [r0] movs r0, 0x1 b _080463AA .align 2, 0 _08046388: .4byte gPlayerParty -_0804638C: .4byte gUnknown_20370C0 +_0804638C: .4byte gSpecialVar_0x8004 _08046390: subs r0, 0x1 str r0, [sp] @@ -2990,13 +2990,13 @@ Task_HandleDaycareLevelMenuInput: @ 80469FC _08046A2C: .4byte gTasks _08046A30: .4byte gMain _08046A34: - ldr r0, _08046A3C @ =gUnknown_20370D0 + ldr r0, _08046A3C @ =gSpecialVar_Result strh r1, [r0] b _08046A46 .align 2, 0 -_08046A3C: .4byte gUnknown_20370D0 +_08046A3C: .4byte gSpecialVar_Result _08046A40: - ldr r1, _08046A74 @ =gUnknown_20370D0 + ldr r1, _08046A74 @ =gSpecialVar_Result movs r0, 0x2 strh r0, [r1] _08046A46: @@ -3019,7 +3019,7 @@ _08046A46: bl EnableBothScriptContexts b _08046AAC .align 2, 0 -_08046A74: .4byte gUnknown_20370D0 +_08046A74: .4byte gSpecialVar_Result _08046A78: .4byte gTasks _08046A7C: movs r1, 0x2 @@ -3027,7 +3027,7 @@ _08046A7C: ands r0, r2 cmp r0, 0 beq _08046AAC - ldr r0, _08046AB4 @ =gUnknown_20370D0 + ldr r0, _08046AB4 @ =gSpecialVar_Result strh r1, [r0] ldrb r0, [r4, 0x8] movs r1, 0 @@ -3046,7 +3046,7 @@ _08046AAC: pop {r0} bx r0 .align 2, 0 -_08046AB4: .4byte gUnknown_20370D0 +_08046AB4: .4byte gSpecialVar_Result thumb_func_end Task_HandleDaycareLevelMenuInput thumb_func_start ShowDaycareLevelMenu diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 1b4879bf3..0ec71e087 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -495,7 +495,7 @@ _080BDA74: thumb_func_start sub_80BDA7C sub_80BDA7C: @ 80BDA7C push {r4,r5,lr} - ldr r0, _080BDA90 @ =gUnknown_20370C0 + ldr r0, _080BDA90 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x1 beq _080BDAB4 @@ -505,7 +505,7 @@ sub_80BDA7C: @ 80BDA7C beq _080BDA9E b _080BDB08 .align 2, 0 -_080BDA90: .4byte gUnknown_20370C0 +_080BDA90: .4byte gSpecialVar_0x8004 _080BDA94: cmp r0, 0x2 beq _080BDADC @@ -622,8 +622,8 @@ _080BDB68: .4byte gSaveBlock1Ptr _080BDB6C: .4byte 0x00002f10 thumb_func_end sub_80BDB48 - thumb_func_start sub_80BDB70 -sub_80BDB70: @ 80BDB70 + thumb_func_start EnableRareWord +EnableRareWord: @ 80BDB70 push {lr} lsls r0, 24 lsrs r1, r0, 24 @@ -648,7 +648,7 @@ _080BDB94: .align 2, 0 _080BDB98: .4byte gSaveBlock1Ptr _080BDB9C: .4byte 0x00002f10 - thumb_func_end sub_80BDB70 + thumb_func_end EnableRareWord thumb_func_start sub_80BDBA0 sub_80BDBA0: @ 80BDBA0 @@ -687,7 +687,7 @@ sub_80BDBCC: @ 80BDBCC b _080BDC32 _080BDBDC: adds r0, r5, 0 - bl sub_80BDB70 + bl EnableRareWord ldr r0, _080BDBF4 @ =0x000001ff ands r4, r0 movs r1, 0xA0 @@ -841,7 +841,7 @@ _080BDCF6: lsls r0, 16 lsrs r0, 16 movs r1, 0 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _080BDD16 @@ -1769,7 +1769,7 @@ _080BE3BC: lsls r0, 16 lsrs r0, 16 movs r1, 0 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 lsrs r0, 24 b _080BE40C @@ -1783,7 +1783,7 @@ _080BE3D6: lsls r0, 16 lsrs r0, 16 movs r1, 0 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 lsrs r0, 24 b _080BE40C diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s index c8a1a7857..eef234a71 100644 --- a/asm/egg_hatch.s +++ b/asm/egg_hatch.s @@ -214,10 +214,10 @@ AddHatchedMonToParty: @ 8046D60 lsrs r4, 16 adds r0, r4, 0 movs r1, 0x2 - bl sub_8088E74 + bl GetSetPokedexFlag adds r0, r4, 0 movs r1, 0x3 - bl sub_8088E74 + bl GetSetPokedexFlag ldr r1, _08046E1C @ =gStringVar1 adds r0, r5, 0 bl GetMonNick @@ -258,13 +258,13 @@ _08046E1C: .4byte gStringVar1 thumb_func_start ScriptHatchMon ScriptHatchMon: @ 8046E20 push {lr} - ldr r0, _08046E30 @ =gUnknown_20370C0 + ldr r0, _08046E30 @ =gSpecialVar_0x8004 ldrb r0, [r0] bl AddHatchedMonToParty pop {r0} bx r0 .align 2, 0 -_08046E30: .4byte gUnknown_20370C0 +_08046E30: .4byte gSpecialVar_0x8004 thumb_func_end ScriptHatchMon thumb_func_start sub_8046E34 @@ -332,7 +332,7 @@ sub_8046EAC: @ 8046EAC movs r1, 0xBE lsls r1, 6 adds r0, r1 - ldr r1, _08046ECC @ =gUnknown_20370C0 + ldr r1, _08046ECC @ =gSpecialVar_0x8004 ldrb r1, [r1] bl sub_8046E34 lsls r0, 24 @@ -341,7 +341,7 @@ sub_8046EAC: @ 8046EAC bx r1 .align 2, 0 _08046EC8: .4byte gSaveBlock1Ptr -_08046ECC: .4byte gUnknown_20370C0 +_08046ECC: .4byte gSpecialVar_0x8004 thumb_func_end sub_8046EAC thumb_func_start sub_8046ED0 @@ -566,7 +566,7 @@ _08047090: str r0, [r4] bl AllocateMonSpritesGfx ldr r2, [r4] - ldr r0, _0804714C @ =gUnknown_20370C0 + ldr r0, _0804714C @ =gSpecialVar_0x8004 ldrh r0, [r0] movs r1, 0 strb r0, [r2, 0x4] @@ -626,7 +626,7 @@ _08047090: b _0804724A .align 2, 0 _08047148: .4byte gUnknown_3000E74 -_0804714C: .4byte gUnknown_20370C0 +_0804714C: .4byte gSpecialVar_0x8004 _08047150: .4byte sub_8046FC0 _08047154: .4byte gSpecialVar_0x8005 _08047158: .4byte gUnknown_826019C @@ -770,7 +770,7 @@ _0804729C: .4byte gUnknown_3000E74 thumb_func_start EggHatchSetMonNickname EggHatchSetMonNickname: @ 80472A0 push {lr} - ldr r0, _080472D0 @ =gUnknown_20370C0 + ldr r0, _080472D0 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 @@ -789,7 +789,7 @@ EggHatchSetMonNickname: @ 80472A0 pop {r0} bx r0 .align 2, 0 -_080472D0: .4byte gUnknown_20370C0 +_080472D0: .4byte gSpecialVar_0x8004 _080472D4: .4byte gPlayerParty _080472D8: .4byte gStringVar3 _080472DC: .4byte gUnknown_3000E74 diff --git a/asm/event_data.s b/asm/event_data.s index d620e3142..690134c27 100644 --- a/asm/event_data.s +++ b/asm/event_data.s @@ -170,8 +170,8 @@ _0806E224: .4byte 0x0000404e _0806E228: .4byte gSaveBlock2Ptr thumb_func_end sub_806E204 - thumb_func_start sub_806E22C -sub_806E22C: @ 806E22C + thumb_func_start EnableNationalPokedex +EnableNationalPokedex: @ 806E22C push {lr} ldr r0, _0806E250 @ =0x0000404e bl GetVarPointer @@ -191,7 +191,7 @@ sub_806E22C: @ 806E22C _0806E250: .4byte 0x0000404e _0806E254: .4byte gSaveBlock2Ptr _0806E258: .4byte 0x00006258 - thumb_func_end sub_806E22C + thumb_func_end EnableNationalPokedex thumb_func_start sub_806E25C sub_806E25C: @ 806E25C @@ -509,7 +509,7 @@ _0806E500: .4byte gUnknown_300507C _0806E504: .4byte gSaveBlock1Ptr _0806E508: .4byte 0xffff9000 _0806E50C: - ldr r0, _0806E520 @ =gUnknown_815FD0C + ldr r0, _0806E520 @ =gSpecialVars ldr r3, _0806E524 @ =0xffff8000 adds r1, r6, r3 lsls r1, 2 @@ -520,7 +520,7 @@ _0806E518: pop {r1} bx r1 .align 2, 0 -_0806E520: .4byte gUnknown_815FD0C +_0806E520: .4byte gSpecialVars _0806E524: .4byte 0xffff8000 thumb_func_end GetVarPointer @@ -796,38 +796,38 @@ _0806E6F6: thumb_func_start sub_806E6FC sub_806E6FC: @ 806E6FC - ldr r1, _0806E754 @ =gUnknown_20370B8 + ldr r1, _0806E754 @ =gSpecialVar_0x8000 movs r0, 0 strh r0, [r1] - ldr r1, _0806E758 @ =gUnknown_20370BA + ldr r1, _0806E758 @ =gSpecialVar_0x8001 strh r0, [r1] - ldr r1, _0806E75C @ =gUnknown_20370BC + ldr r1, _0806E75C @ =gSpecialVar_0x8002 strh r0, [r1] - ldr r1, _0806E760 @ =gUnknown_20370BE + ldr r1, _0806E760 @ =gSpecialVar_0x8003 strh r0, [r1] - ldr r1, _0806E764 @ =gUnknown_20370C0 + ldr r1, _0806E764 @ =gSpecialVar_0x8004 strh r0, [r1] ldr r1, _0806E768 @ =gSpecialVar_0x8005 strh r0, [r1] - ldr r1, _0806E76C @ =gUnknown_20370C4 + ldr r1, _0806E76C @ =gSpecialVar_0x8006 strh r0, [r1] - ldr r1, _0806E770 @ =gUnknown_20370C6 + ldr r1, _0806E770 @ =gSpecialVar_0x8007 strh r0, [r1] - ldr r1, _0806E774 @ =gUnknown_20370C8 + ldr r1, _0806E774 @ =gSpecialVar_0x8008 strh r0, [r1] - ldr r1, _0806E778 @ =gUnknown_20370CA + ldr r1, _0806E778 @ =gSpecialVar_0x8009 strh r0, [r1] - ldr r1, _0806E77C @ =gUnknown_20370CC + ldr r1, _0806E77C @ =gSpecialVar_0x800A strh r0, [r1] - ldr r1, _0806E780 @ =gUnknown_20370CE + ldr r1, _0806E780 @ =gSpecialVar_0x800B strh r0, [r1] - ldr r1, _0806E784 @ =gUnknown_20370D4 + ldr r1, _0806E784 @ =gSpecialVar_Facing strh r0, [r1] - ldr r1, _0806E788 @ =gUnknown_20370D0 + ldr r1, _0806E788 @ =gSpecialVar_Result strh r0, [r1] - ldr r1, _0806E78C @ =gUnknown_203AD30 + ldr r1, _0806E78C @ =gSpecialVar_ItemId strh r0, [r1] - ldr r1, _0806E790 @ =gUnknown_20370D2 + ldr r1, _0806E790 @ =gSpecialVar_LastTalked strh r0, [r1] ldr r1, _0806E794 @ =gSpecialVar_MonBoxId strh r0, [r1] @@ -841,22 +841,22 @@ sub_806E6FC: @ 806E6FC strh r0, [r1] bx lr .align 2, 0 -_0806E754: .4byte gUnknown_20370B8 -_0806E758: .4byte gUnknown_20370BA -_0806E75C: .4byte gUnknown_20370BC -_0806E760: .4byte gUnknown_20370BE -_0806E764: .4byte gUnknown_20370C0 +_0806E754: .4byte gSpecialVar_0x8000 +_0806E758: .4byte gSpecialVar_0x8001 +_0806E75C: .4byte gSpecialVar_0x8002 +_0806E760: .4byte gSpecialVar_0x8003 +_0806E764: .4byte gSpecialVar_0x8004 _0806E768: .4byte gSpecialVar_0x8005 -_0806E76C: .4byte gUnknown_20370C4 -_0806E770: .4byte gUnknown_20370C6 -_0806E774: .4byte gUnknown_20370C8 -_0806E778: .4byte gUnknown_20370CA -_0806E77C: .4byte gUnknown_20370CC -_0806E780: .4byte gUnknown_20370CE -_0806E784: .4byte gUnknown_20370D4 -_0806E788: .4byte gUnknown_20370D0 -_0806E78C: .4byte gUnknown_203AD30 -_0806E790: .4byte gUnknown_20370D2 +_0806E76C: .4byte gSpecialVar_0x8006 +_0806E770: .4byte gSpecialVar_0x8007 +_0806E774: .4byte gSpecialVar_0x8008 +_0806E778: .4byte gSpecialVar_0x8009 +_0806E77C: .4byte gSpecialVar_0x800A +_0806E780: .4byte gSpecialVar_0x800B +_0806E784: .4byte gSpecialVar_Facing +_0806E788: .4byte gSpecialVar_Result +_0806E78C: .4byte gSpecialVar_ItemId +_0806E790: .4byte gSpecialVar_LastTalked _0806E794: .4byte gSpecialVar_MonBoxId _0806E798: .4byte gSpecialVar_MonBoxPos _0806E79C: .4byte gUnknown_20370DA diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 4aa868a77..f6f5a83e2 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -1252,13 +1252,13 @@ _080CE80C: lsls r0, 16 lsrs r0, 16 movs r1, 0x2 - bl sub_8088E74 + bl GetSetPokedexFlag ldrh r0, [r4, 0xC] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 - bl sub_8088E74 + bl GetSetPokedexFlag mov r0, r9 movs r1, 0xB bl GetMonData @@ -1829,13 +1829,13 @@ _080CED3A: lsls r0, 16 lsrs r0, 16 movs r1, 0x2 - bl sub_8088E74 + bl GetSetPokedexFlag ldrh r0, [r4, 0xC] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 - bl sub_8088E74 + bl GetSetPokedexFlag movs r0, 0xE bl IncrementGameStat b _080CF528 @@ -3136,13 +3136,13 @@ _080CF8A8: lsls r0, 16 lsrs r0, 16 movs r1, 0x2 - bl sub_8088E74 + bl GetSetPokedexFlag ldrh r0, [r4, 0xC] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 - bl sub_8088E74 + bl GetSetPokedexFlag movs r0, 0xE bl IncrementGameStat b _080D003A diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 4ae8ad562..9748301f7 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -938,13 +938,13 @@ _0806CFBC: ble _0806CFB0 ldr r0, _0806CFE8 @ =gUnknown_3005074 strb r3, [r0] - ldr r1, _0806CFEC @ =gUnknown_20370D2 + ldr r1, _0806CFEC @ =gSpecialVar_LastTalked adds r0, r2, r3 lsls r0, 2 adds r0, r5 ldrb r0, [r0, 0x8] strh r0, [r1] - ldr r0, _0806CFF0 @ =gUnknown_20370D4 + ldr r0, _0806CFF0 @ =gSpecialVar_Facing strh r6, [r0] adds r0, r3, 0 bl GetFieldObjectScriptPointerByFieldObjectId @@ -955,8 +955,8 @@ _0806CFDE: .align 2, 0 _0806CFE4: .4byte gUnknown_2031DEC _0806CFE8: .4byte gUnknown_3005074 -_0806CFEC: .4byte gUnknown_20370D2 -_0806CFF0: .4byte gUnknown_20370D4 +_0806CFEC: .4byte gSpecialVar_LastTalked +_0806CFF0: .4byte gSpecialVar_Facing thumb_func_end sub_806CF38 thumb_func_start sub_806CFF4 @@ -1046,14 +1046,14 @@ _0806D09C: .4byte gUnknown_826D2D8 _0806D0A0: ldr r0, _0806D0D4 @ =gUnknown_3005074 strb r5, [r0] - ldr r4, _0806D0D8 @ =gUnknown_20370D2 + ldr r4, _0806D0D8 @ =gSpecialVar_LastTalked ldr r1, _0806D0DC @ =gMapObjects adds r0, r6, r5 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x8] strh r0, [r4] - ldr r0, _0806D0E0 @ =gUnknown_20370D4 + ldr r0, _0806D0E0 @ =gSpecialVar_Facing mov r1, r8 strh r1, [r0] adds r0, r5, 0 @@ -1070,9 +1070,9 @@ _0806D0C8: bx r1 .align 2, 0 _0806D0D4: .4byte gUnknown_3005074 -_0806D0D8: .4byte gUnknown_20370D2 +_0806D0D8: .4byte gSpecialVar_LastTalked _0806D0DC: .4byte gMapObjects -_0806D0E0: .4byte gUnknown_20370D4 +_0806D0E0: .4byte gSpecialVar_Facing thumb_func_end sub_806CFF4 thumb_func_start sub_806D0E4 @@ -1165,12 +1165,12 @@ _0806D17A: ldr r0, [r5, 0x8] movs r1, 0x1 bl sub_80CC44C - ldr r4, _0806D1C8 @ =gUnknown_20370C0 + ldr r4, _0806D1C8 @ =gSpecialVar_0x8004 strh r0, [r4] ldr r0, [r5, 0x8] movs r1, 0x2 bl sub_80CC44C - ldr r1, _0806D1CC @ =gUnknown_20370C4 + ldr r1, _0806D1CC @ =gSpecialVar_0x8006 strh r0, [r1] ldrh r0, [r4] bl FlagGet @@ -1178,22 +1178,22 @@ _0806D17A: lsrs r0, 24 cmp r0, 0x1 beq _0806D164 - ldr r0, _0806D1D0 @ =gUnknown_20370D4 + ldr r0, _0806D1D0 @ =gSpecialVar_Facing strh r6, [r0] ldr r0, _0806D1D4 @ =gUnknown_81A6843 b _0806D1E6 .align 2, 0 _0806D1C4: .4byte gSpecialVar_0x8005 -_0806D1C8: .4byte gUnknown_20370C0 -_0806D1CC: .4byte gUnknown_20370C4 -_0806D1D0: .4byte gUnknown_20370D4 +_0806D1C8: .4byte gSpecialVar_0x8004 +_0806D1CC: .4byte gSpecialVar_0x8006 +_0806D1D0: .4byte gSpecialVar_Facing _0806D1D4: .4byte gUnknown_81A6843 _0806D1D8: cmp r2, 0xFF beq _0806D1E0 bl sub_8069A20 _0806D1E0: - ldr r0, _0806D1EC @ =gUnknown_20370D4 + ldr r0, _0806D1EC @ =gSpecialVar_Facing strh r6, [r0] ldr r0, [r5, 0x8] _0806D1E6: @@ -1201,7 +1201,7 @@ _0806D1E6: pop {r1} bx r1 .align 2, 0 -_0806D1EC: .4byte gUnknown_20370D4 +_0806D1EC: .4byte gSpecialVar_Facing thumb_func_end sub_806D0E4 thumb_func_start sub_806D1F0 @@ -1211,7 +1211,7 @@ sub_806D1F0: @ 806D1F0 lsrs r4, r1, 24 lsls r2, 24 lsrs r5, r2, 24 - ldr r0, _0806D210 @ =gUnknown_20370D4 + ldr r0, _0806D210 @ =gSpecialVar_Facing strh r5, [r0] adds r0, r4, 0 bl MetatileBehavior_IsPC @@ -1222,7 +1222,7 @@ sub_806D1F0: @ 806D1F0 ldr r0, _0806D214 @ =gUnknown_81A6955 b _0806D53E .align 2, 0 -_0806D210: .4byte gUnknown_20370D4 +_0806D210: .4byte gSpecialVar_Facing _0806D214: .4byte gUnknown_81A6955 _0806D218: adds r0, r4, 0 @@ -2114,7 +2114,7 @@ sub_806D908: @ 806D908 push {lr} lsls r1, 24 lsrs r1, 24 - ldr r2, _0806D924 @ =gUnknown_20370D4 + ldr r2, _0806D924 @ =gSpecialVar_Facing strh r1, [r2] bl ScriptContext1_SetupScript bl sub_80699E0 @@ -2122,7 +2122,7 @@ sub_806D908: @ 806D908 pop {r0} bx r0 .align 2, 0 -_0806D924: .4byte gUnknown_20370D4 +_0806D924: .4byte gSpecialVar_Facing thumb_func_end sub_806D908 thumb_func_start sub_806D928 diff --git a/asm/field_poison.s b/asm/field_poison.s index 930f5b403..f76e7db4f 100644 --- a/asm/field_poison.s +++ b/asm/field_poison.s @@ -196,12 +196,12 @@ _080A05B8: adds r1, r0, 0 cmp r1, 0 beq _080A05E8 - ldr r1, _080A05CC @ =gUnknown_20370D0 + ldr r1, _080A05CC @ =gSpecialVar_Result movs r0, 0x1 strh r0, [r1] b _080A05EC .align 2, 0 -_080A05CC: .4byte gUnknown_20370D0 +_080A05CC: .4byte gSpecialVar_Result _080A05D0: ldrb r0, [r4, 0x2] bl MonFaintFromPoisonOnField @@ -214,7 +214,7 @@ _080A05D0: .align 2, 0 _080A05E4: .4byte gUnknown_81A5476 _080A05E8: - ldr r0, _080A05FC @ =gUnknown_20370D0 + ldr r0, _080A05FC @ =gSpecialVar_Result strh r1, [r0] _080A05EC: bl EnableBothScriptContexts @@ -225,7 +225,7 @@ _080A05F6: pop {r0} bx r0 .align 2, 0 -_080A05FC: .4byte gUnknown_20370D0 +_080A05FC: .4byte gSpecialVar_Result thumb_func_end Task_WhiteOut thumb_func_start ExecuteWhiteOut diff --git a/asm/field_specials.s b/asm/field_specials.s index c6df3442d..a4f3e6dc7 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -86,7 +86,7 @@ _080CA698: .4byte gStringVar4 thumb_func_start sub_80CA69C sub_80CA69C: @ 80CA69C - ldr r1, _080CA6B0 @ =gUnknown_20370C0 + ldr r1, _080CA6B0 @ =gSpecialVar_0x8004 ldr r0, _080CA6B4 @ =gSaveBlock1Ptr ldr r2, [r0] ldrh r0, [r2] @@ -96,7 +96,7 @@ sub_80CA69C: @ 80CA69C strh r0, [r1] bx lr .align 2, 0 -_080CA6B0: .4byte gUnknown_20370C0 +_080CA6B0: .4byte gSpecialVar_0x8004 _080CA6B4: .4byte gSaveBlock1Ptr _080CA6B8: .4byte gSpecialVar_0x8005 thumb_func_end sub_80CA69C @@ -188,13 +188,13 @@ _080CA754: .4byte gUnknown_2023E8A thumb_func_start sub_80CA758 sub_80CA758: @ 80CA758 push {lr} - ldr r0, _080CA768 @ =gUnknown_20370C0 + ldr r0, _080CA768 @ =gSpecialVar_0x8004 ldrh r0, [r0] bl FlagSet pop {r0} bx r0 .align 2, 0 -_080CA768: .4byte gUnknown_20370C0 +_080CA768: .4byte gSpecialVar_0x8004 thumb_func_end sub_80CA758 thumb_func_start sub_80CA76C @@ -441,14 +441,14 @@ _080CA92C: _080CA92E: cmp r6, 0 beq _080CA954 - ldr r0, _080CA940 @ =gUnknown_20370C0 + ldr r0, _080CA940 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0 bne _080CA944 movs r4, 0x62 b _080CA96E .align 2, 0 -_080CA940: .4byte gUnknown_20370C0 +_080CA940: .4byte gSpecialVar_0x8004 _080CA944: cmp r0, 0x1 beq _080CA94C @@ -460,14 +460,14 @@ _080CA94C: .align 2, 0 _080CA950: .4byte 0x0000028f _080CA954: - ldr r0, _080CA960 @ =gUnknown_20370C0 + ldr r0, _080CA960 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0 bne _080CA964 movs r4, 0x63 b _080CA96E .align 2, 0 -_080CA960: .4byte gUnknown_20370C0 +_080CA960: .4byte gSpecialVar_0x8004 _080CA964: cmp r0, 0x1 beq _080CA96C @@ -536,14 +536,14 @@ _080CA9D6: _080CA9D8: movs r5, 0xFF _080CA9DA: - ldr r0, _080CA9E8 @ =gUnknown_20370C0 + ldr r0, _080CA9E8 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0 bne _080CA9EC movs r4, 0x62 b _080CA9F6 .align 2, 0 -_080CA9E8: .4byte gUnknown_20370C0 +_080CA9E8: .4byte gSpecialVar_0x8004 _080CA9EC: cmp r0, 0x1 beq _080CA9F4 @@ -867,13 +867,13 @@ sub_80CAC28: @ 80CAC28 movs r2, 0 strh r0, [r1, 0x8] strh r2, [r1, 0xA] - ldr r0, _080CAC78 @ =gUnknown_20370C4 + ldr r0, _080CAC78 @ =gSpecialVar_0x8006 ldrh r0, [r0] strh r0, [r1, 0xC] - ldr r0, _080CAC7C @ =gUnknown_20370C6 + ldr r0, _080CAC7C @ =gSpecialVar_0x8007 ldrh r0, [r0] strh r0, [r1, 0xE] - ldr r0, _080CAC80 @ =gUnknown_20370C0 + ldr r0, _080CAC80 @ =gSpecialVar_0x8004 ldrh r0, [r0] strh r0, [r1, 0x10] movs r0, 0 @@ -886,9 +886,9 @@ sub_80CAC28: @ 80CAC28 _080CAC6C: .4byte sub_80CAC84 _080CAC70: .4byte gTasks _080CAC74: .4byte gSpecialVar_0x8005 -_080CAC78: .4byte gUnknown_20370C4 -_080CAC7C: .4byte gUnknown_20370C6 -_080CAC80: .4byte gUnknown_20370C0 +_080CAC78: .4byte gSpecialVar_0x8006 +_080CAC7C: .4byte gSpecialVar_0x8007 +_080CAC80: .4byte gSpecialVar_0x8004 thumb_func_end sub_80CAC28 thumb_func_start sub_80CAC84 @@ -1002,7 +1002,7 @@ _080CAD4C: thumb_func_start sub_80CAD54 sub_80CAD54: @ 80CAD54 push {lr} - ldr r0, _080CAD74 @ =gUnknown_20370C0 + ldr r0, _080CAD74 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 @@ -1016,14 +1016,14 @@ sub_80CAD54: @ 80CAD54 pop {r1} bx r1 .align 2, 0 -_080CAD74: .4byte gUnknown_20370C0 +_080CAD74: .4byte gSpecialVar_0x8004 _080CAD78: .4byte gPlayerParty thumb_func_end sub_80CAD54 thumb_func_start sub_80CAD7C sub_80CAD7C: @ 80CAD7C push {r4,lr} - ldr r0, _080CADA8 @ =gUnknown_20370C0 + ldr r0, _080CADA8 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 @@ -1042,7 +1042,7 @@ sub_80CAD7C: @ 80CAD7C movs r0, 0x1 b _080CADBA .align 2, 0 -_080CADA8: .4byte gUnknown_20370C0 +_080CADA8: .4byte gSpecialVar_0x8004 _080CADAC: .4byte gPlayerParty _080CADB0: .4byte gStringVar1 _080CADB4: .4byte gSaveBlock2Ptr @@ -1092,7 +1092,7 @@ sub_80CADEC: @ 80CADEC adds r0, 0x1 lsls r0, 16 lsrs r2, r0, 16 - ldr r1, _080CAE20 @ =gUnknown_20370C0 + ldr r1, _080CAE20 @ =gSpecialVar_0x8004 strh r2, [r1] ldr r0, _080CAE24 @ =gSpecialVar_0x8005 strh r2, [r0] @@ -1108,7 +1108,7 @@ _080CAE14: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080CAE20: .4byte gUnknown_20370C0 +_080CAE20: .4byte gSpecialVar_0x8004 _080CAE24: .4byte gSpecialVar_0x8005 _080CAE28: .4byte _080CAE2C .align 2, 0 @@ -1353,7 +1353,7 @@ _080CB01C: ldrh r0, [r5] cmp r0, 0xF bls _080CB04C - ldr r0, _080CB044 @ =gUnknown_20370C0 + ldr r0, _080CB044 @ =gSpecialVar_0x8004 ldrh r4, [r0] adds r0, r4, 0 movs r1, 0x5 @@ -1368,7 +1368,7 @@ _080CB01C: b _080CB04A .align 2, 0 _080CB040: .4byte gSpecialVar_0x8005 -_080CB044: .4byte gUnknown_20370C0 +_080CB044: .4byte gSpecialVar_0x8004 _080CB048: adds r0, r4, 0x1 _080CB04A: @@ -1491,7 +1491,7 @@ _080CB128: lsls r0, 16 lsrs r0, 16 movs r1, 0 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 asrs r0, 24 cmp r0, 0x1 @@ -1521,7 +1521,7 @@ _080CB176: lsls r0, 16 lsrs r0, 16 movs r1, 0 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 asrs r0, 24 cmp r0, 0x1 @@ -1569,9 +1569,9 @@ _080CB1D2: thumb_func_start sub_80CB1D8 sub_80CB1D8: @ 80CB1D8 push {lr} - ldr r0, _080CB1F0 @ =gUnknown_20370D0 + ldr r0, _080CB1F0 @ =gSpecialVar_Result ldrh r1, [r0] - ldr r0, _080CB1F4 @ =gUnknown_20370C4 + ldr r0, _080CB1F4 @ =gSpecialVar_0x8006 ldrh r0, [r0] adds r1, r0 ldr r0, _080CB1F8 @ =0x0000270f @@ -1580,8 +1580,8 @@ sub_80CB1D8: @ 80CB1D8 movs r0, 0x1 b _080CB1FE .align 2, 0 -_080CB1F0: .4byte gUnknown_20370D0 -_080CB1F4: .4byte gUnknown_20370C4 +_080CB1F0: .4byte gSpecialVar_Result +_080CB1F4: .4byte gSpecialVar_0x8006 _080CB1F8: .4byte 0x0000270f _080CB1FC: movs r0, 0 @@ -1956,7 +1956,7 @@ sub_80CB498: @ 80CB498 movs r6, 0x1 strh r6, [r4, 0x8] ldr r0, _080CB4D8 @ =gSpecialVar_0x8005 - ldr r1, _080CB4DC @ =gUnknown_20370C4 + ldr r1, _080CB4DC @ =gSpecialVar_0x8006 ldrh r2, [r0] ldrh r0, [r1] cmp r2, r0 @@ -1970,7 +1970,7 @@ sub_80CB498: @ 80CB498 _080CB4D0: .4byte sub_80CB514 _080CB4D4: .4byte gTasks+0x8 _080CB4D8: .4byte gSpecialVar_0x8005 -_080CB4DC: .4byte gUnknown_20370C4 +_080CB4DC: .4byte gSpecialVar_0x8006 _080CB4E0: subs r0, r2 lsls r0, 16 @@ -2357,7 +2357,7 @@ _080CB7D6: lsls r0, 3 ldr r1, _080CB810 @ =gTasks adds r3, r0, r1 - ldr r0, _080CB814 @ =gUnknown_20370C0 + ldr r0, _080CB814 @ =gSpecialVar_0x8004 ldrh r4, [r0] cmp r4, 0x3 beq _080CB886 @@ -2374,7 +2374,7 @@ _080CB7D6: _080CB808: .4byte sub_809D6D4 _080CB80C: .4byte sub_80CB904 _080CB810: .4byte gTasks -_080CB814: .4byte gUnknown_20370C0 +_080CB814: .4byte gSpecialVar_0x8004 _080CB818: cmp r4, 0x5 beq _080CB8B4 @@ -2490,7 +2490,7 @@ _080CB8E6: strh r5, [r3, 0x26] b _080CB8F8 _080CB8EC: - ldr r1, _080CB900 @ =gUnknown_20370D0 + ldr r1, _080CB900 @ =gSpecialVar_Result movs r0, 0x7F strh r0, [r1] adds r0, r5, 0 @@ -2500,7 +2500,7 @@ _080CB8F8: pop {r0} bx r0 .align 2, 0 -_080CB900: .4byte gUnknown_20370D0 +_080CB900: .4byte gSpecialVar_Result thumb_func_end sub_80CB7C4 thumb_func_start sub_80CB904 @@ -2519,7 +2519,7 @@ sub_80CB904: @ 80CB904 ldr r1, _080CB934 @ =gTasks adds r5, r0, r1 bl ScriptContext2_Enable - ldr r0, _080CB938 @ =gUnknown_20370C0 + ldr r0, _080CB938 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x1 bne _080CB944 @@ -2530,7 +2530,7 @@ sub_80CB904: @ 80CB904 b _080CB94A .align 2, 0 _080CB934: .4byte gTasks -_080CB938: .4byte gUnknown_20370C0 +_080CB938: .4byte gSpecialVar_0x8004 _080CB93C: .4byte gUnknown_2039A18 _080CB940: .4byte gUnknown_2039A0E _080CB944: @@ -2563,7 +2563,7 @@ _080CB974: lsls r3, r4, 3 adds r3, r0 lsls r2, r4, 2 - ldr r0, _080CBA6C @ =gUnknown_20370C0 + ldr r0, _080CBA6C @ =gSpecialVar_0x8004 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 @@ -2676,7 +2676,7 @@ _080CB9D2: _080CBA60: .4byte gUnknown_2039A18 _080CBA64: .4byte gUnknown_2039A14 _080CBA68: .4byte gUnknown_83F5BCC -_080CBA6C: .4byte gUnknown_20370C0 +_080CBA6C: .4byte gSpecialVar_0x8004 _080CBA70: .4byte gUnknown_3005360 _080CBA74: .4byte gTasks _080CBA78: .4byte sub_80CBB28 @@ -2794,16 +2794,16 @@ sub_80CBB28: @ 80CBB28 .align 2, 0 _080CBB54: .4byte gTasks _080CBB58: - ldr r1, _080CBB68 @ =gUnknown_20370D0 + ldr r1, _080CBB68 @ =gSpecialVar_Result movs r0, 0x7F strh r0, [r1] movs r0, 0x5 bl PlaySE b _080CBB88 .align 2, 0 -_080CBB68: .4byte gUnknown_20370D0 +_080CBB68: .4byte gSpecialVar_Result _080CBB6C: - ldr r0, _080CBB90 @ =gUnknown_20370D0 + ldr r0, _080CBB90 @ =gSpecialVar_Result strh r4, [r0] movs r0, 0x5 bl PlaySE @@ -2821,7 +2821,7 @@ _080CBB88: bl sub_80CBBAC b _080CBBA2 .align 2, 0 -_080CBB90: .4byte gUnknown_20370D0 +_080CBB90: .4byte gSpecialVar_Result _080CBB94: adds r0, r5, 0 bl sub_80CBD50 @@ -3123,17 +3123,17 @@ _080CBDC8: .4byte 0x00004031 thumb_func_start sub_80CBDCC sub_80CBDCC: @ 80CBDCC push {lr} - ldr r0, _080CBDE4 @ =gUnknown_20370C0 + ldr r0, _080CBDE4 @ =gSpecialVar_0x8004 ldrh r0, [r0] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x2 - bl sub_8088E74 + bl GetSetPokedexFlag pop {r0} bx r0 .align 2, 0 -_080CBDE4: .4byte gUnknown_20370C0 +_080CBDE4: .4byte gSpecialVar_0x8004 thumb_func_end sub_80CBDCC thumb_func_start sub_80CBDE8 @@ -3371,7 +3371,7 @@ _080CBF9A: thumb_func_start sub_80CBFA0 sub_80CBFA0: @ 80CBFA0 push {r4,lr} - ldr r0, _080CBFC8 @ =gUnknown_20370C0 + ldr r0, _080CBFC8 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 @@ -3389,7 +3389,7 @@ sub_80CBFA0: @ 80CBFA0 movs r0, 0x1 b _080CBFDA .align 2, 0 -_080CBFC8: .4byte gUnknown_20370C0 +_080CBFC8: .4byte gSpecialVar_0x8004 _080CBFCC: .4byte gPlayerParty _080CBFD0: .4byte gStringVar1 _080CBFD4: .4byte gStringVar3 @@ -3486,7 +3486,7 @@ ChangePokemonNickname: @ 80CC088 mov r4, r8 push {r4-r6} sub sp, 0x8 - ldr r0, _080CC130 @ =gUnknown_20370C0 + ldr r0, _080CC130 @ =gSpecialVar_0x8004 mov r9, r0 ldrh r0, [r0] movs r1, 0x64 @@ -3558,7 +3558,7 @@ ChangePokemonNickname: @ 80CC088 pop {r0} bx r0 .align 2, 0 -_080CC130: .4byte gUnknown_20370C0 +_080CC130: .4byte gSpecialVar_0x8004 _080CC134: .4byte gPlayerParty _080CC138: .4byte gStringVar3 _080CC13C: .4byte gStringVar2 @@ -3568,7 +3568,7 @@ _080CC140: .4byte ChangePokemonNickname_CB thumb_func_start ChangePokemonNickname_CB ChangePokemonNickname_CB: @ 80CC144 push {lr} - ldr r0, _080CC164 @ =gUnknown_20370C0 + ldr r0, _080CC164 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 @@ -3581,7 +3581,7 @@ ChangePokemonNickname_CB: @ 80CC144 pop {r0} bx r0 .align 2, 0 -_080CC164: .4byte gUnknown_20370C0 +_080CC164: .4byte gSpecialVar_0x8004 _080CC168: .4byte gPlayerParty _080CC16C: .4byte gStringVar2 thumb_func_end ChangePokemonNickname_CB @@ -3589,7 +3589,7 @@ _080CC16C: .4byte gStringVar2 thumb_func_start TV_CopyNicknameToStringVar1AndEnsureTerminated TV_CopyNicknameToStringVar1AndEnsureTerminated: @ 80CC170 push {r4,lr} - ldr r0, _080CC194 @ =gUnknown_20370C0 + ldr r0, _080CC194 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 @@ -3605,7 +3605,7 @@ TV_CopyNicknameToStringVar1AndEnsureTerminated: @ 80CC170 pop {r0} bx r0 .align 2, 0 -_080CC194: .4byte gUnknown_20370C0 +_080CC194: .4byte gSpecialVar_0x8004 _080CC198: .4byte gPlayerParty _080CC19C: .4byte gStringVar1 thumb_func_end TV_CopyNicknameToStringVar1AndEnsureTerminated @@ -3615,7 +3615,7 @@ TV_CheckMonOTIDEqualsPlayerID: @ 80CC1A0 push {r4,lr} bl sub_80CC1E4 adds r4, r0, 0 - ldr r0, _080CC1C8 @ =gUnknown_20370C0 + ldr r0, _080CC1C8 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 @@ -3626,15 +3626,15 @@ TV_CheckMonOTIDEqualsPlayerID: @ 80CC1A0 bl GetMonData cmp r4, r0 bne _080CC1D4 - ldr r1, _080CC1D0 @ =gUnknown_20370D0 + ldr r1, _080CC1D0 @ =gSpecialVar_Result movs r0, 0 b _080CC1D8 .align 2, 0 -_080CC1C8: .4byte gUnknown_20370C0 +_080CC1C8: .4byte gSpecialVar_0x8004 _080CC1CC: .4byte gPlayerParty -_080CC1D0: .4byte gUnknown_20370D0 +_080CC1D0: .4byte gSpecialVar_Result _080CC1D4: - ldr r1, _080CC1E0 @ =gUnknown_20370D0 + ldr r1, _080CC1E0 @ =gSpecialVar_Result movs r0, 0x1 _080CC1D8: strh r0, [r1] @@ -3642,7 +3642,7 @@ _080CC1D8: pop {r0} bx r0 .align 2, 0 -_080CC1E0: .4byte gUnknown_20370D0 +_080CC1E0: .4byte gSpecialVar_Result thumb_func_end TV_CheckMonOTIDEqualsPlayerID thumb_func_start sub_80CC1E4 @@ -3863,7 +3863,7 @@ _080CC318: adds r0, r4, 0 bl VarSet ldr r0, _080CC3C4 @ =0x00004042 - ldr r1, _080CC3C8 @ =gUnknown_20370C0 + ldr r1, _080CC3C8 @ =gSpecialVar_0x8004 ldrh r1, [r1] bl VarSet add sp, 0x24 @@ -3874,21 +3874,21 @@ _080CC318: _080CC3BC: .4byte gPlayerParty _080CC3C0: .4byte 0x00004043 _080CC3C4: .4byte 0x00004042 -_080CC3C8: .4byte gUnknown_20370C0 +_080CC3C8: .4byte gSpecialVar_0x8004 thumb_func_end sub_80CC2BC thumb_func_start sub_80CC3CC sub_80CC3CC: @ 80CC3CC push {r4-r6,lr} movs r5, 0 - ldr r4, _080CC3F8 @ =gUnknown_20370C0 + ldr r4, _080CC3F8 @ =gSpecialVar_0x8004 movs r0, 0xA bl GetGameStat strh r0, [r4] movs r0, 0xD bl GetGameStat adds r6, r0, 0 - ldr r4, _080CC3FC @ =gUnknown_20370C4 + ldr r4, _080CC3FC @ =gSpecialVar_0x8006 movs r0, 0x17 bl GetGameStat strh r0, [r4] @@ -3899,8 +3899,8 @@ sub_80CC3CC: @ 80CC3CC strh r1, [r0] b _080CC40C .align 2, 0 -_080CC3F8: .4byte gUnknown_20370C0 -_080CC3FC: .4byte gUnknown_20370C4 +_080CC3F8: .4byte gSpecialVar_0x8004 +_080CC3FC: .4byte gSpecialVar_0x8006 _080CC400: .4byte 0x0000ffff _080CC404: .4byte gSpecialVar_0x8005 _080CC408: @@ -3908,7 +3908,7 @@ _080CC408: strh r6, [r0] _080CC40C: adds r1, r0, 0 - ldr r0, _080CC444 @ =gUnknown_20370C0 + ldr r0, _080CC444 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0 beq _080CC41A @@ -3923,7 +3923,7 @@ _080CC41A: lsls r0, r5, 16 lsrs r5, r0, 16 _080CC428: - ldr r0, _080CC448 @ =gUnknown_20370C4 + ldr r0, _080CC448 @ =gSpecialVar_0x8006 ldrh r0, [r0] cmp r0, 0 beq _080CC438 @@ -3938,8 +3938,8 @@ _080CC438: bx r1 .align 2, 0 _080CC440: .4byte gSpecialVar_0x8005 -_080CC444: .4byte gUnknown_20370C0 -_080CC448: .4byte gUnknown_20370C4 +_080CC444: .4byte gSpecialVar_0x8004 +_080CC448: .4byte gSpecialVar_0x8006 thumb_func_end sub_80CC3CC thumb_func_start sub_80CC44C @@ -3999,7 +3999,7 @@ _080CC49C: movs r1, 0x41 movs r2, 0 bl GetMonData - ldr r1, _080CC4BC @ =gUnknown_20370C0 + ldr r1, _080CC4BC @ =gSpecialVar_0x8004 ldrh r1, [r1] cmp r0, r1 bne _080CC4C0 @@ -4007,7 +4007,7 @@ _080CC49C: b _080CC4CC .align 2, 0 _080CC4B8: .4byte gPlayerParty -_080CC4BC: .4byte gUnknown_20370C0 +_080CC4BC: .4byte gSpecialVar_0x8004 _080CC4C0: adds r0, r4, 0x1 lsls r0, 24 @@ -4331,7 +4331,7 @@ _080CC72C: .4byte 0x0000404d thumb_func_start sub_80CC730 sub_80CC730: @ 80CC730 push {lr} - ldr r0, _080CC744 @ =gUnknown_20370D0 + ldr r0, _080CC744 @ =gSpecialVar_Result ldrh r0, [r0] cmp r0, 0x4 bhi _080CC77C @@ -4341,7 +4341,7 @@ sub_80CC730: @ 80CC730 ldr r0, [r0] mov pc, r0 .align 2, 0 -_080CC744: .4byte gUnknown_20370D0 +_080CC744: .4byte gSpecialVar_Result _080CC748: .4byte _080CC74C .align 2, 0 _080CC74C: @@ -4548,7 +4548,7 @@ _080CC8C4: thumb_func_start sub_80CC8CC sub_80CC8CC: @ 80CC8CC push {r4,lr} - ldr r1, _080CC8E4 @ =gUnknown_20370C0 + ldr r1, _080CC8E4 @ =gSpecialVar_0x8004 ldr r2, _080CC8E8 @ =0xfffffedf adds r0, r2, 0 ldrh r2, [r1] @@ -4560,7 +4560,7 @@ sub_80CC8CC: @ 80CC8CC movs r0, 0 b _080CC908 .align 2, 0 -_080CC8E4: .4byte gUnknown_20370C0 +_080CC8E4: .4byte gSpecialVar_0x8004 _080CC8E8: .4byte 0xfffffedf _080CC8EC: ldr r4, _080CC910 @ =gStringVar1 @@ -4612,7 +4612,7 @@ _080CC944: .4byte 0x000001f3 thumb_func_start sub_80CC948 sub_80CC948: @ 80CC948 push {lr} - ldr r0, _080CC968 @ =gUnknown_20370C0 + ldr r0, _080CC968 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 @@ -4626,7 +4626,7 @@ sub_80CC948: @ 80CC948 pop {r0} bx r0 .align 2, 0 -_080CC968: .4byte gUnknown_20370C0 +_080CC968: .4byte gSpecialVar_0x8004 _080CC96C: .4byte gPlayerParty _080CC970: .4byte 0x00004025 thumb_func_end sub_80CC948 @@ -4904,7 +4904,7 @@ sub_80CCB94: @ 80CCB94 lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r0, _080CCBC0 @ =gUnknown_20370C6 + ldr r0, _080CCBC0 @ =gSpecialVar_0x8007 mov r1, r8 strh r1, [r0] movs r4, 0 @@ -4915,7 +4915,7 @@ sub_80CCB94: @ 80CCB94 mov r9, r0 b _080CCBCE .align 2, 0 -_080CCBC0: .4byte gUnknown_20370C6 +_080CCBC0: .4byte gSpecialVar_0x8007 _080CCBC4: .4byte gPlayerParty _080CCBC8: adds r0, r4, 0x1 @@ -5045,7 +5045,7 @@ _080CCCCC: lsls r0, 24 lsrs r6, r0, 24 _080CCCDE: - ldr r0, _080CCCF4 @ =gUnknown_20370C4 + ldr r0, _080CCCF4 @ =gSpecialVar_0x8006 strh r6, [r0] movs r0, 0x1 _080CCCE4: @@ -5057,7 +5057,7 @@ _080CCCE4: bx r1 .align 2, 0 _080CCCF0: .4byte gPlayerParty -_080CCCF4: .4byte gUnknown_20370C4 +_080CCCF4: .4byte gSpecialVar_0x8006 thumb_func_end sub_80CCB94 thumb_func_start sub_80CCCF8 @@ -5216,12 +5216,12 @@ task_deoxys_sound: @ 80CCE10 lsrs r0, 24 cmp r0, 0x1 bne _080CCE38 - ldr r1, _080CCE34 @ =gUnknown_20370D0 + ldr r1, _080CCE34 @ =gSpecialVar_Result movs r0, 0x3 b _080CCE9E .align 2, 0 _080CCE30: .4byte 0x00000848 -_080CCE34: .4byte gUnknown_20370D0 +_080CCE34: .4byte gSpecialVar_Result _080CCE38: ldr r0, _080CCE80 @ =0x0000403e mov r8, r0 @@ -5249,7 +5249,7 @@ _080CCE38: mov r0, r8 movs r1, 0 bl VarSet - ldr r1, _080CCE8C @ =gUnknown_20370D0 + ldr r1, _080CCE8C @ =gSpecialVar_Result movs r0, 0 strh r0, [r1] b _080CCEA4 @@ -5257,13 +5257,13 @@ _080CCE38: _080CCE80: .4byte 0x0000403e _080CCE84: .4byte 0x00004026 _080CCE88: .4byte gUnknown_83F637C -_080CCE8C: .4byte gUnknown_20370D0 +_080CCE8C: .4byte gSpecialVar_Result _080CCE90: cmp r5, 0xA bne _080CCEB4 ldr r0, _080CCEAC @ =0x00000848 bl FlagSet - ldr r1, _080CCEB0 @ =gUnknown_20370D0 + ldr r1, _080CCEB0 @ =gSpecialVar_Result movs r0, 0x2 _080CCE9E: strh r0, [r1] @@ -5274,7 +5274,7 @@ _080CCEA4: b _080CCED6 .align 2, 0 _080CCEAC: .4byte 0x00000848 -_080CCEB0: .4byte gUnknown_20370D0 +_080CCEB0: .4byte gSpecialVar_Result _080CCEB4: adds r0, r5, 0x1 lsls r0, 16 @@ -5285,7 +5285,7 @@ _080CCEB4: ldr r0, _080CCEE0 @ =0x0000403e adds r1, r5, 0 bl VarSet - ldr r1, _080CCEE4 @ =gUnknown_20370D0 + ldr r1, _080CCEE4 @ =gSpecialVar_Result movs r0, 0x1 strh r0, [r1] adds r0, r7, 0 @@ -5298,7 +5298,7 @@ _080CCED6: bx r0 .align 2, 0 _080CCEE0: .4byte 0x0000403e -_080CCEE4: .4byte gUnknown_20370D0 +_080CCEE4: .4byte gSpecialVar_Result thumb_func_end task_deoxys_sound thumb_func_start sub_80CCEE8 @@ -5528,12 +5528,12 @@ sub_80CD098: @ 80CD098 ldrb r0, [r0] cmp r0, 0x2 beq _080CD0E8 - ldr r0, _080CD0D0 @ =gUnknown_20370C0 + ldr r0, _080CD0D0 @ =gSpecialVar_0x8004 ldrh r0, [r0] adds r0, 0x1B lsls r0, 16 lsrs r1, r0, 16 - ldr r0, _080CD0D4 @ =gUnknown_20370C4 + ldr r0, _080CD0D4 @ =gSpecialVar_0x8006 ldrh r3, [r0] cmp r3, 0 bne _080CD0E0 @@ -5548,8 +5548,8 @@ sub_80CD098: @ 80CD098 b _080CD0E8 .align 2, 0 _080CD0CC: .4byte gUnknown_203ADFA -_080CD0D0: .4byte gUnknown_20370C0 -_080CD0D4: .4byte gUnknown_20370C4 +_080CD0D0: .4byte gSpecialVar_0x8004 +_080CD0D4: .4byte gSpecialVar_0x8006 _080CD0D8: .4byte gSpecialVar_0x8005 _080CD0DC: .4byte gUnknown_2039A1B _080CD0E0: @@ -5583,7 +5583,7 @@ _080CD104: movs r1, 0x41 movs r2, 0 bl GetMonData - ldr r1, _080CD13C @ =gUnknown_20370C0 + ldr r1, _080CD13C @ =gSpecialVar_0x8004 ldrh r1, [r1] cmp r0, r1 bne _080CD140 @@ -5599,7 +5599,7 @@ _080CD104: b _080CD14C .align 2, 0 _080CD138: .4byte gPlayerParty -_080CD13C: .4byte gUnknown_20370C0 +_080CD13C: .4byte gSpecialVar_0x8004 _080CD140: adds r0, r6, 0x1 lsls r0, 24 @@ -5708,7 +5708,7 @@ sub_80CD1CC: @ 80CD1CC _080CD200: movs r0, 0 ldrsh r1, [r4, r0] - ldr r0, _080CD224 @ =gUnknown_20370C0 + ldr r0, _080CD224 @ =gSpecialVar_0x8004 ldrh r0, [r0] subs r0, 0x1 cmp r1, r0 @@ -5722,7 +5722,7 @@ _080CD214: .align 2, 0 _080CD21C: .4byte gTasks+0x8 _080CD220: .4byte gSpecialVar_0x8005 -_080CD224: .4byte gUnknown_20370C0 +_080CD224: .4byte gSpecialVar_0x8004 thumb_func_end sub_80CD1CC .align 2, 0 @ Don't pad with nop. diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s index 0c70bdf36..778f2c916 100644 --- a/asm/fldeff_strength.s +++ b/asm/fldeff_strength.s @@ -23,7 +23,7 @@ _080D0808: movs r0, 0 b _080D0826 _080D080C: - ldr r4, _080D082C @ =gUnknown_20370D0 + ldr r4, _080D082C @ =gSpecialVar_Result bl GetCursorSelectionMonId lsls r0, 24 lsrs r0, 24 @@ -40,7 +40,7 @@ _080D0826: pop {r1} bx r1 .align 2, 0 -_080D082C: .4byte gUnknown_20370D0 +_080D082C: .4byte gSpecialVar_Result _080D0830: .4byte gUnknown_3005024 _080D0834: .4byte hm_add_c3_launch_phase_2 _080D0838: .4byte gUnknown_203B0C4 diff --git a/asm/heal_location.s b/asm/heal_location.s index 33732a934..34eb1461b 100644 --- a/asm/heal_location.s +++ b/asm/heal_location.s @@ -112,7 +112,7 @@ sub_80BFCD0: @ 80BFCD0 movs r1, 0 bl VarSet _080BFD0A: - ldr r0, _080BFD34 @ =gUnknown_20370D2 + ldr r0, _080BFD34 @ =gSpecialVar_LastTalked strh r5, [r0] movs r0, 0x4 strh r0, [r4, 0x4] @@ -130,7 +130,7 @@ _080BFD24: .4byte 0x00004082 _080BFD28: .4byte gSaveBlock1Ptr _080BFD2C: .4byte 0x00003d34 _080BFD30: .4byte 0x00003d42 -_080BFD34: .4byte gUnknown_20370D2 +_080BFD34: .4byte gSpecialVar_LastTalked _080BFD38: ldr r0, _080BFD7C @ =gSaveBlock1Ptr ldr r1, [r0] @@ -239,7 +239,7 @@ _080BFDFA: thumb_func_start sub_80BFE00 sub_80BFE00: @ 80BFE00 - ldr r2, _080BFE10 @ =gUnknown_20370D2 + ldr r2, _080BFE10 @ =gSpecialVar_LastTalked ldr r1, _080BFE14 @ =gUnknown_83EECE8 subs r0, 0x1 adds r0, r1 @@ -247,7 +247,7 @@ sub_80BFE00: @ 80BFE00 strh r0, [r2] bx lr .align 2, 0 -_080BFE10: .4byte gUnknown_20370D2 +_080BFE10: .4byte gSpecialVar_LastTalked _080BFE14: .4byte gUnknown_83EECE8 thumb_func_end sub_80BFE00 diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s index b95ad8666..d254207a4 100644 --- a/asm/help_system_812B1E0.s +++ b/asm/help_system_812B1E0.s @@ -49,13 +49,13 @@ _0812B21C: .4byte gUnknown_203B0EC thumb_func_start sub_812B220 sub_812B220: @ 812B220 ldr r0, _0812B22C @ =gUnknown_203B0EC - ldr r1, _0812B230 @ =gUnknown_20370C0 + ldr r1, _0812B230 @ =gSpecialVar_0x8004 ldrh r1, [r1] strh r1, [r0] bx lr .align 2, 0 _0812B22C: .4byte gUnknown_203B0EC -_0812B230: .4byte gUnknown_20370C0 +_0812B230: .4byte gSpecialVar_0x8004 thumb_func_end sub_812B220 thumb_func_start sub_812B234 diff --git a/asm/item.s b/asm/item.s index 08df51656..aa64e54fa 100644 --- a/asm/item.s +++ b/asm/item.s @@ -326,13 +326,13 @@ sub_8099FAC: @ 8099FAC .align 2, 0 _08099FC0: .4byte 0x0000016d _08099FC4: - ldr r1, _08099FD0 @ =gUnknown_20370D0 + ldr r1, _08099FD0 @ =gSpecialVar_Result movs r0, 0x1 strh r0, [r1] movs r0, 0x1 b _08099FF6 .align 2, 0 -_08099FD0: .4byte gUnknown_20370D0 +_08099FD0: .4byte gSpecialVar_Result _08099FD4: movs r4, 0x85 _08099FD6: @@ -349,7 +349,7 @@ _08099FD6: cmp r4, 0xAF bls _08099FD6 _08099FF0: - ldr r0, _08099FFC @ =gUnknown_20370D0 + ldr r0, _08099FFC @ =gSpecialVar_Result strh r1, [r0] movs r0, 0 _08099FF6: @@ -357,7 +357,7 @@ _08099FF6: pop {r1} bx r1 .align 2, 0 -_08099FFC: .4byte gUnknown_20370D0 +_08099FFC: .4byte gSpecialVar_Result thumb_func_end sub_8099FAC thumb_func_start sub_809A000 diff --git a/asm/item_menu.s b/asm/item_menu.s index 8650e912d..58b74acf3 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -94,7 +94,7 @@ _08107E5A: strb r0, [r2, 0x5] movs r1, 0 ldr r4, _08107EA4 @ =gTextFlags - ldr r5, _08107EA8 @ =gUnknown_203AD30 + ldr r5, _08107EA8 @ =gSpecialVar_ItemId ldr r6, _08107EAC @ =sub_8107F10 ldr r3, _08107EB0 @ =gUnknown_203AD10 movs r2, 0 @@ -132,7 +132,7 @@ _08107E9A: bx r0 .align 2, 0 _08107EA4: .4byte gTextFlags -_08107EA8: .4byte gUnknown_203AD30 +_08107EA8: .4byte gSpecialVar_ItemId _08107EAC: .4byte sub_8107F10 _08107EB0: .4byte gUnknown_203AD10 _08107EB4: .4byte gUnknown_203ACFC @@ -2367,7 +2367,7 @@ _08109014: .4byte gUnknown_203ACFC _08109018: movs r0, 0x5 bl PlaySE - ldr r1, _08109038 @ =gUnknown_203AD30 + ldr r1, _08109038 @ =gSpecialVar_ItemId movs r0, 0 strh r0, [r1] bl sub_8108CB4 @@ -2379,7 +2379,7 @@ _08109018: ldr r1, _08109040 @ =sub_8108B50 b _081090C4 .align 2, 0 -_08109038: .4byte gUnknown_203AD30 +_08109038: .4byte gSpecialVar_ItemId _0810903C: .4byte gTasks _08109040: .4byte sub_8108B50 _08109044: @@ -2393,7 +2393,7 @@ _08109044: ldrb r0, [r0] cmp r4, r0 bne _08109084 - ldr r1, _08109078 @ =gUnknown_203AD30 + ldr r1, _08109078 @ =gSpecialVar_ItemId movs r0, 0 strh r0, [r1] bl sub_8108CB4 @@ -2406,7 +2406,7 @@ _08109044: b _081090C4 .align 2, 0 _08109074: .4byte gUnknown_203AD10 -_08109078: .4byte gUnknown_203AD30 +_08109078: .4byte gSpecialVar_ItemId _0810907C: .4byte gTasks _08109080: .4byte sub_8108B50 _08109084: @@ -2430,7 +2430,7 @@ _08109084: lsrs r0, 24 adds r1, r4, 0 bl sub_809A798 - ldr r1, _081090D0 @ =gUnknown_203AD30 + ldr r1, _081090D0 @ =gSpecialVar_ItemId strh r0, [r1] ldr r1, _081090D4 @ =gTasks lsls r0, r6, 2 @@ -2446,7 +2446,7 @@ _081090C6: pop {r0} bx r0 .align 2, 0 -_081090D0: .4byte gUnknown_203AD30 +_081090D0: .4byte gSpecialVar_ItemId _081090D4: .4byte gTasks _081090D8: .4byte sub_81090DC thumb_func_end sub_8108F0C @@ -3404,7 +3404,7 @@ _081098AC: beq _08109924 b _0810993C _081098B6: - ldr r2, _081098D4 @ =gUnknown_203AD30 + ldr r2, _081098D4 @ =gSpecialVar_ItemId ldrh r1, [r2] ldr r0, _081098D8 @ =0x0000016d cmp r1, r0 @@ -3420,7 +3420,7 @@ _081098B6: movs r0, 0x2 b _08109AD0 .align 2, 0 -_081098D4: .4byte gUnknown_203AD30 +_081098D4: .4byte gSpecialVar_ItemId _081098D8: .4byte 0x0000016d _081098DC: .4byte gUnknown_203AD20 _081098E0: .4byte gUnknown_203AD24 @@ -3473,7 +3473,7 @@ _0810993C: cmp r0, 0x1 bne _081099C4 _08109950: - ldr r1, _08109970 @ =gUnknown_203AD30 + ldr r1, _08109970 @ =gSpecialVar_ItemId ldr r2, _08109974 @ =0xfffffe94 adds r0, r2, 0 ldrh r1, [r1] @@ -3489,7 +3489,7 @@ _08109950: movs r0, 0x2 b _08109AD0 .align 2, 0 -_08109970: .4byte gUnknown_203AD30 +_08109970: .4byte gSpecialVar_ItemId _08109974: .4byte 0xfffffe94 _08109978: .4byte gUnknown_203AD24 _0810997C: .4byte gUnknown_8452F2E @@ -3549,7 +3549,7 @@ _081099EC: ldr r4, _08109A0C @ =gUnknown_203AD28 movs r0, 0x4 strb r0, [r4] - ldr r0, _08109A10 @ =gUnknown_203AD30 + ldr r0, _08109A10 @ =gSpecialVar_ItemId ldrh r0, [r0] bl itemid_is_mail lsls r0, 24 @@ -3563,7 +3563,7 @@ _081099EC: b _08109AD4 .align 2, 0 _08109A0C: .4byte gUnknown_203AD28 -_08109A10: .4byte gUnknown_203AD30 +_08109A10: .4byte gSpecialVar_ItemId _08109A14: .4byte gUnknown_203AD24 _08109A18: .4byte gUnknown_8452F24 _08109A1C: @@ -3591,7 +3591,7 @@ _08109A34: ldr r0, [r0] ldr r1, _08109A6C @ =0x00000296 adds r0, r1 - ldr r1, _08109A70 @ =gUnknown_203AD30 + ldr r1, _08109A70 @ =gSpecialVar_ItemId ldrh r0, [r0] adds r7, r3, 0 ldrh r3, [r1] @@ -3605,7 +3605,7 @@ _08109A60: .4byte gUnknown_203AD20 _08109A64: .4byte gUnknown_203AD28 _08109A68: .4byte gSaveBlock1Ptr _08109A6C: .4byte 0x00000296 -_08109A70: .4byte gUnknown_203AD30 +_08109A70: .4byte gSpecialVar_ItemId _08109A74: movs r0, 0x2 _08109A76: @@ -3722,7 +3722,7 @@ _08109AD4: adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _08109BA8 @ =gUnknown_203AD30 + ldr r0, _08109BA8 @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _08109BAC @ =gStringVar1 bl sub_8099E90 @@ -3751,7 +3751,7 @@ _08109B98: .4byte gUnknown_203AD24 _08109B9C: .4byte gUnknown_8452F18 _08109BA0: .4byte gUnknown_203AD28 _08109BA4: .4byte gUnknown_8452EB8 -_08109BA8: .4byte gUnknown_203AD30 +_08109BA8: .4byte gSpecialVar_ItemId _08109BAC: .4byte gStringVar1 _08109BB0: .4byte gStringVar4 _08109BB4: .4byte gUnknown_84162FF @@ -3838,7 +3838,7 @@ sub_8109C50: @ 8109C50 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r5, _08109CA0 @ =gUnknown_203AD30 + ldr r5, _08109CA0 @ =gSpecialVar_ItemId ldrh r0, [r5] bl ItemId_GetFieldFunc cmp r0, 0 @@ -3867,9 +3867,9 @@ sub_8109C50: @ 8109C50 bl sub_810A170 b _08109CB4 .align 2, 0 -_08109CA0: .4byte gUnknown_203AD30 +_08109CA0: .4byte gSpecialVar_ItemId _08109CA4: - ldr r0, _08109CBC @ =gUnknown_203AD30 + ldr r0, _08109CBC @ =gSpecialVar_ItemId ldrh r0, [r0] bl ItemId_GetFieldFunc adds r1, r0, 0 @@ -3880,7 +3880,7 @@ _08109CB4: pop {r0} bx r0 .align 2, 0 -_08109CBC: .4byte gUnknown_203AD30 +_08109CBC: .4byte gSpecialVar_ItemId thumb_func_end sub_8109C50 thumb_func_start sub_8109CC0 @@ -4197,7 +4197,7 @@ sub_8109F44: @ 8109F44 _08109F6E: movs r0, 0x5 bl PlaySE - ldr r0, _08109FF4 @ =gUnknown_203AD30 + ldr r0, _08109FF4 @ =gSpecialVar_ItemId ldrh r0, [r0] ldrh r1, [r7, 0x10] bl sub_809A1D8 @@ -4249,7 +4249,7 @@ _08109FE0: .align 2, 0 _08109FEC: .4byte gTasks+0x8 _08109FF0: .4byte gMain -_08109FF4: .4byte gUnknown_203AD30 +_08109FF4: .4byte gSpecialVar_ItemId _08109FF8: .4byte gUnknown_203ACFC _08109FFC: .4byte gUnknown_3005E70 thumb_func_end sub_8109F44 @@ -4444,7 +4444,7 @@ sub_810A18C: @ 810A18C adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _0810A1BC @ =gUnknown_203AD30 + ldr r0, _0810A1BC @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _0810A1C0 @ =gStringVar1 bl sub_8099E90 @@ -4461,7 +4461,7 @@ sub_810A18C: @ 810A18C pop {r0} bx r0 .align 2, 0 -_0810A1BC: .4byte gUnknown_203AD30 +_0810A1BC: .4byte gSpecialVar_ItemId _0810A1C0: .4byte gStringVar1 _0810A1C4: .4byte gStringVar4 _0810A1C8: .4byte gUnknown_841635E @@ -4634,7 +4634,7 @@ sub_810A324: @ 810A324 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r5, _0810A36C @ =gUnknown_203AD30 + ldr r5, _0810A36C @ =gSpecialVar_ItemId ldrh r0, [r5] bl ItemId_GetBattleFunc cmp r0, 0 @@ -4660,7 +4660,7 @@ _0810A364: pop {r0} bx r0 .align 2, 0 -_0810A36C: .4byte gUnknown_203AD30 +_0810A36C: .4byte gSpecialVar_ItemId thumb_func_end sub_810A324 thumb_func_start sub_810A370 @@ -4936,7 +4936,7 @@ sub_810A568: @ 810A568 lsls r0, 3 ldr r1, _0810A58C @ =gTasks+0x8 adds r4, r0, r1 - ldr r6, _0810A590 @ =gUnknown_203AD30 + ldr r6, _0810A590 @ =gSpecialVar_ItemId ldrh r1, [r6] movs r0, 0xB6 lsls r0, 1 @@ -4946,7 +4946,7 @@ sub_810A568: @ 810A568 b _0810A5A0 .align 2, 0 _0810A58C: .4byte gTasks+0x8 -_0810A590: .4byte gUnknown_203AD30 +_0810A590: .4byte gSpecialVar_ItemId _0810A594: .4byte sub_810A654 _0810A598: ldr r0, _0810A5AC @ =0x0000016d @@ -5394,7 +5394,7 @@ sub_810A940: @ 810A940 bl PutWindowTilemap movs r0, 0 bl schedule_bg_copy_tilemap_to_vram - ldr r0, _0810A9B8 @ =gUnknown_203AD30 + ldr r0, _0810A9B8 @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _0810A9BC @ =gStringVar1 bl sub_8099E90 @@ -5432,7 +5432,7 @@ sub_810A940: @ 810A940 bx r0 .align 2, 0 _0810A9B4: .4byte gTasks+0x8 -_0810A9B8: .4byte gUnknown_203AD30 +_0810A9B8: .4byte gSpecialVar_ItemId _0810A9BC: .4byte gStringVar1 _0810A9C0: .4byte gStringVar3 _0810A9C4: .4byte gUnknown_203ACFC @@ -5460,7 +5460,7 @@ sub_810A9D4: @ 810A9D4 mov r8, r1 movs r0, 0xF8 bl PlaySE - ldr r5, _0810AADC @ =gUnknown_203AD30 + ldr r5, _0810AADC @ =gSpecialVar_ItemId ldrh r0, [r5] mov r2, r8 ldrh r1, [r2, 0x10] @@ -5559,7 +5559,7 @@ sub_810A9D4: @ 810A9D4 bx r0 .align 2, 0 _0810AAD8: .4byte gTasks+0x8 -_0810AADC: .4byte gUnknown_203AD30 +_0810AADC: .4byte gSpecialVar_ItemId _0810AAE0: .4byte gSaveBlock1Ptr _0810AAE4: .4byte gUnknown_203ACFC _0810AAE8: .4byte gUnknown_203AD10 @@ -5741,7 +5741,7 @@ sub_810AC40: @ 810AC40 mov r9, r0 mov r7, r8 add r7, r9 - ldr r5, _0810ACD0 @ =gUnknown_203AD30 + ldr r5, _0810ACD0 @ =gSpecialVar_ItemId ldrh r0, [r5] ldrh r1, [r7, 0x10] bl sub_809A3C8 @@ -5791,7 +5791,7 @@ sub_810AC40: @ 810AC40 b _0810ACF8 .align 2, 0 _0810ACCC: .4byte gTasks+0x8 -_0810ACD0: .4byte gUnknown_203AD30 +_0810ACD0: .4byte gSpecialVar_ItemId _0810ACD4: .4byte 0x0000ffff _0810ACD8: .4byte gStringVar1 _0810ACDC: .4byte gStringVar2 @@ -5848,7 +5848,7 @@ _0810AD1E: bl player_bitmagic bl sub_805C270 bl sub_805C780 - ldr r2, _0810AD88 @ =gUnknown_203AD30 + ldr r2, _0810AD88 @ =gSpecialVar_ItemId ldr r0, [r4] adds r0, r5 ldrh r1, [r0] @@ -5869,7 +5869,7 @@ _0810AD1E: .align 2, 0 _0810AD80: .4byte gSaveBlock1Ptr _0810AD84: .4byte 0x00000296 -_0810AD88: .4byte gUnknown_203AD30 +_0810AD88: .4byte gSpecialVar_ItemId _0810AD8C: .4byte gTasks _0810AD90: ldr r0, [r4] @@ -6187,14 +6187,14 @@ _0810AFF6: bl bag_menu_print_cursor_ movs r0, 0x1 bl sub_8109140 - ldr r1, _0810B018 @ =gUnknown_203AD30 + ldr r1, _0810B018 @ =gSpecialVar_ItemId movs r0, 0x4 strh r0, [r1] adds r0, r4, 0 bl sub_8109890 b _0810B064 .align 2, 0 -_0810B018: .4byte gUnknown_203AD30 +_0810B018: .4byte gSpecialVar_ItemId _0810B01C: movs r0, 0x5 bl PlaySE @@ -6493,7 +6493,7 @@ _0810B266: bl bag_menu_print_cursor_ movs r0, 0x1 bl sub_8109140 - ldr r1, _0810B28C @ =gUnknown_203AD30 + ldr r1, _0810B28C @ =gSpecialVar_ItemId movs r2, 0xB7 lsls r2, 1 adds r0, r2, 0 @@ -6502,7 +6502,7 @@ _0810B266: bl sub_8109890 b _0810B36C .align 2, 0 -_0810B28C: .4byte gUnknown_203AD30 +_0810B28C: .4byte gSpecialVar_ItemId _0810B290: movs r0, 0x5 bl PlaySE @@ -6514,7 +6514,7 @@ _0810B29E: bl PlaySE ldr r0, _0810B318 @ =gSaveBlock1Ptr ldr r0, [r0] - ldr r1, _0810B31C @ =gUnknown_203AD30 + ldr r1, _0810B31C @ =gSpecialVar_ItemId ldrh r1, [r1] ldr r2, _0810B320 @ =0x00000296 adds r0, r2 @@ -6562,7 +6562,7 @@ _0810B29E: b _0810B36C .align 2, 0 _0810B318: .4byte gSaveBlock1Ptr -_0810B31C: .4byte gUnknown_203AD30 +_0810B31C: .4byte gSpecialVar_ItemId _0810B320: .4byte 0x00000296 _0810B324: .4byte gUnknown_203ACFC _0810B328: .4byte gUnknown_3005E70 @@ -6713,14 +6713,14 @@ _0810B440: bl bag_menu_print_cursor_ movs r0, 0x1 bl sub_8109140 - ldr r1, _0810B464 @ =gUnknown_203AD30 + ldr r1, _0810B464 @ =gSpecialVar_ItemId movs r0, 0x4 strh r0, [r1] adds r0, r5, 0 bl sub_8109890 b _0810B4B0 .align 2, 0 -_0810B464: .4byte gUnknown_203AD30 +_0810B464: .4byte gSpecialVar_ItemId _0810B468: movs r0, 0x5 bl PlaySE @@ -6829,14 +6829,14 @@ _0810B53C: bl bag_menu_print_cursor_ movs r0, 0x1 bl sub_8109140 - ldr r1, _0810B560 @ =gUnknown_203AD30 + ldr r1, _0810B560 @ =gSpecialVar_ItemId movs r0, 0xE strh r0, [r1] adds r0, r4, 0 bl sub_8109890 b _0810B5C0 .align 2, 0 -_0810B560: .4byte gUnknown_203AD30 +_0810B560: .4byte gSpecialVar_ItemId _0810B564: movs r0, 0x5 bl PlaySE @@ -6962,7 +6962,7 @@ _0810B660: bl bag_menu_print_cursor_ movs r0, 0x1 bl sub_8109140 - ldr r1, _0810B688 @ =gUnknown_203AD30 + ldr r1, _0810B688 @ =gSpecialVar_ItemId movs r2, 0xB6 lsls r2, 1 adds r0, r2, 0 @@ -6971,7 +6971,7 @@ _0810B660: bl sub_8109890 b _0810B6E0 .align 2, 0 -_0810B688: .4byte gUnknown_203AD30 +_0810B688: .4byte gSpecialVar_ItemId _0810B68C: movs r0, 0x5 bl PlaySE diff --git a/asm/item_use.s b/asm/item_use.s index f653247d9..558e175f2 100644 --- a/asm/item_use.s +++ b/asm/item_use.s @@ -10,7 +10,7 @@ sub_80A0FBC: @ 80A0FBC push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r1, _080A0FD8 @ =gUnknown_203AD30 + ldr r1, _080A0FD8 @ =gSpecialVar_ItemId ldrh r0, [r1] cmp r0, 0xAF bne _080A0FE0 @@ -22,7 +22,7 @@ sub_80A0FBC: @ 80A0FBC ldrb r0, [r1, 0x10] b _080A0FE6 .align 2, 0 -_080A0FD8: .4byte gUnknown_203AD30 +_080A0FD8: .4byte gSpecialVar_ItemId _080A0FDC: .4byte gTasks _080A0FE0: ldrh r0, [r1] @@ -31,7 +31,7 @@ _080A0FE6: subs r0, 0x1 lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _080A1010 @ =gUnknown_203AD30 + ldr r0, _080A1010 @ =gSpecialVar_ItemId ldrh r0, [r0] bl GetPocketByItemId lsls r0, 24 @@ -47,7 +47,7 @@ _080A0FE6: bl sub_813D808 b _080A1032 .align 2, 0 -_080A1010: .4byte gUnknown_203AD30 +_080A1010: .4byte gSpecialVar_ItemId _080A1014: .4byte gUnknown_83E2954 _080A1018: ldr r0, _080A1038 @ =gUnknown_83E2954 @@ -317,7 +317,7 @@ sub_80A1208: @ 80A1208 push {lr} sub sp, 0x24 mov r1, sp - ldr r0, _080A1224 @ =gUnknown_203AD30 + ldr r0, _080A1224 @ =gSpecialVar_ItemId ldrh r0, [r0] strh r0, [r1, 0x20] ldr r1, _080A1228 @ =UseFameCheckerFromMenu @@ -328,7 +328,7 @@ sub_80A1208: @ 80A1208 pop {r0} bx r0 .align 2, 0 -_080A1224: .4byte gUnknown_203AD30 +_080A1224: .4byte gSpecialVar_ItemId _080A1228: .4byte UseFameCheckerFromMenu thumb_func_end sub_80A1208 @@ -571,7 +571,7 @@ ItemUseOnFieldCB_Rod: @ 80A1410 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _080A1434 @ =gUnknown_203AD30 + ldr r0, _080A1434 @ =gSpecialVar_ItemId ldrh r0, [r0] bl ItemId_GetSecondaryId lsls r0, 24 @@ -583,7 +583,7 @@ ItemUseOnFieldCB_Rod: @ 80A1410 pop {r0} bx r0 .align 2, 0 -_080A1434: .4byte gUnknown_203AD30 +_080A1434: .4byte gSpecialVar_ItemId thumb_func_end ItemUseOnFieldCB_Rod thumb_func_start ItemUseOutOfBattle_Itemfinder @@ -625,7 +625,7 @@ sub_80A1460: @ 80A1460 ldr r1, _080A14BC @ =gUnknown_8416537 adds r0, r4, 0 bl StringExpandPlaceholders - ldr r0, _080A14C0 @ =gUnknown_203AD30 + ldr r0, _080A14C0 @ =gSpecialVar_ItemId ldrh r2, [r0] ldr r3, _080A14C4 @ =0x0000ffff movs r0, 0x4 @@ -650,7 +650,7 @@ sub_80A1460: @ 80A1460 _080A14B4: .4byte gStringVar1 _080A14B8: .4byte gStringVar4 _080A14BC: .4byte gUnknown_8416537 -_080A14C0: .4byte gUnknown_203AD30 +_080A14C0: .4byte gSpecialVar_ItemId _080A14C4: .4byte 0x0000ffff _080A14C8: .4byte gTasks _080A14CC: .4byte sub_810A1F8 @@ -684,7 +684,7 @@ sub_80A14E8: @ 80A14E8 ldr r1, _080A1540 @ =gUnknown_8416644 adds r0, r4, 0 bl StringExpandPlaceholders - ldr r0, _080A1544 @ =gUnknown_203AD30 + ldr r0, _080A1544 @ =gSpecialVar_ItemId ldrh r2, [r0] ldr r3, _080A1548 @ =0x0000ffff movs r0, 0x4 @@ -709,7 +709,7 @@ sub_80A14E8: @ 80A14E8 _080A1538: .4byte gStringVar1 _080A153C: .4byte gStringVar4 _080A1540: .4byte gUnknown_8416644 -_080A1544: .4byte gUnknown_203AD30 +_080A1544: .4byte gSpecialVar_ItemId _080A1548: .4byte 0x0000ffff _080A154C: .4byte gTasks _080A1550: .4byte sub_810A1F8 @@ -760,7 +760,7 @@ _080A1598: bcc _080A1578 cmp r6, 0 beq _080A1600 - ldr r0, _080A15D4 @ =gUnknown_203AD30 + ldr r0, _080A15D4 @ =gSpecialVar_ItemId ldrh r2, [r0] ldr r3, _080A15D8 @ =0x0000ffff movs r0, 0x4 @@ -780,7 +780,7 @@ _080A1598: b _080A1616 .align 2, 0 _080A15D0: .4byte gPlayerParty -_080A15D4: .4byte gUnknown_203AD30 +_080A15D4: .4byte gSpecialVar_ItemId _080A15D8: .4byte 0x0000ffff _080A15DC: .4byte gTasks _080A15E0: .4byte gUnknown_8416690 @@ -1196,7 +1196,7 @@ sub_80A18EC: @ 80A18EC push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _080A1920 @ =gUnknown_203AD30 + ldr r0, _080A1920 @ =gSpecialVar_ItemId ldrh r2, [r0] ldr r3, _080A1924 @ =0x0000ffff movs r0, 0x4 @@ -1217,7 +1217,7 @@ sub_80A18EC: @ 80A18EC bl sub_8108B50 b _080A1940 .align 2, 0 -_080A1920: .4byte gUnknown_203AD30 +_080A1920: .4byte gSpecialVar_ItemId _080A1924: .4byte 0x0000ffff _080A1928: .4byte gTasks _080A192C: .4byte sub_80A194C @@ -1323,7 +1323,7 @@ sub_80A19E8: @ 80A19E8 lsls r0, 24 cmp r0, 0 bne _080A1A2A - ldr r4, _080A1A30 @ =gUnknown_203AD30 + ldr r4, _080A1A30 @ =gSpecialVar_ItemId ldrh r2, [r4] ldr r3, _080A1A34 @ =0x0000ffff movs r0, 0x4 @@ -1348,7 +1348,7 @@ _080A1A2A: pop {r0} bx r0 .align 2, 0 -_080A1A30: .4byte gUnknown_203AD30 +_080A1A30: .4byte gSpecialVar_ItemId _080A1A34: .4byte 0x0000ffff _080A1A38: .4byte 0x00004020 _080A1A3C: .4byte gStringVar4 @@ -1358,7 +1358,7 @@ _080A1A40: .4byte sub_810A1F8 thumb_func_start sub_80A1A44 sub_80A1A44: @ 80A1A44 push {r4,lr} - ldr r4, _080A1A84 @ =gUnknown_203AD30 + ldr r4, _080A1A84 @ =gSpecialVar_ItemId ldrh r0, [r4] movs r1, 0x1 bl sub_809A1D8 @@ -1382,7 +1382,7 @@ sub_80A1A44: @ 80A1A44 pop {r0} bx r0 .align 2, 0 -_080A1A84: .4byte gUnknown_203AD30 +_080A1A84: .4byte gSpecialVar_ItemId _080A1A88: .4byte gStringVar2 _080A1A8C: .4byte gStringVar4 _080A1A90: .4byte gUnknown_841658C @@ -1394,7 +1394,7 @@ sub_80A1A94: @ 80A1A94 lsls r0, 24 lsrs r4, r0, 24 adds r6, r4, 0 - ldr r5, _080A1AD4 @ =gUnknown_203AD30 + ldr r5, _080A1AD4 @ =gSpecialVar_ItemId ldrh r2, [r5] ldr r3, _080A1AD8 @ =0x0000ffff movs r0, 0x4 @@ -1418,7 +1418,7 @@ sub_80A1A94: @ 80A1A94 adds r0, r4 b _080A1B1A .align 2, 0 -_080A1AD4: .4byte gUnknown_203AD30 +_080A1AD4: .4byte gSpecialVar_ItemId _080A1AD8: .4byte 0x0000ffff _080A1ADC: .4byte 0x00000803 _080A1AE0: .4byte 0x00000804 @@ -1527,7 +1527,7 @@ ItemUseOutOfBattle_EscapeRope: @ 80A1BAC lsrs r0, 24 cmp r0, 0x1 bne _080A1BEC - ldr r0, _080A1BDC @ =gUnknown_203AD30 + ldr r0, _080A1BDC @ =gSpecialVar_ItemId ldrh r2, [r0] ldr r0, _080A1BE0 @ =gMapHeader ldrb r3, [r0, 0x14] @@ -1541,7 +1541,7 @@ ItemUseOutOfBattle_EscapeRope: @ 80A1BAC bl sub_80A103C b _080A1BFE .align 2, 0 -_080A1BDC: .4byte gUnknown_203AD30 +_080A1BDC: .4byte gSpecialVar_ItemId _080A1BE0: .4byte gMapHeader _080A1BE4: .4byte gUnknown_2039998 _080A1BE8: .4byte sub_80A1C08 @@ -1687,7 +1687,7 @@ sub_80A1CF8: @ 80A1CF8 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _080A1D2C @ =gUnknown_203AD30 + ldr r0, _080A1D2C @ =gSpecialVar_ItemId ldrh r2, [r0] ldr r3, _080A1D30 @ =0x0000ffff movs r0, 0x4 @@ -1708,7 +1708,7 @@ sub_80A1CF8: @ 80A1CF8 bl sub_8108B50 b _080A1D4C .align 2, 0 -_080A1D2C: .4byte gUnknown_203AD30 +_080A1D2C: .4byte gSpecialVar_ItemId _080A1D30: .4byte 0x0000ffff _080A1D34: .4byte gTasks _080A1D38: .4byte sub_80A1D58 @@ -1841,7 +1841,7 @@ sub_80A1E1C: @ 80A1E1C lsls r0, 24 cmp r0, 0 bne _080A1E48 - ldr r0, _080A1E44 @ =gUnknown_203AD30 + ldr r0, _080A1E44 @ =gSpecialVar_ItemId ldrh r0, [r0] movs r1, 0x1 bl sub_809A1D8 @@ -1850,7 +1850,7 @@ sub_80A1E1C: @ 80A1E1C bl sub_8108B50 b _080A1E54 .align 2, 0 -_080A1E44: .4byte gUnknown_203AD30 +_080A1E44: .4byte gSpecialVar_ItemId _080A1E48: ldr r2, _080A1E5C @ =gUnknown_8416631 ldr r3, _080A1E60 @ =sub_810A1F8 @@ -1895,7 +1895,7 @@ sub_80A1E7C: @ 80A1E7C muls r0, r2 ldr r1, _080A1EC4 @ =gPlayerParty adds r0, r1 - ldr r1, _080A1EC8 @ =gUnknown_203AD30 + ldr r1, _080A1EC8 @ =gSpecialVar_ItemId ldrh r1, [r1] lsls r2, 24 lsrs r2, 24 @@ -1915,7 +1915,7 @@ sub_80A1E7C: @ 80A1E7C _080A1EBC: .4byte gBattlerPartyIndexes _080A1EC0: .4byte gBattlerInMenuId _080A1EC4: .4byte gPlayerParty -_080A1EC8: .4byte gUnknown_203AD30 +_080A1EC8: .4byte gSpecialVar_ItemId _080A1ECC: .4byte gUnknown_84169DC _080A1ED0: .4byte sub_810A1F8 _080A1ED4: @@ -1953,7 +1953,7 @@ sub_80A1EF4: @ 80A1EF4 asrs r0, 16 cmp r0, 0x7 ble _080A1F36 - ldr r0, _080A1F40 @ =gUnknown_203AD30 + ldr r0, _080A1F40 @ =gSpecialVar_ItemId ldrh r4, [r0] movs r0, 0x1 bl PlaySE @@ -1973,7 +1973,7 @@ _080A1F36: bx r0 .align 2, 0 _080A1F3C: .4byte gTasks+0x8 -_080A1F40: .4byte gUnknown_203AD30 +_080A1F40: .4byte gSpecialVar_ItemId _080A1F44: .4byte sub_80A1F48 thumb_func_end sub_80A1EF4 @@ -2009,7 +2009,7 @@ sub_80A1F78: @ 80A1F78 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _080A1F9C @ =gUnknown_203AD30 + ldr r0, _080A1F9C @ =gSpecialVar_ItemId ldrh r0, [r0] bl GetPocketByItemId lsls r0, 24 @@ -2022,7 +2022,7 @@ sub_80A1F78: @ 80A1F78 bl sub_813D808 b _080A1FB0 .align 2, 0 -_080A1F9C: .4byte gUnknown_203AD30 +_080A1F9C: .4byte gSpecialVar_ItemId _080A1FA0: .4byte sub_81279E0 _080A1FA4: ldr r0, _080A1FB8 @ =sub_81279E0 @@ -2097,7 +2097,7 @@ sub_80A2010: @ 80A2010 cmp r0, 0 bne _080A2058 bl sub_80A1A44 - ldr r0, _080A2048 @ =gUnknown_203AD30 + ldr r0, _080A2048 @ =gSpecialVar_ItemId ldrh r2, [r0] ldr r3, _080A204C @ =0x0000ffff movs r0, 0x4 @@ -2111,7 +2111,7 @@ sub_80A2010: @ 80A2010 b _080A2060 .align 2, 0 _080A2044: .4byte gBattleTypeFlags -_080A2048: .4byte gUnknown_203AD30 +_080A2048: .4byte gSpecialVar_ItemId _080A204C: .4byte 0x0000ffff _080A2050: .4byte gStringVar4 _080A2054: .4byte sub_8108B50 @@ -2130,7 +2130,7 @@ ItemUseOutOfBattle_EnigmaBerry: @ 80A2068 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _080A208C @ =gUnknown_203AD30 + ldr r0, _080A208C @ =gSpecialVar_ItemId ldrh r0, [r0] bl GetItemEffectType lsls r0, 24 @@ -2146,7 +2146,7 @@ _080A2082: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080A208C: .4byte gUnknown_203AD30 +_080A208C: .4byte gSpecialVar_ItemId _080A2090: .4byte _080A2094 .align 2, 0 _080A2094: @@ -2259,7 +2259,7 @@ ItemUseInBattle_EnigmaBerry: @ 80A2194 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _080A21B4 @ =gUnknown_203AD30 + ldr r0, _080A21B4 @ =gSpecialVar_ItemId ldrh r0, [r0] bl GetItemEffectType lsls r0, 24 @@ -2272,7 +2272,7 @@ ItemUseInBattle_EnigmaBerry: @ 80A2194 ldr r0, [r0] mov pc, r0 .align 2, 0 -_080A21B4: .4byte gUnknown_203AD30 +_080A21B4: .4byte gSpecialVar_ItemId _080A21B8: .4byte _080A21BC .align 2, 0 _080A21BC: @@ -2324,7 +2324,7 @@ sub_80A2238: @ 80A2238 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, _080A2268 @ =gUnknown_203AD30 + ldr r0, _080A2268 @ =gSpecialVar_ItemId ldrh r0, [r0] bl GetPocketByItemId lsls r0, 24 @@ -2342,7 +2342,7 @@ sub_80A2238: @ 80A2238 bl sub_813EB20 b _080A228A .align 2, 0 -_080A2268: .4byte gUnknown_203AD30 +_080A2268: .4byte gSpecialVar_ItemId _080A226C: .4byte gStringVar4 _080A2270: .4byte gUnknown_8416425 _080A2274: .4byte sub_813E2B8 diff --git a/asm/itemfinder.s b/asm/itemfinder.s index d25a0c486..bf3e78ebc 100644 --- a/asm/itemfinder.s +++ b/asm/itemfinder.s @@ -369,14 +369,14 @@ sub_813EF40: @ 813EF40 adds r0, r5, 0 movs r1, 0x1 bl sub_80CC44C - ldr r1, _0813EF90 @ =gUnknown_20370C0 + ldr r1, _0813EF90 @ =gSpecialVar_0x8004 strh r0, [r1] adds r0, r5, 0 movs r1, 0 bl sub_80CC44C ldr r1, _0813EF94 @ =gSpecialVar_0x8005 strh r0, [r1] - ldr r0, _0813EF98 @ =gUnknown_20370C4 + ldr r0, _0813EF98 @ =gSpecialVar_0x8006 movs r5, 0x1 strh r5, [r0] ldrh r1, [r1] @@ -394,9 +394,9 @@ sub_813EF40: @ 813EF40 bx r0 .align 2, 0 _0813EF8C: .4byte gTasks+0x8 -_0813EF90: .4byte gUnknown_20370C0 +_0813EF90: .4byte gSpecialVar_0x8004 _0813EF94: .4byte gSpecialVar_0x8005 -_0813EF98: .4byte gUnknown_20370C4 +_0813EF98: .4byte gSpecialVar_0x8006 thumb_func_end sub_813EF40 thumb_func_start sub_813EF9C diff --git a/asm/learn_move.s b/asm/learn_move.s index fec6928d3..5068e6d16 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -182,7 +182,7 @@ sub_80E478C: @ 80E478C str r0, [r4] bl sub_80E4F54 ldr r0, [r4] - ldr r1, _080E47F4 @ =gUnknown_20370C0 + ldr r1, _080E47F4 @ =gSpecialVar_0x8004 ldrh r1, [r1] movs r2, 0x98 lsls r2, 2 @@ -205,7 +205,7 @@ sub_80E478C: @ 80E478C .align 2, 0 _080E47EC: .4byte gUnknown_203AAB4 _080E47F0: .4byte 0x00000a6c -_080E47F4: .4byte gUnknown_20370C0 +_080E47F4: .4byte gSpecialVar_0x8004 _080E47F8: .4byte sub_80E4620 _080E47FC: .4byte sub_80E4870 thumb_func_end sub_80E478C @@ -505,7 +505,7 @@ _080E4A88: beq _080E4AE0 ldr r0, _080E4AD8 @ =gUnknown_841E405 bl sub_80E48C0 - ldr r1, _080E4ADC @ =gUnknown_20370C0 + ldr r1, _080E4ADC @ =gSpecialVar_0x8004 movs r0, 0x1 strh r0, [r1] ldr r1, [r4] @@ -517,7 +517,7 @@ _080E4ACC: .4byte gPlayerParty _080E4AD0: .4byte 0x00000a67 _080E4AD4: .4byte 0xffff0000 _080E4AD8: .4byte gUnknown_841E405 -_080E4ADC: .4byte gUnknown_20370C0 +_080E4ADC: .4byte gSpecialVar_0x8004 _080E4AE0: ldr r1, [r4] movs r0, 0x10 @@ -567,11 +567,11 @@ _080E4B3A: beq _080E4B4C b _080E4EDA _080E4B40: - ldr r0, _080E4B48 @ =gUnknown_20370C0 + ldr r0, _080E4B48 @ =gSpecialVar_0x8004 strh r1, [r0] b _080E4ED2 .align 2, 0 -_080E4B48: .4byte gUnknown_20370C0 +_080E4B48: .4byte gSpecialVar_0x8004 _080E4B4C: ldr r0, _080E4B54 @ =gUnknown_203AAB4 ldr r1, [r0] @@ -931,7 +931,7 @@ _080E4DB4: ldr r1, [r7] movs r0, 0x1E strb r0, [r1] - ldr r1, _080E4E6C @ =gUnknown_20370C0 + ldr r1, _080E4E6C @ =gSpecialVar_0x8004 movs r0, 0x1 strh r0, [r1] b _080E4EDA @@ -943,7 +943,7 @@ _080E4E5C: .4byte 0x00000261 _080E4E60: .4byte 0x00000a67 _080E4E64: .4byte gStringVar2 _080E4E68: .4byte gUnknown_841E493 -_080E4E6C: .4byte gUnknown_20370C0 +_080E4E6C: .4byte gSpecialVar_0x8004 _080E4E70: ldr r0, _080E4E88 @ =gUnknown_841E4C0 bl sub_80E48C0 diff --git a/asm/librfu.s b/asm/librfu.s index 6995a9ac1..bdf816bd8 100644 --- a/asm/librfu.s +++ b/asm/librfu.s @@ -2769,11 +2769,11 @@ _081E0956: thumb_func_start sub_81E095C sub_81E095C: @ 81E095C push {lr} - ldr r2, _081E0964 @ =gUnknown_86FC068 + ldr r2, _081E0964 @ =_Str_RFU_MBOOT ldr r3, _081E0968 @ =0x30000F0 b _081E0976 .align 2, 0 -_081E0964: .4byte gUnknown_86FC068 +_081E0964: .4byte _Str_RFU_MBOOT _081E0968: .4byte 0x30000F0 _081E096C: ldrb r0, [r3] @@ -5794,7 +5794,7 @@ _081E1FF0: movs r2, 0 movs r0, 0x1 ands r0, r3 - ldr r4, _081E2020 @ =gUnknown_86FC03C + ldr r4, _081E2020 @ =_Str_RfuHeader cmp r0, 0 bne _081E2012 movs r1, 0x1 @@ -5818,7 +5818,7 @@ _081E2012: adds r1, 0xF b _081E202E .align 2, 0 -_081E2020: .4byte gUnknown_86FC03C +_081E2020: .4byte _Str_RfuHeader _081E2024: cmp r0, 0 bne _081E2030 @@ -6832,7 +6832,7 @@ rfu_STC_NI_constructLLSF: @ 81E2790 ldr r0, [r2] ldrb r0, [r0] lsls r0, 4 - ldr r1, _081E2810 @ =gUnknown_86FC03C + ldr r1, _081E2810 @ =_Str_RfuHeader adds r0, r1 mov r8, r0 ldrh r1, [r4] @@ -6883,7 +6883,7 @@ _081E27FA: b _081E285C .align 2, 0 _081E280C: .4byte gUnknown_3007460 -_081E2810: .4byte gUnknown_86FC03C +_081E2810: .4byte _Str_RfuHeader _081E2814: .4byte 0x00008022 _081E2818: ldr r0, _081E2844 @ =0x00008022 @@ -7083,7 +7083,7 @@ _081E297C: ldr r2, [r0] ldrb r0, [r2] lsls r0, 4 - ldr r1, _081E29F8 @ =gUnknown_86FC03C + ldr r1, _081E29F8 @ =_Str_RfuHeader adds r5, r0, r1 ldrh r0, [r4] movs r1, 0xF @@ -7142,7 +7142,7 @@ _081E29CE: b _081E2A0C .align 2, 0 _081E29F4: .4byte gUnknown_3007460 -_081E29F8: .4byte gUnknown_86FC03C +_081E29F8: .4byte _Str_RfuHeader _081E29FC: .4byte gUnknown_3007468 _081E2A00: movs r0, 0x10 @@ -7469,7 +7469,7 @@ rfu_STC_analyzeLLSF: @ 81E2C40 movs r1, 0x1 ands r0, r1 lsls r0, 4 - ldr r1, _081E2C78 @ =gUnknown_86FC03C + ldr r1, _081E2C78 @ =_Str_RfuHeader adds r6, r0, r1 ldrb r0, [r6] cmp r3, r0 @@ -7478,7 +7478,7 @@ rfu_STC_analyzeLLSF: @ 81E2C40 b _081E2E6E .align 2, 0 _081E2C74: .4byte gUnknown_3007460 -_081E2C78: .4byte gUnknown_86FC03C +_081E2C78: .4byte _Str_RfuHeader _081E2C7C: movs r5, 0 movs r4, 0 @@ -8877,12 +8877,12 @@ _081E3726: cmp r0, 0x3 bhi _081E373C lsls r0, 1 - ldr r1, _081E3738 @ =gUnknown_86FC074 + ldr r1, _081E3738 @ =_Str_Sio32ID adds r0, r1 ldrh r0, [r0] b _081E373E .align 2, 0 -_081E3738: .4byte gUnknown_86FC074 +_081E3738: .4byte _Str_Sio32ID _081E373C: ldr r0, _081E3794 @ =0x00008001 _081E373E: diff --git a/asm/link.s b/asm/link.s index 71f4c718b..929180d83 100644 --- a/asm/link.s +++ b/asm/link.s @@ -232,7 +232,7 @@ sub_8009640: @ 8009640 ldr r0, _080096D4 @ =sub_800978C bl SetVBlankCallback bl ResetBlockSend - ldr r1, _080096D8 @ =gUnknown_202271A + ldr r1, _080096D8 @ =gLinkType ldr r2, _080096DC @ =0x00001111 adds r0, r2, 0 strh r0, [r1] @@ -283,7 +283,7 @@ _08009670: bx r0 .align 2, 0 _080096D4: .4byte sub_800978C -_080096D8: .4byte gUnknown_202271A +_080096D8: .4byte gLinkType _080096DC: .4byte 0x00001111 _080096E0: .4byte gMain _080096E4: .4byte gSaveBlock2Ptr @@ -297,17 +297,17 @@ _080096F4: .4byte c2_08009A8C sub_80096F8: @ 80096F8 lsls r0, 24 lsrs r0, 24 - ldr r1, _08009704 @ =gUnknown_2022720 + ldr r1, _08009704 @ =gLocalLinkPlayer strh r0, [r1, 0x18] bx lr .align 2, 0 -_08009704: .4byte gUnknown_2022720 +_08009704: .4byte gLocalLinkPlayer thumb_func_end sub_80096F8 thumb_func_start sub_8009708 sub_8009708: @ 8009708 push {r4,r5,lr} - ldr r5, _08009774 @ =gUnknown_2022720 + ldr r5, _08009774 @ =gLocalLinkPlayer ldr r4, _08009778 @ =gSaveBlock2Ptr ldr r1, [r4] ldrb r2, [r1, 0xA] @@ -327,7 +327,7 @@ sub_8009708: @ 8009708 ldr r0, [r4] ldrb r0, [r0, 0x8] strb r0, [r5, 0x13] - ldr r0, _0800977C @ =gUnknown_202271A + ldr r0, _0800977C @ =gLinkType ldrh r0, [r0] str r0, [r5, 0x14] ldr r0, _08009780 @ =gGameLanguage @@ -359,9 +359,9 @@ _0800976E: pop {r0} bx r0 .align 2, 0 -_08009774: .4byte gUnknown_2022720 +_08009774: .4byte gLocalLinkPlayer _08009778: .4byte gSaveBlock2Ptr -_0800977C: .4byte gUnknown_202271A +_0800977C: .4byte gLinkType _08009780: .4byte gGameLanguage _08009784: .4byte gGameVersion _08009788: .4byte 0x00000844 @@ -380,7 +380,7 @@ sub_800978C: @ 800978C thumb_func_start sub_80097A0 sub_80097A0: @ 80097A0 push {lr} - ldr r3, _080097C0 @ =gUnknown_2022718 + ldr r3, _080097C0 @ =gLinkOpen ldr r1, _080097C4 @ =gUnknown_3003F50 ldr r2, _080097C8 @ =0x0000efff adds r0, r1, 0 @@ -396,7 +396,7 @@ _080097AC: pop {r0} bx r0 .align 2, 0 -_080097C0: .4byte gUnknown_2022718 +_080097C0: .4byte gLinkOpen _080097C4: .4byte gUnknown_3003F50 _080097C8: .4byte 0x0000efff thumb_func_end sub_80097A0 @@ -519,7 +519,7 @@ sub_80098B8: @ 80098B8 beq _080098CC bl sub_80F8DC0 _080098CC: - ldr r0, _080098E4 @ =gUnknown_2022718 + ldr r0, _080098E4 @ =gLinkOpen strb r4, [r0] bl sub_800B29C pop {r4} @@ -528,7 +528,7 @@ _080098CC: .align 2, 0 _080098DC: .4byte gUnknown_3003F64 _080098E0: .4byte gUnknown_3003F3C -_080098E4: .4byte gUnknown_2022718 +_080098E4: .4byte gLinkOpen thumb_func_end sub_80098B8 thumb_func_start TestBlockTransfer @@ -597,7 +597,7 @@ _08009958: cmp r0, 0 beq _08009994 lsls r0, r5, 8 - ldr r1, _080099C0 @ =gUnknown_2022118 + ldr r1, _080099C0 @ =gBlockRecvBuffer adds r0, r1 lsls r4, r5, 1 adds r1, r4, r5 @@ -614,7 +614,7 @@ _08009958: ldrh r0, [r4] cmp r0, r8 beq _08009994 - ldr r0, _080099C8 @ =gUnknown_2022110 + ldr r0, _080099C8 @ =gLinkTestDebugValuesEnabled strb r6, [r0] ldr r0, _080099CC @ =gUnknown_2022111 strb r6, [r0] @@ -637,9 +637,9 @@ _080099B0: .4byte gUnknown_3000E08 _080099B4: .4byte gUnknown_3000E18 _080099B8: .4byte gUnknown_3000E60 _080099BC: .4byte 0x00000342 -_080099C0: .4byte gUnknown_2022118 +_080099C0: .4byte gBlockRecvBuffer _080099C4: .4byte gUnknown_3003F88 -_080099C8: .4byte gUnknown_2022110 +_080099C8: .4byte gLinkTestDebugValuesEnabled _080099CC: .4byte gUnknown_2022111 thumb_func_end TestBlockTransfer @@ -705,7 +705,7 @@ _08009A38: beq _08009A46 bl sub_800AAC0 _08009A46: - ldr r0, _08009A80 @ =gUnknown_2022110 + ldr r0, _08009A80 @ =gLinkTestDebugValuesEnabled ldrb r0, [r0] cmp r0, 0 beq _08009A66 @@ -731,7 +731,7 @@ _08009A70: .4byte gMain _08009A74: .4byte gUnknown_3003F84 _08009A78: .4byte gHeap + 0x4000 _08009A7C: .4byte 0x00002004 -_08009A80: .4byte gUnknown_2022110 +_08009A80: .4byte gLinkTestDebugValuesEnabled _08009A84: .4byte gLinkVSyncDisabled _08009A88: .4byte gUnknown_3003F80 thumb_func_end LinkTestProcessKeyInput @@ -756,14 +756,14 @@ c2_08009A8C: @ 8009A8C LinkMain2: @ 8009AB0 push {r4,r5,lr} adds r4, r0, 0 - ldr r0, _08009AC0 @ =gUnknown_2022718 + ldr r0, _08009AC0 @ =gLinkOpen ldrb r0, [r0] cmp r0, 0 bne _08009AC4 movs r0, 0 b _08009B0C .align 2, 0 -_08009AC0: .4byte gUnknown_2022718 +_08009AC0: .4byte gLinkOpen _08009AC4: movs r1, 0 ldr r5, _08009B14 @ =gUnknown_3003EC4 @@ -960,7 +960,7 @@ _08009C38: ldr r0, _08009C7C @ =gUnknown_3003E70 adds r2, r0, 0 adds r2, 0x10 - ldr r1, _08009C80 @ =gUnknown_2022720 + ldr r1, _08009C80 @ =gLocalLinkPlayer ldm r1!, {r3-r5} stm r2!, {r3-r5} ldm r1!, {r3,r6,r7} @@ -989,7 +989,7 @@ _08009C38: b _08009E3E .align 2, 0 _08009C7C: .4byte gUnknown_3003E70 -_08009C80: .4byte gUnknown_2022720 +_08009C80: .4byte gLocalLinkPlayer _08009C84: .4byte gUnknown_82345C0 _08009C88: ldr r1, _08009C90 @ =gUnknown_3003F28 @@ -1062,7 +1062,7 @@ _08009D08: .4byte gDecompressionBuffer _08009D0C: .4byte gUnknown_3003ED0 _08009D10: movs r2, 0 - ldr r1, _08009DC4 @ =gUnknown_2022118 + ldr r1, _08009DC4 @ =gBlockRecvBuffer mov r9, r1 adds r7, r3, 0 ldr r3, _08009DC8 @ =gUnknown_3003ED0 @@ -1106,7 +1106,7 @@ _08009D40: cmp r0, 0x1 bne _08009DE6 lsls r1, r6, 8 - ldr r0, _08009DC4 @ =gUnknown_2022118 + ldr r0, _08009DC4 @ =gBlockRecvBuffer adds r1, r0 mov r8, r1 lsls r0, r6, 3 @@ -1152,7 +1152,7 @@ _08009DBC: bl SetMainCallback2 b _08009E3E .align 2, 0 -_08009DC4: .4byte gUnknown_2022118 +_08009DC4: .4byte gBlockRecvBuffer _08009DC8: .4byte gUnknown_3003ED0 _08009DCC: .4byte gUnknown_3003EB8 _08009DD0: .4byte gLinkPlayers @@ -1318,12 +1318,12 @@ _08009F04: .4byte 0x0000cccc _08009F08: ldr r0, _08009F14 @ =gUnknown_3003F50 strh r2, [r0] - ldr r1, _08009F18 @ =gUnknown_202271A + ldr r1, _08009F18 @ =gLinkType ldrh r1, [r1] b _08009FD4 .align 2, 0 _08009F14: .4byte gUnknown_3003F50 -_08009F18: .4byte gUnknown_202271A +_08009F18: .4byte gLinkType _08009F1C: ldr r0, _08009F28 @ =gUnknown_3003F50 strh r2, [r0] @@ -1373,12 +1373,12 @@ _08009F74: .4byte gUnknown_3000E08 _08009F78: ldr r0, _08009F84 @ =gUnknown_3003F50 strh r2, [r0] - ldr r1, _08009F88 @ =gUnknown_203AD30 + ldr r1, _08009F88 @ =gSpecialVar_ItemId ldrh r1, [r1] b _08009FD4 .align 2, 0 _08009F84: .4byte gUnknown_3003F50 -_08009F88: .4byte gUnknown_203AD30 +_08009F88: .4byte gSpecialVar_ItemId _08009F8C: ldr r0, _08009F98 @ =gUnknown_3003F50 strh r2, [r0] @@ -1554,14 +1554,14 @@ sub_800A0B4: @ 800A0B4 ldr r0, _0800A0C8 @ =gUnknown_3000E54 movs r1, 0 str r1, [r0] - ldr r0, _0800A0CC @ =gUnknown_202271C + ldr r0, _0800A0CC @ =gLinkTimeOutCounter strh r1, [r0] bl sub_8009804 pop {r0} bx r0 .align 2, 0 _0800A0C8: .4byte gUnknown_3000E54 -_0800A0CC: .4byte gUnknown_202271C +_0800A0CC: .4byte gLinkTimeOutCounter thumb_func_end sub_800A0B4 thumb_func_start sub_800A0D0 @@ -1687,7 +1687,7 @@ _0800A1BC: .align 2, 0 _0800A1C4: .4byte gUnknown_3000E54 _0800A1C8: - ldr r0, _0800A1E8 @ =gUnknown_202271C + ldr r0, _0800A1E8 @ =gLinkTimeOutCounter ldrh r1, [r0] adds r1, 0x1 strh r1, [r0] @@ -1706,7 +1706,7 @@ _0800A1E2: pop {r1} bx r1 .align 2, 0 -_0800A1E8: .4byte gUnknown_202271C +_0800A1E8: .4byte gLinkTimeOutCounter _0800A1EC: .4byte gUnknown_3000E54 thumb_func_end sub_800A0D0 @@ -1844,7 +1844,7 @@ _0800A2C0: str r7, [r4, 0x4] b _0800A2EA _0800A2D8: - ldr r5, _0800A304 @ =gUnknown_2022618 + ldr r5, _0800A304 @ =gBlockSendBuffer cmp r7, r5 beq _0800A2E8 adds r0, r5, 0 @@ -1868,7 +1868,7 @@ _0800A2FE: pop {r1} bx r1 .align 2, 0 -_0800A304: .4byte gUnknown_2022618 +_0800A304: .4byte gBlockSendBuffer _0800A308: .4byte 0x0000bbbb _0800A30C: .4byte gUnknown_3003F80 _0800A310: .4byte LinkCB_BlockSendBegin @@ -2707,7 +2707,7 @@ sub_800A900: @ 800A900 ldr r1, _0800A938 @ =gUnknown_3003F60 strb r0, [r1] ldr r4, _0800A93C @ =gLinkPlayers - ldr r3, _0800A940 @ =gUnknown_20227C8 + ldr r3, _0800A940 @ =gSavedLinkPlayers movs r2, 0x4 _0800A914: adds r0, r3, 0 @@ -2730,7 +2730,7 @@ _0800A914: _0800A934: .4byte gUnknown_3003F40 _0800A938: .4byte gUnknown_3003F60 _0800A93C: .4byte gLinkPlayers -_0800A940: .4byte gUnknown_20227C8 +_0800A940: .4byte gSavedLinkPlayers thumb_func_end sub_800A900 thumb_func_start sub_800A944 @@ -2761,7 +2761,7 @@ sub_800A95C: @ 800A95C cmp r5, r2 bge _0800A986 ldr r1, _0800A994 @ =gLinkPlayers - ldr r0, _0800A998 @ =gUnknown_20227C8 + ldr r0, _0800A998 @ =gSavedLinkPlayers adds r4, r0, 0x4 adds r3, r1, 0x4 _0800A972: @@ -2785,7 +2785,7 @@ _0800A986: .align 2, 0 _0800A990: .4byte gUnknown_3003F40 _0800A994: .4byte gLinkPlayers -_0800A998: .4byte gUnknown_20227C8 +_0800A998: .4byte gSavedLinkPlayers _0800A99C: movs r0, 0x1 _0800A99E: @@ -2804,7 +2804,7 @@ sub_800A9A4: @ 800A9A4 ldrb r0, [r0] cmp r4, r0 bcs _0800AA04 - ldr r6, _0800AA14 @ =gUnknown_20227C8 + ldr r6, _0800AA14 @ =gSavedLinkPlayers ldr r5, _0800AA18 @ =gLinkPlayers movs r0, 0x8 adds r0, r6 @@ -2852,7 +2852,7 @@ _0800AA04: bx r0 .align 2, 0 _0800AA10: .4byte gUnknown_3003F40 -_0800AA14: .4byte gUnknown_20227C8 +_0800AA14: .4byte gSavedLinkPlayers _0800AA18: .4byte gLinkPlayers _0800AA1C: .4byte gUnknown_3003EAC _0800AA20: .4byte c2_800ACD4 @@ -3169,7 +3169,7 @@ _0800AC54: .4byte gUnknown_3003F80 thumb_func_start sub_800AC58 sub_800AC58: @ 800AC58 push {lr} - ldr r0, _0800AC9C @ =gUnknown_2022718 + ldr r0, _0800AC9C @ =gLinkOpen ldrb r0, [r0] cmp r0, 0 beq _0800AC98 @@ -3184,7 +3184,7 @@ sub_800AC58: @ 800AC58 ldrb r0, [r0] cmp r0, 0 bne _0800AC8E - ldr r1, _0800ACA8 @ =gUnknown_2022854 + ldr r1, _0800ACA8 @ =sLinkErrorBuffer str r2, [r1] ldr r0, _0800ACAC @ =gUnknown_3004F70 ldrb r0, [r0] @@ -3203,10 +3203,10 @@ _0800AC98: pop {r0} bx r0 .align 2, 0 -_0800AC9C: .4byte gUnknown_2022718 +_0800AC9C: .4byte gLinkOpen _0800ACA0: .4byte gUnknown_3003F20 _0800ACA4: .4byte gUnknown_3003F38 -_0800ACA8: .4byte gUnknown_2022854 +_0800ACA8: .4byte sLinkErrorBuffer _0800ACAC: .4byte gUnknown_3004F70 _0800ACB0: .4byte gUnknown_3003FA0 _0800ACB4: .4byte c2_800ACD4 @@ -3216,7 +3216,7 @@ _0800ACB8: .4byte gUnknown_3003EAC thumb_func_start sub_800ACBC sub_800ACBC: @ 800ACBC push {r4,lr} - ldr r4, _0800ACD0 @ =gUnknown_2022854 + ldr r4, _0800ACD0 @ =sLinkErrorBuffer str r0, [r4] strb r1, [r4, 0x5] strb r2, [r4, 0x4] @@ -3225,7 +3225,7 @@ sub_800ACBC: @ 800ACBC pop {r0} bx r0 .align 2, 0 -_0800ACD0: .4byte gUnknown_2022854 +_0800ACD0: .4byte sLinkErrorBuffer thumb_func_end sub_800ACBC thumb_func_start c2_800ACD4 @@ -3257,7 +3257,7 @@ c2_800ACD4: @ 800ACD4 ldrb r0, [r1] cmp r0, 0 beq _0800AD30 - ldr r0, _0800ADF4 @ =gUnknown_2022854 + ldr r0, _0800ADF4 @ =sLinkErrorBuffer ldrb r0, [r0, 0x6] cmp r0, 0 bne _0800AD2C @@ -3338,7 +3338,7 @@ _0800ADE4: .4byte gMPlayInfo_SE2 _0800ADE8: .4byte gMPlayInfo_SE3 _0800ADEC: .4byte gHeap _0800ADF0: .4byte gUnknown_3003F3C -_0800ADF4: .4byte gUnknown_2022854 +_0800ADF4: .4byte sLinkErrorBuffer _0800ADF8: .4byte sub_800978C _0800ADFC: .4byte gUnknown_82345E8 _0800AE00: .4byte gUnknown_2022860 @@ -3492,14 +3492,14 @@ _0800AF50: beq _0800AF7A b _0800AFC4 _0800AF5A: - ldr r0, _0800AF68 @ =gUnknown_2022854 + ldr r0, _0800AF68 @ =sLinkErrorBuffer ldrb r0, [r0, 0x6] cmp r0, 0 beq _0800AF6C bl sub_800AE1C b _0800AFC4 .align 2, 0 -_0800AF68: .4byte gUnknown_2022854 +_0800AF68: .4byte sLinkErrorBuffer _0800AF6C: bl sub_800AED0 b _0800AFC4 @@ -3563,7 +3563,7 @@ _0800AFC4: bl PlaySE movs r0, 0 strb r0, [r4] - ldr r1, _0800B00C @ =gUnknown_2022854 + ldr r1, _0800B00C @ =sLinkErrorBuffer movs r0, 0 strb r0, [r1, 0x6] bl sub_8079B7C @@ -3573,7 +3573,7 @@ _0800AFFC: .4byte gUnknown_8234610 _0800B000: .4byte gUnknown_841DF4C _0800B004: .4byte gMain _0800B008: .4byte gUnknown_3003F3C -_0800B00C: .4byte gUnknown_2022854 +_0800B00C: .4byte sLinkErrorBuffer _0800B010: cmp r2, 0x2 bne _0800B02E @@ -3683,7 +3683,7 @@ sub_800B0B4: @ 800B0B4 ldr r1, _0800B100 @ =gUnknown_3003E70 adds r2, r1, 0 adds r2, 0x10 - ldr r0, _0800B104 @ =gUnknown_2022720 + ldr r0, _0800B104 @ =gLocalLinkPlayer ldm r0!, {r3-r5} stm r2!, {r3-r5} ldm r0!, {r3,r4,r6} @@ -3707,7 +3707,7 @@ sub_800B0B4: @ 800B0B4 strh r2, [r0] ldrb r2, [r3, 0x2] strb r2, [r0, 0x2] - ldr r0, _0800B10C @ =gUnknown_2022618 + ldr r0, _0800B10C @ =gBlockSendBuffer movs r2, 0x3C bl memcpy pop {r4-r6} @@ -3715,9 +3715,9 @@ sub_800B0B4: @ 800B0B4 bx r0 .align 2, 0 _0800B100: .4byte gUnknown_3003E70 -_0800B104: .4byte gUnknown_2022720 +_0800B104: .4byte gLocalLinkPlayer _0800B108: .4byte gUnknown_82345C0 -_0800B10C: .4byte gUnknown_2022618 +_0800B10C: .4byte gBlockSendBuffer thumb_func_end sub_800B0B4 thumb_func_start sub_800B110 @@ -3726,7 +3726,7 @@ sub_800B110: @ 800B110 lsls r0, 24 lsrs r0, 24 lsls r2, r0, 8 - ldr r1, _0800B168 @ =gUnknown_2022118 + ldr r1, _0800B168 @ =gBlockRecvBuffer adds r4, r2, r1 lsls r2, r0, 3 subs r2, r0 @@ -3764,7 +3764,7 @@ _0800B160: pop {r0} bx r0 .align 2, 0 -_0800B168: .4byte gUnknown_2022118 +_0800B168: .4byte gBlockRecvBuffer _0800B16C: .4byte gLinkPlayers _0800B170: .4byte gUnknown_82345C0 _0800B174: .4byte c2_800ACD4 diff --git a/asm/link_rfu.s b/asm/link_rfu.s index c339bfdff..08f81f729 100644 --- a/asm/link_rfu.s +++ b/asm/link_rfu.s @@ -3504,7 +3504,7 @@ sub_80FEE24: @ 80FEE24 thumb_func_start sub_80FEE44 sub_80FEE44: @ 80FEE44 push {lr} - ldr r0, _080FEE58 @ =gUnknown_20370C0 + ldr r0, _080FEE58 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0xE bhi _080FEF12 @@ -3514,7 +3514,7 @@ sub_80FEE44: @ 80FEE44 ldr r0, [r0] mov pc, r0 .align 2, 0 -_080FEE58: .4byte gUnknown_20370C0 +_080FEE58: .4byte gSpecialVar_0x8004 _080FEE5C: .4byte _080FEE60 .align 2, 0 _080FEE60: @@ -3585,7 +3585,7 @@ _080FEEF4: ldr r1, [r2] adds r1, r0 _080FEF08: - ldr r0, _080FEF24 @ =gUnknown_20370C0 + ldr r0, _080FEF24 @ =gSpecialVar_0x8004 ldrb r0, [r0] ldr r2, _080FEF28 @ =sub_80568C4 bl sub_80FEBAC @@ -3596,14 +3596,14 @@ _080FEF12: _080FEF18: .4byte gSaveBlock1Ptr _080FEF1C: .4byte gSpecialVar_0x8005 _080FEF20: .4byte 0x00002cd0 -_080FEF24: .4byte gUnknown_20370C0 +_080FEF24: .4byte gSpecialVar_0x8004 _080FEF28: .4byte sub_80568C4 thumb_func_end sub_80FEE44 thumb_func_start sub_80FEF2C sub_80FEF2C: @ 80FEF2C push {r4,lr} - ldr r4, _080FEF44 @ =gUnknown_20370C0 + ldr r4, _080FEF44 @ =gSpecialVar_0x8004 ldr r0, _080FEF48 @ =gUnknown_843F29C movs r1, 0x4 bl sub_80FFEDC @@ -3614,14 +3614,14 @@ sub_80FEF2C: @ 80FEF2C pop {r0} bx r0 .align 2, 0 -_080FEF44: .4byte gUnknown_20370C0 +_080FEF44: .4byte gSpecialVar_0x8004 _080FEF48: .4byte gUnknown_843F29C thumb_func_end sub_80FEF2C thumb_func_start sub_80FEF4C sub_80FEF4C: @ 80FEF4C push {r4,lr} - ldr r4, _080FEF64 @ =gUnknown_20370C0 + ldr r4, _080FEF64 @ =gSpecialVar_0x8004 ldr r0, _080FEF68 @ =gUnknown_843F2A4 movs r1, 0x4 bl sub_80FFEDC @@ -3632,7 +3632,7 @@ sub_80FEF4C: @ 80FEF4C pop {r0} bx r0 .align 2, 0 -_080FEF64: .4byte gUnknown_20370C0 +_080FEF64: .4byte gSpecialVar_0x8004 _080FEF68: .4byte gUnknown_843F2A4 thumb_func_end sub_80FEF4C @@ -4384,12 +4384,12 @@ _080FF4C8: .align 2, 0 _080FF4D8: .4byte gUnknown_203ACE8 _080FF4DC: - ldr r0, _080FF4E4 @ =gUnknown_20370D0 + ldr r0, _080FF4E4 @ =gSpecialVar_Result strh r1, [r0] movs r0, 0x17 b _080FF4EA .align 2, 0 -_080FF4E4: .4byte gUnknown_20370D0 +_080FF4E4: .4byte gSpecialVar_Result _080FF4E8: movs r0, 0 _080FF4EA: @@ -4425,7 +4425,7 @@ _080FF510: .align 2, 0 _080FF520: .4byte gUnknown_203ACE8 _080FF524: - ldr r4, _080FF538 @ =gUnknown_20370D0 + ldr r4, _080FF538 @ =gSpecialVar_Result bl sub_80FF78C lsls r0, 24 lsrs r0, 24 @@ -4434,7 +4434,7 @@ _080FF524: movs r0, 0x17 b _080FF53E .align 2, 0 -_080FF538: .4byte gUnknown_20370D0 +_080FF538: .4byte gSpecialVar_Result _080FF53C: movs r0, 0 _080FF53E: diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index f59f1ea87..0bfd71538 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -142,7 +142,7 @@ sub_80F86F4: @ 80F86F4 lsrs r1, r0, 16 cmp r1, 0 bne _080F8722 - ldr r0, _080F8734 @ =gUnknown_202271A + ldr r0, _080F8734 @ =gLinkType strh r1, [r0] movs r0, 0 bl sub_80FB128 @@ -158,7 +158,7 @@ _080F8722: _080F8728: .4byte gUnknown_3001190 _080F872C: .4byte 0x00000e64 _080F8730: .4byte gIntrTable + 0x4 -_080F8734: .4byte gUnknown_202271A +_080F8734: .4byte gLinkType thumb_func_end sub_80F86F4 thumb_func_start sub_80F8738 @@ -2543,7 +2543,7 @@ _080F99DA: orrs r0, r3 str r0, [r1] movs r4, 0 - ldr r0, _080F9A8C @ =gUnknown_2022118 + ldr r0, _080F9A8C @ =gBlockRecvBuffer mov r9, r0 mov r12, r2 mov r1, r8 @@ -2617,12 +2617,12 @@ _080F9A78: beq _080F9A80 b _080F9BF8 _080F9A80: - ldr r0, _080F9A8C @ =gUnknown_2022118 + ldr r0, _080F9A8C @ =gBlockRecvBuffer bl sub_80FAA58 b _080F9BF8 .align 2, 0 _080F9A88: .4byte gUnknown_3005450 -_080F9A8C: .4byte gUnknown_2022118 +_080F9A8C: .4byte gBlockRecvBuffer _080F9A90: .4byte gUnknown_3003ED0 _080F9A94: .4byte gUnknown_843EBD4 _080F9A98: .4byte gUnknown_3003F64 @@ -3204,7 +3204,7 @@ _080F9EC0: str r7, [r5, 0x70] b _080F9F14 _080F9F02: - ldr r4, _080F9F38 @ =gUnknown_2022618 + ldr r4, _080F9F38 @ =gBlockSendBuffer cmp r7, r4 beq _080F9F12 adds r0, r4, 0 @@ -3232,7 +3232,7 @@ _080F9F2A: pop {r1} bx r1 .align 2, 0 -_080F9F38: .4byte gUnknown_2022618 +_080F9F38: .4byte gBlockSendBuffer _080F9F3C: .4byte gUnknown_3005450 _080F9F40: .4byte rfufunc_80F9F44 thumb_func_end sub_80F9E60 @@ -4872,7 +4872,7 @@ _080FAB70: adds r0, r4, 0 bl ResetBlockReceivedFlag lsls r2, r4, 8 - ldr r0, _080FAB9C @ =gUnknown_2022118 + ldr r0, _080FAB9C @ =gBlockRecvBuffer adds r2, r0 ldr r1, _080FABA0 @ =gLinkPlayers lsls r0, r4, 3 @@ -4890,10 +4890,10 @@ _080FAB70: bl sub_800B284 b _080FAC2E .align 2, 0 -_080FAB9C: .4byte gUnknown_2022118 +_080FAB9C: .4byte gBlockRecvBuffer _080FABA0: .4byte gLinkPlayers _080FABA4: - ldr r5, _080FAC40 @ =gUnknown_2022618 + ldr r5, _080FAC40 @ =gBlockSendBuffer adds r1, r5, 0 ldr r0, _080FAC44 @ =gUnknown_843EDE4 "PokemonSioInfo" ldm r0!, {r2-r4} @@ -4931,7 +4931,7 @@ _080FABC6: adds r0, 0x1 strh r0, [r1, 0x8] _080FABEE: - ldr r5, _080FAC40 @ =gUnknown_2022618 + ldr r5, _080FAC40 @ =gBlockSendBuffer ldr r1, _080FAC48 @ =gUnknown_3005450 ldrb r0, [r1, 0xD] strb r0, [r5, 0xF] @@ -4955,7 +4955,7 @@ _080FAC04: mov r1, r12 movs r2, 0x8C bl memcpy - ldr r1, _080FAC40 @ =gUnknown_2022618 + ldr r1, _080FAC40 @ =gBlockSendBuffer movs r0, 0 movs r2, 0xA0 bl SendBlock @@ -4973,7 +4973,7 @@ _080FAC36: strh r0, [r1, 0x8] b _080FACD6 .align 2, 0 -_080FAC40: .4byte gUnknown_2022618 +_080FAC40: .4byte gBlockSendBuffer _080FAC44: .4byte gUnknown_843EDE4 _080FAC48: .4byte gUnknown_3005450 _080FAC4C: .4byte 0x00000996 @@ -5008,7 +5008,7 @@ _080FAC78: mov r0, sp movs r4, 0 strh r4, [r0] - ldr r1, _080FACE0 @ =gUnknown_2022118 + ldr r1, _080FACE0 @ =gBlockRecvBuffer ldr r2, _080FACE4 @ =0x0100007e bl CpuSet movs r0, 0 @@ -5046,7 +5046,7 @@ _080FACD6: pop {r0} bx r0 .align 2, 0 -_080FACE0: .4byte gUnknown_2022118 +_080FACE0: .4byte gBlockRecvBuffer _080FACE4: .4byte 0x0100007e _080FACE8: .4byte gUnknown_3005450 _080FACEC: .4byte 0x0000099e @@ -5095,13 +5095,13 @@ _080FAD3A: cmp r0, 0 beq _080FAD8A bl sub_800B0B4 - ldr r1, _080FAD50 @ =gUnknown_2022618 + ldr r1, _080FAD50 @ =gBlockSendBuffer movs r0, 0 movs r2, 0x3C bl SendBlock b _080FAD5E .align 2, 0 -_080FAD50: .4byte gUnknown_2022618 +_080FAD50: .4byte gBlockSendBuffer _080FAD54: bl sub_800A4BC lsls r0, 24 @@ -5119,7 +5119,7 @@ _080FAD66: ands r1, r0 cmp r1, 0 beq _080FAD8A - ldr r0, _080FAD90 @ =gUnknown_2022118 + ldr r0, _080FAD90 @ =gBlockRecvBuffer bl sub_80FA9FC movs r0, 0 bl ResetBlockReceivedFlag @@ -5132,7 +5132,7 @@ _080FAD8A: pop {r0} bx r0 .align 2, 0 -_080FAD90: .4byte gUnknown_2022118 +_080FAD90: .4byte gBlockRecvBuffer _080FAD94: .4byte gUnknown_3003F64 thumb_func_end sub_80FACF0 @@ -6870,7 +6870,7 @@ sub_80FBA78: @ 80FBA78 lsls r0, 24 cmp r0, 0 beq _080FBAEC - ldr r1, _080FBAF8 @ =gUnknown_202271A + ldr r1, _080FBAF8 @ =gLinkType ldr r2, _080FBAFC @ =0x00001111 adds r0, r2, 0 strh r0, [r1] @@ -6907,7 +6907,7 @@ _080FBAEC: bx r0 .align 2, 0 _080FBAF4: .4byte sub_80FBA64 -_080FBAF8: .4byte gUnknown_202271A +_080FBAF8: .4byte gLinkType _080FBAFC: .4byte 0x00001111 _080FBB00: .4byte gMain _080FBB04: .4byte gSaveBlock2Ptr diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index d67176ed4..d9f172a81 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -230,7 +230,7 @@ sub_8115A24: @ 8115A24 movs r0, 0 strb r0, [r1, 0xC] strb r0, [r1, 0xD] - ldr r1, _08115A64 @ =gUnknown_20370D0 + ldr r1, _08115A64 @ =gSpecialVar_Result strh r0, [r1] pop {r0} bx r0 @@ -239,7 +239,7 @@ _08115A54: .4byte sub_8115A68 _08115A58: .4byte gUnknown_203B05C _08115A5C: .4byte gTasks+0x8 _08115A60: .4byte gUnknown_3002024 -_08115A64: .4byte gUnknown_20370D0 +_08115A64: .4byte gSpecialVar_Result thumb_func_end sub_8115A24 thumb_func_start sub_8115A68 @@ -299,7 +299,7 @@ _08115A90: _08115B0C: ldr r3, _08115B4C @ =gUnknown_203B058 ldr r2, _08115B50 @ =gUnknown_8456CD8 - ldr r1, _08115B54 @ =gUnknown_20370C0 + ldr r1, _08115B54 @ =gSpecialVar_0x8004 ldrh r0, [r1] lsls r0, 2 adds r0, r2 @@ -328,7 +328,7 @@ _08115B0C: .align 2, 0 _08115B4C: .4byte gUnknown_203B058 _08115B50: .4byte gUnknown_8456CD8 -_08115B54: .4byte gUnknown_20370C0 +_08115B54: .4byte gSpecialVar_0x8004 _08115B58: .4byte gUnknown_203B059 _08115B5C: movs r0, 0x70 @@ -1083,22 +1083,22 @@ _0811617E: bl EnableBothScriptContexts adds r0, r4, 0 bl DestroyTask - ldr r1, _08116190 @ =gUnknown_20370D0 + ldr r1, _08116190 @ =gSpecialVar_Result movs r0, 0x5 strh r0, [r1] b _081161D8 .align 2, 0 -_08116190: .4byte gUnknown_20370D0 +_08116190: .4byte gSpecialVar_Result _08116194: bl EnableBothScriptContexts adds r0, r4, 0 bl DestroyTask - ldr r1, _081161A8 @ =gUnknown_20370D0 + ldr r1, _081161A8 @ =gSpecialVar_Result movs r0, 0x8 strh r0, [r1] b _081161D8 .align 2, 0 -_081161A8: .4byte gUnknown_20370D0 +_081161A8: .4byte gSpecialVar_Result _081161AC: bl sub_80FBA00 cmp r0, 0 @@ -1767,7 +1767,7 @@ BerryBlenderLinkJoinGroup: @ 81166F4 movs r0, 0 strb r0, [r1, 0x8] strb r0, [r1, 0x9] - ldr r1, _08116734 @ =gUnknown_20370D0 + ldr r1, _08116734 @ =gSpecialVar_Result strh r0, [r1] pop {r0} bx r0 @@ -1776,7 +1776,7 @@ _08116724: .4byte sub_8116738 _08116728: .4byte gUnknown_203B05C _0811672C: .4byte gTasks+0x8 _08116730: .4byte gUnknown_3002028 -_08116734: .4byte gUnknown_20370D0 +_08116734: .4byte gSpecialVar_Result thumb_func_end BerryBlenderLinkJoinGroup thumb_func_start sub_8116738 @@ -1828,7 +1828,7 @@ _08116760: .4byte _08116CEC _081167C0: ldr r5, _08116800 @ =gUnknown_84570C8 - ldr r4, _08116804 @ =gUnknown_20370C0 + ldr r4, _08116804 @ =gSpecialVar_0x8004 ldrh r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -1855,13 +1855,13 @@ _081167C0: b _08116D06 .align 2, 0 _08116800: .4byte gUnknown_84570C8 -_08116804: .4byte gUnknown_20370C0 +_08116804: .4byte gSpecialVar_0x8004 _08116808: .4byte gUnknown_203B058 _0811680C: adds r0, r6, 0 adds r0, 0x9 ldr r2, _08116830 @ =gUnknown_84591B8 - ldr r1, _08116834 @ =gUnknown_20370C0 + ldr r1, _08116834 @ =gSpecialVar_0x8004 ldrh r1, [r1] lsls r1, 2 adds r1, r2 @@ -1877,7 +1877,7 @@ _08116828: b _08116D06 .align 2, 0 _08116830: .4byte gUnknown_84591B8 -_08116834: .4byte gUnknown_20370C0 +_08116834: .4byte gSpecialVar_0x8004 _08116838: ldr r0, [r6, 0x4] movs r1, 0x4 @@ -1886,7 +1886,7 @@ _08116838: movs r1, 0x10 bl sub_811A5E4 ldr r0, [r6, 0x4] - ldr r1, _081168E8 @ =gUnknown_20370C0 + ldr r1, _081168E8 @ =gSpecialVar_0x8004 ldrh r1, [r1] bl sub_811A054 movs r4, 0 @@ -1950,7 +1950,7 @@ _08116838: strb r0, [r6, 0x8] b _08116D06 .align 2, 0 -_081168E8: .4byte gUnknown_20370C0 +_081168E8: .4byte gSpecialVar_0x8004 _081168EC: .4byte gUnknown_8456CD0 _081168F0: .4byte gUnknown_8456D4C _081168F4: .4byte gUnknown_8456D54 @@ -2361,19 +2361,19 @@ _08116C68: lsls r0, 24 cmp r0, 0 beq _08116D06 - ldr r0, _08116C94 @ =gUnknown_20370D0 + ldr r0, _08116C94 @ =gSpecialVar_Result movs r1, 0x6 b _08116CDC .align 2, 0 _08116C90: .4byte gUnknown_8457754 -_08116C94: .4byte gUnknown_20370D0 +_08116C94: .4byte gSpecialVar_Result _08116C98: bl sub_80FCE44 - ldr r0, _08116CA4 @ =gUnknown_20370D0 + ldr r0, _08116CA4 @ =gSpecialVar_Result movs r1, 0x5 b _08116CDC .align 2, 0 -_08116CA4: .4byte gUnknown_20370D0 +_08116CA4: .4byte gSpecialVar_Result _08116CA8: bl sub_80FCE44 adds r5, r6, 0 @@ -2397,7 +2397,7 @@ _08116CCE: lsls r0, 24 cmp r0, 0 beq _08116D06 - ldr r0, _08116CE8 @ =gUnknown_20370D0 + ldr r0, _08116CE8 @ =gSpecialVar_Result movs r1, 0x8 _08116CDC: strh r1, [r0] @@ -2406,7 +2406,7 @@ _08116CDC: b _08116D06 .align 2, 0 _08116CE4: .4byte gStringVar4 -_08116CE8: .4byte gUnknown_20370D0 +_08116CE8: .4byte gSpecialVar_Result _08116CEC: adds r0, r4, 0 bl DestroyTask @@ -2499,7 +2499,7 @@ sub_8116D60: @ 8116D60 adds r0, r5, 0 bl ConvertInternationalString ldr r1, _08116DD8 @ =gUnknown_84570C8 - ldr r0, _08116DDC @ =gUnknown_20370C0 + ldr r0, _08116DDC @ =gSpecialVar_0x8004 ldrh r0, [r0] adds r0, r1 ldrb r0, [r0] @@ -2525,7 +2525,7 @@ sub_8116D60: @ 8116D60 .align 2, 0 _08116DD4: .4byte gStringVar1 _08116DD8: .4byte gUnknown_84570C8 -_08116DDC: .4byte gUnknown_20370C0 +_08116DDC: .4byte gSpecialVar_0x8004 thumb_func_end sub_8116D60 thumb_func_start sub_8116DE0 @@ -3028,7 +3028,7 @@ _0811719C: eors r1, r2 lsls r1, 24 lsrs r1, 16 - ldr r2, _081171D4 @ =gUnknown_2022118 + ldr r2, _081171D4 @ =gBlockRecvBuffer adds r1, r2 movs r2, 0x64 bl memcpy @@ -3038,9 +3038,9 @@ _0811719C: b _081171FA .align 2, 0 _081171D0: .4byte gEnemyParty -_081171D4: .4byte gUnknown_2022118 +_081171D4: .4byte gBlockRecvBuffer _081171D8: - ldr r4, _08117204 @ =gUnknown_2022618 + ldr r4, _08117204 @ =gBlockSendBuffer ldr r0, _08117208 @ =gSaveBlock1Ptr ldr r1, [r0] ldr r0, _0811720C @ =0x00002cd0 @@ -3061,7 +3061,7 @@ _081171FA: strh r0, [r5, 0x8] b _0811725C .align 2, 0 -_08117204: .4byte gUnknown_2022618 +_08117204: .4byte gBlockSendBuffer _08117208: .4byte gSaveBlock1Ptr _0811720C: .4byte 0x00002cd0 _08117210: @@ -3077,7 +3077,7 @@ _08117210: eors r1, r0 lsls r1, 24 lsrs r1, 16 - ldr r0, _0811726C @ =gUnknown_2022118 + ldr r0, _0811726C @ =gBlockRecvBuffer adds r1, r0 adds r0, r4, 0 movs r2, 0xD8 @@ -3104,7 +3104,7 @@ _0811725C: bx r0 .align 2, 0 _08117268: .4byte gUnknown_2031CCC -_0811726C: .4byte gUnknown_2022118 +_0811726C: .4byte gBlockRecvBuffer _08117270: .4byte gUnknown_2031DA4 _08117274: .4byte gMain _08117278: .4byte c2_exit_to_overworld_2_switch @@ -3165,7 +3165,7 @@ _081172E0: .4byte gUnknown_2039624 _081172E4: .4byte gLinkPlayers _081172E8: lsls r0, r4, 8 - ldr r1, _08117338 @ =gUnknown_2022118 + ldr r1, _08117338 @ =gBlockRecvBuffer adds r1, r0, r1 adds r0, r5, 0 movs r2, 0x60 @@ -3192,7 +3192,7 @@ _08117302: eors r0, r1 lsls r0, 24 lsrs r0, 16 - ldr r1, _08117338 @ =gUnknown_2022118 + ldr r1, _08117338 @ =gBlockRecvBuffer adds r1, r0, r1 adds r0, r1, 0 adds r0, 0x60 @@ -3200,7 +3200,7 @@ _08117302: bl sub_81446D0 b _08117340 .align 2, 0 -_08117338: .4byte gUnknown_2022118 +_08117338: .4byte gBlockRecvBuffer _0811733C: bl sub_81446C4 _08117340: @@ -3396,7 +3396,7 @@ sub_81174B4: @ 81174B4 lsrs r5, 24 lsls r1, 16 lsrs r1, 16 - ldr r0, _08117524 @ =gUnknown_20370C0 + ldr r0, _08117524 @ =gSpecialVar_0x8004 strh r1, [r0] ldr r0, _08117528 @ =0x0000406f bl VarSet @@ -3432,7 +3432,7 @@ sub_81174B4: @ 81174B4 pop {r0} bx r0 .align 2, 0 -_08117524: .4byte gUnknown_20370C0 +_08117524: .4byte gSpecialVar_0x8004 _08117528: .4byte 0x0000406f _0811752C: .4byte gUnknown_3005030 _08117530: .4byte gUnknown_300502C @@ -3657,7 +3657,7 @@ _08117798: .4byte gMain _0811779C: .4byte sub_811C1C8 _081177A0: bl sub_80563F0 - ldr r0, _081177C4 @ =gUnknown_2022618 + ldr r0, _081177C4 @ =gBlockSendBuffer movs r1, 0x1 bl sub_8117594 bl sp000_heal_pokemon @@ -3670,13 +3670,13 @@ _081177A0: movs r2, 0x6 b _0811782E .align 2, 0 -_081177C4: .4byte gUnknown_2022618 +_081177C4: .4byte gBlockSendBuffer _081177C8: bl sub_80563F0 bl sp000_heal_pokemon bl SavePlayerParty bl LoadPlayerBag - ldr r0, _081177EC @ =gUnknown_2022618 + ldr r0, _081177EC @ =gBlockSendBuffer movs r1, 0x1 bl sub_8117594 movs r0, 0x2 @@ -3686,13 +3686,13 @@ _081177C8: movs r2, 0x6 b _0811782E .align 2, 0 -_081177EC: .4byte gUnknown_2022618 +_081177EC: .4byte gBlockSendBuffer _081177F0: bl sub_80563F0 bl sp000_heal_pokemon bl SavePlayerParty bl LoadPlayerBag - ldr r0, _08117814 @ =gUnknown_2022618 + ldr r0, _08117814 @ =gBlockSendBuffer movs r1, 0x1 bl sub_8117594 movs r0, 0x5 @@ -3701,9 +3701,9 @@ _081177F0: movs r1, 0x3 b _0811782C .align 2, 0 -_08117814: .4byte gUnknown_2022618 +_08117814: .4byte gBlockSendBuffer _08117818: - ldr r0, _0811783C @ =gUnknown_2022618 + ldr r0, _0811783C @ =gBlockSendBuffer movs r1, 0x1 bl sub_8117594 bl sub_80563F0 @@ -3720,7 +3720,7 @@ _0811782E: bl SetMainCallback2 b _081178E0 .align 2, 0 -_0811783C: .4byte gUnknown_2022618 +_0811783C: .4byte gBlockSendBuffer _08117840: .4byte sub_8117534 _08117844: ldr r0, _08117850 @ =sub_8117130 @@ -3746,14 +3746,14 @@ _08117872: bl sub_8128420 b _081178E0 _08117878: - ldr r0, _08117888 @ =gUnknown_2022618 + ldr r0, _08117888 @ =gBlockSendBuffer movs r1, 0 bl sub_8117594 ldr r0, _0811788C @ =sub_8117354 bl SetMainCallback2 b _081178E0 .align 2, 0 -_08117888: .4byte gUnknown_2022618 +_08117888: .4byte gBlockSendBuffer _0811788C: .4byte sub_8117354 _08117890: movs r0, 0x8 @@ -3791,7 +3791,7 @@ _081178C8: _081178E0: adds r0, r4, 0 bl DestroyTask - ldr r1, _081178FC @ =gUnknown_20370D0 + ldr r1, _081178FC @ =gSpecialVar_Result movs r0, 0x1 strh r0, [r1] bl ScriptContext2_Disable @@ -3801,7 +3801,7 @@ _081178E0: bx r0 .align 2, 0 _081178F8: .4byte sub_805671C -_081178FC: .4byte gUnknown_20370D0 +_081178FC: .4byte gSpecialVar_Result thumb_func_end sub_81175BC thumb_func_start sub_8117900 @@ -3832,13 +3832,13 @@ _08117928: beq _08117974 b _08117988 _08117932: - ldr r1, _08117940 @ =gUnknown_20370D0 + ldr r1, _08117940 @ =gSpecialVar_Result movs r0, 0x1 strh r0, [r1] bl EnableBothScriptContexts b _08117968 .align 2, 0 -_08117940: .4byte gUnknown_20370D0 +_08117940: .4byte gSpecialVar_Result _08117944: bl ScriptContext1_IsScriptSetUp lsls r0, 24 @@ -3931,7 +3931,7 @@ sub_81179CC: @ 81179CC strb r2, [r1, 0xC] strb r2, [r1, 0xD] strb r4, [r1, 0x18] - ldr r0, _08117A08 @ =gUnknown_20370D0 + ldr r0, _08117A08 @ =gSpecialVar_Result strh r2, [r0] pop {r4} pop {r0} @@ -3940,7 +3940,7 @@ sub_81179CC: @ 81179CC _081179FC: .4byte sub_8117A0C _08117A00: .4byte gUnknown_203B05C _08117A04: .4byte gTasks+0x8 -_08117A08: .4byte gUnknown_20370D0 +_08117A08: .4byte gSpecialVar_Result thumb_func_end sub_81179CC thumb_func_start sub_8117A0C @@ -4421,13 +4421,13 @@ _08117E26: beq _08117ECA adds r0, r4, 0 bl DestroyTask - ldr r1, _08117E48 @ =gUnknown_20370D0 + ldr r1, _08117E48 @ =gSpecialVar_Result movs r0, 0x5 strh r0, [r1] b _08117ECA .align 2, 0 _08117E44: .4byte gUnknown_84571B8 -_08117E48: .4byte gUnknown_20370D0 +_08117E48: .4byte gSpecialVar_Result _08117E4C: bl sub_80FB9F4 lsls r0, 24 @@ -4513,7 +4513,7 @@ sub_8117ED4: @ 8117ED4 strb r2, [r1, 0x9] subs r4, 0x15 strb r4, [r1, 0x12] - ldr r0, _08117F1C @ =gUnknown_20370D0 + ldr r0, _08117F1C @ =gSpecialVar_Result strh r2, [r0] pop {r4} pop {r0} @@ -4523,7 +4523,7 @@ _08117F0C: .4byte sub_8117F20 _08117F10: .4byte gUnknown_203B05C _08117F14: .4byte gTasks+0x8 _08117F18: .4byte gUnknown_3002028 -_08117F1C: .4byte gUnknown_20370D0 +_08117F1C: .4byte gSpecialVar_Result thumb_func_end sub_8117ED4 thumb_func_start sub_8117F20 @@ -4883,13 +4883,13 @@ _08118252: adds r0, r6, 0 bl DestroyTask bl sub_80F8DC0 - ldr r1, _08118268 @ =gUnknown_20370D0 + ldr r1, _08118268 @ =gSpecialVar_Result movs r0, 0x5 strh r0, [r1] b _08118288 .align 2, 0 _08118264: .4byte gUnknown_84571B8 -_08118268: .4byte gUnknown_20370D0 +_08118268: .4byte gSpecialVar_Result _0811826C: ldrb r0, [r5, 0x8] adds r0, 0x1 @@ -4933,7 +4933,7 @@ sub_8118290: @ 8118290 strb r2, [r1, 0x9] subs r4, 0x15 strb r4, [r1, 0x12] - ldr r0, _081182D8 @ =gUnknown_20370D0 + ldr r0, _081182D8 @ =gSpecialVar_Result strh r2, [r0] pop {r4} pop {r0} @@ -4943,7 +4943,7 @@ _081182C8: .4byte sub_81182DC _081182CC: .4byte gUnknown_203B05C _081182D0: .4byte gTasks+0x8 _081182D4: .4byte gUnknown_3002028 -_081182D8: .4byte gUnknown_20370D0 +_081182D8: .4byte gSpecialVar_Result thumb_func_end sub_8118290 thumb_func_start sub_81182DC @@ -5288,13 +5288,13 @@ _081185C2: adds r0, r4, 0 bl DestroyTask bl sub_80F8DC0 - ldr r1, _081185E4 @ =gUnknown_20370D0 + ldr r1, _081185E4 @ =gSpecialVar_Result movs r0, 0x5 strh r0, [r1] b _08118604 .align 2, 0 _081185E0: .4byte gUnknown_845933C -_081185E4: .4byte gUnknown_20370D0 +_081185E4: .4byte gSpecialVar_Result _081185E8: ldrb r0, [r5, 0x8] adds r0, 0x1 @@ -5334,7 +5334,7 @@ UnionRoomSpecial: @ 811860C strb r1, [r0, 0x16] strh r1, [r0, 0x10] strh r1, [r0, 0x12] - ldr r0, _08118654 @ =gUnknown_20370D0 + ldr r0, _08118654 @ =gSpecialVar_Result strh r1, [r0] movs r0, 0xD0 movs r1, 0x1 @@ -5346,7 +5346,7 @@ UnionRoomSpecial: @ 811860C _08118648: .4byte sub_81186E0 _0811864C: .4byte gUnknown_203B05C _08118650: .4byte gUnknown_300202C -_08118654: .4byte gUnknown_20370D0 +_08118654: .4byte gSpecialVar_Result thumb_func_end UnionRoomSpecial thumb_func_start sub_8118658 @@ -5593,14 +5593,14 @@ _0811887C: ldr r0, [r6, 0xC] movs r1, 0x4 bl sub_811A650 - ldr r1, _081188C8 @ =gUnknown_20370D0 + ldr r1, _081188C8 @ =gSpecialVar_Result movs r0, 0 strh r0, [r1] movs r0, 0x3 bl _081198DA .align 2, 0 _081188C4: .4byte gUnknown_203B06C -_081188C8: .4byte gUnknown_20370D0 +_081188C8: .4byte gSpecialVar_Result _081188CC: bl sub_811FB18 lsls r0, 24 @@ -5703,7 +5703,7 @@ _081189A4: movs r0, 0x4 bl _081198DA _081189AA: - ldr r4, _081189D8 @ =gUnknown_20370D0 + ldr r4, _081189D8 @ =gSpecialVar_Result ldrh r0, [r4] cmp r0, 0 beq _08118A0E @@ -5723,7 +5723,7 @@ _081189AA: movs r0, 0x2A b _08118A06 .align 2, 0 -_081189D8: .4byte gUnknown_20370D0 +_081189D8: .4byte gSpecialVar_Result _081189DC: .4byte gStringVar1 _081189E0: .4byte gSaveBlock2Ptr _081189E4: @@ -5947,7 +5947,7 @@ _08118BC2: bne _08118BCE bl _081198DC _08118BCE: - ldr r0, _08118BF0 @ =gUnknown_2022618 + ldr r0, _08118BF0 @ =gBlockSendBuffer movs r1, 0x1 bl sub_8117594 ldr r0, _08118BF4 @ =sub_8117280 @@ -5959,7 +5959,7 @@ _08118BCE: _08118BE4: .4byte gUnknown_8457F90 _08118BE8: .4byte gUnknown_203B058 _08118BEC: .4byte gUnknown_3003F64 -_08118BF0: .4byte gUnknown_2022618 +_08118BF0: .4byte gBlockSendBuffer _08118BF4: .4byte sub_8117280 _08118BF8: ldr r0, _08118C1C @ =sub_8117280 @@ -6518,7 +6518,7 @@ _081190DE: bne _081190EA bl _081198DC _081190EA: - ldr r0, _08119104 @ =gUnknown_2022618 + ldr r0, _08119104 @ =gBlockSendBuffer movs r1, 0x1 bl sub_8117594 ldr r0, _08119108 @ =sub_8117280 @@ -6528,7 +6528,7 @@ _081190EA: bl _081198DA .align 2, 0 _08119100: .4byte gUnknown_3003F64 -_08119104: .4byte gUnknown_2022618 +_08119104: .4byte gBlockSendBuffer _08119108: .4byte sub_8117280 _0811910C: adds r0, r6, 0 @@ -7463,14 +7463,14 @@ var_800D_set_xB: @ 81198EC bl InUnionRoom cmp r0, 0x1 bne _081198FC - ldr r1, _08119900 @ =gUnknown_20370D0 + ldr r1, _08119900 @ =gSpecialVar_Result movs r0, 0xB strh r0, [r1] _081198FC: pop {r0} bx r0 .align 2, 0 -_08119900: .4byte gUnknown_20370D0 +_08119900: .4byte gSpecialVar_Result thumb_func_end var_800D_set_xB thumb_func_start sub_8119904 @@ -13024,7 +13024,7 @@ _0811C3B0: beq _0811C3BC b _0811C516 _0811C3BC: - ldr r4, _0811C3D8 @ =gUnknown_2022618 + ldr r4, _0811C3D8 @ =gBlockSendBuffer adds r0, r4, 0 movs r1, 0 movs r2, 0x20 @@ -13037,13 +13037,13 @@ _0811C3BC: movs r0, 0x52 b _0811C3E2 .align 2, 0 -_0811C3D8: .4byte gUnknown_2022618 +_0811C3D8: .4byte gBlockSendBuffer _0811C3DC: .4byte gUnknown_203B0D4 _0811C3E0: movs r0, 0x51 _0811C3E2: strb r0, [r4] - ldr r1, _0811C3F8 @ =gUnknown_2022618 + ldr r1, _0811C3F8 @ =gBlockSendBuffer movs r0, 0 movs r2, 0x20 bl SendBlock @@ -13053,7 +13053,7 @@ _0811C3E2: adds r1, r2 b _0811C4F2 .align 2, 0 -_0811C3F8: .4byte gUnknown_2022618 +_0811C3F8: .4byte gBlockSendBuffer _0811C3FC: .4byte gMain _0811C400: bl GetBlockReceivedStatus @@ -13063,7 +13063,7 @@ _0811C400: beq _0811C40E b _0811C516 _0811C40E: - ldr r1, _0811C440 @ =gUnknown_2022118 + ldr r1, _0811C440 @ =gBlockRecvBuffer ldrh r0, [r1] cmp r0, 0x51 bne _0811C448 @@ -13087,11 +13087,11 @@ _0811C40E: movs r1, 0x32 b _0811C47E .align 2, 0 -_0811C440: .4byte gUnknown_2022118 +_0811C440: .4byte gBlockRecvBuffer _0811C444: .4byte gMain _0811C448: bl sub_800AAC0 - ldr r4, _0811C46C @ =gUnknown_2022118 + ldr r4, _0811C46C @ =gBlockRecvBuffer bl GetMultiplayerId lsls r0, 24 lsrs r0, 16 @@ -13106,7 +13106,7 @@ _0811C448: movs r1, 0x6 b _0811C47E .align 2, 0 -_0811C46C: .4byte gUnknown_2022118 +_0811C46C: .4byte gBlockRecvBuffer _0811C470: .4byte gMain _0811C474: ldr r0, _0811C488 @ =gMain diff --git a/asm/link_rfu_4.s b/asm/link_rfu_4.s index f8917e197..1ec24a43c 100644 --- a/asm/link_rfu_4.s +++ b/asm/link_rfu_4.s @@ -1657,12 +1657,12 @@ _081430B8: bl sub_81424B8 movs r0, 0x7 strb r0, [r5, 0x8] - bl sub_8144AEC + bl mevent_srv_ish_do_init b _081435C6 .align 2, 0 _081430D0: .4byte gUnknown_3003F64 _081430D4: - ldr r0, _081430E8 @ =gUnknown_20370D0 + ldr r0, _081430E8 @ =gSpecialVar_Result ldrh r0, [r0] cmp r0, 0x5 beq _081430DE @@ -1672,7 +1672,7 @@ _081430DE: bl sub_81424B8 b _08143464 .align 2, 0 -_081430E8: .4byte gUnknown_20370D0 +_081430E8: .4byte gSpecialVar_Result _081430EC: ldr r0, _081430F8 @ =gUnknown_841E794 bl sub_8142504 @@ -1683,7 +1683,7 @@ _081430EC: _081430F8: .4byte gUnknown_841E794 _081430FC: adds r0, r5, 0 - bl sub_8144B0C + bl mevent_srv_ish_do_exec subs r0, 0x2 cmp r0, 0x4 bls _0814310A @@ -1712,12 +1712,12 @@ _0814312C: b _081435C6 _0814313A: ldr r4, [r5, 0x10] - bl sub_8144B58 + bl mevent_srv_ish_get_buffer adds r1, r0, 0 adds r0, r4, 0 movs r2, 0x40 bl memcpy - bl sub_8144B48 + bl mevent_srv_ish_inc_flag b _081435C6 _08143150: movs r0, 0xA @@ -1740,7 +1740,7 @@ _08143170: .4byte gLinkPlayers + 8 _08143174: adds r4, r5, 0 adds r4, 0x9 - bl sub_8144B58 + bl mevent_srv_ish_get_buffer adds r3, r0, 0 adds r0, r4, 0 adds r1, r5, 0 @@ -1757,7 +1757,7 @@ _08143174: _08143198: adds r4, r5, 0 adds r4, 0x9 - bl sub_8144B58 + bl mevent_srv_ish_get_buffer adds r1, r0, 0 adds r0, r4, 0 bl mevent_0814257C @@ -1817,9 +1817,9 @@ _08143208: _0814320C: movs r0, 0x1 _0814320E: - bl sub_8144B64 + bl mevent_srv_ish_set_param _08143212: - bl sub_8144B48 + bl mevent_srv_ish_inc_flag movs r0, 0x7 strb r0, [r5, 0x8] b _081435C6 @@ -2172,7 +2172,7 @@ _0814349C: .align 2, 0 _081434B0: .4byte gUnknown_3003F64 _081434B4: - ldr r0, _081434CC @ =gUnknown_20370D0 + ldr r0, _081434CC @ =gSpecialVar_Result ldrh r0, [r0] cmp r0, 0x5 beq _081434BE @@ -2185,7 +2185,7 @@ _081434C4: strb r0, [r5, 0x8] b _081435C6 .align 2, 0 -_081434CC: .4byte gUnknown_20370D0 +_081434CC: .4byte gSpecialVar_Result _081434D0: ldr r0, _081434F0 @ =gStringVar1 movs r1, 0xFF @@ -2199,7 +2199,7 @@ _081434D0: bne _08143500 ldr r0, _081434FC @ =gUnknown_841EAE7 bl sub_8142504 - bl sub_8144F40 + bl mevent_srv_common_do_init_2 b _0814350A .align 2, 0 _081434F0: .4byte gStringVar1 @@ -2209,7 +2209,7 @@ _081434FC: .4byte gUnknown_841EAE7 _08143500: ldr r0, _08143510 @ =gUnknown_841EB01 bl sub_8142504 - bl sub_8144F1C + bl mevent_srv_common_do_init_1 _0814350A: movs r0, 0x20 strb r0, [r5, 0x8] @@ -2218,7 +2218,7 @@ _0814350A: _08143510: .4byte gUnknown_841EB01 _08143514: adds r0, r5, 0 - bl sub_8144F64 + bl mevent_srv_init_do_exec cmp r0, 0x3 bne _081435C6 ldrh r0, [r5] diff --git a/asm/map_obj_lock.s b/asm/map_obj_lock.s index 4ff07589a..1b406a74d 100644 --- a/asm/map_obj_lock.s +++ b/asm/map_obj_lock.s @@ -270,7 +270,7 @@ sub_8069740: @ 8069740 lsls r0, 2 ldr r1, _08069760 @ =gMapObjects adds r0, r1 - ldr r1, _08069764 @ =gUnknown_20370D4 + ldr r1, _08069764 @ =gSpecialVar_Facing ldrb r1, [r1] bl FieldObjectFaceOppositeDirection pop {r0} @@ -278,7 +278,7 @@ sub_8069740: @ 8069740 .align 2, 0 _0806975C: .4byte gUnknown_3005074 _08069760: .4byte gMapObjects -_08069764: .4byte gUnknown_20370D4 +_08069764: .4byte gSpecialVar_Facing thumb_func_end sub_8069740 thumb_func_start sub_8069768 diff --git a/asm/mevent.s b/asm/mevent.s deleted file mode 100644 index 697266a39..000000000 --- a/asm/mevent.s +++ /dev/null @@ -1,2438 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_81435DC -sub_81435DC: @ 81435DC - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - mov r8, r2 - mov r1, sp - ldr r4, _08143630 @ =0x04000208 - ldrh r0, [r4] - strh r0, [r1] - movs r0, 0 - strh r0, [r4] - ldr r1, _08143634 @ =gIntrTable - ldr r0, _08143638 @ =sub_815C6D4 - str r0, [r1, 0x4] - ldr r0, _0814363C @ =sub_815C6C4 - str r0, [r1, 0x8] - bl sub_815C8C8 - bl sub_815C960 - ldr r2, _08143640 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strh r0, [r2] - mov r0, sp - ldrh r0, [r0] - strh r0, [r4] - movs r0, 0 - strh r0, [r5] - str r6, [r5, 0x4] - mov r0, r8 - str r0, [r5, 0x8] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08143630: .4byte 0x04000208 -_08143634: .4byte gIntrTable -_08143638: .4byte sub_815C6D4 -_0814363C: .4byte sub_815C6C4 -_08143640: .4byte 0x04000200 - thumb_func_end sub_81435DC - - thumb_func_start sub_8143644 -sub_8143644: @ 8143644 - push {r4,lr} - sub sp, 0x4 - mov r1, sp - ldr r4, _08143670 @ =0x04000208 - ldrh r0, [r4] - strh r0, [r1] - movs r0, 0 - strh r0, [r4] - bl sub_815C960 - bl sub_815C91C - bl RestoreSerialTimer3IntrHandlers - mov r0, sp - ldrh r0, [r0] - strh r0, [r4] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08143670: .4byte 0x04000208 - thumb_func_end sub_8143644 - - thumb_func_start sub_8143674 -sub_8143674: @ 8143674 - push {r4,r5,lr} - adds r4, r0, 0 - movs r5, 0 - ldr r1, [r4, 0x4] - ldr r2, [r4, 0x8] - movs r0, 0x1 - movs r3, 0 - bl sub_815C498 - adds r1, r0, 0 - strh r1, [r4] - movs r0, 0x13 - ands r0, r1 - cmp r0, 0x10 - bne _08143694 - movs r5, 0x1 -_08143694: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0814369E - movs r5, 0x2 -_0814369E: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _081436A8 - movs r5, 0x3 -_081436A8: - ldr r1, _081436B8 @ =gUnknown_3003F84 - movs r0, 0 - strb r0, [r1] - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_081436B8: .4byte gUnknown_3003F84 - thumb_func_end sub_8143674 - - thumb_func_start sub_81436BC -sub_81436BC: @ 81436BC - push {lr} - ldr r0, _081436E0 @ =gDecompressionBuffer - movs r2, 0x80 - lsls r2, 6 - movs r1, 0 - bl memset - ldr r1, _081436E4 @ =gUnknown_202271A - ldr r2, _081436E8 @ =0x00005502 - adds r0, r2, 0 - strh r0, [r1] - bl sub_8009804 - movs r0, 0x1 - bl SetSuppressLinkErrorMessage - pop {r0} - bx r0 - .align 2, 0 -_081436E0: .4byte gDecompressionBuffer -_081436E4: .4byte gUnknown_202271A -_081436E8: .4byte 0x00005502 - thumb_func_end sub_81436BC - - thumb_func_start sub_81436EC -sub_81436EC: @ 81436EC - push {lr} - sub sp, 0xC - mov r1, sp - ldr r2, _08143730 @ =0x04000208 - ldrh r0, [r2] - strh r0, [r1] - movs r0, 0 - strh r0, [r2] - ldr r0, _08143734 @ =gUnknown_3003FB4 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x4] - str r1, [sp, 0x8] - mov r0, sp - ldrh r0, [r0] - strh r0, [r2] - add r2, sp, 0x4 - ldrh r1, [r2] - ldr r0, _08143738 @ =0x0000b9a0 - cmp r1, r0 - bne _08143744 - ldrh r1, [r2, 0x2] - ldr r0, _0814373C @ =0x0000ccd0 - cmp r1, r0 - bne _08143744 - ldrh r1, [r2, 0x4] - ldr r0, _08143740 @ =0x0000ffff - cmp r1, r0 - bne _08143744 - ldrh r0, [r2, 0x6] - cmp r0, r1 - bne _08143744 - movs r0, 0x1 - b _08143746 - .align 2, 0 -_08143730: .4byte 0x04000208 -_08143734: .4byte gUnknown_3003FB4 -_08143738: .4byte 0x0000b9a0 -_0814373C: .4byte 0x0000ccd0 -_08143740: .4byte 0x0000ffff -_08143744: - movs r0, 0 -_08143746: - add sp, 0xC - pop {r1} - bx r1 - thumb_func_end sub_81436EC - - thumb_func_start sub_814374C -sub_814374C: @ 814374C - push {lr} - bl sub_800AA48 - lsls r0, 24 - cmp r0, 0 - beq _08143768 - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08143768 - movs r0, 0x1 - b _0814376A -_08143768: - movs r0, 0 -_0814376A: - pop {r1} - bx r1 - thumb_func_end sub_814374C - - thumb_func_start sub_8143770 -sub_8143770: @ 8143770 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4] - subs r0, 0x3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bhi _08143794 - bl HasLinkErrorOccurred - lsls r0, 24 - cmp r0, 0 - beq _08143794 - movs r0, 0 - strb r0, [r4] - movs r0, 0x3 - b _0814389A -_08143794: - ldrb r0, [r4] - cmp r0, 0x5 - bls _0814379C - b _08143898 -_0814379C: - lsls r0, 2 - ldr r1, _081437A8 @ =_081437AC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081437A8: .4byte _081437AC - .align 2, 0 -_081437AC: - .4byte _081437C4 - .4byte _081437E0 - .4byte _081437F8 - .4byte _0814382C - .4byte _08143878 - .4byte _08143884 -_081437C4: - bl sub_800AA48 - lsls r0, 24 - cmp r0, 0 - beq _08143814 - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _08143814 - movs r0, 0x1 - strb r0, [r4] - b _08143898 -_081437E0: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5 - bls _08143898 - movs r0, 0 - strh r0, [r5] - movs r0, 0x2 - strb r0, [r4] - b _08143898 -_081437F8: - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08143814 - movs r0, 0x42 - bl PlaySE - bl sub_800A5BC - movs r0, 0 - strh r0, [r5] - b _08143872 -_08143814: - ldr r0, _08143828 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08143898 - movs r0, 0 - strb r0, [r4] - movs r0, 0x1 - b _0814389A - .align 2, 0 -_08143828: .4byte gMain -_0814382C: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1E - bls _08143842 - movs r0, 0 - strb r0, [r4] - movs r0, 0x5 - b _0814389A -_08143842: - bl IsLinkConnectionEstablished - lsls r0, 24 - cmp r0, 0 - beq _08143898 - ldr r0, _08143868 @ =gUnknown_3003F64 - ldrb r0, [r0] - cmp r0, 0 - beq _08143872 - bl IsLinkPlayerDataExchangeComplete - lsls r0, 24 - cmp r0, 0 - beq _0814386C - movs r0, 0 - strb r0, [r4] - movs r0, 0x2 - b _0814389A - .align 2, 0 -_08143868: .4byte gUnknown_3003F64 -_0814386C: - movs r0, 0x4 - strb r0, [r4] - b _08143898 -_08143872: - movs r0, 0x3 - strb r0, [r4] - b _08143898 -_08143878: - movs r0, 0 - bl sub_800AA80 - movs r0, 0x5 - strb r0, [r4] - b _08143898 -_08143884: - ldr r0, _08143894 @ =gUnknown_3003F64 - ldrb r0, [r0] - cmp r0, 0 - bne _08143898 - strb r0, [r4] - movs r0, 0x4 - b _0814389A - .align 2, 0 -_08143894: .4byte gUnknown_3003F64 -_08143898: - movs r0, 0 -_0814389A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8143770 - - thumb_func_start sub_81438A0 -sub_81438A0: @ 81438A0 - push {r4,lr} - ldr r0, _081438E0 @ =sub_8143910 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _081438E4 @ =gTasks+0x8 - adds r4, r0 - movs r0, 0 - strb r0, [r4, 0x8] - strb r0, [r4, 0x9] - strb r0, [r4, 0xA] - strb r0, [r4, 0xB] - strb r0, [r4, 0xC] - strb r0, [r4, 0xD] - movs r1, 0 - strh r0, [r4] - strh r0, [r4, 0x2] - strh r0, [r4, 0x4] - strh r0, [r4, 0x6] - strb r1, [r4, 0xE] - movs r0, 0x40 - bl AllocZeroed - str r0, [r4, 0x10] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081438E0: .4byte sub_8143910 -_081438E4: .4byte gTasks+0x8 - thumb_func_end sub_81438A0 - - thumb_func_start sub_81438E8 -sub_81438E8: @ 81438E8 - movs r1, 0 - strh r1, [r0] - bx lr - thumb_func_end sub_81438E8 - - thumb_func_start sub_81438F0 -sub_81438F0: @ 81438F0 - push {lr} - adds r2, r0, 0 - lsls r1, 16 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - cmp r0, r1 - bhi _08143906 - movs r0, 0 - b _0814390C -_08143906: - movs r0, 0 - strh r0, [r2] - movs r0, 0x1 -_0814390C: - pop {r1} - bx r1 - thumb_func_end sub_81438F0 - - thumb_func_start sub_8143910 -sub_8143910: @ 8143910 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08143934 @ =gTasks+0x8 - adds r4, r0, r1 - ldrb r0, [r4, 0x8] - cmp r0, 0x1A - bls _08143928 - b _08143D1A -_08143928: - lsls r0, 2 - ldr r1, _08143938 @ =_0814393C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08143934: .4byte gTasks+0x8 -_08143938: .4byte _0814393C - .align 2, 0 -_0814393C: - .4byte _081439A8 - .4byte _081439C4 - .4byte _081439D4 - .4byte _081439E8 - .4byte _081439F8 - .4byte _08143A24 - .4byte _08143A5C - .4byte _08143AD8 - .4byte _08143AF4 - .4byte _08143B1C - .4byte _08143B38 - .4byte _08143B68 - .4byte _08143B7E - .4byte _08143B94 - .4byte _08143BF6 - .4byte _08143C1C - .4byte _08143C34 - .4byte _08143C52 - .4byte _08143C7E - .4byte _08143CA4 - .4byte _08143CD4 - .4byte _08143CE0 - .4byte _08143CEC - .4byte _08143CBC - .4byte _08143D1A - .4byte _08143D1A - .4byte _08143D04 -_081439A8: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _081439C0 @ =gUnknown_841DE52 - bl mevent_0814257C - cmp r0, 0 - bne _081439B8 - b _08143D1A -_081439B8: - movs r0, 0x1 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_081439C0: .4byte gUnknown_841DE52 -_081439C4: - bl sub_81436BC - adds r0, r4, 0 - bl sub_81438E8 - movs r0, 0x2 - strb r0, [r4, 0x8] - b _08143D1A -_081439D4: - adds r0, r4, 0 - movs r1, 0xA - bl sub_81438F0 - cmp r0, 0 - bne _081439E2 - b _08143D1A -_081439E2: - movs r0, 0x3 - strb r0, [r4, 0x8] - b _08143D1A -_081439E8: - bl sub_814374C - cmp r0, 0 - beq _081439F2 - b _08143B88 -_081439F2: - bl sub_80098B8 - b _08143AE8 -_081439F8: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143A1C @ =gUnknown_841DE53 - bl mevent_0814257C - cmp r0, 0 - bne _08143A08 - b _08143D1A -_08143A08: - ldr r0, _08143A20 @ =gUnknown_841DE54 - bl sub_8142504 - adds r0, r4, 0 - bl sub_81438E8 - movs r0, 0x5 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143A1C: .4byte gUnknown_841DE53 -_08143A20: .4byte gUnknown_841DE54 -_08143A24: - adds r0, r4, 0 - movs r1, 0x5A - bl sub_81438F0 - cmp r0, 0 - beq _08143A3A - bl sub_81436BC - movs r0, 0x6 - strb r0, [r4, 0x8] - b _08143D1A -_08143A3A: - ldr r0, _08143A58 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08143A48 - b _08143D1A -_08143A48: - adds r0, r4, 0 - bl sub_81438E8 - movs r0, 0x5 - bl PlaySE - b _08143BE6 - .align 2, 0 -_08143A58: .4byte gMain -_08143A5C: - ldr r0, _08143A7C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08143A80 - movs r0, 0x5 - bl PlaySE - bl sub_80098B8 - adds r0, r4, 0 - bl sub_81438E8 - b _08143BE6 - .align 2, 0 -_08143A7C: .4byte gMain -_08143A80: - bl GetLinkPlayerCount_2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _08143A9C - adds r0, r4, 0 - bl sub_81438E8 - bl sub_80098B8 - movs r0, 0x7 - strb r0, [r4, 0x8] - b _08143D1A -_08143A9C: - bl sub_81436EC - cmp r0, 0 - beq _08143ABA - movs r0, 0x5 - bl PlaySE - bl sub_80098B8 - adds r0, r4, 0 - bl sub_81438E8 - movs r0, 0x8 - strb r0, [r4, 0x8] - b _08143D1A -_08143ABA: - adds r0, r4, 0 - movs r1, 0xA - bl sub_81438F0 - cmp r0, 0 - bne _08143AC8 - b _08143D1A -_08143AC8: - bl sub_80098B8 - bl sub_81436BC - adds r0, r4, 0 - bl sub_81438E8 - b _08143D1A -_08143AD8: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143AF0 @ =gUnknown_841DE7C - bl mevent_0814257C - cmp r0, 0 - bne _08143AE8 - b _08143D1A -_08143AE8: - movs r0, 0x4 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143AF0: .4byte gUnknown_841DE7C -_08143AF4: - ldr r0, _08143B0C @ =gUnknown_841DE95 - bl sub_8142504 - ldr r0, _08143B10 @ =gUnknown_3005ED0 - ldr r1, _08143B14 @ =gUnknownSerialData_End - ldr r2, _08143B18 @ =gUnknownSerialData_Start - subs r1, r2 - bl sub_81435DC - movs r0, 0x9 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143B0C: .4byte gUnknown_841DE95 -_08143B10: .4byte gUnknown_3005ED0 -_08143B14: .4byte gUnknownSerialData_End -_08143B18: .4byte gUnknownSerialData_Start -_08143B1C: - ldr r0, _08143B34 @ =gUnknown_3005ED0 - bl sub_8143674 - strb r0, [r4, 0xE] - lsls r0, 24 - cmp r0, 0 - bne _08143B2C - b _08143D1A -_08143B2C: - movs r0, 0xA - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143B34: .4byte gUnknown_3005ED0 -_08143B38: - ldr r0, _08143B60 @ =gUnknown_3005ED0 - bl sub_8143644 - ldrb r0, [r4, 0xE] - cmp r0, 0x3 - bne _08143B46 - b _08143C4C -_08143B46: - cmp r0, 0x1 - beq _08143B4C - b _08143CFA -_08143B4C: - adds r0, r4, 0 - bl sub_81438E8 - ldr r0, _08143B64 @ =gUnknown_841DE9B - bl sub_8142504 - movs r0, 0xB - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143B60: .4byte gUnknown_3005ED0 -_08143B64: .4byte gUnknown_841DE9B -_08143B68: - movs r1, 0xD2 - lsls r1, 2 - adds r0, r4, 0 - bl sub_81438F0 - cmp r0, 0 - bne _08143B78 - b _08143D1A -_08143B78: - movs r0, 0xC - strb r0, [r4, 0x8] - b _08143D1A -_08143B7E: - bl sub_81436BC - ldr r0, _08143B90 @ =gUnknown_841DE98 - bl sub_8142504 -_08143B88: - movs r0, 0xD - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143B90: .4byte gUnknown_841DE98 -_08143B94: - adds r0, r4, 0 - adds r0, 0x9 - adds r1, r4, 0 - bl sub_8143770 - cmp r0, 0x5 - bls _08143BA4 - b _08143D1A -_08143BA4: - lsls r0, 2 - ldr r1, _08143BB0 @ =_08143BB4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08143BB0: .4byte _08143BB4 - .align 2, 0 -_08143BB4: - .4byte _08143D1A - .4byte _08143BDC - .4byte _08143BCC - .4byte _08143C00 - .4byte _08143C00 - .4byte _08143BEC -_08143BCC: - ldr r0, _08143BD8 @ =gUnknown_841DE95 - bl sub_8142504 - movs r0, 0xE - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143BD8: .4byte gUnknown_841DE95 -_08143BDC: - movs r0, 0x5 - bl PlaySE - bl sub_80098B8 -_08143BE6: - movs r0, 0x17 - strb r0, [r4, 0x8] - b _08143D1A -_08143BEC: - bl sub_80098B8 - movs r0, 0x15 - strb r0, [r4, 0x8] - b _08143D1A -_08143BF6: - bl HasLinkErrorOccurred - lsls r0, 24 - cmp r0, 0 - beq _08143C06 -_08143C00: - bl sub_80098B8 - b _08143C4C -_08143C06: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _08143C12 - b _08143D1A -_08143C12: - bl ResetBlockReceivedFlags - movs r0, 0xF - strb r0, [r4, 0x8] - b _08143D1A -_08143C1C: - ldr r0, _08143C30 @ =gDecompressionBuffer - bl sub_815D6B4 - strb r0, [r4, 0xE] - ldrb r0, [r4, 0xE] - bl sub_800AA80 - movs r0, 0x10 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143C30: .4byte gDecompressionBuffer -_08143C34: - ldr r0, _08143C48 @ =gUnknown_3003F64 - ldrb r0, [r0] - cmp r0, 0 - bne _08143D1A - ldrb r0, [r4, 0xE] - cmp r0, 0x1 - bne _08143C4C - movs r0, 0x11 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143C48: .4byte gUnknown_3003F64 -_08143C4C: - movs r0, 0x14 - strb r0, [r4, 0x8] - b _08143D1A -_08143C52: - ldr r0, _08143C70 @ =gDecompressionBuffer - bl sub_815D794 - cmp r0, 0 - beq _08143C78 - ldr r0, _08143C74 @ =gUnknown_841DE99 - bl sub_8142504 - adds r0, r4, 0 - bl sub_81438E8 - movs r0, 0x12 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143C70: .4byte gDecompressionBuffer -_08143C74: .4byte gUnknown_841DE99 -_08143C78: - movs r0, 0x16 - strb r0, [r4, 0x8] - b _08143D1A -_08143C7E: - adds r0, r4, 0 - movs r1, 0x78 - bl sub_81438F0 - cmp r0, 0 - beq _08143D1A - ldr r0, _08143CA0 @ =gUnknown_841DE9A - bl sub_8142504 - movs r0, 0x81 - lsls r0, 1 - bl PlayFanfare - movs r0, 0x13 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143CA0: .4byte gUnknown_841DE9A -_08143CA4: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _08143D1A - ldr r0, _08143CB8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - b _08143CC6 - .align 2, 0 -_08143CB8: .4byte gMain -_08143CBC: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143CD0 @ =gUnknown_841DE7D - bl mevent_0814257C -_08143CC6: - cmp r0, 0 - beq _08143D1A - movs r0, 0x1A - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143CD0: .4byte gUnknown_841DE7D -_08143CD4: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143CDC @ =gUnknown_841DE96 - b _08143CF2 - .align 2, 0 -_08143CDC: .4byte gUnknown_841DE96 -_08143CE0: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143CE8 @ =gUnknown_841DE97 - b _08143CF2 - .align 2, 0 -_08143CE8: .4byte gUnknown_841DE97 -_08143CEC: - adds r0, r4, 0 - adds r0, 0x9 - ldr r1, _08143D00 @ =gUnknown_841DE9C -_08143CF2: - bl mevent_0814257C - cmp r0, 0 - beq _08143D1A -_08143CFA: - movs r0, 0 - strb r0, [r4, 0x8] - b _08143D1A - .align 2, 0 -_08143D00: .4byte gUnknown_841DE9C -_08143D04: - bl sub_812B484 - ldr r0, [r4, 0x10] - bl Free - adds r0, r5, 0 - bl DestroyTask - ldr r0, _08143D20 @ =sub_81422FC - bl SetMainCallback2 -_08143D1A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08143D20: .4byte sub_81422FC - thumb_func_end sub_8143910 - - thumb_func_start sub_8143D24 -sub_8143D24: @ 8143D24 - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - ldr r0, _08143D4C @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, _08143D50 @ =0x00003120 - adds r1, r0 - ldr r2, _08143D54 @ =0x050000db - mov r0, sp - bl CpuSet - bl sub_8143ED0 - bl sub_80BDE28 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08143D4C: .4byte gSaveBlock1Ptr -_08143D50: .4byte 0x00003120 -_08143D54: .4byte 0x050000db - thumb_func_end sub_8143D24 - - thumb_func_start sub_8143D58 -sub_8143D58: @ 8143D58 - ldr r0, _08143D64 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08143D68 @ =0x00003124 - adds r0, r1 - bx lr - .align 2, 0 -_08143D64: .4byte gSaveBlock1Ptr -_08143D68: .4byte 0x00003124 - thumb_func_end sub_8143D58 - - thumb_func_start sav1_get_mevent_buffer_1 -sav1_get_mevent_buffer_1: @ 8143D6C - ldr r0, _08143D78 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08143D7C @ =0x000032e4 - adds r0, r1 - bx lr - .align 2, 0 -_08143D78: .4byte gSaveBlock1Ptr -_08143D7C: .4byte 0x000032e4 - thumb_func_end sav1_get_mevent_buffer_1 - - thumb_func_start sav1_get_mevent_buffer_2 -sav1_get_mevent_buffer_2: @ 8143D80 - ldr r0, _08143D8C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08143D90 @ =0x00003434 - adds r0, r1 - bx lr - .align 2, 0 -_08143D8C: .4byte gSaveBlock1Ptr -_08143D90: .4byte 0x00003434 - thumb_func_end sav1_get_mevent_buffer_2 - - thumb_func_start sub_8143D94 -sub_8143D94: @ 8143D94 - ldr r0, _08143DA0 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08143DA4 @ =0x00003460 - adds r0, r1 - bx lr - .align 2, 0 -_08143DA0: .4byte gSaveBlock1Ptr -_08143DA4: .4byte 0x00003460 - thumb_func_end sub_8143D94 - - thumb_func_start sub_8143DA8 -sub_8143DA8: @ 8143DA8 - ldr r0, _08143DB4 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08143DB8 @ =0x00003458 - adds r0, r1 - bx lr - .align 2, 0 -_08143DB4: .4byte gSaveBlock1Ptr -_08143DB8: .4byte 0x00003458 - thumb_func_end sub_8143DA8 - - thumb_func_start sub_8143DBC -sub_8143DBC: @ 8143DBC - push {lr} - bl sub_8143E9C - pop {r0} - bx r0 - thumb_func_end sub_8143DBC - - thumb_func_start sub_8143DC8 -sub_8143DC8: @ 8143DC8 - push {r4-r7,lr} - adds r7, r0, 0 - bl sub_8143E64 - cmp r0, 0 - beq _08143E14 - bl sub_8143E9C - ldr r4, _08143E08 @ =gSaveBlock1Ptr - ldr r0, [r4] - ldr r5, _08143E0C @ =0x00003124 - adds r0, r5 - movs r6, 0xDE - lsls r6, 1 - adds r1, r7, 0 - adds r2, r6, 0 - bl memcpy - ldr r0, [r4] - adds r0, r5 - adds r1, r6, 0 - bl CalcCRC16WithTable - ldr r1, [r4] - ldr r2, _08143E10 @ =0x00003120 - adds r1, r2 - lsls r0, 16 - lsrs r0, 16 - str r0, [r1] - movs r0, 0x1 - b _08143E16 - .align 2, 0 -_08143E08: .4byte gSaveBlock1Ptr -_08143E0C: .4byte 0x00003124 -_08143E10: .4byte 0x00003120 -_08143E14: - movs r0, 0 -_08143E16: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8143DC8 - - thumb_func_start sub_8143E1C -sub_8143E1C: @ 8143E1C - push {r4,lr} - ldr r4, _08143E50 @ =gSaveBlock1Ptr - ldr r0, [r4] - ldr r1, _08143E54 @ =0x00003124 - adds r0, r1 - movs r1, 0xDE - lsls r1, 1 - bl CalcCRC16WithTable - lsls r0, 16 - lsrs r0, 16 - ldr r4, [r4] - ldr r2, _08143E58 @ =0x00003120 - adds r1, r4, r2 - ldr r1, [r1] - cmp r0, r1 - bne _08143E5C - ldr r1, _08143E54 @ =0x00003124 - adds r0, r4, r1 - bl sub_8143E64 - cmp r0, 0 - beq _08143E5C - movs r0, 0x1 - b _08143E5E - .align 2, 0 -_08143E50: .4byte gSaveBlock1Ptr -_08143E54: .4byte 0x00003124 -_08143E58: .4byte 0x00003120 -_08143E5C: - movs r0, 0 -_08143E5E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8143E1C - - thumb_func_start sub_8143E64 -sub_8143E64: @ 8143E64 - push {lr} - ldrh r0, [r0] - cmp r0, 0 - beq _08143E70 - movs r0, 0x1 - b _08143E72 -_08143E70: - movs r0, 0 -_08143E72: - pop {r1} - bx r1 - thumb_func_end sub_8143E64 - - thumb_func_start sub_8143E78 -sub_8143E78: @ 8143E78 - push {lr} - ldr r0, _08143E8C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08143E90 @ =0x00003124 - adds r0, r1 - ldrb r0, [r0, 0x2] - cmp r0, 0 - beq _08143E94 - movs r0, 0x1 - b _08143E96 - .align 2, 0 -_08143E8C: .4byte gSaveBlock1Ptr -_08143E90: .4byte 0x00003124 -_08143E94: - movs r0, 0 -_08143E96: - pop {r1} - bx r1 - thumb_func_end sub_8143E78 - - thumb_func_start sub_8143E9C -sub_8143E9C: @ 8143E9C - push {r4,lr} - sub sp, 0x4 - movs r4, 0 - str r4, [sp] - bl sub_8143D58 - adds r1, r0, 0 - ldr r2, _08143EC4 @ =0x0500006f - mov r0, sp - bl CpuSet - ldr r0, _08143EC8 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08143ECC @ =0x00003120 - adds r0, r1 - str r4, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08143EC4: .4byte 0x0500006f -_08143EC8: .4byte gSaveBlock1Ptr -_08143ECC: .4byte 0x00003120 - thumb_func_end sub_8143E9C - - thumb_func_start sub_8143ED0 -sub_8143ED0: @ 8143ED0 - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_8143D94 - adds r1, r0, 0 - ldr r2, _08143EF0 @ =0x05000001 - mov r0, sp - bl CpuSet - bl sub_8146C88 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08143EF0: .4byte 0x05000001 - thumb_func_end sub_8143ED0 - - thumb_func_start sub_8143EF4 -sub_8143EF4: @ 8143EF4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _08143F0C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08143F10 @ =0x00003124 - adds r4, r0, r1 - bl sub_8143E1C - cmp r0, 0 - bne _08143F14 -_08143F08: - movs r0, 0 - b _08143F2C - .align 2, 0 -_08143F0C: .4byte gSaveBlock1Ptr -_08143F10: .4byte 0x00003124 -_08143F14: - movs r2, 0 - ldr r3, _08143F34 @ =0x000001bb -_08143F18: - adds r0, r4, r2 - adds r1, r5, r2 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bne _08143F08 - adds r2, 0x1 - cmp r2, r3 - bls _08143F18 - movs r0, 0x1 -_08143F2C: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08143F34: .4byte 0x000001bb - thumb_func_end sub_8143EF4 - - thumb_func_start sub_8143F38 -sub_8143F38: @ 8143F38 - push {lr} - bl sub_814407C - bl sub_81440B4 - bl sub_8144790 - bl ClearRamScript - bl sub_806E2D0 - bl sub_806E370 - ldr r0, _08143F64 @ =gSaveBlock2Ptr - ldr r0, [r0] - movs r1, 0x94 - lsls r1, 3 - adds r0, r1 - bl sub_80E7524 - pop {r0} - bx r0 - .align 2, 0 -_08143F64: .4byte gSaveBlock2Ptr - thumb_func_end sub_8143F38 - - thumb_func_start sub_8143F68 -sub_8143F68: @ 8143F68 - push {r4-r7,lr} - adds r7, r0, 0 - bl sub_8144018 - cmp r0, 0 - beq _08143FC0 - bl sub_8143F38 - ldr r4, _08143FB0 @ =gSaveBlock1Ptr - ldr r0, [r4] - ldr r5, _08143FB4 @ =0x000032e4 - adds r0, r5 - movs r6, 0xA6 - lsls r6, 1 - adds r1, r7, 0 - adds r2, r6, 0 - bl memcpy - ldr r0, [r4] - adds r0, r5 - adds r1, r6, 0 - bl CalcCRC16WithTable - ldr r1, [r4] - ldr r3, _08143FB8 @ =0x000032e0 - adds r2, r1, r3 - lsls r0, 16 - lsrs r0, 16 - str r0, [r2] - ldr r0, _08143FBC @ =0x00003434 - adds r2, r1, r0 - adds r1, r5 - ldrh r0, [r1, 0x2] - strh r0, [r2, 0x6] - movs r0, 0x1 - b _08143FC2 - .align 2, 0 -_08143FB0: .4byte gSaveBlock1Ptr -_08143FB4: .4byte 0x000032e4 -_08143FB8: .4byte 0x000032e0 -_08143FBC: .4byte 0x00003434 -_08143FC0: - movs r0, 0 -_08143FC2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8143F68 - - thumb_func_start sub_8143FC8 -sub_8143FC8: @ 8143FC8 - push {r4,r5,lr} - ldr r5, _08144004 @ =gSaveBlock1Ptr - ldr r0, [r5] - ldr r1, _08144008 @ =0x000032e0 - adds r4, r0, r1 - adds r1, 0x4 - adds r0, r1 - movs r1, 0xA6 - lsls r1, 1 - bl CalcCRC16WithTable - lsls r0, 16 - lsrs r0, 16 - ldr r1, [r4] - cmp r1, r0 - bne _08144010 - ldr r0, [r5] - ldr r1, _0814400C @ =0x000032e4 - adds r0, r1 - bl sub_8144018 - cmp r0, 0 - beq _08144010 - bl sub_8069DFC - cmp r0, 0 - beq _08144010 - movs r0, 0x1 - b _08144012 - .align 2, 0 -_08144004: .4byte gSaveBlock1Ptr -_08144008: .4byte 0x000032e0 -_0814400C: .4byte 0x000032e4 -_08144010: - movs r0, 0 -_08144012: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8143FC8 - - thumb_func_start sub_8144018 -sub_8144018: @ 8144018 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2] - cmp r0, 0 - beq _0814404E - ldrb r1, [r2, 0x8] - lsls r0, r1, 30 - lsrs r0, 30 - cmp r0, 0x2 - bhi _0814404E - movs r0, 0xC0 - ands r0, r1 - cmp r0, 0 - beq _0814403C - cmp r0, 0x40 - beq _0814403C - cmp r0, 0x80 - bne _0814404E -_0814403C: - lsls r0, r1, 26 - lsrs r0, 28 - cmp r0, 0x7 - bhi _0814404E - ldrb r0, [r2, 0x9] - cmp r0, 0x7 - bhi _0814404E - movs r0, 0x1 - b _08144050 -_0814404E: - movs r0, 0 -_08144050: - pop {r1} - bx r1 - thumb_func_end sub_8144018 - - thumb_func_start sub_8144054 -sub_8144054: @ 8144054 - push {lr} - ldr r0, _0814406C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08144070 @ =0x000032e4 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0xC0 - ands r0, r1 - cmp r0, 0 - beq _08144074 - movs r0, 0x1 - b _08144076 - .align 2, 0 -_0814406C: .4byte gSaveBlock1Ptr -_08144070: .4byte 0x000032e4 -_08144074: - movs r0, 0 -_08144076: - pop {r1} - bx r1 - thumb_func_end sub_8144054 - - thumb_func_start sub_814407C -sub_814407C: @ 814407C - push {r4,r5,lr} - sub sp, 0x4 - movs r5, 0 - str r5, [sp] - ldr r4, _081440A4 @ =gSaveBlock1Ptr - ldr r1, [r4] - ldr r0, _081440A8 @ =0x000032e4 - adds r1, r0 - ldr r2, _081440AC @ =0x05000053 - mov r0, sp - bl CpuSet - ldr r0, [r4] - ldr r1, _081440B0 @ =0x000032e0 - adds r0, r1 - str r5, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081440A4: .4byte gSaveBlock1Ptr -_081440A8: .4byte 0x000032e4 -_081440AC: .4byte 0x05000053 -_081440B0: .4byte 0x000032e0 - thumb_func_end sub_814407C - - thumb_func_start sub_81440B4 -sub_81440B4: @ 81440B4 - push {r4,lr} - sub sp, 0x4 - movs r4, 0 - str r4, [sp] - bl sav1_get_mevent_buffer_2 - adds r1, r0, 0 - ldr r2, _081440DC @ =0x05000009 - mov r0, sp - bl CpuSet - ldr r0, _081440E0 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _081440E4 @ =0x00003430 - adds r0, r1 - str r4, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081440DC: .4byte 0x05000009 -_081440E0: .4byte gSaveBlock1Ptr -_081440E4: .4byte 0x00003430 - thumb_func_end sub_81440B4 - - thumb_func_start sub_81440E8 -sub_81440E8: @ 81440E8 - push {lr} - bl sub_8143FC8 - cmp r0, 0 - bne _081440F6 - movs r0, 0 - b _08144100 -_081440F6: - ldr r0, _08144104 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08144108 @ =0x000032e4 - adds r0, r1 - ldrh r0, [r0] -_08144100: - pop {r1} - bx r1 - .align 2, 0 -_08144104: .4byte gSaveBlock1Ptr -_08144108: .4byte 0x000032e4 - thumb_func_end sub_81440E8 - - thumb_func_start sub_814410C -sub_814410C: @ 814410C - push {lr} - adds r2, r0, 0 - ldrb r1, [r2, 0x8] - movs r0, 0xC0 - ands r0, r1 - cmp r0, 0x40 - bne _08144120 - movs r0, 0x3F - ands r0, r1 - strb r0, [r2, 0x8] -_08144120: - pop {r0} - bx r0 - thumb_func_end sub_814410C - - thumb_func_start sub_8144124 -sub_8144124: @ 8144124 - push {lr} - lsls r0, 16 - ldr r1, _08144138 @ =0xfc180000 - adds r0, r1 - lsrs r0, 16 - cmp r0, 0x13 - bls _0814413C - movs r0, 0 - b _0814413E - .align 2, 0 -_08144138: .4byte 0xfc180000 -_0814413C: - movs r0, 0x1 -_0814413E: - pop {r1} - bx r1 - thumb_func_end sub_8144124 - - thumb_func_start sub_8144144 -sub_8144144: @ 8144144 - push {r4,lr} - bl sub_81440E8 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl sub_8144124 - cmp r0, 0 - beq _0814417C - ldr r1, _08144174 @ =gUnknown_8466F00 - ldr r2, _08144178 @ =0xfffffc18 - adds r0, r4, r2 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0814417C - movs r0, 0x1 - b _0814417E - .align 2, 0 -_08144174: .4byte gUnknown_8466F00 -_08144178: .4byte 0xfffffc18 -_0814417C: - movs r0, 0 -_0814417E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8144144 - - thumb_func_start sub_8144184 -sub_8144184: @ 8144184 - push {lr} - movs r3, 0 - cmp r3, r1 - bge _081441A6 - adds r2, r0, 0 - adds r2, 0x8 -_08144190: - ldrh r0, [r2, 0xE] - cmp r0, 0 - beq _0814419E - ldrh r0, [r2] - cmp r0, 0 - beq _0814419E - adds r3, 0x1 -_0814419E: - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bne _08144190 -_081441A6: - adds r0, r3, 0 - pop {r1} - bx r1 - thumb_func_end sub_8144184 - - thumb_func_start sub_81441AC -sub_81441AC: @ 81441AC - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r1, 0 - cmp r1, r2 - bge _081441E6 - ldrh r6, [r4, 0x2] - movs r0, 0x16 - adds r0, r5 - mov r12, r0 -_081441C0: - lsls r3, r1, 1 - mov r7, r12 - ldrh r0, [r7] - cmp r0, r6 - beq _081441D8 - adds r0, r5, 0 - adds r0, 0x8 - adds r0, r3 - ldrh r0, [r0] - ldrh r3, [r4] - cmp r0, r3 - bne _081441DC -_081441D8: - movs r0, 0x1 - b _081441E8 -_081441DC: - movs r7, 0x2 - add r12, r7 - adds r1, 0x1 - cmp r1, r2 - blt _081441C0 -_081441E6: - movs r0, 0 -_081441E8: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_81441AC - - thumb_func_start sub_81441F0 -sub_81441F0: @ 81441F0 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x2] - cmp r0, 0 - beq _08144210 - ldrh r1, [r1] - cmp r1, 0 - beq _08144210 - ldr r0, _0814420C @ =0x0000019b - cmp r1, r0 - bhi _08144210 - movs r0, 0x1 - b _08144212 - .align 2, 0 -_0814420C: .4byte 0x0000019b -_08144210: - movs r0, 0 -_08144212: - pop {r1} - bx r1 - thumb_func_end sub_81441F0 - - thumb_func_start sub_8144218 -sub_8144218: @ 8144218 - push {lr} - bl sub_8143FC8 - cmp r0, 0 - beq _0814424C - ldr r0, _08144240 @ =gSaveBlock1Ptr - ldr r3, [r0] - ldr r0, _08144244 @ =0x000032e4 - adds r2, r3, r0 - ldrb r1, [r2, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _0814424C - ldr r1, _08144248 @ =0x00003434 - adds r0, r3, r1 - ldrb r1, [r2, 0x9] - bl sub_8144184 - b _0814424E - .align 2, 0 -_08144240: .4byte gSaveBlock1Ptr -_08144244: .4byte 0x000032e4 -_08144248: .4byte 0x00003434 -_0814424C: - movs r0, 0 -_0814424E: - pop {r1} - bx r1 - thumb_func_end sub_8144218 - - thumb_func_start sub_8144254 -sub_8144254: @ 8144254 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _08144280 @ =gSaveBlock1Ptr - ldr r0, [r6] - ldr r1, _08144284 @ =0x000032e4 - adds r0, r1 - ldrb r4, [r0, 0x9] - adds r0, r5, 0 - bl sub_81441F0 - cmp r0, 0 - beq _081442BE - ldr r0, [r6] - ldr r1, _08144288 @ =0x00003434 - adds r0, r1 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_81441AC - cmp r0, 0 - beq _08144298 - b _081442BE - .align 2, 0 -_08144280: .4byte gSaveBlock1Ptr -_08144284: .4byte 0x000032e4 -_08144288: .4byte 0x00003434 -_0814428C: - ldrh r0, [r5, 0x2] - strh r0, [r1] - ldrh r0, [r5] - strh r0, [r2] - movs r0, 0x1 - b _081442C0 -_08144298: - movs r3, 0 - cmp r3, r4 - bge _081442BE - ldr r0, [r6] - ldr r6, _081442C8 @ =0x0000343c - adds r2, r0, r6 - adds r6, 0xE - adds r1, r0, r6 -_081442A8: - ldrh r0, [r2, 0xE] - cmp r0, 0 - bne _081442B4 - ldrh r0, [r2] - cmp r0, 0 - beq _0814428C -_081442B4: - adds r2, 0x2 - adds r1, 0x2 - adds r3, 0x1 - cmp r3, r4 - blt _081442A8 -_081442BE: - movs r0, 0 -_081442C0: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_081442C8: .4byte 0x0000343c - thumb_func_end sub_8144254 - - thumb_func_start sub_81442CC -sub_81442CC: @ 81442CC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r4, r0, 0 - movs r0, 0 - str r0, [sp] - ldr r2, _08144328 @ =0x05000019 - mov r0, sp - adds r1, r4, 0 - bl CpuSet - ldr r0, _0814432C @ =0x00000101 - str r0, [r4] - movs r0, 0x1 - strh r0, [r4, 0x4] - str r0, [r4, 0x8] - strh r0, [r4, 0xC] - str r0, [r4, 0x10] - bl sub_8143FC8 - cmp r0, 0 - beq _08144330 - bl sav1_get_mevent_buffer_1 - ldrh r0, [r0] - strh r0, [r4, 0x14] - bl sav1_get_mevent_buffer_2 - adds r1, r4, 0 - adds r1, 0x20 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - bl sav1_get_mevent_buffer_1 - ldrb r1, [r0, 0x9] - adds r0, r4, 0 - adds r0, 0x44 - strb r1, [r0] - b _08144332 - .align 2, 0 -_08144328: .4byte 0x05000019 -_0814432C: .4byte 0x00000101 -_08144330: - strh r0, [r4, 0x14] -_08144332: - adds r5, r4, 0 - adds r5, 0x4C - ldr r0, _081443BC @ =gSaveBlock2Ptr - mov r8, r0 - adds r6, r4, 0 - adds r6, 0x45 - adds r7, r4, 0 - adds r7, 0x50 - movs r1, 0x5C - adds r1, r4 - mov r9, r1 - movs r2, 0x60 - adds r2, r4 - mov r10, r2 - ldr r0, _081443C0 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r3, _081443C4 @ =0x00003458 - adds r2, r0, r3 - adds r1, r4, 0 - adds r1, 0x16 - movs r3, 0x3 -_0814435C: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _0814435C - mov r0, r8 - ldr r1, [r0] - adds r1, 0xA - adds r0, r5, 0 - bl CopyUnalignedWord - mov r2, r8 - ldr r1, [r2] - adds r0, r6, 0 - bl StringCopy - ldr r0, _081443C0 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r3, _081443C8 @ =0x00002ca0 - adds r2, r0, r3 - adds r1, r7, 0 - movs r3, 0x5 -_0814438C: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _0814438C - ldr r1, _081443CC @ =RomHeaderGameCode - mov r0, r9 - movs r2, 0x4 - bl memcpy - ldr r0, _081443D0 @ =RomHeaderSoftwareVersion - ldrb r0, [r0] - mov r5, r10 - strb r0, [r5] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081443BC: .4byte gSaveBlock2Ptr -_081443C0: .4byte gSaveBlock1Ptr -_081443C4: .4byte 0x00003458 -_081443C8: .4byte 0x00002ca0 -_081443CC: .4byte RomHeaderGameCode -_081443D0: .4byte RomHeaderSoftwareVersion - thumb_func_end sub_81442CC - - thumb_func_start sub_81443D4 -sub_81443D4: @ 81443D4 - push {lr} - adds r2, r0, 0 - ldr r1, [r2] - ldr r0, _0814440C @ =0x00000101 - cmp r1, r0 - bne _08144410 - ldrh r1, [r2, 0x4] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08144410 - ldr r0, [r2, 0x8] - ands r0, r3 - cmp r0, 0 - beq _08144410 - ldrh r1, [r2, 0xC] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08144410 - ldr r0, [r2, 0x10] - movs r1, 0xF - ands r0, r1 - cmp r0, 0 - beq _08144410 - movs r0, 0x1 - b _08144412 - .align 2, 0 -_0814440C: .4byte 0x00000101 -_08144410: - movs r0, 0 -_08144412: - pop {r1} - bx r1 - thumb_func_end sub_81443D4 - - thumb_func_start sub_8144418 -sub_8144418: @ 8144418 - push {lr} - ldrh r1, [r1, 0x14] - cmp r1, 0 - bne _08144424 - movs r0, 0 - b _08144430 -_08144424: - ldrh r0, [r0] - cmp r0, r1 - beq _0814442E - movs r0, 0x2 - b _08144430 -_0814442E: - movs r0, 0x1 -_08144430: - pop {r1} - bx r1 - thumb_func_end sub_8144418 - - thumb_func_start sub_8144434 -sub_8144434: @ 8144434 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r4, 0 - adds r5, 0x20 - adds r4, 0x44 - ldrb r1, [r4] - adds r0, r5, 0 - bl sub_8144184 - ldrb r2, [r4] - subs r4, r2, r0 - cmp r4, 0 - bne _08144454 - movs r0, 0x1 - b _0814446E -_08144454: - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_81441AC - cmp r0, 0 - beq _08144464 - movs r0, 0x3 - b _0814446E -_08144464: - cmp r4, 0x1 - beq _0814446C - movs r0, 0x2 - b _0814446E -_0814446C: - movs r0, 0x4 -_0814446E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8144434 - - thumb_func_start sub_8144474 -sub_8144474: @ 8144474 - push {r4,lr} - movs r3, 0 - adds r2, r0, 0 - adds r2, 0x16 -_0814447C: - ldrh r0, [r2] - ldrh r4, [r1] - cmp r0, r4 - beq _08144488 - movs r0, 0 - b _08144494 -_08144488: - adds r1, 0x2 - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x3 - ble _0814447C - movs r0, 0x1 -_08144494: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8144474 - - thumb_func_start sub_814449C -sub_814449C: @ 814449C - push {lr} - adds r2, r0, 0 - adds r2, 0x20 - adds r0, 0x44 - ldrb r1, [r0] - adds r0, r2, 0 - bl sub_8144184 - pop {r1} - bx r1 - thumb_func_end sub_814449C - - thumb_func_start sub_81444B0 -sub_81444B0: @ 81444B0 - push {lr} - adds r2, r0, 0 - cmp r1, 0x4 - bhi _081444FC - lsls r0, r1, 2 - ldr r1, _081444C4 @ =_081444C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081444C4: .4byte _081444C8 - .align 2, 0 -_081444C8: - .4byte _081444DC - .4byte _081444E0 - .4byte _081444E4 - .4byte _081444E8 - .4byte _081444F4 -_081444DC: - ldrh r0, [r2, 0x20] - b _0814450A -_081444E0: - ldrh r0, [r2, 0x22] - b _0814450A -_081444E4: - ldrh r0, [r2, 0x24] - b _0814450A -_081444E8: - adds r0, r2, 0 - bl sub_814449C - lsls r0, 16 - lsrs r0, 16 - b _0814450A -_081444F4: - adds r0, r2, 0 - adds r0, 0x44 - ldrb r0, [r0] - b _0814450A -_081444FC: - ldr r0, _08144510 @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c" - ldr r1, _08144514 @ =0x00000339 - ldr r2, _08144518 @ =gUnknown_8466F5C "0" - movs r3, 0x1 - bl AGBAssert - movs r0, 0 -_0814450A: - pop {r1} - bx r1 - .align 2, 0 -_08144510: .4byte gUnknown_8466F28 -_08144514: .4byte 0x00000339 -_08144518: .4byte gUnknown_8466F5C - thumb_func_end sub_81444B0 - - thumb_func_start sub_814451C -sub_814451C: @ 814451C - push {r4,lr} - adds r4, r0, 0 - ldr r2, _08144544 @ =gSaveBlock1Ptr - ldr r0, [r2] - ldr r1, _08144548 @ =0x000032e4 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x3 - ands r0, r1 - adds r3, r2, 0 - cmp r0, 0x2 - bne _081445B6 - movs r2, 0 - cmp r4, 0x4 - bhi _08144582 - lsls r0, r4, 2 - ldr r1, _0814454C @ =_08144550 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08144544: .4byte gSaveBlock1Ptr -_08144548: .4byte 0x000032e4 -_0814454C: .4byte _08144550 - .align 2, 0 -_08144550: - .4byte _08144564 - .4byte _08144570 - .4byte _0814457C - .4byte _08144582 - .4byte _08144582 -_08144564: - ldr r0, [r3] - ldr r1, _0814456C @ =0x00003434 - b _08144580 - .align 2, 0 -_0814456C: .4byte 0x00003434 -_08144570: - ldr r0, [r3] - ldr r1, _08144578 @ =0x00003436 - b _08144580 - .align 2, 0 -_08144578: .4byte 0x00003436 -_0814457C: - ldr r0, [r3] - ldr r1, _08144598 @ =0x00003438 -_08144580: - adds r2, r0, r1 -_08144582: - cmp r2, 0 - bne _081445A4 - ldr r0, _0814459C @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c" - movs r1, 0xD9 - lsls r1, 2 - ldr r2, _081445A0 @ =gUnknown_8466F5C "0" - movs r3, 0x1 - bl AGBAssert - b _081445B6 - .align 2, 0 -_08144598: .4byte 0x00003438 -_0814459C: .4byte gUnknown_8466F28 -_081445A0: .4byte gUnknown_8466F5C -_081445A4: - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - lsrs r0, 16 - ldr r1, _081445BC @ =0x000003e7 - cmp r0, r1 - bls _081445B6 - strh r1, [r2] -_081445B6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081445BC: .4byte 0x000003e7 - thumb_func_end sub_814451C - - thumb_func_start sub_81445C0 -sub_81445C0: @ 81445C0 - push {lr} - cmp r0, 0x4 - bhi _081446A4 - lsls r0, 2 - ldr r1, _081445D0 @ =_081445D4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081445D0: .4byte _081445D4 - .align 2, 0 -_081445D4: - .4byte _081445E8 - .4byte _08144610 - .4byte _08144638 - .4byte _08144660 - .4byte _08144684 -_081445E8: - ldr r0, _08144604 @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, _08144608 @ =0x000032e4 - adds r0, r2, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _081446A4 - ldr r1, _0814460C @ =0x00003434 - adds r0, r2, r1 - ldrh r0, [r0] - b _081446B2 - .align 2, 0 -_08144604: .4byte gSaveBlock1Ptr -_08144608: .4byte 0x000032e4 -_0814460C: .4byte 0x00003434 -_08144610: - ldr r0, _0814462C @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, _08144630 @ =0x000032e4 - adds r0, r2, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _081446A4 - ldr r1, _08144634 @ =0x00003434 - adds r0, r2, r1 - ldrh r0, [r0, 0x2] - b _081446B2 - .align 2, 0 -_0814462C: .4byte gSaveBlock1Ptr -_08144630: .4byte 0x000032e4 -_08144634: .4byte 0x00003434 -_08144638: - ldr r0, _08144654 @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, _08144658 @ =0x000032e4 - adds r0, r2, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _081446A4 - ldr r1, _0814465C @ =0x00003434 - adds r0, r2, r1 - ldrh r0, [r0, 0x4] - b _081446B2 - .align 2, 0 -_08144654: .4byte gSaveBlock1Ptr -_08144658: .4byte 0x000032e4 -_0814465C: .4byte 0x00003434 -_08144660: - ldr r0, _0814467C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08144680 @ =0x000032e4 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _081446A4 - bl sub_8144218 - lsls r0, 16 - lsrs r0, 16 - b _081446B2 - .align 2, 0 -_0814467C: .4byte gSaveBlock1Ptr -_08144680: .4byte 0x000032e4 -_08144684: - ldr r0, _0814469C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _081446A0 @ =0x000032e4 - adds r2, r0, r1 - ldrb r1, [r2, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _081446A4 - ldrb r0, [r2, 0x9] - b _081446B2 - .align 2, 0 -_0814469C: .4byte gSaveBlock1Ptr -_081446A0: .4byte 0x000032e4 -_081446A4: - ldr r0, _081446B8 @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c" - ldr r1, _081446BC @ =0x00000391 - ldr r2, _081446C0 @ =gUnknown_8466F5C "0" - movs r3, 0x1 - bl AGBAssert - movs r0, 0 -_081446B2: - pop {r1} - bx r1 - .align 2, 0 -_081446B8: .4byte gUnknown_8466F28 -_081446BC: .4byte 0x00000391 -_081446C0: .4byte gUnknown_8466F5C - thumb_func_end sub_81445C0 - - thumb_func_start sub_81446C4 -sub_81446C4: @ 81446C4 - ldr r1, _081446CC @ =gUnknown_203F3BC - movs r0, 0 - str r0, [r1] - bx lr - .align 2, 0 -_081446CC: .4byte gUnknown_203F3BC - thumb_func_end sub_81446C4 - - thumb_func_start sub_81446D0 -sub_81446D0: @ 81446D0 - push {r4,r5,lr} - lsls r0, 16 - lsrs r0, 16 - adds r4, r0, 0 - ldr r5, _08144700 @ =gUnknown_203F3BC - movs r0, 0 - str r0, [r5] - cmp r4, 0 - beq _0814470E - bl sub_8143FC8 - cmp r0, 0 - beq _0814470C - ldr r0, _08144704 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08144708 @ =0x000032e4 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r4 - bne _0814470C - movs r0, 0x1 - str r0, [r5] - b _0814470E - .align 2, 0 -_08144700: .4byte gUnknown_203F3BC -_08144704: .4byte gSaveBlock1Ptr -_08144708: .4byte 0x000032e4 -_0814470C: - movs r0, 0 -_0814470E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81446D0 - - thumb_func_start sub_8144714 -sub_8144714: @ 8144714 - push {lr} - adds r2, r0, 0 - ldr r0, _08144738 @ =gUnknown_203F3BC - ldr r0, [r0] - cmp r0, 0 - beq _08144782 - cmp r2, 0x1 - beq _08144758 - cmp r2, 0x1 - bcc _08144744 - cmp r2, 0x2 - bne _08144774 - ldr r0, _0814473C @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r0, _08144740 @ =0x00003478 - adds r2, r0 - movs r0, 0x2 - b _08144762 - .align 2, 0 -_08144738: .4byte gUnknown_203F3BC -_0814473C: .4byte gSaveBlock1Ptr -_08144740: .4byte 0x00003478 -_08144744: - ldr r0, _08144750 @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r0, _08144754 @ =0x00003464 - adds r2, r0 - movs r0, 0 - b _08144762 - .align 2, 0 -_08144750: .4byte gSaveBlock1Ptr -_08144754: .4byte 0x00003464 -_08144758: - ldr r0, _0814476C @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r0, _08144770 @ =0x00003464 - adds r2, r0 - movs r0, 0x1 -_08144762: - movs r3, 0x5 - bl sub_8144824 - b _08144782 - .align 2, 0 -_0814476C: .4byte gSaveBlock1Ptr -_08144770: .4byte 0x00003464 -_08144774: - ldr r0, _08144788 @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c" - movs r1, 0xF7 - lsls r1, 2 - ldr r2, _0814478C @ =gUnknown_8466F5C "0" - movs r3, 0x1 - bl AGBAssert -_08144782: - pop {r0} - bx r0 - .align 2, 0 -_08144788: .4byte gUnknown_8466F28 -_0814478C: .4byte gUnknown_8466F5C - thumb_func_end sub_8144714 - - thumb_func_start sub_8144790 -sub_8144790: @ 8144790 - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - ldr r0, _081447B0 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, _081447B4 @ =0x00003464 - adds r1, r0 - ldr r2, _081447B8 @ =0x0500000a - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_081447B0: .4byte gSaveBlock1Ptr -_081447B4: .4byte 0x00003464 -_081447B8: .4byte 0x0500000a - thumb_func_end sub_8144790 - - thumb_func_start sub_81447BC -sub_81447BC: @ 81447BC - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r1, 0 - cmp r1, r2 - bge _081447DE - ldr r0, [r4] - cmp r0, r5 - beq _081447DE - adds r3, r4, 0 -_081447D0: - adds r3, 0x4 - adds r1, 0x1 - cmp r1, r2 - bge _081447DE - ldr r0, [r3] - cmp r0, r5 - bne _081447D0 -_081447DE: - cmp r1, r2 - bne _08144800 - subs r3, r1, 0x1 - cmp r3, 0 - ble _081447FA - lsls r0, r3, 2 - subs r0, 0x4 - adds r2, r0, r4 -_081447EE: - ldr r0, [r2] - str r0, [r2, 0x4] - subs r2, 0x4 - subs r3, 0x1 - cmp r3, 0 - bgt _081447EE -_081447FA: - str r5, [r4] - movs r0, 0x1 - b _0814481C -_08144800: - adds r3, r1, 0 - cmp r3, 0 - ble _08144818 - lsls r0, r3, 2 - subs r0, 0x4 - adds r2, r0, r4 -_0814480C: - ldr r0, [r2] - str r0, [r2, 0x4] - subs r2, 0x4 - subs r3, 0x1 - cmp r3, 0 - bgt _0814480C -_08144818: - str r5, [r4] - movs r0, 0 -_0814481C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81447BC - - thumb_func_start sub_8144824 -sub_8144824: @ 8144824 - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - adds r1, r2, 0 - adds r2, r3, 0 - bl sub_81447BC - cmp r0, 0 - beq _0814483C - adds r0, r4, 0 - bl sub_814451C -_0814483C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8144824 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/mevent_8145654.s b/asm/mevent_8145654.s deleted file mode 100644 index ccb86ba64..000000000 --- a/asm/mevent_8145654.s +++ /dev/null @@ -1,2728 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8145654 -sub_8145654: @ 8145654 - push {r4-r7,lr} - adds r5, r0, 0 - adds r6, r1, 0 - cmp r5, 0 - beq _08145670 - cmp r6, 0 - beq _08145670 - ldr r7, _08145674 @ =gUnknown_203F3C8 - ldr r0, _08145678 @ =0x0000145c - bl AllocZeroed - str r0, [r7] - cmp r0, 0 - bne _0814567C -_08145670: - movs r0, 0 - b _081456E6 - .align 2, 0 -_08145674: .4byte gUnknown_203F3C8 -_08145678: .4byte 0x0000145c -_0814567C: - movs r4, 0xA6 - lsls r4, 1 - adds r1, r5, 0 - adds r2, r4, 0 - bl memcpy - ldr r1, [r7] - adds r1, r4 - adds r0, r6, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r2, [r7] - ldrb r1, [r2, 0x8] - lsls r0, r1, 26 - lsrs r0, 28 - cmp r0, 0x7 - bls _081456AE - movs r0, 0x3D - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x8] -_081456AE: - ldr r2, [r7] - ldrb r1, [r2, 0x8] - lsls r0, r1, 30 - lsrs r0, 30 - cmp r0, 0x2 - bls _081456C2 - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x8] -_081456C2: - ldr r1, [r7] - ldrb r0, [r1, 0x9] - cmp r0, 0x7 - bls _081456CE - movs r0, 0 - strb r0, [r1, 0x9] -_081456CE: - ldr r0, [r7] - movs r1, 0xB8 - lsls r1, 1 - adds r2, r0, r1 - ldrb r0, [r0, 0x8] - lsls r0, 26 - lsrs r0, 28 - lsls r0, 4 - ldr r1, _081456EC @ =gUnknown_8467FB8 - adds r0, r1 - str r0, [r2] - movs r0, 0x1 -_081456E6: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081456EC: .4byte gUnknown_8467FB8 - thumb_func_end sub_8145654 - - thumb_func_start sub_81456F0 -sub_81456F0: @ 81456F0 - push {r4,lr} - ldr r4, _08145714 @ =gUnknown_203F3C8 - ldr r0, [r4] - cmp r0, 0 - beq _0814570C - ldr r2, _08145718 @ =0x0000145c - movs r1, 0 - bl memset - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] -_0814570C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08145714: .4byte gUnknown_203F3C8 -_08145718: .4byte 0x0000145c - thumb_func_end sub_81456F0 - - thumb_func_start sub_814571C -sub_814571C: @ 814571C - push {r4-r6,lr} - sub sp, 0x24 - ldr r5, _08145730 @ =gUnknown_203F3C8 - ldr r0, [r5] - cmp r0, 0 - bne _08145734 - movs r0, 0x1 - negs r0, r0 - b _08145930 - .align 2, 0 -_08145730: .4byte gUnknown_203F3C8 -_08145734: - movs r4, 0xBA - lsls r4, 1 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x7 - bls _08145742 - b _08145908 -_08145742: - lsls r0, 2 - ldr r1, _0814574C @ =_08145750 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0814574C: .4byte _08145750 - .align 2, 0 -_08145750: - .4byte _08145770 - .4byte _08145782 - .4byte _08145790 - .4byte _08145834 - .4byte _081458AC - .4byte _081458B2 - .4byte _081458CC - .4byte _081458D2 -_08145770: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _0814591E -_08145782: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _0814578E - b _0814591E -_0814578E: - b _0814592E -_08145790: - movs r5, 0x1E - str r5, [sp] - movs r4, 0x14 - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - ldr r5, _0814582C @ =gUnknown_203F3C8 - ldr r0, [r5] - movs r1, 0xB8 - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - ldr r1, [r0, 0x4] - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0x8 - bl decompress_and_copy_tile_data_to_vram - ldr r4, _08145830 @ =gUnknown_8467074 - adds r0, r4, 0 - bl AddWindow - ldr r1, [r5] - movs r2, 0xBB - lsls r2, 1 - adds r1, r2 - strh r0, [r1] - adds r0, r4, 0 - adds r0, 0x8 - bl AddWindow - ldr r1, [r5] - movs r2, 0xBC - lsls r2, 1 - adds r1, r2 - strh r0, [r1] - adds r4, 0x10 - adds r0, r4, 0 - bl AddWindow - ldr r1, [r5] - movs r2, 0xBD - lsls r2, 1 - adds r1, r2 - strh r0, [r1] - b _0814591E - .align 2, 0 -_0814582C: .4byte gUnknown_203F3C8 -_08145830: .4byte gUnknown_8467074 -_08145834: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _0814592E - ldr r2, _081458A0 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r5, _081458A4 @ =gUnknown_203F3C8 - ldr r0, [r5] - movs r4, 0xB8 - lsls r4, 1 - adds r0, r4 - ldr r0, [r0] - ldr r0, [r0, 0xC] - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - ldr r1, [r5] - adds r4, r1, r4 - ldr r0, [r4] - ldr r0, [r0, 0x8] - ldr r4, _081458A8 @ =0x0000045c - adds r1, r4 - bl LZ77UnCompWram - ldr r1, [r5] - adds r1, r4 - movs r2, 0x1E - str r2, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - str r6, [sp, 0x8] - str r6, [sp, 0xC] - str r2, [sp, 0x10] - str r0, [sp, 0x14] - movs r0, 0x1 - str r0, [sp, 0x18] - movs r0, 0x8 - str r0, [sp, 0x1C] - str r6, [sp, 0x20] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyRectToBgTilemapBufferRect - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - b _0814591E - .align 2, 0 -_081458A0: .4byte gPaletteFade -_081458A4: .4byte gUnknown_203F3C8 -_081458A8: .4byte 0x0000045c -_081458AC: - bl sub_8145A98 - b _0814591E -_081458B2: - movs r0, 0 - bl sub_8145D18 - movs r0, 0x1 - bl sub_8145D18 - movs r0, 0x2 - bl sub_8145D18 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - b _0814591E -_081458CC: - bl sub_809707C - b _0814591E -_081458D2: - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - ldr r2, _08145904 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - bl sub_8146060 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl UpdatePaletteFade - b _0814591E - .align 2, 0 -_08145904: .4byte gPaletteFade -_08145908: - bl UpdatePaletteFade - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0814592E - ldr r0, [r5] - adds r0, r4 - strb r1, [r0] - movs r0, 0x1 - b _08145930 -_0814591E: - ldr r0, _08145938 @ =gUnknown_203F3C8 - ldr r1, [r0] - movs r0, 0xBA - lsls r0, 1 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0814592E: - movs r0, 0 -_08145930: - add sp, 0x24 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08145938: .4byte gUnknown_203F3C8 - thumb_func_end sub_814571C - - thumb_func_start sub_814593C -sub_814593C: @ 814593C - push {r4,r5,lr} - sub sp, 0x8 - adds r2, r0, 0 - ldr r5, _08145950 @ =gUnknown_203F3C8 - ldr r0, [r5] - cmp r0, 0 - bne _08145954 - movs r0, 0x1 - negs r0, r0 - b _08145A8C - .align 2, 0 -_08145950: .4byte gUnknown_203F3C8 -_08145954: - movs r4, 0xBA - lsls r4, 1 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x6 - bls _08145962 - b _08145A64 -_08145962: - lsls r0, 2 - ldr r1, _0814596C @ =_08145970 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0814596C: .4byte _08145970 - .align 2, 0 -_08145970: - .4byte _0814598C - .4byte _0814599E - .4byte _081459AA - .4byte _081459F2 - .4byte _08145A30 - .4byte _08145A3A - .4byte _08145A4C -_0814598C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _08145A7A -_0814599E: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - beq _08145A7A - b _08145A8A -_081459AA: - movs r5, 0x1E - str r5, [sp] - movs r4, 0x14 - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - b _08145A7A -_081459F2: - movs r0, 0x1 - bl HideBg - movs r0, 0x2 - bl HideBg - ldr r4, _08145A2C @ =gUnknown_203F3C8 - ldr r0, [r4] - movs r1, 0xBD - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - bl RemoveWindow - ldr r0, [r4] - movs r1, 0xBC - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - bl RemoveWindow - ldr r0, [r4] - movs r1, 0xBB - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - bl RemoveWindow - b _08145A7A - .align 2, 0 -_08145A2C: .4byte gUnknown_203F3C8 -_08145A30: - bl sub_81461D8 - bl FreeMonIconPalettes - b _08145A7A -_08145A3A: - ldr r0, _08145A48 @ =gUnknown_203F3B8 - ldrb r0, [r0] - adds r1, r2, 0 - bl sub_8142344 - b _08145A7A - .align 2, 0 -_08145A48: .4byte gUnknown_203F3B8 -_08145A4C: - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08145A7A -_08145A64: - bl UpdatePaletteFade - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08145A8A - ldr r0, [r5] - adds r0, r4 - strb r1, [r0] - movs r0, 0x1 - b _08145A8C -_08145A7A: - ldr r0, _08145A94 @ =gUnknown_203F3C8 - ldr r1, [r0] - movs r0, 0xBA - lsls r0, 1 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08145A8A: - movs r0, 0 -_08145A8C: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08145A94: .4byte gUnknown_203F3C8 - thumb_func_end sub_814593C - - thumb_func_start sub_8145A98 -sub_8145A98: @ 8145A98 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r5, 0 - mov r0, sp - movs r1, 0 - movs r2, 0x6 - bl memset - ldr r4, _08145B7C @ =gUnknown_203F3C8 - ldr r1, [r4] - ldr r2, _08145B80 @ =0x0000018b - adds r0, r1, r2 - adds r1, 0xA - movs r2, 0x28 - bl memcpy - ldr r0, [r4] - ldr r3, _08145B84 @ =0x000001b3 - adds r1, r0, r3 - movs r0, 0xFF - strb r0, [r1] - ldr r1, [r4] - movs r2, 0xDA - lsls r2, 1 - adds r0, r1, r2 - adds r1, 0x32 - movs r2, 0x28 - bl memcpy - ldr r0, [r4] - movs r3, 0xEE - lsls r3, 1 - adds r0, r3 - movs r1, 0x1 - negs r1, r1 - strb r1, [r0] - ldr r1, [r4] - ldr r0, [r1, 0x4] - ldr r2, _08145B88 @ =0x000f423f - cmp r0, r2 - bls _08145AF4 - str r2, [r1, 0x4] -_08145AF4: - ldr r1, [r4] - ldr r2, _08145B8C @ =0x000001dd - adds r0, r1, r2 - ldr r1, [r1, 0x4] - movs r2, 0 - movs r3, 0x6 - bl ConvertIntToDecimalStringN - adds r6, r4, 0 -_08145B06: - ldr r2, [r6] - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r4, r1, r5 - adds r0, r4, r2 - movs r3, 0xF2 - lsls r3, 1 - adds r0, r3 - adds r1, r2 - adds r1, 0x5A - movs r2, 0x28 - bl memcpy - ldr r1, [r6] - movs r0, 0x83 - lsls r0, 2 - adds r1, r0 - adds r1, r4 - movs r2, 0x1 - negs r2, r2 - adds r7, r2, 0 - movs r0, 0xFF - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _08145B06 - ldr r6, _08145B7C @ =gUnknown_203F3C8 - ldr r1, [r6] - movs r3, 0xA2 - lsls r3, 2 - adds r0, r1, r3 - adds r1, 0xFA - movs r2, 0x28 - bl memcpy - ldr r0, [r6] - movs r4, 0xAC - lsls r4, 2 - adds r0, r4 - movs r1, 0x1 - negs r1, r1 - adds r4, r1, 0 - movs r1, 0xFF - strb r1, [r0] - ldr r1, [r6] - ldrb r0, [r1, 0x8] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x1 - beq _08145BB8 - cmp r0, 0x1 - bgt _08145B90 - cmp r0, 0 - beq _08145B96 - b _08145D08 - .align 2, 0 -_08145B7C: .4byte gUnknown_203F3C8 -_08145B80: .4byte 0x0000018b -_08145B84: .4byte 0x000001b3 -_08145B88: .4byte 0x000f423f -_08145B8C: .4byte 0x000001dd -_08145B90: - cmp r0, 0x2 - beq _08145BC8 - b _08145D08 -_08145B96: - ldr r2, _08145BB0 @ =0x000002b1 - adds r0, r1, r2 - movs r3, 0x91 - lsls r3, 1 - adds r1, r3 - movs r2, 0x28 - bl memcpy - ldr r1, [r6] - ldr r0, _08145BB4 @ =0x000002d9 - adds r1, r0 - b _08145BBC - .align 2, 0 -_08145BB0: .4byte 0x000002b1 -_08145BB4: .4byte 0x000002d9 -_08145BB8: - ldr r2, _08145BC4 @ =0x000002b1 - adds r1, r2 -_08145BBC: - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - b _08145D08 - .align 2, 0 -_08145BC4: .4byte 0x000002b1 -_08145BC8: - ldr r3, _08145C84 @ =0x000002b1 - adds r0, r1, r3 - ldrb r1, [r0] - orrs r1, r7 - strb r1, [r0] - mov r3, sp - ldr r1, [r6] - movs r4, 0xA6 - lsls r4, 1 - adds r0, r1, r4 - ldrh r0, [r0] - ldr r2, _08145C88 @ =0x000003e7 - cmp r0, r2 - bls _08145BE6 - adds r0, r2, 0 -_08145BE6: - strh r0, [r3] - mov r3, sp - movs r4, 0xA7 - lsls r4, 1 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, r2 - bls _08145BF8 - adds r0, r2, 0 -_08145BF8: - strh r0, [r3, 0x2] - mov r3, sp - movs r4, 0xA8 - lsls r4, 1 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, r2 - bls _08145C0A - adds r0, r2, 0 -_08145C0A: - strh r0, [r3, 0x4] - movs r5, 0 -_08145C0E: - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 4 - movs r0, 0xB7 - lsls r0, 2 - adds r4, r0 - ldr r0, [r6] - adds r0, r4 - adds r0, 0x2A - movs r1, 0xFF - movs r2, 0x4 - bl memset - ldr r0, [r6] - adds r0, r4 - adds r0, 0x1 - movs r1, 0xFF - movs r2, 0x29 - bl memset - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x7 - bls _08145C0E - movs r5, 0 - movs r6, 0 - ldr r1, _08145C8C @ =gUnknown_203F3C8 - mov r8, r1 - movs r2, 0x91 - lsls r2, 1 - mov r10, r2 - ldr r7, _08145C90 @ =0x00000175 - movs r3, 0xB7 - lsls r3, 2 - mov r9, r3 -_08145C56: - mov r4, r8 - ldr r2, [r4] - mov r0, r10 - adds r1, r2, r0 - adds r0, r1, r5 - ldrb r3, [r0] - cmp r3, 0xF7 - beq _08145C98 - ldr r1, _08145C90 @ =0x00000175 - adds r0, r2, r1 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 4 - adds r0, r6, r0 - ldr r4, _08145C94 @ =0x000002dd - adds r1, r2, r4 - adds r1, r0 - strb r3, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - b _08145CFE - .align 2, 0 -_08145C84: .4byte 0x000002b1 -_08145C88: .4byte 0x000003e7 -_08145C8C: .4byte gUnknown_203F3C8 -_08145C90: .4byte 0x00000175 -_08145C94: .4byte 0x000002dd -_08145C98: - adds r0, r5, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - cmp r3, 0x2 - bls _08145CA8 - adds r0, r5, 0x2 - lsls r0, 16 - b _08145CFC -_08145CA8: - adds r0, r2, r7 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 4 - add r0, r9 - adds r0, r2, r0 - adds r0, 0x2A - lsls r1, r3, 1 - add r1, sp - ldrh r1, [r1] - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - mov r0, r8 - ldr r1, [r0] - adds r0, r1, r7 - ldrb r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 4 - adds r0, r1, r0 - adds r4, r5, 0x2 - add r1, r10 - adds r1, r4 - ldrb r1, [r1] - add r0, r9 - strb r1, [r0] - mov r2, r8 - ldr r1, [r2] - adds r1, r7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r0, r7 - ldrb r0, [r0] - cmp r0, 0x7 - bhi _08145D08 - movs r6, 0 - lsls r0, r4, 16 -_08145CFC: - lsrs r5, r0, 16 -_08145CFE: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x27 - bls _08145C56 -_08145D08: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8145A98 - - thumb_func_start sub_8145D18 -sub_8145D18: @ 8145D18 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r4, r0, 24 - mov r8, r4 - movs r0, 0 - str r0, [sp, 0xC] - ldr r7, _08145D60 @ =gUnknown_203F3C8 - ldr r0, [r7] - lsls r1, r4, 1 - movs r2, 0xBB - lsls r2, 1 - adds r0, r2 - adds r0, r1 - ldrh r0, [r0] - lsls r6, r0, 24 - lsrs r5, r6, 24 - adds r0, r5, 0 - bl PutWindowTilemap - adds r0, r5, 0 - movs r1, 0 - bl FillWindowPixelBuffer - cmp r4, 0x1 - beq _08145E40 - cmp r4, 0x1 - bgt _08145D64 - cmp r4, 0 - beq _08145D70 - mov r9, r6 - b _08146038 - .align 2, 0 -_08145D60: .4byte gUnknown_203F3C8 -_08145D64: - mov r0, r8 - cmp r0, 0x2 - bne _08145D6C - b _08145EA4 -_08145D6C: - mov r9, r6 - b _08146038 -_08145D70: - ldr r2, [r7] - movs r1, 0xB8 - lsls r1, 1 - mov r10, r1 - adds r0, r2, r1 - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 28 - lsrs r0, 28 - lsls r1, r0, 1 - adds r1, r0 - ldr r0, _08145E34 @ =gUnknown_8467068 - mov r8, r0 - add r1, r8 - str r1, [sp] - ldr r1, [sp, 0xC] - str r1, [sp, 0x4] - ldr r0, _08145E38 @ =0x0000018b - adds r2, r0 - str r2, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x3 - movs r2, 0 - movs r3, 0x1 - bl box_print - ldr r4, [r7] - movs r1, 0xDA - lsls r1, 1 - mov r9, r1 - add r4, r9 - movs r0, 0x3 - movs r1, 0x2 - bl GetFontAttribute - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x3 - adds r1, r4, 0 - bl GetStringWidth - movs r1, 0xA0 - subs r1, r0 - cmp r1, 0 - bge _08145DCE - movs r1, 0 -_08145DCE: - lsls r2, r1, 24 - lsrs r2, 24 - ldr r3, [r7] - mov r1, r10 - adds r0, r3, r1 - ldr r0, [r0] - ldrb r1, [r0] - lsls r1, 28 - lsrs r1, 28 - lsls r0, r1, 1 - adds r0, r1 - add r0, r8 - str r0, [sp] - ldr r0, [sp, 0xC] - str r0, [sp, 0x4] - add r3, r9 - str r3, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x3 - movs r3, 0x11 - bl box_print - ldr r2, [r7] - ldr r0, [r2, 0x4] - mov r9, r6 - cmp r0, 0 - bne _08145E06 - b _08146038 -_08145E06: - mov r1, r10 - adds r0, r2, r1 - ldr r0, [r0] - ldrb r1, [r0] - lsls r1, 28 - lsrs r1, 28 - lsls r0, r1, 1 - adds r0, r1 - add r0, r8 - str r0, [sp] - ldr r0, [sp, 0xC] - str r0, [sp, 0x4] - ldr r1, _08145E3C @ =0x000001dd - adds r0, r2, r1 - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x2 - movs r2, 0xA6 - movs r3, 0x11 - bl box_print - b _08146038 - .align 2, 0 -_08145E34: .4byte gUnknown_8467068 -_08145E38: .4byte 0x0000018b -_08145E3C: .4byte 0x000001dd -_08145E40: - mov r9, r6 -_08145E42: - ldr r2, [sp, 0xC] - lsls r4, r2, 24 - asrs r4, 24 - lsls r3, r4, 4 - adds r3, 0x2 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _08145E9C @ =gUnknown_203F3C8 - ldr r2, [r0] - movs r1, 0xB8 - lsls r1, 1 - adds r0, r2, r1 - ldr r0, [r0] - ldrb r0, [r0] - lsrs r0, 4 - lsls r1, r0, 1 - adds r1, r0 - ldr r0, _08145EA0 @ =gUnknown_8467068 - adds r1, r0 - str r1, [sp] - movs r0, 0 - str r0, [sp, 0x4] - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r4 - movs r1, 0xF2 - lsls r1, 1 - adds r0, r1 - adds r2, r0 - str r2, [sp, 0x8] - mov r2, r9 - lsrs r0, r2, 24 - movs r1, 0x3 - movs r2, 0 - bl box_print - adds r4, 0x1 - lsls r4, 24 - lsrs r0, r4, 24 - str r0, [sp, 0xC] - asrs r4, 24 - cmp r4, 0x3 - ble _08145E42 - b _08146038 - .align 2, 0 -_08145E9C: .4byte gUnknown_203F3C8 -_08145EA0: .4byte gUnknown_8467068 -_08145EA4: - ldr r4, _08145F2C @ =gUnknown_8467070 - ldr r2, [r7] - ldrb r0, [r2, 0x8] - lsls r0, 30 - lsrs r0, 30 - adds r0, r4 - ldrb r3, [r0] - movs r1, 0xB8 - lsls r1, 1 - adds r0, r2, r1 - ldr r0, [r0] - ldrb r0, [r0, 0x1] - lsls r0, 28 - lsrs r0, 28 - lsls r1, r0, 1 - adds r1, r0 - ldr r0, _08145F30 @ =gUnknown_8467068 - mov r10, r0 - add r1, r10 - str r1, [sp] - ldr r1, [sp, 0xC] - str r1, [sp, 0x4] - movs r1, 0xA2 - lsls r1, 2 - adds r0, r2, r1 - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x3 - movs r2, 0 - bl box_print - ldr r2, [r7] - ldrb r1, [r2, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - beq _08145F38 - lsls r0, r1, 30 - lsrs r0, 30 - adds r0, r4 - ldrb r3, [r0] - adds r3, 0x10 - lsls r3, 24 - lsrs r3, 24 - movs r1, 0xB8 - lsls r1, 1 - adds r0, r2, r1 - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r1, 28 - lsrs r1, 28 - lsls r0, r1, 1 - adds r0, r1 - add r0, r10 - str r0, [sp] - ldr r0, [sp, 0xC] - str r0, [sp, 0x4] - ldr r1, _08145F34 @ =0x000002b1 - adds r0, r2, r1 - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x3 - movs r2, 0 - bl box_print - mov r9, r6 - b _08146038 - .align 2, 0 -_08145F2C: .4byte gUnknown_8467070 -_08145F30: .4byte gUnknown_8467068 -_08145F34: .4byte 0x000002b1 -_08145F38: - movs r2, 0 - mov r8, r2 - lsls r0, r1, 30 - lsrs r0, 30 - adds r0, r4 - ldrb r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 - movs r0, 0x3 - movs r1, 0x2 - bl GetFontAttribute - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, [r7] - ldr r1, _08146054 @ =0x00000175 - adds r0, r1 - mov r9, r6 - ldr r1, [sp, 0xC] - ldrb r0, [r0] - cmp r1, r0 - bge _08146038 - str r5, [sp, 0x10] - lsls r0, r4, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - mov r10, r2 -_08145F6E: - mov r0, r8 - lsls r2, r0, 24 - lsrs r2, 24 - ldr r3, [r7] - movs r1, 0xB8 - lsls r1, 1 - adds r0, r3, r1 - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r1, 28 - lsrs r1, 28 - lsls r0, r1, 1 - adds r0, r1 - ldr r1, _08146058 @ =gUnknown_8467068 - adds r0, r1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r1, [sp, 0xC] - lsls r0, r1, 24 - asrs r6, r0, 24 - lsls r0, r6, 1 - adds r0, r6 - lsls r5, r0, 4 - movs r0, 0xB7 - lsls r0, 2 - adds r4, r5, r0 - adds r3, r4 - adds r3, 0x1 - str r3, [sp, 0x8] - ldr r0, [sp, 0x10] - movs r1, 0x3 - ldr r3, [sp, 0x14] - bl box_print - ldr r1, [r7] - adds r0, r1, r5 - ldr r2, _0814605C @ =0x00000306 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08146022 - adds r1, r4 - adds r1, 0x1 - movs r0, 0x3 - mov r2, r10 - bl GetStringWidth - add r8, r0 - mov r0, r8 - lsls r2, r0, 24 - lsrs r2, 24 - ldr r3, [r7] - movs r1, 0xB8 - lsls r1, 1 - adds r0, r3, r1 - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r1, 28 - lsrs r1, 28 - lsls r0, r1, 1 - adds r0, r1 - ldr r1, _08146058 @ =gUnknown_8467068 - adds r0, r1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r3, r4 - adds r3, 0x2A - str r3, [sp, 0x8] - ldr r0, [sp, 0x10] - movs r1, 0x2 - ldr r3, [sp, 0x14] - bl box_print - ldr r1, [r7] - adds r1, r4 - adds r1, 0x2A - movs r0, 0x3 - mov r2, r10 - bl GetStringWidth - ldr r1, [r7] - adds r1, r5 - movs r2, 0xB7 - lsls r2, 2 - adds r1, r2 - ldrb r1, [r1] - adds r0, r1 - add r8, r0 -_08146022: - adds r1, r6, 0x1 - lsls r1, 24 - lsrs r0, r1, 24 - str r0, [sp, 0xC] - asrs r1, 24 - ldr r0, [r7] - ldr r2, _08146054 @ =0x00000175 - adds r0, r2 - ldrb r0, [r0] - cmp r1, r0 - blt _08145F6E -_08146038: - mov r1, r9 - lsrs r0, r1, 24 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08146054: .4byte 0x00000175 -_08146058: .4byte gUnknown_8467068 -_0814605C: .4byte 0x00000306 - thumb_func_end sub_8145D18 - - thumb_func_start sub_8146060 -sub_8146060: @ 8146060 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r7, 0 - ldr r4, _081461BC @ =gUnknown_203F3C8 - ldr r0, [r4] - movs r1, 0xBE - lsls r1, 1 - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - ldr r0, [r4] - movs r2, 0xA9 - lsls r2, 1 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, 0 - beq _081460C8 - bl sub_8096FD4 - lsls r0, 16 - lsrs r0, 16 - ldr r1, _081461C0 @ =SpriteCallbackDummy - str r7, [sp] - str r7, [sp, 0x4] - movs r2, 0xDC - movs r3, 0x14 - bl sub_8096ECC - ldr r1, [r4] - movs r3, 0xBE - lsls r3, 1 - adds r1, r3 - strb r0, [r1] - ldr r2, _081461C4 @ =gSprites - ldr r0, [r4] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0, 0x5] -_081460C8: - ldr r1, [r4] - ldrb r0, [r1, 0x9] - cmp r0, 0 - beq _081461AC - ldrb r1, [r1, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _081461AC - ldr r0, _081461C8 @ =gUnknown_8467F58 - bl sub_800F034 - ldr r0, [r4] - movs r1, 0xB8 - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - ldrb r0, [r0, 0x1] - lsrs r0, 4 - lsls r0, 3 - ldr r1, _081461CC @ =gUnknown_8467F60 - adds r0, r1 - bl LoadSpritePalette - ldr r0, [r4] - ldrb r0, [r0, 0x9] - cmp r7, r0 - bcs _081461AC - adds r6, r4, 0 - ldr r2, _081461D0 @ =0x0000017d - mov r10, r2 - movs r3, 0 - mov r9, r3 - movs r0, 0xFF - mov r8, r0 -_0814610E: - ldr r1, [r6] - lsls r4, r7, 1 - add r1, r10 - adds r1, r4 - ldrb r0, [r1] - mov r2, r8 - orrs r0, r2 - strb r0, [r1] - ldr r1, [r6] - movs r3, 0xBF - lsls r3, 1 - adds r1, r3 - adds r1, r4 - ldrb r0, [r1] - orrs r0, r2 - strb r0, [r1] - lsls r1, r7, 5 - movs r0, 0xD8 - subs r5, r0, r1 - ldr r0, _081461D4 @ =gUnknown_8467FA0 - adds r1, r5, 0 - movs r2, 0x90 - movs r3, 0x8 - bl CreateSprite - ldr r1, [r6] - add r1, r10 - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - movs r1, 0xAA - lsls r1, 1 - adds r0, r1 - adds r1, r0, r4 - ldrh r0, [r1] - cmp r0, 0 - beq _0814619E - bl sub_8096FD4 - lsls r0, 16 - lsrs r0, 16 - mov r2, r9 - str r2, [sp] - str r2, [sp, 0x4] - ldr r1, _081461C0 @ =SpriteCallbackDummy - adds r2, r5, 0 - movs r3, 0x88 - bl sub_8096ECC - ldr r1, [r6] - movs r3, 0xBF - lsls r3, 1 - adds r1, r3 - adds r1, r4 - strb r0, [r1] - ldr r0, [r6] - adds r0, r3 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081461C4 @ =gSprites - adds r0, r1 - ldrb r2, [r0, 0x5] - movs r3, 0xD - negs r3, r3 - adds r1, r3, 0 - ands r2, r1 - movs r1, 0x8 - orrs r2, r1 - strb r2, [r0, 0x5] -_0814619E: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, [r6] - ldrb r0, [r0, 0x9] - cmp r7, r0 - bcc _0814610E -_081461AC: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081461BC: .4byte gUnknown_203F3C8 -_081461C0: .4byte SpriteCallbackDummy -_081461C4: .4byte gSprites -_081461C8: .4byte gUnknown_8467F58 -_081461CC: .4byte gUnknown_8467F60 -_081461D0: .4byte 0x0000017d -_081461D4: .4byte gUnknown_8467FA0 - thumb_func_end sub_8146060 - - thumb_func_start sub_81461D8 -sub_81461D8: @ 81461D8 - push {r4-r7,lr} - movs r6, 0 - ldr r4, _0814627C @ =gUnknown_203F3C8 - ldr r0, [r4] - movs r2, 0xBE - lsls r2, 1 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0xFF - beq _081461FC - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08146280 @ =gSprites - adds r0, r1 - bl sub_8097070 -_081461FC: - ldr r0, [r4] - ldrb r2, [r0, 0x9] - cmp r2, 0 - beq _08146274 - ldrb r1, [r0, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _08146274 - cmp r6, r2 - bcs _08146264 - adds r7, r4, 0 -_08146214: - ldr r0, [r7] - lsls r4, r6, 1 - ldr r1, _08146284 @ =0x0000017d - adds r0, r1 - adds r1, r0, r4 - ldrb r0, [r1] - cmp r0, 0xFF - beq _08146256 - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _08146280 @ =gSprites - adds r0, r5 - bl DestroySprite - ldr r1, [r7] - ldr r2, _08146284 @ =0x0000017d - adds r0, r1, r2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08146256 - adds r2, 0x1 - adds r0, r1, r2 - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl sub_8097070 -_08146256: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [r7] - ldrb r0, [r0, 0x9] - cmp r6, r0 - bcc _08146214 -_08146264: - movs r4, 0x80 - lsls r4, 8 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag -_08146274: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0814627C: .4byte gUnknown_203F3C8 -_08146280: .4byte gSprites -_08146284: .4byte 0x0000017d - thumb_func_end sub_81461D8 - - thumb_func_start sub_8146288 -sub_8146288: @ 8146288 - push {r4-r6,lr} - adds r4, r0, 0 - cmp r4, 0 - beq _0814629E - ldr r5, _081462A4 @ =gUnknown_203F3CC - ldr r0, _081462A8 @ =0x000013a4 - bl AllocZeroed - str r0, [r5] - cmp r0, 0 - bne _081462AC -_0814629E: - movs r0, 0 - b _081462DC - .align 2, 0 -_081462A4: .4byte gUnknown_203F3CC -_081462A8: .4byte 0x000013a4 -_081462AC: - movs r6, 0xDE - lsls r6, 1 - adds r1, r4, 0 - adds r2, r6, 0 - bl memcpy - ldr r1, [r5] - ldrb r0, [r1, 0x3] - cmp r0, 0x7 - bls _081462C4 - movs r0, 0 - strb r0, [r1, 0x3] -_081462C4: - ldr r2, [r5] - adds r3, r2, r6 - ldrb r0, [r2, 0x3] - lsls r0, 4 - ldr r1, _081462E4 @ =gUnknown_8468720 - adds r0, r1 - str r0, [r3] - ldr r0, _081462E8 @ =0x000001c1 - adds r1, r2, r0 - movs r0, 0xFF - strb r0, [r1] - movs r0, 0x1 -_081462DC: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_081462E4: .4byte gUnknown_8468720 -_081462E8: .4byte 0x000001c1 - thumb_func_end sub_8146288 - - thumb_func_start sub_81462EC -sub_81462EC: @ 81462EC - push {r4,lr} - ldr r4, _08146310 @ =gUnknown_203F3CC - ldr r0, [r4] - cmp r0, 0 - beq _08146308 - ldr r2, _08146314 @ =0x000013a4 - movs r1, 0 - bl memset - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] -_08146308: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08146310: .4byte gUnknown_203F3CC -_08146314: .4byte 0x000013a4 - thumb_func_end sub_81462EC - - thumb_func_start sub_8146318 -sub_8146318: @ 8146318 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - ldr r5, _08146334 @ =gUnknown_203F3CC - ldr r0, [r5] - cmp r0, 0 - bne _08146338 - movs r0, 0x1 - negs r0, r0 - b _081465EE - .align 2, 0 -_08146334: .4byte gUnknown_203F3CC -_08146338: - movs r4, 0xE0 - lsls r4, 1 - adds r0, r4 - ldrb r0, [r0] - lsrs r0, 1 - cmp r0, 0x6 - bls _08146348 - b _081465B8 -_08146348: - lsls r0, 2 - ldr r1, _08146354 @ =_08146358 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08146354: .4byte _08146358 - .align 2, 0 -_08146358: - .4byte _08146374 - .4byte _08146386 - .4byte _081463EC - .4byte _08146494 - .4byte _08146544 - .4byte _0814654A - .4byte _0814655C -_08146374: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _081465D2 -_08146386: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - beq _08146392 - b _081465EC -_08146392: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - ldr r1, _081463E8 @ =0x00001a98 - movs r0, 0x44 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x1F - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x1B - bl SetGpuReg - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl SetGpuRegBits - b _081465D2 - .align 2, 0 -_081463E8: .4byte 0x00001a98 -_081463EC: - movs r5, 0x1E - str r5, [sp] - movs r4, 0x14 - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - ldr r5, _0814648C @ =gUnknown_203F3CC - ldr r0, [r5] - movs r1, 0xDE - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - ldr r1, [r0, 0x4] - movs r0, 0 - str r0, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0x8 - bl decompress_and_copy_tile_data_to_vram - ldr r4, _08146490 @ =gUnknown_8468040 - adds r0, r4, 0 - bl AddWindow - ldr r1, [r5] - movs r2, 0xE4 - lsls r2, 1 - adds r1, r2 - strh r0, [r1] - adds r4, 0x8 - adds r0, r4, 0 - bl AddWindow - ldr r1, [r5] - movs r3, 0xE5 - lsls r3, 1 - adds r1, r3 - strh r0, [r1] - b _081465D2 - .align 2, 0 -_0814648C: .4byte gUnknown_203F3CC -_08146490: .4byte gUnknown_8468040 -_08146494: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0 - beq _081464A2 - b _081465EC -_081464A2: - ldr r2, _0814653C @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r0, _08146540 @ =gUnknown_203F3CC - mov r8, r0 - ldr r0, [r0] - movs r4, 0xDE - lsls r4, 1 - adds r0, r4 - ldr r0, [r0] - ldr r0, [r0, 0xC] - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - mov r2, r8 - ldr r1, [r2] - adds r4, r1, r4 - ldr r0, [r4] - ldr r0, [r0, 0x8] - movs r6, 0xE9 - lsls r6, 2 - adds r1, r6 - bl LZ77UnCompWram - mov r3, r8 - ldr r1, [r3] - adds r1, r6 - movs r4, 0x1E - str r4, [sp] - movs r5, 0x3 - str r5, [sp, 0x4] - str r7, [sp, 0x8] - str r7, [sp, 0xC] - str r4, [sp, 0x10] - str r5, [sp, 0x14] - movs r0, 0x1 - mov r10, r0 - str r0, [sp, 0x18] - movs r2, 0x8 - mov r9, r2 - str r2, [sp, 0x1C] - str r7, [sp, 0x20] - movs r2, 0 - movs r3, 0 - bl CopyRectToBgTilemapBufferRect - mov r3, r8 - ldr r1, [r3] - adds r1, r6 - str r4, [sp] - movs r0, 0x17 - str r0, [sp, 0x4] - str r7, [sp, 0x8] - str r5, [sp, 0xC] - str r4, [sp, 0x10] - str r0, [sp, 0x14] - mov r0, r10 - str r0, [sp, 0x18] - mov r2, r9 - str r2, [sp, 0x1C] - str r7, [sp, 0x20] - movs r0, 0x3 - movs r2, 0 - movs r3, 0x3 - bl CopyRectToBgTilemapBufferRect - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - b _081465D2 - .align 2, 0 -_0814653C: .4byte gPaletteFade -_08146540: .4byte gUnknown_203F3CC -_08146544: - bl sub_8146980 - b _081465D2 -_0814654A: - bl sub_8146A30 - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - b _081465D2 -_0814655C: - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - ldr r2, _081465AC @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r4, _081465B0 @ =gUnknown_203F3CC - ldr r1, [r4] - movs r3, 0xE5 - lsls r3, 2 - adds r0, r1, r3 - movs r2, 0xE3 - lsls r2, 1 - adds r1, r2 - bl AddScrollIndicatorArrowPair - ldr r1, [r4] - ldr r3, _081465B4 @ =0x000001c1 - adds r2, r1, r3 - movs r1, 0 - strb r0, [r2] - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl UpdatePaletteFade - b _081465D2 - .align 2, 0 -_081465AC: .4byte gPaletteFade -_081465B0: .4byte gUnknown_203F3CC -_081465B4: .4byte 0x000001c1 -_081465B8: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _081465EC - ldr r0, [r5] - adds r0, r4 - ldrb r2, [r0] - movs r1, 0x1 - ands r1, r2 - strb r1, [r0] - movs r0, 0x1 - b _081465EE -_081465D2: - ldr r0, _08146600 @ =gUnknown_203F3CC - ldr r2, [r0] - movs r0, 0xE0 - lsls r0, 1 - adds r2, r0 - ldrb r3, [r2] - lsrs r1, r3, 1 - adds r1, 0x1 - lsls r1, 1 - movs r0, 0x1 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_081465EC: - movs r0, 0 -_081465EE: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08146600: .4byte gUnknown_203F3CC - thumb_func_end sub_8146318 - - thumb_func_start sub_8146604 -sub_8146604: @ 8146604 - push {r4,r5,lr} - sub sp, 0x8 - adds r2, r0, 0 - ldr r5, _08146618 @ =gUnknown_203F3CC - ldr r0, [r5] - cmp r0, 0 - bne _0814661C - movs r0, 0x1 - negs r0, r0 - b _081467E0 - .align 2, 0 -_08146618: .4byte gUnknown_203F3CC -_0814661C: - movs r4, 0xE0 - lsls r4, 1 - adds r0, r4 - ldrb r0, [r0] - lsrs r0, 1 - cmp r0, 0x6 - bls _0814662C - b _081467AA -_0814662C: - lsls r0, 2 - ldr r1, _08146638 @ =_0814663C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08146638: .4byte _0814663C - .align 2, 0 -_0814663C: - .4byte _08146658 - .4byte _0814666A - .4byte _081466AC - .4byte _0814670C - .4byte _0814673C - .4byte _08146778 - .4byte _08146788 -_08146658: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _081467C4 -_0814666A: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - beq _08146676 - b _081467DE -_08146676: - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl ClearGpuRegBits - b _081467C4 -_081466AC: - movs r4, 0x1E - str r4, [sp] - movs r5, 0x14 - str r5, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - movs r5, 0x18 - str r5, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - b _081467C4 -_0814670C: - movs r0, 0x1 - bl HideBg - movs r0, 0x2 - bl HideBg - ldr r4, _08146738 @ =gUnknown_203F3CC - ldr r0, [r4] - movs r1, 0xE5 - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - bl RemoveWindow - ldr r0, [r4] - movs r2, 0xE4 - lsls r2, 1 - adds r0, r2 - ldrb r0, [r0] - bl RemoveWindow - b _081467C4 - .align 2, 0 -_08146738: .4byte gUnknown_203F3CC -_0814673C: - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - ldr r4, _08146770 @ =gUnknown_203F3CC - ldr r0, [r4] - ldr r2, _08146774 @ =0x000001c1 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0xFF - beq _081467C4 - bl RemoveScrollIndicatorArrowPair - ldr r0, [r4] - ldr r2, _08146774 @ =0x000001c1 - adds r1, r0, r2 - movs r0, 0xFF - strb r0, [r1] - b _081467C4 - .align 2, 0 -_08146770: .4byte gUnknown_203F3CC -_08146774: .4byte 0x000001c1 -_08146778: - ldr r0, _08146784 @ =gUnknown_203F3B8 - ldrb r0, [r0] - adds r1, r2, 0 - bl sub_8142344 - b _081467C4 - .align 2, 0 -_08146784: .4byte gUnknown_203F3B8 -_08146788: - bl sub_8142420 - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _081467C4 -_081467AA: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _081467DE - ldr r0, [r5] - adds r0, r4 - ldrb r2, [r0] - movs r1, 0x1 - ands r1, r2 - strb r1, [r0] - movs r0, 0x1 - b _081467E0 -_081467C4: - ldr r0, _081467E8 @ =gUnknown_203F3CC - ldr r2, [r0] - movs r0, 0xE0 - lsls r0, 1 - adds r2, r0 - ldrb r3, [r2] - lsrs r1, r3, 1 - adds r1, 0x1 - lsls r1, 1 - movs r0, 0x1 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_081467DE: - movs r0, 0 -_081467E0: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_081467E8: .4byte gUnknown_203F3CC - thumb_func_end sub_8146604 - - thumb_func_start sub_81467EC -sub_81467EC: @ 81467EC - push {r4,r5,lr} - ldr r4, _0814682C @ =gUnknown_203F3CC - ldr r2, [r4] - movs r5, 0xE0 - lsls r5, 1 - adds r0, r2, r5 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08146826 - ldr r0, _08146830 @ =0x000001c1 - adds r1, r2, r0 - ldrb r0, [r1] - cmp r0, 0xFF - beq _08146826 - bl RemoveScrollIndicatorArrowPair - ldr r0, [r4] - ldr r2, _08146830 @ =0x000001c1 - adds r1, r0, r2 - movs r0, 0xFF - strb r0, [r1] - ldr r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] -_08146826: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0814682C: .4byte gUnknown_203F3CC -_08146830: .4byte 0x000001c1 - thumb_func_end sub_81467EC - - thumb_func_start sub_8146834 -sub_8146834: @ 8146834 - push {r4,lr} - ldr r4, _0814687C @ =gUnknown_203F3CC - ldr r2, [r4] - movs r1, 0xE0 - lsls r1, 1 - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08146874 - movs r3, 0xE5 - lsls r3, 2 - adds r0, r2, r3 - movs r3, 0xE3 - lsls r3, 1 - adds r1, r2, r3 - bl AddScrollIndicatorArrowPair - ldr r1, [r4] - ldr r2, _08146880 @ =0x000001c1 - adds r1, r2 - strb r0, [r1] - ldr r1, [r4] - movs r3, 0xE0 - lsls r3, 1 - adds r1, r3 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_08146874: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0814687C: .4byte gUnknown_203F3CC -_08146880: .4byte 0x000001c1 - thumb_func_end sub_8146834 - - thumb_func_start sub_8146884 -sub_8146884: @ 8146884 - push {r4-r6,lr} - lsls r0, 16 - lsrs r4, r0, 16 - adds r3, r4, 0 - ldr r2, _081468B0 @ =gUnknown_203F3CC - ldr r0, [r2] - mov r12, r0 - movs r0, 0xE1 - lsls r0, 1 - add r0, r12 - ldrb r1, [r0] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - adds r6, r2, 0 - cmp r0, 0 - beq _081468B4 - bl sub_8146B58 -_081468AA: - movs r0, 0xFF - b _0814697A - .align 2, 0 -_081468B0: .4byte gUnknown_203F3CC -_081468B4: - cmp r4, 0x2 - beq _081468D0 - cmp r4, 0x2 - bgt _081468C2 - cmp r4, 0x1 - beq _081468CC - b _081468AA -_081468C2: - cmp r3, 0x40 - beq _081468D4 - cmp r3, 0x80 - beq _08146904 - b _081468AA -_081468CC: - movs r0, 0 - b _0814697A -_081468D0: - movs r0, 0x1 - b _0814697A -_081468D4: - movs r0, 0xE3 - lsls r0, 1 - add r0, r12 - ldrh r0, [r0] - cmp r0, 0 - beq _081468AA - movs r0, 0xE0 - lsls r0, 1 - add r0, r12 - ldrb r1, [r0] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _081468AA - ldr r2, _08146900 @ =0x000001c3 - add r2, r12 - ldrb r1, [r2] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - b _08146932 - .align 2, 0 -_08146900: .4byte 0x000001c3 -_08146904: - movs r0, 0xE3 - lsls r0, 1 - add r0, r12 - movs r1, 0xE2 - lsls r1, 1 - add r1, r12 - ldrh r0, [r0] - ldrh r1, [r1] - cmp r0, r1 - beq _081468AA - movs r0, 0xE0 - lsls r0, 1 - add r0, r12 - ldrb r1, [r0] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _081468AA - ldr r2, _08146974 @ =0x000001c3 - add r2, r12 - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 -_08146932: - strb r0, [r2] - ldr r2, [r6] - movs r4, 0xE1 - lsls r4, 1 - adds r2, r4 - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldr r3, [r6] - adds r3, r4 - ldrb r1, [r3] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] - ldr r1, [r6] - adds r4, 0x1 - adds r1, r4 - ldrb r3, [r1] - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1] - ldr r0, [r6] - adds r0, r4 - ldrb r0, [r0] - ands r2, r0 - cmp r2, 0 - beq _08146978 - movs r0, 0x3 - b _0814697A - .align 2, 0 -_08146974: .4byte 0x000001c3 -_08146978: - movs r0, 0x2 -_0814697A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8146884 - - thumb_func_start sub_8146980 -sub_8146980: @ 8146980 - push {r4-r6,lr} - movs r5, 0 - ldr r4, _08146A20 @ =gUnknown_203F3CC - ldr r1, [r4] - movs r2, 0xE7 - lsls r2, 1 - adds r0, r1, r2 - adds r1, 0x4 - movs r2, 0x28 - bl memcpy - ldr r0, [r4] - movs r3, 0xFB - lsls r3, 1 - adds r1, r0, r3 - movs r0, 0xFF - strb r0, [r1] - adds r6, r4, 0 -_081469A4: - ldr r2, [r6] - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r4, r1, r5 - adds r0, r4, r2 - ldr r3, _08146A24 @ =0x000001f7 - adds r0, r3 - adds r1, r2 - adds r1, 0x2C - movs r2, 0x28 - bl memcpy - ldr r0, [r6] - ldr r1, _08146A28 @ =0x0000021f - adds r0, r1 - adds r0, r4 - movs r1, 0xFF - strb r1, [r0] - cmp r5, 0x7 - bls _081469E8 - ldr r1, [r6] - ldr r2, _08146A24 @ =0x000001f7 - adds r0, r1, r2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0xFF - beq _081469E8 - movs r3, 0xE2 - lsls r3, 1 - adds r1, r3 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_081469E8: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _081469A4 - ldr r2, _08146A20 @ =gUnknown_203F3CC - ldr r1, [r2] - movs r4, 0xE5 - lsls r4, 2 - adds r1, r4 - ldr r0, _08146A2C @ =gUnknown_8468050 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, [r0] - str r0, [r1] - ldr r2, [r2] - movs r5, 0xE2 - lsls r5, 1 - adds r0, r2, r5 - ldrh r1, [r0] - movs r3, 0xE7 - lsls r3, 2 - adds r0, r2, r3 - strh r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08146A20: .4byte gUnknown_203F3CC -_08146A24: .4byte 0x000001f7 -_08146A28: .4byte 0x0000021f -_08146A2C: .4byte gUnknown_8468050 - thumb_func_end sub_8146980 - - thumb_func_start sub_8146A30 -sub_8146A30: @ 8146A30 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - movs r5, 0 - ldr r6, _08146B4C @ =gUnknown_203F3CC - ldr r0, [r6] - movs r7, 0xE4 - lsls r7, 1 - adds r0, r7 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r6] - movs r4, 0xE5 - lsls r4, 1 - adds r0, r4 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r6] - adds r0, r7 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r6] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r4, [r6] - movs r0, 0xE7 - lsls r0, 1 - mov r8, r0 - add r4, r8 - movs r0, 0x3 - movs r1, 0x2 - bl GetFontAttribute - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x3 - adds r1, r4, 0 - bl GetStringWidth - movs r1, 0xE0 - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - cmp r1, 0 - bge _08146AA0 - movs r1, 0 -_08146AA0: - ldr r4, [r6] - adds r0, r4, r7 - ldrb r0, [r0] - lsls r2, r1, 24 - lsrs r2, 24 - movs r3, 0xDE - lsls r3, 1 - adds r1, r4, r3 - ldr r1, [r1] - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - lsls r3, r1, 1 - adds r3, r1 - ldr r1, _08146B50 @ =gUnknown_8468038 - adds r3, r1 - str r3, [sp] - str r5, [sp, 0x4] - add r4, r8 - str r4, [sp, 0x8] - movs r1, 0x3 - movs r3, 0x6 - bl box_print -_08146AD0: - ldr r6, _08146B4C @ =gUnknown_203F3CC - ldr r4, [r6] - movs r1, 0xE5 - lsls r1, 1 - adds r0, r4, r1 - ldrb r0, [r0] - lsls r3, r5, 4 - adds r3, 0x2 - lsls r3, 24 - lsrs r3, 24 - movs r2, 0xDE - lsls r2, 1 - adds r1, r4, r2 - ldr r1, [r1] - ldrb r1, [r1] - lsrs r1, 4 - lsls r2, r1, 1 - adds r2, r1 - ldr r1, _08146B50 @ =gUnknown_8468038 - adds r2, r1 - str r2, [sp] - movs r1, 0 - str r1, [sp, 0x4] - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r5 - ldr r2, _08146B54 @ =0x000001f7 - adds r1, r2 - adds r4, r1 - str r4, [sp, 0x8] - movs r1, 0x3 - movs r2, 0 - bl box_print - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _08146AD0 - ldr r0, [r6] - movs r3, 0xE4 - lsls r3, 1 - adds r0, r3 - ldrb r0, [r0] - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, [r6] - movs r1, 0xE5 - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08146B4C: .4byte gUnknown_203F3CC -_08146B50: .4byte gUnknown_8468038 -_08146B54: .4byte 0x000001f7 - thumb_func_end sub_8146A30 - - thumb_func_start sub_8146B58 -sub_8146B58: @ 8146B58 - push {r4-r6,lr} - ldr r0, _08146B90 @ =gUnknown_203F3CC - ldr r1, [r0] - movs r2, 0xE1 - lsls r2, 1 - adds r0, r1, r2 - ldrb r0, [r0] - lsrs r4, r0, 1 - lsls r4, 8 - ldr r6, _08146B94 @ =0x000001c3 - adds r0, r1, r6 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08146B98 - movs r0, 0x2 - adds r1, r4, 0 - movs r2, 0x1 - bl ChangeBgY - movs r0, 0x3 - adds r1, r4, 0 - movs r2, 0x1 - bl ChangeBgY - b _08146BAC - .align 2, 0 -_08146B90: .4byte gUnknown_203F3CC -_08146B94: .4byte 0x000001c3 -_08146B98: - movs r0, 0x2 - adds r1, r4, 0 - movs r2, 0x2 - bl ChangeBgY - movs r0, 0x3 - adds r1, r4, 0 - movs r2, 0x2 - bl ChangeBgY -_08146BAC: - ldr r3, _08146BF0 @ =gUnknown_203F3CC - ldr r0, [r3] - ldr r2, _08146BF4 @ =0x000001c3 - adds r5, r0, r2 - ldrb r4, [r5] - lsrs r1, r4, 1 - movs r6, 0xE1 - lsls r6, 1 - adds r0, r6 - ldrb r0, [r0] - lsrs r0, 1 - adds r1, r0 - lsls r1, 1 - movs r6, 0x1 - adds r0, r6, 0 - ands r0, r4 - orrs r0, r1 - strb r0, [r5] - ldr r1, [r3] - adds r2, r1, r2 - ldrb r2, [r2] - lsrs r0, r2, 1 - cmp r0, 0xF - bls _08146C24 - adds r0, r6, 0 - ands r0, r2 - cmp r0, 0 - beq _08146BF8 - movs r0, 0xE3 - lsls r0, 1 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - b _08146C02 - .align 2, 0 -_08146BF0: .4byte gUnknown_203F3CC -_08146BF4: .4byte 0x000001c3 -_08146BF8: - movs r2, 0xE3 - lsls r2, 1 - adds r1, r2 - ldrh r0, [r1] - subs r0, 0x1 -_08146C02: - strh r0, [r1] - ldr r0, [r3] - movs r6, 0xE1 - lsls r6, 1 - adds r2, r0, r6 - ldrb r1, [r2] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, [r3] - ldr r1, _08146C2C @ =0x000001c3 - adds r2, r0, r1 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - strb r0, [r2] -_08146C24: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08146C2C: .4byte 0x000001c3 - thumb_func_end sub_8146B58 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/mevent_server.s b/asm/mevent_server.s deleted file mode 100644 index 5772b19f4..000000000 --- a/asm/mevent_server.s +++ /dev/null @@ -1,1841 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8144844 -sub_8144844: @ 8144844 - push {lr} - ldr r1, [r0, 0x20] - bl _call_via_r1 - pop {r1} - bx r1 - thumb_func_end sub_8144844 - - thumb_func_start sub_8144850 -sub_8144850: @ 8144850 - push {lr} - ldr r1, [r0, 0x24] - bl _call_via_r1 - pop {r1} - bx r1 - thumb_func_end sub_8144850 - - thumb_func_start sub_814485C -sub_814485C: @ 814485C - movs r3, 0 - strb r1, [r0, 0x4] - strb r2, [r0, 0x5] - str r3, [r0] - strh r3, [r0, 0x12] - strh r3, [r0, 0x14] - strh r3, [r0, 0x10] - strh r3, [r0, 0xA] - strh r3, [r0, 0xC] - strh r3, [r0, 0x8] - str r3, [r0, 0x1C] - str r3, [r0, 0x18] - ldr r1, _08144880 @ =sub_81449E0 - str r1, [r0, 0x24] - ldr r1, _08144884 @ =sub_814490C - str r1, [r0, 0x20] - bx lr - .align 2, 0 -_08144880: .4byte sub_81449E0 -_08144884: .4byte sub_814490C - thumb_func_end sub_814485C - - thumb_func_start sub_8144888 -sub_8144888: @ 8144888 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - str r0, [r4] - strh r1, [r4, 0xE] - strh r0, [r4, 0x10] - strh r0, [r4, 0x12] - cmp r3, 0 - beq _0814489E - strh r3, [r4, 0x14] - b _081448A4 -_0814489E: - movs r0, 0x80 - lsls r0, 3 - strh r0, [r4, 0x14] -_081448A4: - str r2, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8144888 - - thumb_func_start sub_81448AC -sub_81448AC: @ 81448AC - movs r3, 0 - str r3, [r0] - strh r1, [r0, 0x6] - strh r3, [r0, 0x8] - strh r3, [r0, 0xA] - strh r3, [r0, 0xC] - str r2, [r0, 0x18] - bx lr - thumb_func_end sub_81448AC - - thumb_func_start sub_81448BC -sub_81448BC: @ 81448BC - push {lr} - adds r3, r0, 0 - adds r0, r1, 0 - lsls r3, 8 - ldr r1, _081448D4 @ =gUnknown_2022118 - adds r3, r1 - adds r1, r3, 0 - bl memcpy - pop {r0} - bx r0 - .align 2, 0 -_081448D4: .4byte gUnknown_2022118 - thumb_func_end sub_81448BC - - thumb_func_start sub_81448D8 -sub_81448D8: @ 81448D8 - push {r4,lr} - adds r4, r0, 0 - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - asrs r0, r4 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _081448F2 - movs r0, 0 - b _081448F4 -_081448F2: - movs r0, 0x1 -_081448F4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81448D8 - - thumb_func_start sub_81448FC -sub_81448FC: @ 81448FC - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl ResetBlockReceivedFlag - pop {r0} - bx r0 - thumb_func_end sub_81448FC - - thumb_func_start sub_814490C -sub_814490C: @ 814490C - push {r4-r6,lr} - sub sp, 0x8 - adds r5, r0, 0 - ldr r6, [r5] - cmp r6, 0x1 - beq _08144970 - cmp r6, 0x1 - bgt _08144922 - cmp r6, 0 - beq _08144928 - b _081449D6 -_08144922: - cmp r6, 0x2 - beq _081449BC - b _081449D6 -_08144928: - ldrb r0, [r5, 0x5] - bl sub_81448D8 - cmp r0, 0 - beq _081449D6 - ldrb r0, [r5, 0x5] - mov r4, sp - mov r1, sp - movs r2, 0x8 - bl sub_81448BC - ldrh r1, [r4, 0x4] - strh r1, [r5, 0xC] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0xA] - lsls r1, 16 - movs r0, 0x80 - lsls r0, 19 - cmp r1, r0 - bls _08144956 -_08144950: - bl sub_80FA190 - b _081449D6 -_08144956: - mov r1, sp - ldrh r0, [r5, 0x6] - ldrh r1, [r1] - cmp r0, r1 - bne _08144950 - strh r6, [r5, 0x8] - ldrb r0, [r5, 0x5] - bl sub_81448FC - ldr r0, [r5] - adds r0, 0x1 - str r0, [r5] - b _081449D6 -_08144970: - ldrb r0, [r5, 0x5] - bl sub_81448D8 - cmp r0, 0 - beq _081449D6 - ldrh r0, [r5, 0x8] - lsls r1, r0, 6 - subs r1, r0 - lsls r3, r1, 2 - ldrh r0, [r5, 0xC] - subs r2, r0, r3 - cmp r2, 0xFC - bhi _081449A2 - ldrb r0, [r5, 0x5] - ldr r1, [r5, 0x18] - adds r1, r3 - bl sub_81448BC - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - ldr r0, [r5] - adds r0, 0x1 - str r0, [r5] - b _081449B4 -_081449A2: - ldrb r0, [r5, 0x5] - ldr r1, [r5, 0x18] - adds r1, r3 - movs r2, 0xFC - bl sub_81448BC - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] -_081449B4: - ldrb r0, [r5, 0x5] - bl sub_81448FC - b _081449D6 -_081449BC: - ldr r0, [r5, 0x18] - ldrh r1, [r5, 0xC] - bl CalcCRC16WithTable - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r5, 0xA] - cmp r0, r1 - bne _08144950 - movs r0, 0 - str r0, [r5] - movs r0, 0x1 - b _081449D8 -_081449D6: - movs r0, 0 -_081449D8: - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_814490C - - thumb_func_start sub_81449E0 -sub_81449E0: @ 81449E0 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r5, [r4] - cmp r5, 0x1 - beq _08144A4C - cmp r5, 0x1 - bgt _081449F6 - cmp r5, 0 - beq _08144A00 - b _08144AE2 -_081449F6: - cmp r5, 0x2 - beq _08144AA0 - cmp r5, 0x3 - beq _08144ACA - b _08144AE2 -_08144A00: - bl sub_800A4BC - lsls r0, 24 - cmp r0, 0 - beq _08144AE2 - ldrh r1, [r4, 0xE] - ldr r2, _08144A44 @ =0xffff0000 - ldr r0, [sp] - ands r0, r2 - orrs r0, r1 - str r0, [sp] - ldrh r1, [r4, 0x14] - ldr r0, [sp, 0x4] - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x4] - ldr r0, [r4, 0x1C] - bl CalcCRC16WithTable - lsls r0, 16 - ldr r2, _08144A48 @ =0x0000ffff - ldr r1, [sp] - ands r1, r2 - orrs r1, r0 - str r1, [sp] - lsrs r1, 16 - strh r1, [r4, 0x12] - strh r5, [r4, 0x10] - movs r0, 0 - mov r1, sp - movs r2, 0x8 - bl SendBlock - b _08144AC2 - .align 2, 0 -_08144A44: .4byte 0xffff0000 -_08144A48: .4byte 0x0000ffff -_08144A4C: - bl sub_800A4BC - lsls r0, 24 - cmp r0, 0 - beq _08144AE2 - ldrb r0, [r4, 0x4] - bl sub_81448D8 - cmp r0, 0 - beq _08144AE2 - ldrb r0, [r4, 0x4] - bl sub_81448FC - ldrh r1, [r4, 0x10] - lsls r0, r1, 6 - subs r0, r1 - lsls r3, r0, 2 - ldrh r0, [r4, 0x14] - subs r0, r3 - cmp r0, 0xFC - bhi _08144A8C - ldr r1, [r4, 0x1C] - adds r1, r3 - lsls r2, r0, 16 - lsrs r2, 16 - movs r0, 0 - bl SendBlock - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - b _08144AC2 -_08144A8C: - ldr r1, [r4, 0x1C] - adds r1, r3 - movs r0, 0 - movs r2, 0xFC - bl SendBlock - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - b _08144AE2 -_08144AA0: - bl sub_800A4BC - lsls r0, 24 - cmp r0, 0 - beq _08144AE2 - ldr r0, [r4, 0x1C] - ldrh r1, [r4, 0x14] - bl CalcCRC16WithTable - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r4, 0x12] - cmp r0, r1 - beq _08144AC2 - bl sub_80FA190 - b _08144AE2 -_08144AC2: - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - b _08144AE2 -_08144ACA: - ldrb r0, [r4, 0x4] - bl sub_81448D8 - cmp r0, 0 - beq _08144AE2 - ldrb r0, [r4, 0x4] - bl sub_81448FC - movs r0, 0 - str r0, [r4] - movs r0, 0x1 - b _08144AE4 -_08144AE2: - movs r0, 0 -_08144AE4: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81449E0 - - thumb_func_start sub_8144AEC -sub_8144AEC: @ 8144AEC - push {r4,lr} - ldr r4, _08144B08 @ =gUnknown_203F3C0 - movs r0, 0x4C - bl AllocZeroed - str r0, [r4] - movs r1, 0x1 - movs r2, 0 - bl mevent_srv_ish_init - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08144B08: .4byte gUnknown_203F3C0 - thumb_func_end sub_8144AEC - - thumb_func_start sub_8144B0C -sub_8144B0C: @ 8144B0C - push {r4-r6,lr} - adds r6, r0, 0 - ldr r4, _08144B1C @ =gUnknown_203F3C0 - ldr r0, [r4] - cmp r0, 0 - bne _08144B20 - movs r0, 0x6 - b _08144B40 - .align 2, 0 -_08144B1C: .4byte gUnknown_203F3C0 -_08144B20: - bl mevent_srv_ish_exec - adds r5, r0, 0 - cmp r5, 0x6 - bne _08144B3E - ldr r0, [r4] - ldr r1, [r0, 0x4] - strh r1, [r6] - bl sub_8144BC0 - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] -_08144B3E: - adds r0, r5, 0 -_08144B40: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8144B0C - - thumb_func_start sub_8144B48 -sub_8144B48: @ 8144B48 - ldr r0, _08144B54 @ =gUnknown_203F3C0 - ldr r1, [r0] - ldr r0, [r1, 0xC] - adds r0, 0x1 - str r0, [r1, 0xC] - bx lr - .align 2, 0 -_08144B54: .4byte gUnknown_203F3C0 - thumb_func_end sub_8144B48 - - thumb_func_start sub_8144B58 -sub_8144B58: @ 8144B58 - ldr r0, _08144B60 @ =gUnknown_203F3C0 - ldr r0, [r0] - ldr r0, [r0, 0x20] - bx lr - .align 2, 0 -_08144B60: .4byte gUnknown_203F3C0 - thumb_func_end sub_8144B58 - - thumb_func_start sub_8144B64 -sub_8144B64: @ 8144B64 - ldr r1, _08144B6C @ =gUnknown_203F3C0 - ldr r1, [r1] - str r0, [r1, 0x4] - bx lr - .align 2, 0 -_08144B6C: .4byte gUnknown_203F3C0 - thumb_func_end sub_8144B64 - - thumb_func_start mevent_srv_ish_init -mevent_srv_ish_init: @ 8144B70 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r4, r0, 0 - adds r6, r1, 0 - mov r8, r2 - movs r0, 0 - str r0, [r4] - str r0, [r4, 0x8] - str r0, [r4, 0xC] - movs r5, 0x80 - lsls r5, 3 - adds r0, r5, 0 - bl AllocZeroed - str r0, [r4, 0x14] - adds r0, r5, 0 - bl AllocZeroed - str r0, [r4, 0x18] - adds r0, r5, 0 - bl AllocZeroed - str r0, [r4, 0x1C] - movs r0, 0x40 - bl AllocZeroed - str r0, [r4, 0x20] - adds r4, 0x24 - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, r8 - bl sub_814485C - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end mevent_srv_ish_init - - thumb_func_start sub_8144BC0 -sub_8144BC0: @ 8144BC0 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x14] - bl Free - ldr r0, [r4, 0x18] - bl Free - ldr r0, [r4, 0x1C] - bl Free - ldr r0, [r4, 0x20] - bl Free - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8144BC0 - - thumb_func_start sub_8144BE4 -sub_8144BE4: @ 8144BE4 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x1C] - ldr r1, [r4, 0x18] - movs r2, 0x80 - lsls r2, 3 - bl memcpy - movs r0, 0 - str r0, [r4, 0x10] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8144BE4 - - thumb_func_start sub_8144C00 -sub_8144C00: @ 8144C00 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r6, r1, 0 - adds r5, r2, 0 - movs r0, 0 - str r0, [sp] - ldr r1, [r4, 0x14] - ldr r2, _08144C30 @ =0x05000100 - mov r0, sp - bl CpuSet - ldr r2, [r4, 0x14] - str r5, [r2] - adds r4, 0x24 - adds r0, r4, 0 - adds r1, r6, 0 - movs r3, 0x4 - bl sub_8144888 - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08144C30: .4byte 0x05000100 - thumb_func_end sub_8144C00 - - thumb_func_start sub_8144C34 -sub_8144C34: @ 8144C34 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x1C] - ldr r1, _08144C58 @ =gUnknown_84687E0 - movs r2, 0x80 - lsls r2, 3 - bl memcpy - movs r1, 0 - str r1, [r4, 0x10] - movs r0, 0x4 - str r0, [r4, 0x8] - str r1, [r4, 0xC] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08144C58: .4byte gUnknown_84687E0 - thumb_func_end sub_8144C34 - - thumb_func_start sub_8144C5C -sub_8144C5C: @ 8144C5C - movs r0, 0x6 - bx lr - thumb_func_end sub_8144C5C - - thumb_func_start sub_8144C60 -sub_8144C60: @ 8144C60 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x24 - bl sub_8144844 - cmp r0, 0 - beq _08144C76 - movs r0, 0x4 - str r0, [r4, 0x8] - movs r0, 0 - str r0, [r4, 0xC] -_08144C76: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8144C60 - - thumb_func_start sub_8144C80 -sub_8144C80: @ 8144C80 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x24 - bl sub_8144850 - cmp r0, 0 - beq _08144C96 - movs r0, 0x4 - str r0, [r4, 0x8] - movs r0, 0 - str r0, [r4, 0xC] -_08144C96: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8144C80 - - thumb_func_start sub_8144CA0 -sub_8144CA0: @ 8144CA0 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x10] - lsls r2, r0, 3 - ldr r1, [r4, 0x1C] - adds r2, r1, r2 - adds r0, 0x1 - str r0, [r4, 0x10] - ldr r0, [r2] - cmp r0, 0x15 - bls _08144CB8 - b _08144E60 -_08144CB8: - lsls r0, 2 - ldr r1, _08144CC4 @ =_08144CC8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08144CC4: .4byte _08144CC8 - .align 2, 0 -_08144CC8: - .4byte _08144E60 - .4byte _08144D20 - .4byte _08144D28 - .4byte _08144D38 - .4byte _08144D70 - .4byte _08144D78 - .4byte _08144D62 - .4byte _08144D6A - .4byte _08144DC6 - .4byte _08144DF0 - .4byte _08144DE8 - .4byte _08144D8E - .4byte _08144DA4 - .4byte _08144DBA - .4byte _08144DDC - .4byte _08144E18 - .4byte _08144E1C - .4byte _08144E24 - .4byte _08144E30 - .4byte _08144D4E - .4byte _08144D3C - .4byte _08144E4C -_08144D20: - ldr r0, [r2, 0x4] - str r0, [r4, 0x4] - movs r0, 0x1 - b _08144E5A -_08144D28: - adds r0, r4, 0 - adds r0, 0x24 - ldr r1, [r2, 0x4] - ldr r2, [r4, 0x18] - bl sub_81448AC - movs r0, 0x2 - b _08144E5A -_08144D38: - movs r0, 0x3 - b _08144E5A -_08144D3C: - adds r0, r4, 0 - adds r0, 0x24 - ldr r2, [r4, 0x14] - movs r1, 0x14 - movs r3, 0 - bl sub_8144888 - movs r0, 0x3 - b _08144E5A -_08144D4E: - ldrb r0, [r2, 0x4] - bl GetGameStat - adds r2, r0, 0 - adds r0, r4, 0 - movs r1, 0x12 - bl sub_8144C00 - movs r0, 0x3 - b _08144E5A -_08144D62: - ldr r0, [r4, 0x4] - cmp r0, 0 - bne _08144E60 - b _08144D70 -_08144D6A: - ldr r0, [r4, 0x4] - cmp r0, 0x1 - bne _08144E60 -_08144D70: - adds r0, r4, 0 - bl sub_8144BE4 - b _08144E60 -_08144D78: - ldr r0, [r4, 0x20] - ldr r1, [r4, 0x18] - movs r2, 0x40 - bl memcpy - movs r0, 0x5 - str r0, [r4, 0x8] - movs r0, 0 - str r0, [r4, 0xC] - movs r0, 0x2 - b _08144E62 -_08144D8E: - ldr r0, [r4, 0x20] - ldr r1, [r4, 0x18] - movs r2, 0x40 - bl memcpy - movs r0, 0x5 - str r0, [r4, 0x8] - movs r0, 0 - str r0, [r4, 0xC] - movs r0, 0x3 - b _08144E62 -_08144DA4: - ldr r0, [r4, 0x20] - ldr r1, [r4, 0x18] - movs r2, 0x40 - bl memcpy - movs r0, 0x5 - str r0, [r4, 0x8] - movs r0, 0 - str r0, [r4, 0xC] - movs r0, 0x5 - b _08144E62 -_08144DBA: - movs r0, 0x5 - str r0, [r4, 0x8] - movs r0, 0 - str r0, [r4, 0xC] - movs r0, 0x4 - b _08144E62 -_08144DC6: - ldr r0, [r4, 0x14] - bl sub_81442CC - adds r0, r4, 0 - adds r0, 0x24 - ldr r2, [r4, 0x14] - movs r1, 0x11 - movs r3, 0x64 - bl sub_8144888 - b _08144E60 -_08144DDC: - ldr r2, [r4, 0x4] - adds r0, r4, 0 - movs r1, 0x13 - bl sub_8144C00 - b _08144E60 -_08144DE8: - ldr r0, [r4, 0x18] - bl sub_8143F68 - b _08144E60 -_08144DF0: - ldr r0, [r4, 0x18] - bl sub_8143EF4 - cmp r0, 0 - bne _08144E0C - ldr r0, [r4, 0x18] - bl sub_8143DC8 - adds r0, r4, 0 - movs r1, 0x13 - movs r2, 0 - bl sub_8144C00 - b _08144E60 -_08144E0C: - adds r0, r4, 0 - movs r1, 0x13 - movs r2, 0x1 - bl sub_8144C00 - b _08144E60 -_08144E18: - movs r0, 0x6 - b _08144E5A -_08144E1C: - ldr r0, [r4, 0x18] - bl sub_8144254 - b _08144E60 -_08144E24: - ldr r0, [r4, 0x18] - movs r1, 0xFA - lsls r1, 2 - bl sub_8069EA4 - b _08144E60 -_08144E30: - ldr r0, _08144E48 @ =gSaveBlock2Ptr - ldr r0, [r0] - movs r1, 0x94 - lsls r1, 3 - adds r0, r1 - ldr r1, [r4, 0x18] - movs r2, 0xBC - bl memcpy - bl sub_80E7490 - b _08144E60 - .align 2, 0 -_08144E48: .4byte gSaveBlock2Ptr -_08144E4C: - ldr r0, _08144E68 @ =gDecompressionBuffer - ldr r1, [r4, 0x18] - movs r2, 0x80 - lsls r2, 3 - bl memcpy - movs r0, 0x7 -_08144E5A: - str r0, [r4, 0x8] - movs r0, 0 - str r0, [r4, 0xC] -_08144E60: - movs r0, 0x1 -_08144E62: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08144E68: .4byte gDecompressionBuffer - thumb_func_end sub_8144CA0 - - thumb_func_start sub_8144E6C -sub_8144E6C: @ 8144E6C - push {lr} - adds r1, r0, 0 - ldr r0, [r1, 0xC] - cmp r0, 0 - beq _08144E7E - movs r0, 0x4 - str r0, [r1, 0x8] - movs r0, 0 - str r0, [r1, 0xC] -_08144E7E: - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8144E6C - - thumb_func_start sub_8144E84 -sub_8144E84: @ 8144E84 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0xC] - cmp r0, 0 - beq _08144E94 - cmp r0, 0x1 - beq _08144EA2 - b _08144EB4 -_08144E94: - ldr r0, [r4, 0x18] - bl sub_80DA89C - ldr r0, [r4, 0xC] - adds r0, 0x1 - str r0, [r4, 0xC] - b _08144EB4 -_08144EA2: - adds r0, r4, 0x4 - bl sub_80DA8B0 - adds r1, r0, 0 - cmp r1, 0 - bne _08144EB4 - movs r0, 0x4 - str r0, [r4, 0x8] - str r1, [r4, 0xC] -_08144EB4: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8144E84 - - thumb_func_start sub_8144EBC -sub_8144EBC: @ 8144EBC - push {r4,lr} - adds r4, r0, 0 - ldr r3, _08144EE4 @ =gDecompressionBuffer - adds r0, r4, 0x4 - ldr r1, _08144EE8 @ =gSaveBlock2Ptr - ldr r1, [r1] - ldr r2, _08144EEC @ =gSaveBlock1Ptr - ldr r2, [r2] - bl _call_via_r3 - cmp r0, 0x1 - bne _08144EDC - movs r0, 0x4 - str r0, [r4, 0x8] - movs r0, 0 - str r0, [r4, 0xC] -_08144EDC: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08144EE4: .4byte gDecompressionBuffer -_08144EE8: .4byte gSaveBlock2Ptr -_08144EEC: .4byte gSaveBlock1Ptr - thumb_func_end sub_8144EBC - - thumb_func_start mevent_srv_ish_exec -mevent_srv_ish_exec: @ 8144EF0 - push {r4,r5,lr} - sub sp, 0x20 - mov r2, sp - ldr r1, _08144F18 @ =gUnknown_8466F60 - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - ldm r1!, {r3,r4} - stm r2!, {r3,r4} - ldr r1, [r0, 0x8] - lsls r1, 2 - add r1, sp - ldr r1, [r1] - bl _call_via_r1 - add sp, 0x20 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08144F18: .4byte gUnknown_8466F60 - thumb_func_end mevent_srv_ish_exec - - thumb_func_start sub_8144F1C -sub_8144F1C: @ 8144F1C - push {r4,lr} - ldr r4, _08144F38 @ =gUnknown_203F3C4 - movs r0, 0x60 - bl AllocZeroed - str r0, [r4] - ldr r1, _08144F3C @ =gUnknown_8468B6C - movs r2, 0 - movs r3, 0x1 - bl mevent_srv_init_common - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08144F38: .4byte gUnknown_203F3C4 -_08144F3C: .4byte gUnknown_8468B6C - thumb_func_end sub_8144F1C - - thumb_func_start sub_8144F40 -sub_8144F40: @ 8144F40 - push {r4,lr} - ldr r4, _08144F5C @ =gUnknown_203F3C4 - movs r0, 0x60 - bl AllocZeroed - str r0, [r4] - ldr r1, _08144F60 @ =gUnknown_8468BCC - movs r2, 0 - movs r3, 0x1 - bl mevent_srv_init_common - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08144F5C: .4byte gUnknown_203F3C4 -_08144F60: .4byte gUnknown_8468BCC - thumb_func_end sub_8144F40 - - thumb_func_start sub_8144F64 -sub_8144F64: @ 8144F64 - push {r4-r6,lr} - adds r6, r0, 0 - ldr r4, _08144F74 @ =gUnknown_203F3C4 - ldr r0, [r4] - cmp r0, 0 - bne _08144F78 - movs r0, 0x3 - b _08144F98 - .align 2, 0 -_08144F74: .4byte gUnknown_203F3C4 -_08144F78: - bl sub_8145600 - adds r5, r0, 0 - cmp r5, 0x3 - bne _08144F96 - ldr r0, [r4] - ldr r1, [r0, 0x4] - strh r1, [r6] - bl mevent_srv_free_resources - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] -_08144F96: - adds r0, r5, 0 -_08144F98: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8144F64 - - thumb_func_start mevent_srv_init_common -mevent_srv_init_common: @ 8144FA0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - adds r4, r0, 0 - adds r6, r1, 0 - mov r8, r2 - mov r9, r3 - movs r5, 0 - str r5, [r4] - str r5, [r4, 0x8] - movs r0, 0xA6 - lsls r0, 1 - bl AllocZeroed - str r0, [r4, 0x18] - movs r0, 0xDE - lsls r0, 1 - bl AllocZeroed - str r0, [r4, 0x1C] - movs r0, 0x80 - lsls r0, 3 - bl AllocZeroed - str r0, [r4, 0x14] - movs r0, 0x64 - bl AllocZeroed - str r0, [r4, 0x20] - str r6, [r4, 0x10] - str r5, [r4, 0xC] - adds r4, 0x38 - adds r0, r4, 0 - mov r1, r8 - mov r2, r9 - bl sub_814485C - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end mevent_srv_init_common - - thumb_func_start mevent_srv_free_resources -mevent_srv_free_resources: @ 8144FF8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x18] - bl Free - ldr r0, [r4, 0x1C] - bl Free - ldr r0, [r4, 0x14] - bl Free - ldr r0, [r4, 0x20] - bl Free - pop {r4} - pop {r0} - bx r0 - thumb_func_end mevent_srv_free_resources - - thumb_func_start sub_814501C -sub_814501C: @ 814501C - push {r4-r7,lr} - adds r5, r0, 0 - adds r6, r1, 0 - adds r7, r2, 0 - adds r4, r3, 0 - movs r0, 0x80 - lsls r0, 3 - cmp r4, r0 - bls _0814503A - ldr r0, _08145050 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _08145054 @ =0x00000101 - ldr r2, _08145058 @ =gUnknown_8466FB8 "size <= ME_SEND_BUF_SIZE" - movs r3, 0x1 - bl AGBAssert -_0814503A: - adds r0, r5, 0 - adds r0, 0x38 - adds r1, r6, 0 - adds r2, r7, 0 - adds r3, r4, 0 - bl sub_8144888 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08145050: .4byte gUnknown_8466F80 -_08145054: .4byte 0x00000101 -_08145058: .4byte gUnknown_8466FB8 - thumb_func_end sub_814501C - - thumb_func_start sub_814505C -sub_814505C: @ 814505C - push {lr} - cmp r0, 0 - bne _08145064 - adds r0, r1, 0 -_08145064: - pop {r1} - bx r1 - thumb_func_end sub_814505C - - thumb_func_start sub_8145068 -sub_8145068: @ 8145068 - push {lr} - cmp r1, r0 - bcs _08145072 - movs r0, 0 - b _0814507C -_08145072: - cmp r1, r0 - beq _0814507A - movs r0, 0x2 - b _0814507C -_0814507A: - movs r0, 0x1 -_0814507C: - pop {r1} - bx r1 - thumb_func_end sub_8145068 - - thumb_func_start sub_8145080 -sub_8145080: @ 8145080 - movs r1, 0x4 - str r1, [r0, 0x8] - movs r0, 0 - bx lr - thumb_func_end sub_8145080 - - thumb_func_start sub_8145088 -sub_8145088: @ 8145088 - movs r0, 0x3 - bx lr - thumb_func_end sub_8145088 - - thumb_func_start sub_814508C -sub_814508C: @ 814508C - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x38 - bl sub_8144844 - cmp r0, 0 - beq _0814509E - movs r0, 0x4 - str r0, [r4, 0x8] -_0814509E: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_814508C - - thumb_func_start sub_81450A8 -sub_81450A8: @ 81450A8 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x38 - bl sub_8144850 - cmp r0, 0 - beq _081450BA - movs r0, 0x4 - str r0, [r4, 0x8] -_081450BA: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81450A8 - - thumb_func_start sub_81450C4 -sub_81450C4: @ 81450C4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5, 0xC] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, [r5, 0x10] - adds r4, r2, r1 - adds r0, 0x1 - str r0, [r5, 0xC] - ldr r0, [r4] - cmp r0, 0x1D - bls _081450E0 - b _081455F8 -_081450E0: - lsls r0, 2 - ldr r1, _081450EC @ =_081450F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081450EC: .4byte _081450F0 - .align 2, 0 -_081450F0: - .4byte _08145168 - .4byte _08145190 - .4byte _08145196 - .4byte _081451C4 - .4byte _08145268 - .4byte _081451E4 - .4byte _08145228 - .4byte _0814527C - .4byte _081452AC - .4byte _081452EC - .4byte _08145320 - .4byte _08145350 - .4byte _08145378 - .4byte _081453D8 - .4byte _081453A4 - .4byte _08145440 - .4byte _0814540C - .4byte _081454AA - .4byte _08145458 - .4byte _08145470 - .4byte _0814549C - .4byte _08145510 - .4byte _081454B8 - .4byte _081454E4 - .4byte _08145538 - .4byte _08145542 - .4byte _0814554C - .4byte _08145588 - .4byte _081455C0 - .4byte _081455EC -_08145168: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _0814517C - ldr r0, _08145188 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xB1 - lsls r1, 1 - ldr r2, _0814518C @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_0814517C: - movs r0, 0x1 - str r0, [r5, 0x8] - ldr r0, [r4, 0x4] - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_08145188: .4byte gUnknown_8466F80 -_0814518C: .4byte gUnknown_8466FD4 -_08145190: - movs r0, 0x3 - str r0, [r5, 0x8] - b _081455F8 -_08145196: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _081451AA - ldr r0, _081451BC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xB6 - lsls r1, 1 - ldr r2, _081451C0 @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_081451AA: - adds r0, r5, 0 - adds r0, 0x38 - ldr r1, [r4, 0x4] - ldr r2, [r5, 0x14] - bl sub_81448AC - movs r0, 0x2 - str r0, [r5, 0x8] - b _081455F8 - .align 2, 0 -_081451BC: .4byte gUnknown_8466F80 -_081451C0: .4byte gUnknown_8466FD4 -_081451C4: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145272 - ldr r0, _081451DC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xB9 - lsls r1, 1 - ldr r2, _081451E0 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert - b _08145272 - .align 2, 0 -_081451DC: .4byte gUnknown_8466F80 -_081451E0: .4byte gUnknown_8466FEC -_081451E4: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081451F8 - ldr r0, _08145218 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xBC - lsls r1, 1 - ldr r2, _0814521C @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081451F8: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _0814520A - ldr r0, _08145218 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _08145220 @ =0x00000179 - ldr r2, _08145224 @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_0814520A: - ldr r0, [r5, 0x20] - ldr r1, [r5, 0x14] - movs r2, 0x64 - bl memcpy - b _081455F8 - .align 2, 0 -_08145218: .4byte gUnknown_8466F80 -_0814521C: .4byte gUnknown_8466FEC -_08145220: .4byte 0x00000179 -_08145224: .4byte gUnknown_8466FD4 -_08145228: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _0814523C - ldr r0, _08145258 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xBF - lsls r1, 1 - ldr r2, _0814525C @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_0814523C: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _0814524E - ldr r0, _08145258 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _08145260 @ =0x0000017f - ldr r2, _08145264 @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_0814524E: - ldr r0, [r5, 0x20] - bl sub_81443D4 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_08145258: .4byte gUnknown_8466F80 -_0814525C: .4byte gUnknown_8466FEC -_08145260: .4byte 0x0000017f -_08145264: .4byte gUnknown_8466FD4 -_08145268: - ldr r1, [r5, 0x4] - ldr r0, [r4, 0x4] - cmp r1, r0 - beq _08145272 - b _081455F8 -_08145272: - movs r0, 0 - str r0, [r5, 0xC] - ldr r0, [r4, 0x8] - str r0, [r5, 0x10] - b _081455F8 -_0814527C: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145290 - ldr r0, _081452A4 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xC6 - lsls r1, 1 - ldr r2, _081452A8 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145290: - ldr r0, [r4, 0x8] - ldr r1, [r5, 0x18] - bl sub_814505C - adds r2, r0, 0 - ldr r1, [r5, 0x20] - bl sub_8144418 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_081452A4: .4byte gUnknown_8466F80 -_081452A8: .4byte gUnknown_8466FEC -_081452AC: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081452C0 - ldr r0, _081452DC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xC9 - lsls r1, 1 - ldr r2, _081452E0 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081452C0: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _081452D2 - ldr r0, _081452DC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _081452E4 @ =0x00000193 - ldr r2, _081452E8 @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_081452D2: - ldr r0, [r5, 0x14] - ldr r0, [r0] - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_081452DC: .4byte gUnknown_8466F80 -_081452E0: .4byte gUnknown_8466FEC -_081452E4: .4byte 0x00000193 -_081452E8: .4byte gUnknown_8466FD4 -_081452EC: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145300 - ldr r0, _08145318 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xCC - lsls r1, 1 - ldr r2, _0814531C @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145300: - ldr r0, [r4, 0x8] - adds r1, r5, 0 - adds r1, 0x34 - bl sub_814505C - adds r2, r0, 0 - ldr r1, [r5, 0x20] - bl sub_8144434 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_08145318: .4byte gUnknown_8466F80 -_0814531C: .4byte gUnknown_8466FEC -_08145320: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _08145332 - ldr r0, _08145344 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _08145348 @ =0x0000019f - ldr r2, _0814534C @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_08145332: - ldr r0, [r5, 0x20] - ldr r1, [r4, 0x4] - bl sub_81444B0 - lsls r0, 16 - lsrs r0, 16 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_08145344: .4byte gUnknown_8466F80 -_08145348: .4byte 0x0000019f -_0814534C: .4byte gUnknown_8466FD4 -_08145350: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145364 - ldr r0, _08145370 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xD2 - lsls r1, 1 - ldr r2, _08145374 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145364: - ldr r0, [r5, 0x20] - ldr r1, [r4, 0x8] - bl sub_8144474 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_08145370: .4byte gUnknown_8466F80 -_08145374: .4byte gUnknown_8466FEC -_08145378: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _0814538C - ldr r0, _0814539C @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xD5 - lsls r1, 1 - ldr r2, _081453A0 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_0814538C: - ldr r0, [r4, 0x8] - ldr r1, [r5, 0x14] - ldr r1, [r1] - bl sub_8145068 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_0814539C: .4byte gUnknown_8466F80 -_081453A0: .4byte gUnknown_8466FEC -_081453A4: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081453B8 - ldr r0, _081453D0 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xD8 - lsls r1, 1 - ldr r2, _081453D4 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081453B8: - ldr r0, [r4, 0x8] - ldr r1, [r5, 0x1C] - bl sub_814505C - adds r2, r0, 0 - movs r3, 0xDE - lsls r3, 1 - adds r0, r5, 0 - movs r1, 0x17 - bl sub_814501C - b _081455F8 - .align 2, 0 -_081453D0: .4byte gUnknown_8466F80 -_081453D4: .4byte gUnknown_8466FEC -_081453D8: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081453EC - ldr r0, _08145404 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xDB - lsls r1, 1 - ldr r2, _08145408 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081453EC: - ldr r0, [r4, 0x8] - ldr r1, [r5, 0x18] - bl sub_814505C - adds r2, r0, 0 - movs r3, 0xA6 - lsls r3, 1 - adds r0, r5, 0 - movs r1, 0x16 - bl sub_814501C - b _081455F8 - .align 2, 0 -_08145404: .4byte gUnknown_8466F80 -_08145408: .4byte gUnknown_8466FEC -_0814540C: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145420 - ldr r0, _08145438 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xDE - lsls r1, 1 - ldr r2, _0814543C @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145420: - ldr r0, [r4, 0x8] - adds r1, r5, 0 - adds r1, 0x34 - bl sub_814505C - adds r2, r0, 0 - adds r0, r5, 0 - movs r1, 0x18 - movs r3, 0x4 - bl sub_814501C - b _081455F8 - .align 2, 0 -_08145438: .4byte gUnknown_8466F80 -_0814543C: .4byte gUnknown_8466FEC -_08145440: - ldr r2, [r4, 0x8] - cmp r2, 0 - bne _0814544C - ldr r2, [r5, 0x24] - ldr r3, [r5, 0x28] - b _0814544E -_0814544C: - ldr r3, [r4, 0x4] -_0814544E: - adds r0, r5, 0 - movs r1, 0x19 - bl sub_814501C - b _081455F8 -_08145458: - ldr r2, [r4, 0x8] - cmp r2, 0 - bne _08145464 - ldr r2, [r5, 0x2C] - ldr r3, [r5, 0x30] - b _08145466 -_08145464: - ldr r3, [r4, 0x4] -_08145466: - adds r0, r5, 0 - movs r1, 0x10 - bl sub_814501C - b _081455F8 -_08145470: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145484 - ldr r0, _08145494 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xE9 - lsls r1, 1 - ldr r2, _08145498 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145484: - ldr r2, [r4, 0x8] - adds r0, r5, 0 - movs r1, 0x1A - movs r3, 0xBC - bl sub_814501C - b _081455F8 - .align 2, 0 -_08145494: .4byte gUnknown_8466F80 -_08145498: .4byte gUnknown_8466FEC -_0814549C: - ldr r2, [r4, 0x8] - ldr r3, [r4, 0x4] - adds r0, r5, 0 - movs r1, 0x15 - bl sub_814501C - b _081455F8 -_081454AA: - ldr r2, [r4, 0x8] - ldr r3, [r4, 0x4] - adds r0, r5, 0 - movs r1, 0x1C - bl sub_814501C - b _081455F8 -_081454B8: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081454CA - ldr r0, _081454D8 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _081454DC @ =0x000001e1 - ldr r2, _081454E0 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081454CA: - ldr r0, [r5, 0x18] - ldr r1, [r4, 0x8] - movs r2, 0xA6 - lsls r2, 1 - bl memcpy - b _081455F8 - .align 2, 0 -_081454D8: .4byte gUnknown_8466F80 -_081454DC: .4byte 0x000001e1 -_081454E0: .4byte gUnknown_8466FEC -_081454E4: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081454F8 - ldr r0, _08145508 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xF3 - lsls r1, 1 - ldr r2, _0814550C @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081454F8: - ldr r0, [r5, 0x1C] - ldr r1, [r4, 0x8] - movs r2, 0xDE - lsls r2, 1 - bl memcpy - b _081455F8 - .align 2, 0 -_08145508: .4byte gUnknown_8466F80 -_0814550C: .4byte gUnknown_8466FEC -_08145510: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145522 - ldr r0, _0814552C @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _08145530 @ =0x000001eb - ldr r2, _08145534 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145522: - ldr r0, [r4, 0x8] - ldr r0, [r0] - str r0, [r5, 0x34] - b _081455F8 - .align 2, 0 -_0814552C: .4byte gUnknown_8466F80 -_08145530: .4byte 0x000001eb -_08145534: .4byte gUnknown_8466FEC -_08145538: - ldr r0, [r4, 0x8] - str r0, [r5, 0x24] - ldr r0, [r4, 0x4] - str r0, [r5, 0x28] - b _081455F8 -_08145542: - ldr r0, [r4, 0x8] - str r0, [r5, 0x2C] - ldr r0, [r4, 0x4] - str r0, [r5, 0x30] - b _081455F8 -_0814554C: - ldr r0, [r4, 0x4] - cmp r0, 0 - bne _08145558 - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _08145566 -_08145558: - ldr r0, _08145580 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xFD - lsls r1, 1 - ldr r2, _08145584 @ =gUnknown_8467000 "cmd->flag == FALSE && cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_08145566: - ldr r4, [r5, 0x18] - bl sav1_get_mevent_buffer_1 - adds r1, r0, 0 - movs r2, 0xA6 - lsls r2, 1 - adds r0, r4, 0 - bl memcpy - ldr r0, [r5, 0x18] - bl sub_814410C - b _081455F8 - .align 2, 0 -_08145580: .4byte gUnknown_8466F80 -_08145584: .4byte gUnknown_8467000 -_08145588: - ldr r0, [r4, 0x4] - cmp r0, 0 - bne _08145594 - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _081455A2 -_08145594: - ldr r0, _081455B8 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0x80 - lsls r1, 2 - ldr r2, _081455BC @ =gUnknown_8467000 "cmd->flag == FALSE && cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_081455A2: - ldr r4, [r5, 0x1C] - bl sub_8143D58 - adds r1, r0, 0 - movs r2, 0xDE - lsls r2, 1 - adds r0, r4, 0 - bl memcpy - b _081455F8 - .align 2, 0 -_081455B8: .4byte gUnknown_8466F80 -_081455BC: .4byte gUnknown_8467000 -_081455C0: - ldr r0, [r4, 0x4] - cmp r0, 0 - bne _081455CC - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _081455D8 -_081455CC: - ldr r0, _081455E0 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _081455E4 @ =0x00000205 - ldr r2, _081455E8 @ =gUnknown_8467000 "cmd->flag == FALSE && cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_081455D8: - bl sub_8069E48 - str r0, [r5, 0x24] - b _081455F8 - .align 2, 0 -_081455E0: .4byte gUnknown_8466F80 -_081455E4: .4byte 0x00000205 -_081455E8: .4byte gUnknown_8467000 -_081455EC: - ldr r2, [r4, 0x8] - ldr r3, [r4, 0x4] - adds r0, r5, 0 - movs r1, 0x1B - bl sub_814501C -_081455F8: - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81450C4 - - thumb_func_start sub_8145600 -sub_8145600: @ 8145600 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - cmp r0, 0x4 - bls _08145616 - ldr r0, _08145644 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _08145648 @ =0x00000222 - ldr r2, _0814564C @ =gUnknown_8467044 "svr->mainseqno < NELEMS(func_tbl)" - movs r3, 0x1 - bl AGBAssert -_08145616: - ldr r1, _08145650 @ =gUnknown_8467030 - ldr r0, [r4, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - adds r5, r0, 0 - ldr r0, [r4, 0x8] - cmp r0, 0x4 - bls _0814563C - ldr r0, _08145644 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0x89 - lsls r1, 2 - ldr r2, _0814564C @ =gUnknown_8467044 "svr->mainseqno < NELEMS(func_tbl)" - movs r3, 0x1 - bl AGBAssert -_0814563C: - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08145644: .4byte gUnknown_8466F80 -_08145648: .4byte 0x00000222 -_0814564C: .4byte gUnknown_8467044 -_08145650: .4byte gUnknown_8467030 - thumb_func_end sub_8145600 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s deleted file mode 100644 index b150bb586..000000000 --- a/asm/mystery_event_script.s +++ /dev/null @@ -1,722 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80DA800 -sub_80DA800: @ 80DA800 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r2, 16 - lsrs r2, 16 - movs r4, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080DA828 - ands r1, r4 - cmp r1, 0 - beq _080DA828 - ands r2, r4 - cmp r2, 0 - beq _080DA828 - ands r3, r4 - cmp r3, 0 - beq _080DA828 - movs r0, 0x1 - b _080DA82A -_080DA828: - movs r0, 0 -_080DA82A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80DA800 - - thumb_func_start SetIncompatible -SetIncompatible: @ 80DA830 - push {lr} - ldr r0, _080DA844 @ =gStringVar4 - ldr r1, _080DA848 @ =gUnknown_8488DFD - bl StringExpandPlaceholders - movs r0, 0x3 - bl sub_80DA8E8 - pop {r0} - bx r0 - .align 2, 0 -_080DA844: .4byte gStringVar4 -_080DA848: .4byte gUnknown_8488DFD - thumb_func_end SetIncompatible - - thumb_func_start InitMysteryEventScript -InitMysteryEventScript: @ 80DA84C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _080DA874 @ =gUnknown_81DBCF0 - ldr r2, _080DA878 @ =0x081dbd34 - bl InitScriptContext - adds r0, r4, 0 - adds r1, r5, 0 - bl SetupBytecodeScript - str r5, [r4, 0x64] - movs r0, 0 - str r0, [r4, 0x68] - str r0, [r4, 0x6C] - str r0, [r4, 0x70] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DA874: .4byte gUnknown_81DBCF0 -_080DA878: .4byte 0x081dbd34 - thumb_func_end InitMysteryEventScript - - thumb_func_start RunMysteryEventScriptCommand -RunMysteryEventScriptCommand: @ 80DA87C - push {r4,lr} - adds r4, r0, 0 - bl RunScriptCommand - lsls r0, 24 - cmp r0, 0 - beq _080DA894 - ldr r0, [r4, 0x70] - cmp r0, 0 - beq _080DA894 - movs r0, 0x1 - b _080DA896 -_080DA894: - movs r0, 0 -_080DA896: - pop {r4} - pop {r1} - bx r1 - thumb_func_end RunMysteryEventScriptCommand - - thumb_func_start sub_80DA89C -sub_80DA89C: @ 80DA89C - push {lr} - adds r1, r0, 0 - ldr r0, _080DA8AC @ =gUnknown_203AA3C - bl InitMysteryEventScript - pop {r0} - bx r0 - .align 2, 0 -_080DA8AC: .4byte gUnknown_203AA3C - thumb_func_end sub_80DA89C - - thumb_func_start sub_80DA8B0 -sub_80DA8B0: @ 80DA8B0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080DA8C8 @ =gUnknown_203AA3C - adds r0, r4, 0 - bl RunMysteryEventScriptCommand - ldr r1, [r4, 0x6C] - str r1, [r5] - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080DA8C8: .4byte gUnknown_203AA3C - thumb_func_end sub_80DA8B0 - - thumb_func_start sub_80DA8CC -sub_80DA8CC: @ 80DA8CC - push {lr} - sub sp, 0x4 - bl sub_80DA89C -_080DA8D4: - mov r0, sp - bl sub_80DA8B0 - cmp r0, 0 - bne _080DA8D4 - ldr r0, [sp] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_80DA8CC - - thumb_func_start sub_80DA8E8 -sub_80DA8E8: @ 80DA8E8 - ldr r1, _080DA8F0 @ =gUnknown_203AA3C - str r0, [r1, 0x6C] - bx lr - .align 2, 0 -_080DA8F0: .4byte gUnknown_203AA3C - thumb_func_end sub_80DA8E8 - - thumb_func_start script_status_stop_and_ret_1 -script_status_stop_and_ret_1: @ 80DA8F4 - push {lr} - bl StopScript - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end script_status_stop_and_ret_1 - - thumb_func_start MEScrCmd_checkcompat -MEScrCmd_checkcompat: @ 80DA900 - push {r4-r7,lr} - adds r7, r0, 0 - bl ScriptReadWord - str r0, [r7, 0x68] - adds r0, r7, 0 - bl ScriptReadHalfword - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r7, 0 - bl ScriptReadWord - adds r6, r0, 0 - adds r0, r7, 0 - bl ScriptReadHalfword - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r7, 0 - bl ScriptReadWord - adds r3, r0, 0 - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl sub_80DA800 - cmp r0, 0x1 - bne _080DA944 - str r0, [r7, 0x70] - b _080DA948 -_080DA944: - bl SetIncompatible -_080DA948: - movs r0, 0x1 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MEScrCmd_checkcompat - - thumb_func_start sub_80DA950 -sub_80DA950: @ 80DA950 - movs r0, 0 - bx lr - thumb_func_end sub_80DA950 - - thumb_func_start MEScrCmd_setstatus -MEScrCmd_setstatus: @ 80DA954 - ldr r1, [r0, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - str r2, [r0, 0x6C] - movs r0, 0 - bx lr - thumb_func_end MEScrCmd_setstatus - - thumb_func_start MEScrCmd_setmsg -MEScrCmd_setmsg: @ 80DA964 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r5, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - ldr r1, [r4, 0x68] - subs r0, r1 - ldr r1, [r4, 0x64] - adds r1, r0, r1 - cmp r5, 0xFF - beq _080DA988 - ldr r0, [r4, 0x6C] - cmp r5, r0 - bne _080DA98E -_080DA988: - ldr r0, _080DA998 @ =gStringVar4 - bl StringExpandPlaceholders -_080DA98E: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080DA998: .4byte gStringVar4 - thumb_func_end MEScrCmd_setmsg - - thumb_func_start MEScrCmd_runscript -MEScrCmd_runscript: @ 80DA99C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - ldr r1, [r4, 0x68] - subs r0, r1 - ldr r1, [r4, 0x64] - adds r0, r1 - bl ScriptContext2_RunNewScript - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end MEScrCmd_runscript - - thumb_func_start MEScrCmd_setenigmaberry -MEScrCmd_setenigmaberry: @ 80DA9B8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - bl IsEnigmaBerryValid - mov r8, r0 - adds r0, r7, 0 - bl ScriptReadWord - adds r4, r0, 0 - ldr r0, [r7, 0x68] - subs r4, r0 - ldr r0, [r7, 0x64] - adds r4, r0 - ldr r0, _080DAA0C @ =gStringVar1 - mov r9, r0 - ldr r6, _080DAA10 @ =gSaveBlock1Ptr - ldr r1, [r6] - ldr r5, _080DAA14 @ =0x000030ec - adds r1, r5 - movs r2, 0x7 - bl StringCopyN - adds r0, r4, 0 - bl sub_809C7C4 - ldr r4, _080DAA18 @ =gStringVar2 - ldr r1, [r6] - adds r1, r5 - adds r0, r4, 0 - movs r2, 0x7 - bl StringCopyN - mov r0, r8 - cmp r0, 0 - bne _080DAA24 - ldr r0, _080DAA1C @ =gStringVar4 - ldr r1, _080DAA20 @ =gUnknown_8488C70 - b _080DAA44 - .align 2, 0 -_080DAA0C: .4byte gStringVar1 -_080DAA10: .4byte gSaveBlock1Ptr -_080DAA14: .4byte 0x000030ec -_080DAA18: .4byte gStringVar2 -_080DAA1C: .4byte gStringVar4 -_080DAA20: .4byte gUnknown_8488C70 -_080DAA24: - mov r0, r9 - adds r1, r4, 0 - bl StringCompare - cmp r0, 0 - beq _080DAA40 - ldr r0, _080DAA38 @ =gStringVar4 - ldr r1, _080DAA3C @ =gUnknown_8488CA2 - b _080DAA44 - .align 2, 0 -_080DAA38: .4byte gStringVar4 -_080DAA3C: .4byte gUnknown_8488CA2 -_080DAA40: - ldr r0, _080DAA60 @ =gStringVar4 - ldr r1, _080DAA64 @ =gUnknown_8488CCE -_080DAA44: - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r7, 0x6C] - bl IsEnigmaBerryValid - cmp r0, 0x1 - bne _080DAA6C - ldr r0, _080DAA68 @ =0x00004033 - movs r1, 0x1 - bl VarSet - b _080DAA70 - .align 2, 0 -_080DAA60: .4byte gStringVar4 -_080DAA64: .4byte gUnknown_8488CCE -_080DAA68: .4byte 0x00004033 -_080DAA6C: - movs r0, 0x1 - str r0, [r7, 0x6C] -_080DAA70: - movs r0, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MEScrCmd_setenigmaberry - - thumb_func_start MEScrCmd_giveribbon -MEScrCmd_giveribbon: @ 80DAA80 - push {r4,lr} - adds r4, r0, 0 - ldr r2, [r4, 0x8] - ldrb r0, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - ldrb r1, [r2] - adds r2, 0x1 - str r2, [r4, 0x8] - bl GiveGiftRibbonToParty - ldr r0, _080DAAAC @ =gStringVar4 - ldr r1, _080DAAB0 @ =gUnknown_8488CF6 - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080DAAAC: .4byte gStringVar4 -_080DAAB0: .4byte gUnknown_8488CF6 - thumb_func_end MEScrCmd_giveribbon - - thumb_func_start MEScrCmd_initramscript -MEScrCmd_initramscript: @ 80DAAB4 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r4, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r4, 0x8] - ldrb r1, [r0] - mov r8, r1 - adds r1, r0, 0x1 - str r1, [r4, 0x8] - ldrb r6, [r0, 0x1] - adds r1, 0x1 - str r1, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadWord - adds r5, r0, 0 - ldr r0, [r4, 0x68] - subs r5, r0 - ldr r0, [r4, 0x64] - adds r5, r0 - adds r0, r4, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r4, 0x68] - subs r1, r0 - ldr r0, [r4, 0x64] - adds r1, r0 - subs r1, r5 - lsls r1, 16 - lsrs r1, 16 - str r6, [sp] - adds r0, r5, 0 - mov r2, r9 - mov r3, r8 - bl InitRamScript - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end MEScrCmd_initramscript - - thumb_func_start sub_80DAB1C -sub_80DAB1C: @ 80DAB1C - push {r4,lr} - adds r4, r0, 0 - bl sub_806E22C - ldr r0, _080DAB38 @ =gStringVar4 - ldr r1, _080DAB3C @ =gUnknown_8488D2A - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080DAB38: .4byte gStringVar4 -_080DAB3C: .4byte gUnknown_8488D2A - thumb_func_end sub_80DAB1C - - thumb_func_start MEScrCmd_addrareword -MEScrCmd_addrareword: @ 80DAB40 - push {r4,lr} - adds r4, r0, 0 - ldr r1, [r4, 0x8] - ldrb r0, [r1] - adds r1, 0x1 - str r1, [r4, 0x8] - bl sub_80BDB70 - ldr r0, _080DAB64 @ =gStringVar4 - ldr r1, _080DAB68 @ =gUnknown_8488D60 - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080DAB64: .4byte gStringVar4 -_080DAB68: .4byte gUnknown_8488D60 - thumb_func_end MEScrCmd_addrareword - - thumb_func_start sub_80DAB6C -sub_80DAB6C: @ 80DAB6C - push {r4,lr} - adds r4, r0, 0 - bl SetIncompatible - movs r0, 0 - str r0, [r4, 0x70] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80DAB6C - - thumb_func_start sub_80DAB80 -sub_80DAB80: @ 80DAB80 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x88 - adds r6, r0, 0 - bl ScriptReadWord - ldr r1, [r6, 0x68] - subs r0, r1 - ldr r1, [r6, 0x64] - adds r5, r0, r1 - movs r0, 0x64 - adds r0, r5 - mov r8, r0 - add r4, sp, 0x24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bne _080DABD0 - ldr r0, _080DABC8 @ =gStringVar1 - ldr r1, _080DABCC @ =gText_EggNickname - movs r2, 0xB - bl StringCopyN - b _080DABDA - .align 2, 0 -_080DABC8: .4byte gStringVar1 -_080DABCC: .4byte gText_EggNickname -_080DABD0: - ldr r0, _080DABF0 @ =gStringVar1 - ldr r1, _080DABF4 @ =gUnknown_8415A66 - movs r2, 0xB - bl StringCopyN -_080DABDA: - ldr r0, _080DABF8 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r0, 0x6 - bne _080DAC04 - ldr r0, _080DABFC @ =gStringVar4 - ldr r1, _080DAC00 @ =gUnknown_8488D8E - bl StringExpandPlaceholders - movs r0, 0x3 - b _080DAC6E - .align 2, 0 -_080DABF0: .4byte gStringVar1 -_080DABF4: .4byte gUnknown_8415A66 -_080DABF8: .4byte gPlayerPartyCount -_080DABFC: .4byte gStringVar4 -_080DAC00: .4byte gUnknown_8488D8E -_080DAC04: - ldr r7, _080DAC80 @ =gUnknown_2024478 - adds r0, r7, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - mov r0, sp - mov r1, r8 - movs r2, 0x24 - bl memcpy - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - beq _080DAC3E - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_8088E74 - adds r0, r4, 0 - movs r1, 0x3 - bl sub_8088E74 -_080DAC3E: - adds r0, r7, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl itemid_is_mail - lsls r0, 24 - cmp r0, 0 - beq _080DAC5C - adds r0, r7, 0 - mov r1, sp - bl GiveMailToMon2 -_080DAC5C: - bl CompactPartySlots - bl CalculatePlayerPartyCount - ldr r0, _080DAC84 @ =gStringVar4 - ldr r1, _080DAC88 @ =gUnknown_8488D7C - bl StringExpandPlaceholders - movs r0, 0x2 -_080DAC6E: - str r0, [r6, 0x6C] - movs r0, 0 - add sp, 0x88 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080DAC80: .4byte gUnknown_2024478 -_080DAC84: .4byte gStringVar4 -_080DAC88: .4byte gUnknown_8488D7C - thumb_func_end sub_80DAB80 - - thumb_func_start sub_80DAC8C -sub_80DAC8C: @ 80DAC8C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r4, 0x68] - subs r1, r0 - ldr r0, [r4, 0x64] - adds r1, r0 - ldr r0, _080DACC8 @ =gSaveBlock2Ptr - ldr r0, [r0] - movs r2, 0x94 - lsls r2, 3 - adds r0, r2 - movs r2, 0xBC - bl memcpy - bl sub_80E7490 - ldr r0, _080DACCC @ =gStringVar4 - ldr r1, _080DACD0 @ =gUnknown_8488DBD - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [r4, 0x6C] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080DACC8: .4byte gSaveBlock2Ptr -_080DACCC: .4byte gStringVar4 -_080DACD0: .4byte gUnknown_8488DBD - thumb_func_end sub_80DAC8C - - thumb_func_start sub_80DACD4 -sub_80DACD4: @ 80DACD4 - push {r4,lr} - adds r4, r0, 0 - bl SetIncompatible - movs r0, 0 - str r0, [r4, 0x70] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80DACD4 - - thumb_func_start MEScrCmd_checksum -MEScrCmd_checksum: @ 80DACE8 - push {r4-r6,lr} - adds r6, r0, 0 - bl ScriptReadWord - adds r5, r0, 0 - adds r0, r6, 0 - bl ScriptReadWord - adds r4, r0, 0 - ldr r0, [r6, 0x68] - subs r4, r0 - ldr r0, [r6, 0x64] - adds r4, r0 - adds r0, r6, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r6, 0x68] - subs r1, r0 - ldr r0, [r6, 0x64] - adds r1, r0 - subs r1, r4 - adds r0, r4, 0 - bl CalcByteArraySum - cmp r5, r0 - beq _080DAD26 - movs r0, 0 - str r0, [r6, 0x70] - movs r0, 0x1 - str r0, [r6, 0x6C] -_080DAD26: - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end MEScrCmd_checksum - - thumb_func_start MEScrCmd_crc -MEScrCmd_crc: @ 80DAD30 - push {r4-r6,lr} - adds r6, r0, 0 - bl ScriptReadWord - adds r5, r0, 0 - adds r0, r6, 0 - bl ScriptReadWord - adds r4, r0, 0 - ldr r0, [r6, 0x68] - subs r4, r0 - ldr r0, [r6, 0x64] - adds r4, r0 - adds r0, r6, 0 - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, [r6, 0x68] - subs r1, r0 - ldr r0, [r6, 0x64] - adds r1, r0 - subs r1, r4 - adds r0, r4, 0 - bl CalcCRC16 - lsls r0, 16 - lsrs r0, 16 - cmp r5, r0 - beq _080DAD72 - movs r0, 0 - str r0, [r6, 0x70] - movs r0, 0x1 - str r0, [r6, 0x6C] -_080DAD72: - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end MEScrCmd_crc - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/party_menu.s b/asm/party_menu.s index bdde69c24..c4980f984 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -1245,13 +1245,13 @@ sub_811F430: @ 811F430 muls r1, r0 ldr r0, _0811F468 @ =gPlayerParty adds r6, r1, r0 - ldr r0, _0811F46C @ =gUnknown_203AD30 + ldr r0, _0811F46C @ =gSpecialVar_ItemId ldrh r4, [r0] ldr r0, _0811F470 @ =gUnknown_203B0A0 ldrb r0, [r0, 0xB] cmp r0, 0xC bne _0811F47C - ldr r0, _0811F474 @ =gUnknown_20370D0 + ldr r0, _0811F474 @ =gSpecialVar_Result movs r1, 0 strh r1, [r0] ldr r0, _0811F478 @ =gSpecialVar_0x8005 @@ -1266,9 +1266,9 @@ sub_811F430: @ 811F430 b _0811F4C6 .align 2, 0 _0811F468: .4byte gPlayerParty -_0811F46C: .4byte gUnknown_203AD30 +_0811F46C: .4byte gSpecialVar_ItemId _0811F470: .4byte gUnknown_203B0A0 -_0811F474: .4byte gUnknown_20370D0 +_0811F474: .4byte gSpecialVar_Result _0811F478: .4byte gSpecialVar_0x8005 _0811F47C: cmp r0, 0x3 @@ -2364,7 +2364,7 @@ _0811FCDA: _0811FCE8: movs r0, 0x5 bl PlaySE - ldr r1, _0811FD24 @ =gUnknown_20370C0 + ldr r1, _0811FD24 @ =gSpecialVar_0x8004 movs r0, 0 ldrsb r0, [r5, r0] strh r0, [r1] @@ -2390,7 +2390,7 @@ _0811FD1A: bl sub_811FA78 b _0811FD56 .align 2, 0 -_0811FD24: .4byte gUnknown_20370C0 +_0811FD24: .4byte gSpecialVar_0x8004 _0811FD28: .4byte gUnknown_203B0A0 _0811FD2C: .4byte gSpecialVar_0x8005 _0811FD30: .4byte gPlayerParty @@ -2498,7 +2498,7 @@ _0811FDF4: lsls r0, 24 cmp r0, 0 bne _0811FE04 - ldr r1, _0811FE1C @ =gUnknown_20370C0 + ldr r1, _0811FE1C @ =gSpecialVar_0x8004 movs r0, 0x7 strh r0, [r1] _0811FE04: @@ -2514,7 +2514,7 @@ _0811FE14: pop {r0} bx r0 .align 2, 0 -_0811FE1C: .4byte gUnknown_20370C0 +_0811FE1C: .4byte gSpecialVar_0x8004 _0811FE20: .4byte gUnknown_203B0C0 thumb_func_end sub_811FD88 @@ -4107,13 +4107,13 @@ sub_81209F4: @ 81209F4 bne _08120A24 movs r0, 0x5 bl PlaySE - ldr r0, _08120A20 @ =gUnknown_20370C0 + ldr r0, _08120A20 @ =gSpecialVar_0x8004 strh r5, [r0] adds r0, r4, 0 bl sub_811FA78 b _08120A46 .align 2, 0 -_08120A20: .4byte gUnknown_20370C0 +_08120A20: .4byte gSpecialVar_0x8004 _08120A24: movs r0, 0x1A bl PlaySE @@ -4215,14 +4215,14 @@ _08120AE4: beq _08120B02 b _08120B10 _08120AEA: - ldr r1, _08120AF8 @ =gUnknown_20370C0 + ldr r1, _08120AF8 @ =gSpecialVar_0x8004 movs r0, 0x7 strh r0, [r1] adds r0, r4, 0 bl sub_811FA78 b _08120B10 .align 2, 0 -_08120AF8: .4byte gUnknown_20370C0 +_08120AF8: .4byte gSpecialVar_0x8004 _08120AFC: movs r0, 0x5 bl PlaySE @@ -9878,7 +9878,7 @@ c2_8123744: @ 8123744 mov r7, r8 push {r7} sub sp, 0xC - ldr r6, _0812376C @ =gUnknown_203AD30 + ldr r6, _0812376C @ =gSpecialVar_ItemId ldrh r0, [r6] cmp r0, 0 bne _08123778 @@ -9894,7 +9894,7 @@ c2_8123744: @ 8123744 ldr r1, [r3] b _081237AE .align 2, 0 -_0812376C: .4byte gUnknown_203AD30 +_0812376C: .4byte gSpecialVar_ItemId _08123770: .4byte gUnknown_203B0A0 _08123774: .4byte sub_8122C30 _08123778: @@ -9992,7 +9992,7 @@ sub_8123824: @ 8123824 ands r0, r1 cmp r0, 0 bne _08123880 - ldr r0, _08123890 @ =gUnknown_203AD30 + ldr r0, _08123890 @ =gSpecialVar_ItemId ldrh r4, [r0] ldr r0, _08123894 @ =gUnknown_203B0A0 mov r8, r0 @@ -10032,7 +10032,7 @@ _08123880: bx r0 .align 2, 0 _0812388C: .4byte gPaletteFade -_08123890: .4byte gUnknown_203AD30 +_08123890: .4byte gSpecialVar_ItemId _08123894: .4byte gUnknown_203B0A0 _08123898: .4byte gPlayerParty _0812389C: .4byte gTasks @@ -10130,7 +10130,7 @@ _08123950: beq _08123A32 b _08123A40 _08123956: - ldr r5, _08123998 @ =gUnknown_203AD30 + ldr r5, _08123998 @ =gSpecialVar_ItemId ldrh r0, [r5] movs r1, 0x1 bl sub_809A1D8 @@ -10158,7 +10158,7 @@ _08123956: str r1, [r0] b _08123A40 .align 2, 0 -_08123998: .4byte gUnknown_203AD30 +_08123998: .4byte gSpecialVar_ItemId _0812399C: .4byte gUnknown_203B0D8 _081239A0: .4byte gStringVar4 _081239A4: .4byte gTasks @@ -10317,7 +10317,7 @@ sub_8123ACC: @ 8123ACC lsls r0, 16 lsrs r0, 16 mov r8, r0 - ldr r0, _08123B40 @ =gUnknown_20370D0 + ldr r0, _08123B40 @ =gSpecialVar_Result ldrh r7, [r0] cmp r7, 0 bne _08123B4C @@ -10350,7 +10350,7 @@ sub_8123ACC: @ 8123ACC .align 2, 0 _08123B38: .4byte gUnknown_203B0A0 _08123B3C: .4byte gPlayerParty -_08123B40: .4byte gUnknown_20370D0 +_08123B40: .4byte gSpecialVar_Result _08123B44: .4byte gUnknown_203B0D8 _08123B48: .4byte sub_8122C30 _08123B4C: @@ -10400,7 +10400,7 @@ sub_8123B78: @ 8123B78 muls r0, r1 ldr r1, _08123BBC @ =gPlayerParty adds r0, r1 - ldr r1, _08123BC0 @ =gUnknown_203AD30 + ldr r1, _08123BC0 @ =gSpecialVar_ItemId ldrh r1, [r1] movs r2, 0 movs r3, 0 @@ -10411,9 +10411,9 @@ _08123BB0: .4byte gPaletteFade _08123BB4: .4byte gUnknown_203B0D8 _08123BB8: .4byte gUnknown_203B0A0 _08123BBC: .4byte gPlayerParty -_08123BC0: .4byte gUnknown_203AD30 +_08123BC0: .4byte gSpecialVar_ItemId _08123BC4: - ldr r0, _08123BE4 @ =gUnknown_203AD30 + ldr r0, _08123BE4 @ =gSpecialVar_ItemId ldrh r0, [r0] ldrh r1, [r1] movs r2, 0 @@ -10431,7 +10431,7 @@ _08123BDE: pop {r0} bx r0 .align 2, 0 -_08123BE4: .4byte gUnknown_203AD30 +_08123BE4: .4byte gSpecialVar_ItemId _08123BE8: .4byte gTasks _08123BEC: .4byte sub_8123BF0 thumb_func_end sub_8123B78 @@ -11337,7 +11337,7 @@ sub_8124354: @ 8124354 lsrs r4, 24 movs r0, 0x5 bl PlaySE - ldr r1, _0812437C @ =gUnknown_20370C0 + ldr r1, _0812437C @ =gSpecialVar_0x8004 ldr r0, _08124380 @ =gUnknown_203B0A0 ldrb r0, [r0, 0x9] lsls r0, 24 @@ -11349,7 +11349,7 @@ sub_8124354: @ 8124354 pop {r0} bx r0 .align 2, 0 -_0812437C: .4byte gUnknown_20370C0 +_0812437C: .4byte gSpecialVar_0x8004 _08124380: .4byte gUnknown_203B0A0 thumb_func_end sub_8124354 @@ -12495,7 +12495,7 @@ _08124CCC: mov r8, r1 movs r7, 0 _08124CD2: - ldr r4, _08124D30 @ =gUnknown_203AD30 + ldr r4, _08124D30 @ =gSpecialVar_ItemId ldrh r0, [r4] bl GetItemEffectType lsls r0, 24 @@ -12529,7 +12529,7 @@ _08124D0C: cmp r5, 0x5 bls _08124CEA _08124D16: - ldr r0, _08124D30 @ =gUnknown_203AD30 + ldr r0, _08124D30 @ =gSpecialVar_ItemId ldrh r0, [r0] bl GetPocketByItemId lsls r0, 24 @@ -12542,7 +12542,7 @@ _08124D28: movs r0, 0x7F b _08124D6A .align 2, 0 -_08124D30: .4byte gUnknown_203AD30 +_08124D30: .4byte gSpecialVar_ItemId _08124D34: .4byte gUnknown_203B0A0 _08124D38: .4byte gPlayerParty _08124D3C: .4byte sub_8124DB0 @@ -12642,7 +12642,7 @@ _08124DDC: .4byte sub_8124DE0 thumb_func_start sub_8124DE0 sub_8124DE0: @ 8124DE0 push {r4,lr} - ldr r4, _08124E0C @ =gUnknown_203AD30 + ldr r4, _08124E0C @ =gSpecialVar_ItemId ldrh r0, [r4] bl sub_80A1150 lsls r0, 24 @@ -12661,7 +12661,7 @@ sub_8124DE0: @ 8124DE0 bl sub_811C540 b _08124E38 .align 2, 0 -_08124E0C: .4byte gUnknown_203AD30 +_08124E0C: .4byte gSpecialVar_ItemId _08124E10: .4byte gUnknown_203B0A0 _08124E14: .4byte sub_8126BD4 _08124E18: @@ -12694,7 +12694,7 @@ sub_8124E48: @ 8124E48 mov r7, r8 push {r7} sub sp, 0xC - ldr r7, _08124EBC @ =gUnknown_203AD30 + ldr r7, _08124EBC @ =gSpecialVar_ItemId ldrh r0, [r7] bl ItemId_GetPocket lsls r0, 24 @@ -12742,7 +12742,7 @@ _08124EB0: bl SetMainCallback2 b _08124EE6 .align 2, 0 -_08124EBC: .4byte gUnknown_203AD30 +_08124EBC: .4byte gSpecialVar_ItemId _08124EC0: .4byte gUnknown_203B0A0 _08124EC4: .4byte gPlayerParty _08124EC8: @@ -12804,7 +12804,7 @@ sub_8124EFC: @ 8124EFC adds r0, r5, 0 adds r1, r4, 0 bl RemoveMonPPBonus - ldr r7, _08124F90 @ =gUnknown_203AD30 + ldr r7, _08124F90 @ =gSpecialVar_ItemId ldrh r0, [r7] bl ItemIdToBattleMoveId adds r1, r0, 0 @@ -12837,7 +12837,7 @@ _08124F7C: .align 2, 0 _08124F88: .4byte gUnknown_203B0A0 _08124F8C: .4byte gPlayerParty -_08124F90: .4byte gUnknown_203AD30 +_08124F90: .4byte gSpecialVar_ItemId _08124F94: ldr r4, _08124FC0 @ =gUnknown_203B0A0 ldrb r0, [r4, 0x8] @@ -13242,7 +13242,7 @@ sub_81252D0: @ 81252D0 muls r1, r0 ldr r0, _08125304 @ =gPlayerParty adds r5, r1, r0 - ldr r0, _08125308 @ =gUnknown_203AD30 + ldr r0, _08125308 @ =gSpecialVar_ItemId ldrh r6, [r0] adds r0, r5, 0 adds r1, r6, 0 @@ -13255,7 +13255,7 @@ sub_81252D0: @ 81252D0 .align 2, 0 _08125300: .4byte gUnknown_203B0A0 _08125304: .4byte gPlayerParty -_08125308: .4byte gUnknown_203AD30 +_08125308: .4byte gSpecialVar_ItemId _0812530C: adds r0, r6, 0 bl IsHPRecoveryItem @@ -13351,7 +13351,7 @@ ItemUseCB_Medicine: @ 81253B0 muls r1, r0 ldr r0, _0812543C @ =gPlayerParty adds r5, r1, r0 - ldr r0, _08125440 @ =gUnknown_203AD30 + ldr r0, _08125440 @ =gSpecialVar_ItemId ldrh r6, [r0] adds r0, r5, 0 adds r1, r6, 0 @@ -13399,7 +13399,7 @@ _08125428: .align 2, 0 _08125438: .4byte gUnknown_203B0A0 _0812543C: .4byte gPlayerParty -_08125440: .4byte gUnknown_203AD30 +_08125440: .4byte gSpecialVar_ItemId _08125444: .4byte gUnknown_203B0C0 _08125448: .4byte gUnknown_84169DC _0812544C: @@ -13735,7 +13735,7 @@ sub_81256F8: @ 81256F8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r0, _08125710 @ =gUnknown_203AD30 + ldr r0, _08125710 @ =gSpecialVar_ItemId ldrh r0, [r0] cmp r0, 0xAF bne _0812571C @@ -13745,7 +13745,7 @@ sub_81256F8: @ 81256F8 adds r0, r1 b _08125726 .align 2, 0 -_08125710: .4byte gUnknown_203AD30 +_08125710: .4byte gSpecialVar_ItemId _08125714: .4byte gSaveBlock1Ptr _08125718: .4byte 0x00003108 _0812571C: @@ -13878,7 +13878,7 @@ sub_812580C: @ 812580C muls r0, r1 ldr r1, _08125864 @ =gPlayerParty adds r0, r1 - ldr r1, _08125868 @ =gUnknown_203AD30 + ldr r1, _08125868 @ =gSpecialVar_ItemId ldrh r1, [r1] ldrb r2, [r3, 0x9] ldrb r3, [r3, 0xE] @@ -13909,7 +13909,7 @@ sub_812580C: @ 812580C .align 2, 0 _08125860: .4byte gUnknown_203B0A0 _08125864: .4byte gPlayerParty -_08125868: .4byte gUnknown_203AD30 +_08125868: .4byte gSpecialVar_ItemId _0812586C: .4byte gUnknown_203B0C0 _08125870: .4byte gUnknown_84169DC _08125874: .4byte gTasks @@ -13947,7 +13947,7 @@ sub_8125898: @ 8125898 ldr r0, _08125934 @ =gPlayerParty adds r4, r0 ldrb r0, [r5, 0x9] - ldr r6, _08125938 @ =gUnknown_203AD30 + ldr r6, _08125938 @ =gSpecialVar_ItemId ldrh r1, [r6] ldrb r2, [r5, 0xE] bl ExecuteTableBasedItemEffect__ @@ -14001,7 +14001,7 @@ sub_8125898: @ 8125898 .align 2, 0 _08125930: .4byte gUnknown_203B0A0 _08125934: .4byte gPlayerParty -_08125938: .4byte gUnknown_203AD30 +_08125938: .4byte gSpecialVar_ItemId _0812593C: .4byte gUnknown_203B0C0 _08125940: .4byte 0x0000ffff _08125944: .4byte gStringVar1 @@ -14020,7 +14020,7 @@ sub_8125958: @ 8125958 lsrs r6, r0, 24 movs r4, 0 ldr r7, _08125990 @ =gUnknown_203B0AE - ldr r0, _08125994 @ =gUnknown_203AD30 + ldr r0, _08125994 @ =gSpecialVar_ItemId ldrh r5, [r0] movs r0, 0xE negs r0, r0 @@ -14041,7 +14041,7 @@ sub_8125958: @ 8125958 b _081259F6 .align 2, 0 _08125990: .4byte gUnknown_203B0AE -_08125994: .4byte gUnknown_203AD30 +_08125994: .4byte gSpecialVar_ItemId _08125998: .4byte gUnknown_203B0C0 _0812599C: .4byte gUnknown_84169DC _081259A0: @@ -14275,7 +14275,7 @@ sub_8125B40: @ 8125B40 movs r0, 0xE adds r0, r7 mov r8, r0 - ldr r0, _08125BD8 @ =gUnknown_203AD30 + ldr r0, _08125BD8 @ =gSpecialVar_ItemId ldrh r5, [r0] ldr r1, _08125BDC @ =gStringVar1 adds r0, r4, 0 @@ -14325,7 +14325,7 @@ sub_8125B40: @ 8125B40 .align 2, 0 _08125BD0: .4byte gUnknown_203B0A0 _08125BD4: .4byte gPlayerParty -_08125BD8: .4byte gUnknown_203AD30 +_08125BD8: .4byte gSpecialVar_ItemId _08125BDC: .4byte gStringVar1 _08125BE0: .4byte gStringVar2 _08125BE4: .4byte gMoveNames @@ -14391,7 +14391,7 @@ sub_8125C48: @ 8125C48 adds r5, r1, r0 adds r6, r2, 0 adds r6, 0xE - ldr r0, _08125CD4 @ =gUnknown_203AD30 + ldr r0, _08125CD4 @ =gSpecialVar_ItemId ldrh r4, [r0] movs r1, 0x2 ldrsh r0, [r6, r1] @@ -14441,7 +14441,7 @@ _08125C84: .align 2, 0 _08125CCC: .4byte gUnknown_203B0A0 _08125CD0: .4byte gPlayerParty -_08125CD4: .4byte gUnknown_203AD30 +_08125CD4: .4byte gSpecialVar_ItemId _08125CD8: .4byte gStringVar1 _08125CDC: .4byte gStringVar2 _08125CE0: .4byte gMoveNames @@ -14516,7 +14516,7 @@ _08125D6C: .4byte gUnknown_203B0A0 _08125D70: cmp r0, 0x2 bne _08125D78 - ldr r0, _08125D84 @ =gUnknown_20370D0 + ldr r0, _08125D84 @ =gSpecialVar_Result strh r2, [r0] _08125D78: adds r0, r5, 0 @@ -14526,7 +14526,7 @@ _08125D7E: pop {r0} bx r0 .align 2, 0 -_08125D84: .4byte gUnknown_20370D0 +_08125D84: .4byte gSpecialVar_Result thumb_func_end sub_8125D2C thumb_func_start sub_8125D88 @@ -14684,7 +14684,7 @@ sub_8125E84: @ 8125E84 lsls r2, 16 lsrs r2, 16 ldrb r0, [r4, 0x9] - ldr r1, _08125ED8 @ =gUnknown_203AD30 + ldr r1, _08125ED8 @ =gSpecialVar_ItemId ldrh r1, [r1] ldr r3, _08125EDC @ =sub_8124EFC bl sub_811C568 @@ -14696,7 +14696,7 @@ sub_8125E84: @ 8125E84 .align 2, 0 _08125ED0: .4byte gUnknown_203B0A0 _08125ED4: .4byte gPlayerParty -_08125ED8: .4byte gUnknown_203AD30 +_08125ED8: .4byte gSpecialVar_ItemId _08125EDC: .4byte sub_8124EFC _08125EE0: .4byte gUnknown_3005E98 _08125EE4: .4byte sub_8125F4C @@ -14794,7 +14794,7 @@ sub_8125F5C: @ 8125F5C adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 - ldr r0, _08125FEC @ =gUnknown_203AD30 + ldr r0, _08125FEC @ =gSpecialVar_ItemId ldrh r2, [r0] movs r0, 0x4 adds r1, r6, 0 @@ -14828,7 +14828,7 @@ sub_8125F5C: @ 8125F5C .align 2, 0 _08125FE4: .4byte gUnknown_203B0A0 _08125FE8: .4byte gPlayerParty -_08125FEC: .4byte gUnknown_203AD30 +_08125FEC: .4byte gSpecialVar_ItemId _08125FF0: .4byte gStringVar1 _08125FF4: .4byte gStringVar2 _08125FF8: .4byte gMoveNames @@ -15077,7 +15077,7 @@ _0812620C: .4byte sub_812628C _08126210: cmp r0, 0x2 bne _08126218 - ldr r0, _08126228 @ =gUnknown_20370D0 + ldr r0, _08126228 @ =gSpecialVar_Result strh r5, [r0] _08126218: ldr r0, _0812622C @ =gTasks @@ -15089,7 +15089,7 @@ _08126218: str r0, [r1] b _0812626A .align 2, 0 -_08126228: .4byte gUnknown_20370D0 +_08126228: .4byte gSpecialVar_Result _0812622C: .4byte gTasks _08126230: .4byte sub_81255BC _08126234: @@ -15164,7 +15164,7 @@ dp05_rare_candy: @ 81262AC muls r1, r0 ldr r0, _081262EC @ =gPlayerParty adds r4, r1, r0 - ldr r0, _081262F0 @ =gUnknown_203AD30 + ldr r0, _081262F0 @ =gSpecialVar_ItemId ldrh r5, [r0] adds r0, r4, 0 movs r1, 0x38 @@ -15182,7 +15182,7 @@ dp05_rare_candy: @ 81262AC .align 2, 0 _081262E8: .4byte gUnknown_203B0A0 _081262EC: .4byte gPlayerParty -_081262F0: .4byte gUnknown_203AD30 +_081262F0: .4byte gSpecialVar_ItemId _081262F4: movs r4, 0x1 _081262F6: @@ -15252,7 +15252,7 @@ sub_8126350: @ 8126350 adds r0, r4, 0 bl sub_811D130 ldrb r0, [r6, 0x9] - ldr r5, _0812641C @ =gUnknown_203AD30 + ldr r5, _0812641C @ =gSpecialVar_ItemId ldrh r1, [r5] movs r2, 0 bl ExecuteTableBasedItemEffect__ @@ -15316,7 +15316,7 @@ sub_8126350: @ 8126350 _08126410: .4byte gUnknown_203B0A0 _08126414: .4byte gPlayerParty _08126418: .4byte gUnknown_203B09C -_0812641C: .4byte gUnknown_203AD30 +_0812641C: .4byte gSpecialVar_ItemId _08126420: .4byte gUnknown_203B0C0 _08126424: .4byte 0x0000ffff _08126428: .4byte gStringVar1 @@ -15919,7 +15919,7 @@ sub_81268D4: @ 81268D4 lsrs r0, 16 mov r8, r0 ldrb r0, [r6, 0x9] - ldr r1, _08126938 @ =gUnknown_203AD30 + ldr r1, _08126938 @ =gSpecialVar_ItemId ldrh r1, [r1] movs r2, 0 bl ExecuteTableBasedItemEffect__ @@ -15938,7 +15938,7 @@ _08126920: .align 2, 0 _08126930: .4byte gUnknown_203B0A0 _08126934: .4byte gPlayerParty -_08126938: .4byte gUnknown_203AD30 +_08126938: .4byte gSpecialVar_ItemId _0812693C: .4byte gTasks _08126940: .4byte sub_8126A18 _08126944: @@ -16108,13 +16108,13 @@ _08126A94: beq _08126AB4 ldr r0, _08126AD8 @ =gUnknown_203B0D0 ldr r1, [r0] - ldr r0, _08126ADC @ =gUnknown_203AD30 + ldr r0, _08126ADC @ =gSpecialVar_ItemId ldrh r2, [r0] ldr r3, _08126AE0 @ =0x0000ffff movs r0, 0x4 bl sub_80A2294 _08126AB4: - ldr r0, _08126ADC @ =gUnknown_203AD30 + ldr r0, _08126ADC @ =gSpecialVar_ItemId ldrh r0, [r0] movs r1, 0x1 bl sub_809A1D8 @@ -16133,7 +16133,7 @@ _08126ABE: .align 2, 0 _08126AD4: .4byte gUnknown_203B0C0 _08126AD8: .4byte gUnknown_203B0D0 -_08126ADC: .4byte gUnknown_203AD30 +_08126ADC: .4byte gSpecialVar_ItemId _08126AE0: .4byte 0x0000ffff _08126AE4: .4byte gTasks _08126AE8: .4byte sub_81255BC @@ -16206,7 +16206,7 @@ sub_8126B60: @ 8126B60 muls r0, r1 ldr r1, _08126BB4 @ =gPlayerParty adds r0, r1 - ldr r1, _08126BB8 @ =gUnknown_203AD30 + ldr r1, _08126BB8 @ =gSpecialVar_ItemId ldrh r1, [r1] ldrb r2, [r2, 0x9] movs r3, 0 @@ -16232,7 +16232,7 @@ sub_8126B60: @ 8126B60 .align 2, 0 _08126BB0: .4byte gUnknown_203B0A0 _08126BB4: .4byte gPlayerParty -_08126BB8: .4byte gUnknown_203AD30 +_08126BB8: .4byte gSpecialVar_ItemId _08126BBC: .4byte gUnknown_203B0C0 _08126BC0: .4byte gUnknown_84169DC _08126BC4: .4byte gTasks @@ -16253,7 +16253,7 @@ sub_8126BD4: @ 8126BD4 ldr r0, [r4] str r0, [r1] ldrb r0, [r4, 0x9] - ldr r5, _08126C18 @ =gUnknown_203AD30 + ldr r5, _08126C18 @ =gSpecialVar_ItemId ldrh r1, [r5] movs r2, 0 bl ExecuteTableBasedItemEffect__ @@ -16276,7 +16276,7 @@ sub_8126BD4: @ 8126BD4 .align 2, 0 _08126C10: .4byte gUnknown_300537C _08126C14: .4byte gUnknown_203B0A0 -_08126C18: .4byte gUnknown_203AD30 +_08126C18: .4byte gSpecialVar_ItemId _08126C1C: .4byte gPlayerParty _08126C20: .4byte 0x0000ffff thumb_func_end sub_8126BD4 @@ -16294,7 +16294,7 @@ sub_8126C24: @ 8126C24 muls r0, r1 ldr r1, _08126C58 @ =gPlayerParty adds r0, r1 - ldr r1, _08126C5C @ =gUnknown_203AD30 + ldr r1, _08126C5C @ =gSpecialVar_ItemId ldrh r2, [r1] movs r1, 0x2 bl GetEvolutionTargetSpecies @@ -16307,7 +16307,7 @@ sub_8126C24: @ 8126C24 .align 2, 0 _08126C54: .4byte gUnknown_203B0A0 _08126C58: .4byte gPlayerParty -_08126C5C: .4byte gUnknown_203AD30 +_08126C5C: .4byte gSpecialVar_ItemId _08126C60: movs r0, 0x1 _08126C62: @@ -16653,7 +16653,7 @@ _08126ED8: .4byte sub_80568A8 sub_8126EDC: @ 8126EDC push {lr} sub sp, 0xC - ldr r0, _08126EF8 @ =gUnknown_203AD30 + ldr r0, _08126EF8 @ =gSpecialVar_ItemId ldrh r0, [r0] bl GetPocketByItemId lsls r0, 24 @@ -16665,7 +16665,7 @@ sub_8126EDC: @ 8126EDC ldr r1, _08126EFC @ =sub_8124D90 b _08126F0A .align 2, 0 -_08126EF8: .4byte gUnknown_203AD30 +_08126EF8: .4byte gSpecialVar_ItemId _08126EFC: .4byte sub_8124D90 _08126F00: ldr r1, _08126F04 @ =sub_8124DA0 @@ -16686,7 +16686,7 @@ _08126F0A: movs r3, 0 bl sub_811EA44 ldr r1, _08126F38 @ =gUnknown_203B0A0 - ldr r0, _08126F3C @ =gUnknown_203AD30 + ldr r0, _08126F3C @ =gSpecialVar_ItemId ldrh r0, [r0] strh r0, [r1, 0xC] add sp, 0xC @@ -16696,7 +16696,7 @@ _08126F0A: _08126F30: .4byte sub_8124DB0 _08126F34: .4byte sub_811FB28 _08126F38: .4byte gUnknown_203B0A0 -_08126F3C: .4byte gUnknown_203AD30 +_08126F3C: .4byte gSpecialVar_ItemId thumb_func_end sub_8126EDC thumb_func_start sub_8126F40 @@ -16958,7 +16958,7 @@ sub_812713C: @ 812713C bl GetMonData lsls r0, 16 lsrs r7, r0, 16 - ldr r0, _08127194 @ =gUnknown_20370D0 + ldr r0, _08127194 @ =gSpecialVar_Result ldrh r0, [r0] cmp r0, 0 bne _0812719C @@ -16980,7 +16980,7 @@ sub_812713C: @ 812713C .align 2, 0 _0812718C: .4byte gUnknown_203B0A0 _08127190: .4byte gPlayerParty -_08127194: .4byte gUnknown_20370D0 +_08127194: .4byte gSpecialVar_Result _08127198: .4byte gUnknown_203B0D8 _0812719C: ldrb r0, [r6, 0x8] @@ -17869,7 +17869,7 @@ _08127850: movs r3, 0 bl sub_811EA44 ldr r1, _08127880 @ =gUnknown_203B0A0 - ldr r0, _08127884 @ =gUnknown_20370C6 + ldr r0, _08127884 @ =gSpecialVar_0x8007 ldrh r0, [r0] strb r0, [r1, 0x9] _08127870: @@ -17880,7 +17880,7 @@ _08127870: _08127878: .4byte sub_8126DC8 _0812787C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music _08127880: .4byte gUnknown_203B0A0 -_08127884: .4byte gUnknown_20370C6 +_08127884: .4byte gSpecialVar_0x8007 thumb_func_end sub_812781C thumb_func_start sub_8127888 @@ -18088,7 +18088,7 @@ _08127A24: .4byte gBattleTypeFlags _08127A28: .4byte sub_8120C3C _08127A2C: .4byte sub_8107ECC _08127A30: - ldr r0, _08127A74 @ =gUnknown_203AD30 + ldr r0, _08127A74 @ =gSpecialVar_ItemId ldrh r0, [r0] bl GetPocketByItemId lsls r0, 24 @@ -18119,7 +18119,7 @@ _08127A62: pop {r0} bx r0 .align 2, 0 -_08127A74: .4byte gUnknown_203AD30 +_08127A74: .4byte gSpecialVar_ItemId _08127A78: .4byte sub_8107ECC _08127A7C: .4byte sub_8124DB0 _08127A80: .4byte sub_811FB28 diff --git a/asm/pokedex.s b/asm/pokedex.s index 6ec2ca7be..279270fbb 100644 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -57,8 +57,8 @@ _08088E6C: _08088E70: .4byte gUnknown_844E850 thumb_func_end sub_8088E38 - thumb_func_start sub_8088E74 -sub_8088E74: @ 8088E74 + thumb_func_start GetSetPokedexFlag +GetSetPokedexFlag: @ 8088E74 push {lr} lsls r0, 16 lsrs r0, 16 @@ -70,7 +70,7 @@ sub_8088E74: @ 8088E74 asrs r0, 24 pop {r1} bx r1 - thumb_func_end sub_8088E74 + thumb_func_end GetSetPokedexFlag thumb_func_start pokedex_count pokedex_count: @ 8088E8C @@ -101,7 +101,7 @@ _08088EB2: lsrs r0, 16 movs r1, 0x1 _08088EBA: - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _08088ECA @@ -145,7 +145,7 @@ _08088EFC: lsrs r0, 16 movs r1, 0x1 _08088F04: - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _08088F14 @@ -176,7 +176,7 @@ _08088F28: lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 bne _08088F48 @@ -203,7 +203,7 @@ _08088F5C: lsrs r4, r0, 16 adds r0, r4, 0 movs r1, 0x1 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 bne _08088F74 @@ -230,7 +230,7 @@ _08088F88: lsrs r4, r0, 16 adds r0, r4, 0 movs r1, 0x1 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _08088FD6 @@ -244,7 +244,7 @@ _08088FA4: lsrs r4, r0, 16 adds r0, r4, 0 movs r1, 0x1 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _08088FD6 @@ -259,7 +259,7 @@ _08088FC2: lsrs r4, r0, 16 adds r0, r4, 0 movs r1, 0x1 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 bne _08088FE0 diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s index fab76b56f..0d4ee1bcb 100644 --- a/asm/pokemon_3.s +++ b/asm/pokemon_3.s @@ -424,11 +424,11 @@ _08044834: .4byte gUnknown_825E032 sub_8044838: @ 8044838 push {r4-r7,lr} sub sp, 0x14 - ldr r0, _08044888 @ =gUnknown_20370C0 + ldr r0, _08044888 @ =gSpecialVar_0x8004 ldrh r5, [r0] ldr r0, _0804488C @ =gSpecialVar_0x8005 ldrh r4, [r0] - ldr r0, _08044890 @ =gUnknown_20370C4 + ldr r0, _08044890 @ =gSpecialVar_0x8006 ldrh r6, [r0] bl ZeroEnemyPartyMons ldr r7, _08044894 @ =gEnemyParty @@ -461,9 +461,9 @@ _08044880: pop {r0} bx r0 .align 2, 0 -_08044888: .4byte gUnknown_20370C0 +_08044888: .4byte gSpecialVar_0x8004 _0804488C: .4byte gSpecialVar_0x8005 -_08044890: .4byte gUnknown_20370C4 +_08044890: .4byte gSpecialVar_0x8006 _08044894: .4byte gEnemyParty thumb_func_end sub_8044838 @@ -482,13 +482,13 @@ sub_8044898: @ 8044898 orrs r1, r0 lsrs r1, 31 adds r0, r4, 0 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 bne _080448EE adds r0, r4, 0 adds r1, r5, 0 - bl sub_8088E74 + bl GetSetPokedexFlag adds r0, r4, 0 bl NationalPokedexNumToSpecies lsls r0, 16 diff --git a/asm/pokemon_size_record.s b/asm/pokemon_size_record.s index 56a5d54f5..ac1f2a017 100644 --- a/asm/pokemon_size_record.s +++ b/asm/pokemon_size_record.s @@ -211,14 +211,14 @@ sub_80A082C: @ 80A082C adds r7, r1, 0 lsls r0, 16 lsrs r6, r0, 16 - ldr r1, _080A0844 @ =gUnknown_20370D0 + ldr r1, _080A0844 @ =gSpecialVar_Result ldrh r0, [r1] cmp r0, 0x5 bls _080A0848 movs r0, 0 b _080A08C4 .align 2, 0 -_080A0844: .4byte gUnknown_20370D0 +_080A0844: .4byte gSpecialVar_Result _080A0848: ldrh r1, [r1] movs r0, 0x64 @@ -343,7 +343,7 @@ sub_80A0930: @ 80A0930 ldr r0, _080A0950 @ =0x0000403d bl GetVarPointer adds r1, r0, 0 - ldr r4, _080A0954 @ =gUnknown_20370D0 + ldr r4, _080A0954 @ =gSpecialVar_Result movs r0, 0xD6 bl sub_80A082C lsls r0, 24 @@ -354,7 +354,7 @@ sub_80A0930: @ 80A0930 bx r0 .align 2, 0 _080A0950: .4byte 0x0000403d -_080A0954: .4byte gUnknown_20370D0 +_080A0954: .4byte gSpecialVar_Result thumb_func_end sub_80A0930 thumb_func_start sub_80A0958 @@ -389,7 +389,7 @@ sub_80A0984: @ 80A0984 ldr r0, _080A09A4 @ =0x00004040 bl GetVarPointer adds r1, r0, 0 - ldr r4, _080A09A8 @ =gUnknown_20370D0 + ldr r4, _080A09A8 @ =gSpecialVar_Result movs r0, 0x81 bl sub_80A082C lsls r0, 24 @@ -400,7 +400,7 @@ sub_80A0984: @ 80A0984 bx r0 .align 2, 0 _080A09A4: .4byte 0x00004040 -_080A09A8: .4byte gUnknown_20370D0 +_080A09A8: .4byte gSpecialVar_Result thumb_func_end sub_80A0984 thumb_func_start GiveGiftRibbonToParty diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 8cb95db46..37f9e9762 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1139,7 +1139,7 @@ _0808C1DC: .4byte gPlayerParty thumb_func_start CountPartyAliveNonEggMons_IgnoreVar0x8004Slot CountPartyAliveNonEggMons_IgnoreVar0x8004Slot: @ 808C1E0 push {lr} - ldr r0, _0808C1F4 @ =gUnknown_20370C0 + ldr r0, _0808C1F4 @ =gSpecialVar_0x8004 ldrb r0, [r0] bl CountPartyAliveNonEggMonsExcept lsls r0, 24 @@ -1147,7 +1147,7 @@ CountPartyAliveNonEggMons_IgnoreVar0x8004Slot: @ 808C1E0 pop {r1} bx r1 .align 2, 0 -_0808C1F4: .4byte gUnknown_20370C0 +_0808C1F4: .4byte gSpecialVar_0x8004 thumb_func_end CountPartyAliveNonEggMons_IgnoreVar0x8004Slot thumb_func_start CountPartyMons @@ -6609,7 +6609,7 @@ _0808EF08: .4byte sub_808CE60 sub_808EF0C: @ 808EF0C push {lr} sub sp, 0x4 - ldr r0, _0808EF40 @ =gUnknown_203AD30 + ldr r0, _0808EF40 @ =gSpecialVar_ItemId ldrh r1, [r0] mov r0, sp strh r1, [r0] @@ -6631,7 +6631,7 @@ sub_808EF0C: @ 808EF0C bl SetMonData b _0808EF56 .align 2, 0 -_0808EF40: .4byte gUnknown_203AD30 +_0808EF40: .4byte gSpecialVar_ItemId _0808EF44: .4byte gUnknown_20397B4 _0808EF48: .4byte gPlayerParty _0808EF4C: diff --git a/asm/prof_pc.s b/asm/prof_pc.s index ae8c68ded..9c9dfa79c 100644 --- a/asm/prof_pc.s +++ b/asm/prof_pc.s @@ -8,7 +8,7 @@ thumb_func_start sub_80CA3D8 sub_80CA3D8: @ 80CA3D8 push {lr} - ldr r0, _080CA3F4 @ =gUnknown_20370C0 + ldr r0, _080CA3F4 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0 bne _080CA3FC @@ -20,7 +20,7 @@ sub_80CA3D8: @ 80CA3D8 bl sub_8088EDC b _080CA40C .align 2, 0 -_080CA3F4: .4byte gUnknown_20370C0 +_080CA3F4: .4byte gSpecialVar_0x8004 _080CA3F8: .4byte gSpecialVar_0x8005 _080CA3FC: movs r0, 0 @@ -30,7 +30,7 @@ _080CA3FC: movs r0, 0x1 bl pokedex_count _080CA40C: - ldr r1, _080CA420 @ =gUnknown_20370C4 + ldr r1, _080CA420 @ =gSpecialVar_0x8006 strh r0, [r1] bl sub_806E25C lsls r0, 16 @@ -39,7 +39,7 @@ _080CA40C: bx r1 .align 2, 0 _080CA41C: .4byte gSpecialVar_0x8005 -_080CA420: .4byte gUnknown_20370C4 +_080CA420: .4byte gSpecialVar_0x8006 thumb_func_end sub_80CA3D8 thumb_func_start sub_80CA424 @@ -47,7 +47,7 @@ sub_80CA424: @ 80CA424 push {lr} lsls r0, 16 lsrs r2, r0, 16 - ldr r1, _080CA440 @ =gUnknown_20370D0 + ldr r1, _080CA440 @ =gSpecialVar_Result movs r0, 0 strh r0, [r1] cmp r2, 0x9 @@ -59,7 +59,7 @@ _080CA436: ldr r0, _080CA444 @ =gUnknown_81A6D6D b _080CA51A .align 2, 0 -_080CA440: .4byte gUnknown_20370D0 +_080CA440: .4byte gSpecialVar_Result _080CA444: .4byte gUnknown_81A6D6D _080CA448: cmp r2, 0x1D @@ -155,7 +155,7 @@ _080CA4D8: lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8088E74 + bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _080CA500 @@ -165,10 +165,10 @@ _080CA4F6: .align 2, 0 _080CA4FC: .4byte gUnknown_81A7137 _080CA500: - ldr r1, _080CA504 @ =gUnknown_20370D0 + ldr r1, _080CA504 @ =gSpecialVar_Result b _080CA514 .align 2, 0 -_080CA504: .4byte gUnknown_20370D0 +_080CA504: .4byte gSpecialVar_Result _080CA508: cmp r2, 0x97 beq _080CA514 @@ -191,14 +191,14 @@ _080CA520: .4byte gUnknown_81A7175 thumb_func_start sub_80CA524 sub_80CA524: @ 80CA524 push {lr} - ldr r0, _080CA538 @ =gUnknown_20370C0 + ldr r0, _080CA538 @ =gSpecialVar_0x8004 ldrh r0, [r0] bl sub_80CA424 bl ShowFieldMessage pop {r0} bx r0 .align 2, 0 -_080CA538: .4byte gUnknown_20370C0 +_080CA538: .4byte gSpecialVar_0x8004 thumb_func_end sub_80CA524 .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom6.s b/asm/rom6.s index 6d4ef8bc2..06c2d30a2 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -31,7 +31,7 @@ npc_before_player_of_type: @ 80C97A8 ldrb r0, [r2, 0x5] cmp r0, r5 bne _080C97F4 - ldr r1, _080C97F0 @ =gUnknown_20370D2 + ldr r1, _080C97F0 @ =gSpecialVar_LastTalked ldrb r0, [r2, 0x8] strh r0, [r1] movs r0, 0x1 @@ -39,7 +39,7 @@ npc_before_player_of_type: @ 80C97A8 .align 2, 0 _080C97E8: .4byte gUnknown_2039A04 _080C97EC: .4byte gMapObjects -_080C97F0: .4byte gUnknown_20370D2 +_080C97F0: .4byte gSpecialVar_LastTalked _080C97F4: movs r0, 0 _080C97F6: diff --git a/asm/scrcmd.s b/asm/scrcmd.s index b4f3678de..e8ffcf3ab 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -46,17 +46,17 @@ sub_8069EFC: @ 8069EFC bl ScriptReadHalfword lsls r0, 16 lsrs r0, 14 - ldr r1, _08069F18 @ =gUnknown_815FD60 + ldr r1, _08069F18 @ =gSpecials adds r1, r0, r1 - ldr r0, _08069F1C @ =gUnknown_8160450 + ldr r0, _08069F1C @ =gStdScripts cmp r1, r0 bcs _08069F20 ldr r0, [r1] bl _call_via_r0 b _08069F2C .align 2, 0 -_08069F18: .4byte gUnknown_815FD60 -_08069F1C: .4byte gUnknown_8160450 +_08069F18: .4byte gSpecials +_08069F1C: .4byte gStdScripts _08069F20: ldr r0, _08069F34 @ =gUnknown_83A725C "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c" ldr r2, _08069F38 @ =gUnknown_83A7290 "0" @@ -85,9 +85,9 @@ sub_8069F3C: @ 8069F3C bl ScriptReadHalfword lsls r0, 16 lsrs r0, 14 - ldr r1, _08069F6C @ =gUnknown_815FD60 + ldr r1, _08069F6C @ =gSpecials adds r1, r0, r1 - ldr r0, _08069F70 @ =gUnknown_8160450 + ldr r0, _08069F70 @ =gStdScripts cmp r1, r0 bcs _08069F74 ldr r0, [r1] @@ -95,8 +95,8 @@ sub_8069F3C: @ 8069F3C strh r0, [r5] b _08069F80 .align 2, 0 -_08069F6C: .4byte gUnknown_815FD60 -_08069F70: .4byte gUnknown_8160450 +_08069F6C: .4byte gSpecials +_08069F70: .4byte gStdScripts _08069F74: ldr r0, _08069F88 @ =gUnknown_83A725C "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scrcmd.c" ldr r1, _08069F8C @ =0x00000107 @@ -368,7 +368,7 @@ ScrCmd_gotostd: @ 806A150 adds r0, 0x1 str r0, [r2, 0x8] lsls r1, 2 - ldr r0, _0806A178 @ =gUnknown_8160450 + ldr r0, _0806A178 @ =gStdScripts adds r1, r0 ldr r0, _0806A17C @ =gUnknown_8160478 cmp r1, r0 @@ -381,7 +381,7 @@ _0806A170: pop {r1} bx r1 .align 2, 0 -_0806A178: .4byte gUnknown_8160450 +_0806A178: .4byte gStdScripts _0806A17C: .4byte gUnknown_8160478 thumb_func_end ScrCmd_gotostd @@ -394,7 +394,7 @@ ScrCmd_callstd: @ 806A180 adds r0, 0x1 str r0, [r2, 0x8] lsls r1, 2 - ldr r0, _0806A1A8 @ =gUnknown_8160450 + ldr r0, _0806A1A8 @ =gStdScripts adds r1, r0 ldr r0, _0806A1AC @ =gUnknown_8160478 cmp r1, r0 @@ -407,7 +407,7 @@ _0806A1A0: pop {r1} bx r1 .align 2, 0 -_0806A1A8: .4byte gUnknown_8160450 +_0806A1A8: .4byte gStdScripts _0806A1AC: .4byte gUnknown_8160478 thumb_func_end ScrCmd_callstd @@ -432,7 +432,7 @@ ScrCmd_gotostd_if: @ 806A1B0 cmp r0, 0x1 bne _0806A1E8 lsls r0, r4, 2 - ldr r1, _0806A1F4 @ =gUnknown_8160450 + ldr r1, _0806A1F4 @ =gStdScripts adds r1, r0, r1 ldr r0, _0806A1F8 @ =gUnknown_8160478 cmp r1, r0 @@ -447,7 +447,7 @@ _0806A1E8: bx r1 .align 2, 0 _0806A1F0: .4byte gUnknown_83A7248 -_0806A1F4: .4byte gUnknown_8160450 +_0806A1F4: .4byte gStdScripts _0806A1F8: .4byte gUnknown_8160478 thumb_func_end ScrCmd_gotostd_if @@ -472,7 +472,7 @@ ScrCmd_callstd_if: @ 806A1FC cmp r0, 0x1 bne _0806A234 lsls r0, r4, 2 - ldr r1, _0806A240 @ =gUnknown_8160450 + ldr r1, _0806A240 @ =gStdScripts adds r1, r0, r1 ldr r0, _0806A244 @ =gUnknown_8160478 cmp r1, r0 @@ -487,7 +487,7 @@ _0806A234: bx r1 .align 2, 0 _0806A23C: .4byte gUnknown_83A7248 -_0806A240: .4byte gUnknown_8160450 +_0806A240: .4byte gStdScripts _0806A244: .4byte gUnknown_8160478 thumb_func_end ScrCmd_callstd_if @@ -525,7 +525,7 @@ ScrCmd_setmysteryeventstatus: @ 806A274 adds r1, 0x1 str r1, [r0, 0x8] adds r0, r2, 0 - bl sub_80DA8E8 + bl SetMysteryEventScriptStatus movs r0, 0 pop {r1} bx r1 @@ -1003,7 +1003,7 @@ ScrCmd_random: @ 806A5DC adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 - ldr r5, _0806A60C @ =gUnknown_20370D0 + ldr r5, _0806A60C @ =gSpecialVar_Result bl Random lsls r0, 16 lsrs r0, 16 @@ -1015,7 +1015,7 @@ ScrCmd_random: @ 806A5DC pop {r1} bx r1 .align 2, 0 -_0806A60C: .4byte gUnknown_20370D0 +_0806A60C: .4byte gSpecialVar_Result thumb_func_end ScrCmd_random thumb_func_start sub_806A610 @@ -1035,7 +1035,7 @@ sub_806A610: @ 806A610 lsrs r0, 16 bl VarGet adds r1, r0, 0 - ldr r5, _0806A658 @ =gUnknown_20370D0 + ldr r5, _0806A658 @ =gSpecialVar_Result lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 @@ -1050,7 +1050,7 @@ sub_806A610: @ 806A610 pop {r1} bx r1 .align 2, 0 -_0806A658: .4byte gUnknown_20370D0 +_0806A658: .4byte gSpecialVar_Result thumb_func_end sub_806A610 thumb_func_start ScrCmd_takeitem @@ -1070,7 +1070,7 @@ ScrCmd_takeitem: @ 806A65C lsrs r0, 16 bl VarGet adds r1, r0, 0 - ldr r5, _0806A69C @ =gUnknown_20370D0 + ldr r5, _0806A69C @ =gSpecialVar_Result lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 @@ -1083,7 +1083,7 @@ ScrCmd_takeitem: @ 806A65C pop {r1} bx r1 .align 2, 0 -_0806A69C: .4byte gUnknown_20370D0 +_0806A69C: .4byte gSpecialVar_Result thumb_func_end ScrCmd_takeitem thumb_func_start sub_806A6A0 @@ -1103,7 +1103,7 @@ sub_806A6A0: @ 806A6A0 lsrs r0, 16 bl VarGet adds r1, r0, 0 - ldr r5, _0806A6E0 @ =gUnknown_20370D0 + ldr r5, _0806A6E0 @ =gSpecialVar_Result lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 @@ -1116,7 +1116,7 @@ sub_806A6A0: @ 806A6A0 pop {r1} bx r1 .align 2, 0 -_0806A6E0: .4byte gUnknown_20370D0 +_0806A6E0: .4byte gSpecialVar_Result thumb_func_end sub_806A6A0 thumb_func_start sub_806A6E4 @@ -1136,7 +1136,7 @@ sub_806A6E4: @ 806A6E4 lsrs r0, 16 bl VarGet adds r1, r0, 0 - ldr r5, _0806A724 @ =gUnknown_20370D0 + ldr r5, _0806A724 @ =gSpecialVar_Result lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 @@ -1149,7 +1149,7 @@ sub_806A6E4: @ 806A6E4 pop {r1} bx r1 .align 2, 0 -_0806A724: .4byte gUnknown_20370D0 +_0806A724: .4byte gSpecialVar_Result thumb_func_end sub_806A6E4 thumb_func_start ScrCmd_checkitemtype @@ -1161,7 +1161,7 @@ ScrCmd_checkitemtype: @ 806A728 bl VarGet lsls r0, 16 lsrs r0, 16 - ldr r4, _0806A750 @ =gUnknown_20370D0 + ldr r4, _0806A750 @ =gSpecialVar_Result bl GetPocketByItemId lsls r0, 24 lsrs r0, 24 @@ -1171,7 +1171,7 @@ ScrCmd_checkitemtype: @ 806A728 pop {r1} bx r1 .align 2, 0 -_0806A750: .4byte gUnknown_20370D0 +_0806A750: .4byte gSpecialVar_Result thumb_func_end ScrCmd_checkitemtype thumb_func_start ScrCmd_givepcitem @@ -1193,7 +1193,7 @@ ScrCmd_givepcitem: @ 806A754 adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 - ldr r5, _0806A794 @ =gUnknown_20370D0 + ldr r5, _0806A794 @ =gSpecialVar_Result adds r0, r4, 0 bl sub_809A3C8 lsls r0, 24 @@ -1204,7 +1204,7 @@ ScrCmd_givepcitem: @ 806A754 pop {r1} bx r1 .align 2, 0 -_0806A794: .4byte gUnknown_20370D0 +_0806A794: .4byte gSpecialVar_Result thumb_func_end ScrCmd_givepcitem thumb_func_start ScrCmd_checkpcitem @@ -1226,7 +1226,7 @@ ScrCmd_checkpcitem: @ 806A798 adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 - ldr r5, _0806A7D8 @ =gUnknown_20370D0 + ldr r5, _0806A7D8 @ =gSpecialVar_Result adds r0, r4, 0 bl sub_809A374 lsls r0, 24 @@ -1237,7 +1237,7 @@ ScrCmd_checkpcitem: @ 806A798 pop {r1} bx r1 .align 2, 0 -_0806A7D8: .4byte gUnknown_20370D0 +_0806A7D8: .4byte gSpecialVar_Result thumb_func_end ScrCmd_checkpcitem thumb_func_start sub_806A7DC @@ -1540,19 +1540,19 @@ sub_806A9D8: @ 806A9D8 thumb_func_start sub_806A9DC sub_806A9DC: @ 806A9DC - ldr r0, _0806A9F0 @ =gUnknown_20370B8 + ldr r0, _0806A9F0 @ =gSpecialVar_0x8000 movs r1, 0 strh r1, [r0] - ldr r0, _0806A9F4 @ =gUnknown_20370BA + ldr r0, _0806A9F4 @ =gSpecialVar_0x8001 strh r1, [r0] - ldr r0, _0806A9F8 @ =gUnknown_20370BC + ldr r0, _0806A9F8 @ =gSpecialVar_0x8002 strh r1, [r0] movs r0, 0 bx lr .align 2, 0 -_0806A9F0: .4byte gUnknown_20370B8 -_0806A9F4: .4byte gUnknown_20370BA -_0806A9F8: .4byte gUnknown_20370BC +_0806A9F0: .4byte gSpecialVar_0x8000 +_0806A9F4: .4byte gSpecialVar_0x8001 +_0806A9F8: .4byte gSpecialVar_0x8002 thumb_func_end sub_806A9DC thumb_func_start ScrCmd_setweather @@ -2344,7 +2344,7 @@ _0806B048: .4byte gSaveBlock1Ptr thumb_func_start ScrCmd_getpartysize ScrCmd_getpartysize: @ 806B04C push {r4,lr} - ldr r4, _0806B064 @ =gUnknown_20370D0 + ldr r4, _0806B064 @ =gSpecialVar_Result bl CalculatePlayerPartyCount lsls r0, 24 lsrs r0, 24 @@ -2354,7 +2354,7 @@ ScrCmd_getpartysize: @ 806B04C pop {r1} bx r1 .align 2, 0 -_0806B064: .4byte gUnknown_20370D0 +_0806B064: .4byte gSpecialVar_Result thumb_func_end ScrCmd_getpartysize thumb_func_start ScrCmd_playse @@ -3569,7 +3569,7 @@ sub_806B96C: @ 806B96C ands r0, r1 cmp r0, 0 beq _0806B990 - ldr r0, _0806B98C @ =gUnknown_20370D4 + ldr r0, _0806B98C @ =gSpecialVar_Facing ldrh r0, [r0] cmp r0, 0x2 beq _0806B990 @@ -3577,49 +3577,49 @@ sub_806B96C: @ 806B96C b _0806BA36 .align 2, 0 _0806B988: .4byte gMain -_0806B98C: .4byte gUnknown_20370D4 +_0806B98C: .4byte gSpecialVar_Facing _0806B990: ldrh r1, [r2, 0x2C] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0806B9AC - ldr r0, _0806B9A8 @ =gUnknown_20370D4 + ldr r0, _0806B9A8 @ =gSpecialVar_Facing ldrh r0, [r0] cmp r0, 0x1 beq _0806B9AC movs r0, 0x2 b _0806BA36 .align 2, 0 -_0806B9A8: .4byte gUnknown_20370D4 +_0806B9A8: .4byte gSpecialVar_Facing _0806B9AC: ldrh r1, [r2, 0x2C] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0806B9C8 - ldr r0, _0806B9C4 @ =gUnknown_20370D4 + ldr r0, _0806B9C4 @ =gSpecialVar_Facing ldrh r0, [r0] cmp r0, 0x3 beq _0806B9C8 movs r0, 0x3 b _0806BA36 .align 2, 0 -_0806B9C4: .4byte gUnknown_20370D4 +_0806B9C4: .4byte gSpecialVar_Facing _0806B9C8: ldrh r1, [r2, 0x2C] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0806B9E4 - ldr r0, _0806B9E0 @ =gUnknown_20370D4 + ldr r0, _0806B9E0 @ =gSpecialVar_Facing ldrh r0, [r0] cmp r0, 0x4 beq _0806B9E4 movs r0, 0x4 b _0806BA36 .align 2, 0 -_0806B9E0: .4byte gUnknown_20370D4 +_0806B9E0: .4byte gSpecialVar_Facing _0806B9E4: ldrh r1, [r2, 0x2E] movs r0, 0x80 @@ -3974,7 +3974,7 @@ sub_806BC40: @ 806BC40 bne _0806BC50 ldr r1, [r4, 0x64] _0806BC50: - ldr r4, _0806BC68 @ =gUnknown_20370C0 + ldr r4, _0806BC68 @ =gSpecialVar_0x8004 movs r2, 0x1 negs r2, r2 movs r0, 0x6 @@ -3985,7 +3985,7 @@ _0806BC50: pop {r1} bx r1 .align 2, 0 -_0806BC68: .4byte gUnknown_20370C0 +_0806BC68: .4byte gSpecialVar_0x8004 thumb_func_end sub_806BC40 thumb_func_start ScrCmd_vmessage @@ -4453,7 +4453,7 @@ ScrCmd_givemon: @ 806BFD0 ldrb r2, [r1] adds r1, 0x1 str r1, [r4, 0x8] - ldr r4, _0806C04C @ =gUnknown_20370D0 + ldr r4, _0806C04C @ =gSpecialVar_Result str r0, [sp] str r2, [sp, 0x4] adds r0, r6, 0 @@ -4473,7 +4473,7 @@ ScrCmd_givemon: @ 806BFD0 pop {r1} bx r1 .align 2, 0 -_0806C04C: .4byte gUnknown_20370D0 +_0806C04C: .4byte gSpecialVar_Result thumb_func_end ScrCmd_givemon thumb_func_start ScrCmd_giveegg @@ -4485,7 +4485,7 @@ ScrCmd_giveegg: @ 806C050 bl VarGet lsls r0, 16 lsrs r0, 16 - ldr r4, _0806C078 @ =gUnknown_20370D0 + ldr r4, _0806C078 @ =gSpecialVar_Result bl sub_80A01AC lsls r0, 24 lsrs r0, 24 @@ -4495,7 +4495,7 @@ ScrCmd_giveegg: @ 806C050 pop {r1} bx r1 .align 2, 0 -_0806C078: .4byte gUnknown_20370D0 +_0806C078: .4byte gSpecialVar_Result thumb_func_end ScrCmd_giveegg thumb_func_start ScrCmd_setmonmove @@ -4527,13 +4527,13 @@ ScrCmd_checkpartymove: @ 806C0A8 bl ScriptReadHalfword lsls r0, 16 lsrs r7, r0, 16 - ldr r1, _0806C0BC @ =gUnknown_20370D0 + ldr r1, _0806C0BC @ =gSpecialVar_Result movs r0, 0x6 strh r0, [r1] movs r6, 0 b _0806C0F6 .align 2, 0 -_0806C0BC: .4byte gUnknown_20370D0 +_0806C0BC: .4byte gSpecialVar_Result _0806C0C0: adds r0, r4, 0 movs r1, 0x2D @@ -4547,14 +4547,14 @@ _0806C0C0: lsrs r0, 24 cmp r0, 0x1 bne _0806C0F0 - ldr r0, _0806C0E8 @ =gUnknown_20370D0 + ldr r0, _0806C0E8 @ =gSpecialVar_Result strh r6, [r0] - ldr r0, _0806C0EC @ =gUnknown_20370C0 + ldr r0, _0806C0EC @ =gSpecialVar_0x8004 strh r5, [r0] b _0806C116 .align 2, 0 -_0806C0E8: .4byte gUnknown_20370D0 -_0806C0EC: .4byte gUnknown_20370C0 +_0806C0E8: .4byte gSpecialVar_Result +_0806C0EC: .4byte gSpecialVar_0x8004 _0806C0F0: adds r0, r6, 0x1 lsls r0, 24 @@ -4652,7 +4652,7 @@ ScrCmd_checkmoney: @ 806C18C str r0, [r4, 0x8] cmp r1, 0 bne _0806C1BA - ldr r4, _0806C1C4 @ =gUnknown_20370D0 + ldr r4, _0806C1C4 @ =gSpecialVar_Result ldr r0, _0806C1C8 @ =gSaveBlock1Ptr ldr r0, [r0] movs r1, 0xA4 @@ -4669,7 +4669,7 @@ _0806C1BA: pop {r1} bx r1 .align 2, 0 -_0806C1C4: .4byte gUnknown_20370D0 +_0806C1C4: .4byte gSpecialVar_Result _0806C1C8: .4byte gSaveBlock1Ptr thumb_func_end ScrCmd_checkmoney @@ -5133,7 +5133,7 @@ ScrCmd_setrespawn: @ 806C4D4 thumb_func_start ScrCmd_checkplayergender ScrCmd_checkplayergender: @ 806C4F0 - ldr r1, _0806C500 @ =gUnknown_20370D0 + ldr r1, _0806C500 @ =gSpecialVar_Result ldr r0, _0806C504 @ =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x8] @@ -5141,7 +5141,7 @@ ScrCmd_checkplayergender: @ 806C4F0 movs r0, 0 bx lr .align 2, 0 -_0806C500: .4byte gUnknown_20370D0 +_0806C500: .4byte gSpecialVar_Result _0806C504: .4byte gSaveBlock2Ptr thumb_func_end ScrCmd_checkplayergender @@ -5452,13 +5452,13 @@ ScrCmd_givecoins: @ 806C74C lsrs r0, 24 cmp r0, 0x1 bne _0806C774 - ldr r1, _0806C770 @ =gUnknown_20370D0 + ldr r1, _0806C770 @ =gSpecialVar_Result movs r0, 0 b _0806C778 .align 2, 0 -_0806C770: .4byte gUnknown_20370D0 +_0806C770: .4byte gSpecialVar_Result _0806C774: - ldr r1, _0806C780 @ =gUnknown_20370D0 + ldr r1, _0806C780 @ =gSpecialVar_Result movs r0, 0x1 _0806C778: strh r0, [r1] @@ -5466,7 +5466,7 @@ _0806C778: pop {r1} bx r1 .align 2, 0 -_0806C780: .4byte gUnknown_20370D0 +_0806C780: .4byte gSpecialVar_Result thumb_func_end ScrCmd_givecoins thumb_func_start ScrCmd_takecoins @@ -5483,13 +5483,13 @@ ScrCmd_takecoins: @ 806C784 lsrs r0, 24 cmp r0, 0x1 bne _0806C7AC - ldr r1, _0806C7A8 @ =gUnknown_20370D0 + ldr r1, _0806C7A8 @ =gSpecialVar_Result movs r0, 0 b _0806C7B0 .align 2, 0 -_0806C7A8: .4byte gUnknown_20370D0 +_0806C7A8: .4byte gSpecialVar_Result _0806C7AC: - ldr r1, _0806C7B8 @ =gUnknown_20370D0 + ldr r1, _0806C7B8 @ =gSpecialVar_Result movs r0, 0x1 _0806C7B0: strh r0, [r1] @@ -5497,7 +5497,7 @@ _0806C7B0: pop {r1} bx r1 .align 2, 0 -_0806C7B8: .4byte gUnknown_20370D0 +_0806C7B8: .4byte gSpecialVar_Result thumb_func_end ScrCmd_takecoins thumb_func_start sub_806C7BC @@ -5555,7 +5555,7 @@ ScrCmd_checkmonobedience: @ 806C80C bl VarGet lsls r0, 16 lsrs r0, 16 - ldr r4, _0806C83C @ =gUnknown_20370D0 + ldr r4, _0806C83C @ =gSpecialVar_Result movs r1, 0x64 muls r0, r1 ldr r1, _0806C840 @ =gPlayerParty @@ -5569,7 +5569,7 @@ ScrCmd_checkmonobedience: @ 806C80C pop {r1} bx r1 .align 2, 0 -_0806C83C: .4byte gUnknown_20370D0 +_0806C83C: .4byte gSpecialVar_Result _0806C840: .4byte gPlayerParty thumb_func_end ScrCmd_checkmonobedience diff --git a/asm/script_menu.s b/asm/script_menu.s index 239e6860f..f1127591d 100644 --- a/asm/script_menu.s +++ b/asm/script_menu.s @@ -78,7 +78,7 @@ ScriptMenu_Multichoice: @ 809C9B4 lsrs r0, 24 cmp r0, 0x1 beq _0809C9F8 - ldr r0, _0809C9F4 @ =gUnknown_20370D0 + ldr r0, _0809C9F4 @ =gSpecialVar_Result movs r1, 0xFF strh r1, [r0] movs r0, 0 @@ -92,7 +92,7 @@ ScriptMenu_Multichoice: @ 809C9B4 b _0809C9FA .align 2, 0 _0809C9F0: .4byte sub_809CC98 -_0809C9F4: .4byte gUnknown_20370D0 +_0809C9F4: .4byte gSpecialVar_Result _0809C9F8: movs r0, 0 _0809C9FA: @@ -126,7 +126,7 @@ ScriptMenu_MultichoiceWithDefault: @ 809CA04 lsrs r0, 24 cmp r0, 0x1 beq _0809CA54 - ldr r1, _0809CA50 @ =gUnknown_20370D0 + ldr r1, _0809CA50 @ =gSpecialVar_Result movs r0, 0xFF strh r0, [r1] str r4, [sp] @@ -139,7 +139,7 @@ ScriptMenu_MultichoiceWithDefault: @ 809CA04 b _0809CA56 .align 2, 0 _0809CA4C: .4byte sub_809CC98 -_0809CA50: .4byte gUnknown_20370D0 +_0809CA50: .4byte gSpecialVar_Result _0809CA54: movs r0, 0 _0809CA56: @@ -506,15 +506,15 @@ _0809CCF8: bne _0809CD3C movs r0, 0x5 bl PlaySE - ldr r1, _0809CD24 @ =gUnknown_20370D0 + ldr r1, _0809CD24 @ =gSpecialVar_Result movs r0, 0x7F strh r0, [r1] b _0809CD2C .align 2, 0 _0809CD20: .4byte gMain -_0809CD24: .4byte gUnknown_20370D0 +_0809CD24: .4byte gSpecialVar_Result _0809CD28: - ldr r0, _0809CD44 @ =gUnknown_20370D0 + ldr r0, _0809CD44 @ =gSpecialVar_Result strh r1, [r0] _0809CD2C: ldrb r0, [r5, 0xC] @@ -527,7 +527,7 @@ _0809CD3C: pop {r0} bx r0 .align 2, 0 -_0809CD44: .4byte gUnknown_20370D0 +_0809CD44: .4byte gSpecialVar_Result thumb_func_end sub_809CC98 thumb_func_start sub_809CD48 @@ -628,7 +628,7 @@ sub_809CDEC: @ 809CDEC .align 2, 0 _0809CE04: .4byte task_yes_no_maybe _0809CE08: - ldr r1, _0809CE30 @ =gUnknown_20370D0 + ldr r1, _0809CE30 @ =gSpecialVar_Result movs r0, 0xFF strh r0, [r1] ldr r0, _0809CE34 @ =sub_809D6D4 @@ -647,21 +647,21 @@ _0809CE28: pop {r1} bx r1 .align 2, 0 -_0809CE30: .4byte gUnknown_20370D0 +_0809CE30: .4byte gSpecialVar_Result _0809CE34: .4byte sub_809D6D4 thumb_func_end sub_809CDEC thumb_func_start sub_809CE38 sub_809CE38: @ 809CE38 push {lr} - ldr r0, _0809CE48 @ =gUnknown_20370D0 + ldr r0, _0809CE48 @ =gSpecialVar_Result ldrh r0, [r0] cmp r0, 0xFF beq _0809CE4C movs r0, 0x1 b _0809CE4E .align 2, 0 -_0809CE48: .4byte gUnknown_20370D0 +_0809CE48: .4byte gSpecialVar_Result _0809CE4C: movs r0, 0 _0809CE4E: @@ -711,13 +711,13 @@ _0809CE94: _0809CE9C: movs r0, 0x5 bl PlaySE - ldr r1, _0809CEA8 @ =gUnknown_20370D0 + ldr r1, _0809CEA8 @ =gSpecialVar_Result movs r0, 0 b _0809CEB0 .align 2, 0 -_0809CEA8: .4byte gUnknown_20370D0 +_0809CEA8: .4byte gSpecialVar_Result _0809CEAC: - ldr r1, _0809CEC4 @ =gUnknown_20370D0 + ldr r1, _0809CEC4 @ =gSpecialVar_Result movs r0, 0x1 _0809CEB0: strh r0, [r1] @@ -730,7 +730,7 @@ _0809CEBC: pop {r0} bx r0 .align 2, 0 -_0809CEC4: .4byte gUnknown_20370D0 +_0809CEC4: .4byte gSpecialVar_Result thumb_func_end task_yes_no_maybe thumb_func_start sub_809CEC8 @@ -767,7 +767,7 @@ sub_809CEC8: @ 809CEC8 .align 2, 0 _0809CF04: .4byte sub_809CFDC _0809CF08: - ldr r1, _0809CFCC @ =gUnknown_20370D0 + ldr r1, _0809CFCC @ =gSpecialVar_Result movs r0, 0xFF strh r0, [r1] ldr r0, _0809CFD0 @ =sub_809D6D4 @@ -858,7 +858,7 @@ _0809CFBA: pop {r1} bx r1 .align 2, 0 -_0809CFCC: .4byte gUnknown_20370D0 +_0809CFCC: .4byte gSpecialVar_Result _0809CFD0: .4byte sub_809D6D4 _0809CFD4: .4byte gUnknown_83E04B0 _0809CFD8: .4byte gTasks @@ -890,15 +890,15 @@ sub_809CFDC: @ 809CFDC bne _0809D034 movs r0, 0x5 bl PlaySE - ldr r1, _0809D01C @ =gUnknown_20370D0 + ldr r1, _0809D01C @ =gSpecialVar_Result movs r0, 0x7F strh r0, [r1] b _0809D024 .align 2, 0 _0809D018: .4byte gTasks+0x8 -_0809D01C: .4byte gUnknown_20370D0 +_0809D01C: .4byte gSpecialVar_Result _0809D020: - ldr r0, _0809D03C @ =gUnknown_20370D0 + ldr r0, _0809D03C @ =gSpecialVar_Result strh r1, [r0] _0809D024: ldrb r0, [r5, 0xC] @@ -911,7 +911,7 @@ _0809D034: pop {r0} bx r0 .align 2, 0 -_0809D03C: .4byte gUnknown_20370D0 +_0809D03C: .4byte gSpecialVar_Result thumb_func_end sub_809CFDC thumb_func_start sp109_CreatePCMenu @@ -923,7 +923,7 @@ sp109_CreatePCMenu: @ 809D040 lsrs r0, 24 cmp r0, 0x1 beq _0809D068 - ldr r1, _0809D064 @ =gUnknown_20370D0 + ldr r1, _0809D064 @ =gSpecialVar_Result movs r0, 0xFF strh r0, [r1] bl sub_809D070 @@ -931,7 +931,7 @@ sp109_CreatePCMenu: @ 809D040 b _0809D06A .align 2, 0 _0809D060: .4byte sub_809CC98 -_0809D064: .4byte gUnknown_20370D0 +_0809D064: .4byte gSpecialVar_Result _0809D068: movs r0, 0 _0809D06A: @@ -1524,7 +1524,7 @@ sub_809D504: @ 809D504 lsrs r0, 24 cmp r0, 0xFF bne _0809D55C - ldr r0, _0809D54C @ =gUnknown_20370C0 + ldr r0, _0809D54C @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x8D bne _0809D558 @@ -1539,7 +1539,7 @@ sub_809D504: @ 809D504 .align 2, 0 _0809D544: .4byte sub_809D6D4 _0809D548: .4byte sub_809D494 -_0809D54C: .4byte gUnknown_20370C0 +_0809D54C: .4byte gSpecialVar_0x8004 _0809D550: .4byte gUnknown_83E17C0 _0809D554: .4byte gUnknown_83E17A0 _0809D558: @@ -1566,7 +1566,7 @@ _0809D572: lsls r2, 14 adds r1, r2 asrs r1, 16 - ldr r6, _0809D610 @ =gUnknown_20370C4 + ldr r6, _0809D610 @ =gSpecialVar_0x8006 ldrh r2, [r6] lsls r2, 19 movs r3, 0xA0 @@ -1629,7 +1629,7 @@ _0809D600: .4byte gUnknown_83E17D0 _0809D604: .4byte gUnknown_83E0F80 _0809D608: .4byte gUnknown_83E0768 _0809D60C: .4byte gSpecialVar_0x8005 -_0809D610: .4byte gUnknown_20370C4 +_0809D610: .4byte gSpecialVar_0x8006 _0809D614: .4byte gSprites _0809D618: .4byte sub_809D494 _0809D61C: .4byte gTasks @@ -1803,7 +1803,7 @@ sub_809D764: @ 809D764 mov r6, r8 push {r6,r7} sub sp, 0xC - ldr r1, _0809D7A0 @ =gUnknown_20370D0 + ldr r1, _0809D7A0 @ =gSpecialVar_Result movs r0, 0xFF strh r0, [r1] ldr r0, _0809D7A4 @ =sub_809D6D4 @@ -1818,7 +1818,7 @@ _0809D784: ldrh r0, [r0] cmp r0, 0x1 bne _0809D7B0 - ldr r0, _0809D7AC @ =gUnknown_20370C0 + ldr r0, _0809D7AC @ =gSpecialVar_0x8004 ldrh r0, [r0] movs r4, 0x4 cmp r0, 0x4 @@ -1830,10 +1830,10 @@ _0809D798: movs r5, 0x2 b _0809D7B8 .align 2, 0 -_0809D7A0: .4byte gUnknown_20370D0 +_0809D7A0: .4byte gSpecialVar_Result _0809D7A4: .4byte sub_809D6D4 _0809D7A8: .4byte gSpecialVar_0x8005 -_0809D7AC: .4byte gUnknown_20370C0 +_0809D7AC: .4byte gSpecialVar_0x8004 _0809D7B0: movs r4, 0 movs r0, 0x6 @@ -1866,7 +1866,7 @@ _0809D7B8: cmp r6, r5 bge _0809D844 _0809D7F2: - ldr r0, _0809D820 @ =gUnknown_20370C0 + ldr r0, _0809D820 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r4, r0 beq _0809D828 @@ -1889,7 +1889,7 @@ _0809D7F2: bl AddTextPrinterParameterized b _0809D82E .align 2, 0 -_0809D820: .4byte gUnknown_20370C0 +_0809D820: .4byte gSpecialVar_0x8004 _0809D824: .4byte gUnknown_83E17E0 _0809D828: subs r0, r6, 0x1 @@ -1970,7 +1970,7 @@ _0809D8BC: .4byte gUnknown_84161C8 thumb_func_start sub_809D8C0 sub_809D8C0: @ 809D8C0 push {lr} - ldr r3, _0809D8EC @ =gUnknown_20370D0 + ldr r3, _0809D8EC @ =gSpecialVar_Result ldrh r2, [r3] adds r1, r2, 0 cmp r1, 0x7F @@ -1985,20 +1985,20 @@ sub_809D8C0: @ 809D8C0 beq _0809D930 cmp r1, 0 bne _0809D8F8 - ldr r0, _0809D8F4 @ =gUnknown_20370C0 + ldr r0, _0809D8F4 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x4 bls _0809D904 movs r0, 0x4 b _0809D94E .align 2, 0 -_0809D8EC: .4byte gUnknown_20370D0 +_0809D8EC: .4byte gSpecialVar_Result _0809D8F0: .4byte gSpecialVar_0x8005 -_0809D8F4: .4byte gUnknown_20370C0 +_0809D8F4: .4byte gSpecialVar_0x8004 _0809D8F8: cmp r1, 0x1 bne _0809D90C - ldr r0, _0809D908 @ =gUnknown_20370C0 + ldr r0, _0809D908 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x5 bls _0809D918 @@ -2006,11 +2006,11 @@ _0809D904: movs r0, 0x5 b _0809D94E .align 2, 0 -_0809D908: .4byte gUnknown_20370C0 +_0809D908: .4byte gSpecialVar_0x8004 _0809D90C: cmp r1, 0x2 bne _0809D94C - ldr r0, _0809D91C @ =gUnknown_20370C0 + ldr r0, _0809D91C @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0x6 bls _0809D920 @@ -2018,7 +2018,7 @@ _0809D918: movs r0, 0x6 b _0809D94E .align 2, 0 -_0809D91C: .4byte gUnknown_20370C0 +_0809D91C: .4byte gSpecialVar_0x8004 _0809D920: movs r0, 0x7 b _0809D94E @@ -2035,7 +2035,7 @@ _0809D930: movs r0, 0x7F b _0809D94E _0809D934: - ldr r0, _0809D944 @ =gUnknown_20370C0 + ldr r0, _0809D944 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r1, r0 bcc _0809D948 @@ -2044,7 +2044,7 @@ _0809D934: lsrs r0, 16 b _0809D94E .align 2, 0 -_0809D944: .4byte gUnknown_20370C0 +_0809D944: .4byte gSpecialVar_0x8004 _0809D948: ldrh r0, [r3] b _0809D94E diff --git a/asm/script_pokemon_util_80A0058.s b/asm/script_pokemon_util_80A0058.s index 18c2d7ecb..191457abe 100644 --- a/asm/script_pokemon_util_80A0058.s +++ b/asm/script_pokemon_util_80A0058.s @@ -154,10 +154,10 @@ ScriptGiveMon: @ 80A011C blt _080A0196 adds r0, r5, 0 movs r1, 0x2 - bl sub_8088E74 + bl GetSetPokedexFlag adds r0, r5, 0 movs r1, 0x3 - bl sub_8088E74 + bl GetSetPokedexFlag _080A0196: adds r0, r7, 0 bl Free @@ -221,13 +221,13 @@ _080A020C: cmp r1, 0x2 bne _080A0214 _080A0210: - ldr r0, _080A0218 @ =gUnknown_20370D0 + ldr r0, _080A0218 @ =gSpecialVar_Result strh r1, [r0] _080A0214: pop {r0} bx r0 .align 2, 0 -_080A0218: .4byte gUnknown_20370D0 +_080A0218: .4byte gSpecialVar_Result thumb_func_end CheckForAlivePartyMons thumb_func_start CheckPartyMonHasHeldItem @@ -400,14 +400,14 @@ sub_80A0350: @ 80A0350 ldrb r1, [r0] cmp r1, 0 bne _080A0368 - ldr r0, _080A0364 @ =gUnknown_20370D0 + ldr r0, _080A0364 @ =gSpecialVar_Result strh r1, [r0] b _080A036E .align 2, 0 _080A0360: .4byte gUnknown_203B0D4 -_080A0364: .4byte gUnknown_20370D0 +_080A0364: .4byte gSpecialVar_Result _080A0368: - ldr r1, _080A0378 @ =gUnknown_20370D0 + ldr r1, _080A0378 @ =gSpecialVar_Result movs r0, 0x1 strh r0, [r1] _080A036E: @@ -416,7 +416,7 @@ _080A036E: pop {r0} bx r0 .align 2, 0 -_080A0378: .4byte gUnknown_20370D0 +_080A0378: .4byte gSpecialVar_Result _080A037C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music thumb_func_end sub_80A0350 @@ -443,15 +443,15 @@ sub_80A039C: @ 80A039C cmp r4, 0 bne _080A03B8 bl LoadPlayerParty - ldr r0, _080A03B4 @ =gUnknown_20370D0 + ldr r0, _080A03B4 @ =gSpecialVar_Result strh r4, [r0] b _080A03C2 .align 2, 0 _080A03B0: .4byte gUnknown_203B0D4 -_080A03B4: .4byte gUnknown_20370D0 +_080A03B4: .4byte gSpecialVar_Result _080A03B8: bl sub_80A03D8 - ldr r1, _080A03D0 @ =gUnknown_20370D0 + ldr r1, _080A03D0 @ =gSpecialVar_Result movs r0, 0x1 strh r0, [r1] _080A03C2: @@ -461,7 +461,7 @@ _080A03C2: pop {r0} bx r0 .align 2, 0 -_080A03D0: .4byte gUnknown_20370D0 +_080A03D0: .4byte gSpecialVar_Result _080A03D4: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music thumb_func_end sub_80A039C diff --git a/asm/script_pokemon_util_80BF8FC.s b/asm/script_pokemon_util_80BF8FC.s index b8da48f65..eec41cf11 100644 --- a/asm/script_pokemon_util_80BF8FC.s +++ b/asm/script_pokemon_util_80BF8FC.s @@ -105,7 +105,7 @@ sub_80BF9BC: @ 80BF9BC push {r4,lr} sub sp, 0x4 ldr r0, _080BF9F0 @ =gPlayerParty - ldr r1, _080BF9F4 @ =gUnknown_20370C0 + ldr r1, _080BF9F4 @ =gSpecialVar_0x8004 ldrb r1, [r1] ldr r2, _080BF9F8 @ =gPlayerPartyCount ldrb r2, [r2] @@ -127,7 +127,7 @@ sub_80BF9BC: @ 80BF9BC bx r0 .align 2, 0 _080BF9F0: .4byte gPlayerParty -_080BF9F4: .4byte gUnknown_20370C0 +_080BF9F4: .4byte gSpecialVar_0x8004 _080BF9F8: .4byte gPlayerPartyCount _080BF9FC: .4byte c2_exit_to_overworld_2_switch _080BFA00: .4byte gUnknown_3005020 @@ -137,13 +137,13 @@ _080BFA04: .4byte sub_807DD24 thumb_func_start ScrSpecial_CountPokemonMoves ScrSpecial_CountPokemonMoves: @ 80BFA08 push {r4,r5,lr} - ldr r1, _080BFA44 @ =gUnknown_20370D0 + ldr r1, _080BFA44 @ =gSpecialVar_Result movs r0, 0 strh r0, [r1] movs r4, 0 adds r5, r1, 0 _080BFA14: - ldr r0, _080BFA48 @ =gUnknown_20370C0 + ldr r0, _080BFA48 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 @@ -167,15 +167,15 @@ _080BFA32: pop {r0} bx r0 .align 2, 0 -_080BFA44: .4byte gUnknown_20370D0 -_080BFA48: .4byte gUnknown_20370C0 +_080BFA44: .4byte gSpecialVar_Result +_080BFA48: .4byte gSpecialVar_0x8004 _080BFA4C: .4byte gPlayerParty thumb_func_end ScrSpecial_CountPokemonMoves thumb_func_start ScrSpecial_GetPokemonNicknameAndMoveName ScrSpecial_GetPokemonNicknameAndMoveName: @ 80BFA50 push {r4,r5,lr} - ldr r0, _080BFA90 @ =gUnknown_20370C0 + ldr r0, _080BFA90 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 adds r5, r1, 0 @@ -203,7 +203,7 @@ ScrSpecial_GetPokemonNicknameAndMoveName: @ 80BFA50 pop {r0} bx r0 .align 2, 0 -_080BFA90: .4byte gUnknown_20370C0 +_080BFA90: .4byte gSpecialVar_0x8004 _080BFA94: .4byte gPlayerParty _080BFA98: .4byte gSpecialVar_0x8005 _080BFA9C: .4byte gStringVar1 @@ -338,7 +338,7 @@ sub_80BFBA8: @ 80BFBA8 push {r4-r6,lr} mov r6, r8 push {r6} - ldr r0, _080BFC08 @ =gUnknown_20370C0 + ldr r0, _080BFC08 @ =gSpecialVar_0x8004 mov r8, r0 ldrh r0, [r0] movs r6, 0x64 @@ -359,7 +359,7 @@ sub_80BFBA8: @ 80BFBA8 cmp r4, 0x2 bhi _080BFBFC _080BFBDA: - ldr r0, _080BFC08 @ =gUnknown_20370C0 + ldr r0, _080BFC08 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 @@ -382,7 +382,7 @@ _080BFBFC: pop {r0} bx r0 .align 2, 0 -_080BFC08: .4byte gUnknown_20370C0 +_080BFC08: .4byte gSpecialVar_0x8004 _080BFC0C: .4byte gPlayerParty _080BFC10: .4byte gSpecialVar_0x8005 thumb_func_end sub_80BFBA8 @@ -390,7 +390,7 @@ _080BFC10: .4byte gSpecialVar_0x8005 thumb_func_start sub_80BFC14 sub_80BFC14: @ 80BFC14 push {lr} - ldr r0, _080BFC38 @ =gUnknown_20370C0 + ldr r0, _080BFC38 @ =gSpecialVar_0x8004 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 @@ -401,22 +401,22 @@ sub_80BFC14: @ 80BFC14 adds r1, r0, 0 cmp r1, 0 beq _080BFC44 - ldr r1, _080BFC40 @ =gUnknown_20370D0 + ldr r1, _080BFC40 @ =gSpecialVar_Result movs r0, 0x1 strh r0, [r1] b _080BFC48 .align 2, 0 -_080BFC38: .4byte gUnknown_20370C0 +_080BFC38: .4byte gSpecialVar_0x8004 _080BFC3C: .4byte gPlayerParty -_080BFC40: .4byte gUnknown_20370D0 +_080BFC40: .4byte gSpecialVar_Result _080BFC44: - ldr r0, _080BFC4C @ =gUnknown_20370D0 + ldr r0, _080BFC4C @ =gSpecialVar_Result strh r1, [r0] _080BFC48: pop {r0} bx r0 .align 2, 0 -_080BFC4C: .4byte gUnknown_20370D0 +_080BFC4C: .4byte gSpecialVar_Result thumb_func_end sub_80BFC14 .align 2, 0 @ Don't pad with nop. diff --git a/asm/seagallop.s b/asm/seagallop.s index 7d40b69e0..89f8c2867 100644 --- a/asm/seagallop.s +++ b/asm/seagallop.s @@ -338,7 +338,7 @@ _0814713C: .4byte gPaletteFade sub_8147140: @ 8147140 push {r4,lr} sub sp, 0x4 - ldr r1, _081471AC @ =gUnknown_20370C4 + ldr r1, _081471AC @ =gSpecialVar_0x8006 ldrh r0, [r1] cmp r0, 0xA bls _08147150 @@ -382,7 +382,7 @@ _08147150: pop {r0} bx r0 .align 2, 0 -_081471AC: .4byte gUnknown_20370C4 +_081471AC: .4byte gSpecialVar_0x8006 _081471B0: .4byte gUnknown_846AEFC _081471B4: .4byte gUnknown_3005020 _081471B8: .4byte sub_807DF64 @@ -767,7 +767,7 @@ _081474C6: thumb_func_start sub_81474CC sub_81474CC: @ 81474CC push {lr} - ldr r2, _081474EC @ =gUnknown_20370C0 + ldr r2, _081474EC @ =gSpecialVar_0x8004 ldrh r0, [r2] cmp r0, 0xA bhi _081474F8 @@ -775,16 +775,16 @@ sub_81474CC: @ 81474CC lsls r0, 1 adds r0, r1 ldrh r0, [r0] - ldr r1, _081474F4 @ =gUnknown_20370C4 + ldr r1, _081474F4 @ =gSpecialVar_0x8006 ldrh r1, [r1] asrs r0, r1 movs r1, 0x1 ands r0, r1 b _081474FA .align 2, 0 -_081474EC: .4byte gUnknown_20370C0 +_081474EC: .4byte gSpecialVar_0x8004 _081474F0: .4byte gUnknown_846AF28 -_081474F4: .4byte gUnknown_20370C4 +_081474F4: .4byte gSpecialVar_0x8006 _081474F8: movs r0, 0x1 _081474FA: diff --git a/asm/shop.s b/asm/shop.s index 263e5b3c5..60b92410d 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -3280,7 +3280,7 @@ sub_809C4A8: @ 809C4A8 adds r0, r1, 0x4 adds r1, 0x6 bl PlayerGetDestCoords - ldr r0, _0809C4E8 @ =gUnknown_20370C0 + ldr r0, _0809C4E8 @ =gSpecialVar_0x8004 ldrh r0, [r0] cmp r0, 0 bne _0809C4EC @@ -3290,7 +3290,7 @@ sub_809C4A8: @ 809C4A8 .align 2, 0 _0809C4E0: .4byte sub_809C500 _0809C4E4: .4byte gTasks -_0809C4E8: .4byte gUnknown_20370C0 +_0809C4E8: .4byte gSpecialVar_0x8004 _0809C4EC: ldrh r0, [r4, 0xC] subs r0, 0x1 diff --git a/asm/start_menu.s b/asm/start_menu.s index 43155b5da..73a82fb5c 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -1212,14 +1212,14 @@ task50_save_game: @ 806F6D4 _0806F6F0: cmp r1, 0x3 bgt _0806F704 - ldr r1, _0806F6FC @ =gUnknown_20370D0 + ldr r1, _0806F6FC @ =gSpecialVar_Result movs r0, 0 strh r0, [r1] b _0806F704 .align 2, 0 -_0806F6FC: .4byte gUnknown_20370D0 +_0806F6FC: .4byte gSpecialVar_Result _0806F700: - ldr r0, _0806F718 @ =gUnknown_20370D0 + ldr r0, _0806F718 @ =gSpecialVar_Result strh r1, [r0] _0806F704: adds r0, r4, 0 @@ -1231,7 +1231,7 @@ _0806F712: pop {r0} bx r0 .align 2, 0 -_0806F718: .4byte gUnknown_20370D0 +_0806F718: .4byte gSpecialVar_Result thumb_func_end task50_save_game thumb_func_start sub_806F71C diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s index 48f98a2b4..bdd06dfff 100644 --- a/asm/teachy_tv.s +++ b/asm/teachy_tv.s @@ -2154,7 +2154,7 @@ sub_815BC90: @ 815BC90 ldr r1, _0815BCCC @ =gTasks+0x8 adds r5, r0, r1 bl sub_815B220 - ldr r1, _0815BCD0 @ =gUnknown_20370C0 + ldr r1, _0815BCD0 @ =gSpecialVar_0x8004 ldr r4, _0815BCD4 @ =gUnknown_203F444 ldrb r0, [r4, 0x5] strh r0, [r1] @@ -2172,7 +2172,7 @@ sub_815BC90: @ 815BC90 b _0815BCE2 .align 2, 0 _0815BCCC: .4byte gTasks+0x8 -_0815BCD0: .4byte gUnknown_20370C0 +_0815BCD0: .4byte gSpecialVar_0x8004 _0815BCD4: .4byte gUnknown_203F444 _0815BCD8: .4byte gMain _0815BCDC: .4byte sub_815BD58 diff --git a/asm/tm_case.s b/asm/tm_case.s index 7ab09953f..1539343e8 100644 --- a/asm/tm_case.s +++ b/asm/tm_case.s @@ -1400,7 +1400,7 @@ sub_81322D4: @ 81322D4 bne _08132354 movs r0, 0x5 bl PlaySE - ldr r0, _08132350 @ =gUnknown_203AD30 + ldr r0, _08132350 @ =gSpecialVar_ItemId mov r1, r8 strh r1, [r0] b _08132370 @@ -1409,7 +1409,7 @@ _08132340: .4byte gTasks+0x8 _08132344: .4byte gPaletteFade _08132348: .4byte gUnknown_203B116 _0813234C: .4byte gMain -_08132350: .4byte gUnknown_203AD30 +_08132350: .4byte gSpecialVar_ItemId _08132354: movs r0, 0x2 negs r0, r0 @@ -1422,7 +1422,7 @@ _08132354: _08132364: movs r0, 0x5 bl PlaySE - ldr r1, _08132378 @ =gUnknown_203AD30 + ldr r1, _08132378 @ =gSpecialVar_ItemId movs r0, 0 strh r0, [r1] _08132370: @@ -1430,7 +1430,7 @@ _08132370: bl sub_8132230 b _081323C8 .align 2, 0 -_08132378: .4byte gUnknown_203AD30 +_08132378: .4byte gSpecialVar_ItemId _0813237C: movs r0, 0x5 bl PlaySE @@ -1450,7 +1450,7 @@ _0813237C: movs r0, 0x4 adds r1, r4, 0 bl sub_809A798 - ldr r1, _081323D4 @ =gUnknown_203AD30 + ldr r1, _081323D4 @ =gSpecialVar_ItemId strh r0, [r1] ldr r0, _081323D8 @ =gTasks lsls r1, r7, 2 @@ -1471,7 +1471,7 @@ _081323C8: pop {r0} bx r0 .align 2, 0 -_081323D4: .4byte gUnknown_203AD30 +_081323D4: .4byte gSpecialVar_ItemId _081323D8: .4byte gTasks _081323DC: .4byte gUnknown_8463140 _081323E0: .4byte gUnknown_203B10C @@ -1591,7 +1591,7 @@ _08132468: lsls r0, 1 bl Alloc adds r4, r0, 0 - ldr r6, _08132558 @ =gUnknown_203AD30 + ldr r6, _08132558 @ =gSpecialVar_ItemId ldrh r1, [r6] bl sub_8131D48 ldr r1, _0813255C @ =gUnknown_8416301 @@ -1643,7 +1643,7 @@ _08132528: _0813254C: .4byte gUnknown_203B118 _08132550: .4byte gUnknown_846316B _08132554: .4byte gUnknown_8463150 -_08132558: .4byte gUnknown_203AD30 +_08132558: .4byte gSpecialVar_ItemId _0813255C: .4byte gUnknown_8416301 _08132560: .4byte gTasks _08132564: .4byte sub_8132568 @@ -1852,7 +1852,7 @@ sub_8132714: @ 8132714 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _08132744 @ =gUnknown_203AD30 + ldr r0, _08132744 @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _08132748 @ =gStringVar1 bl sub_8099E90 @@ -1869,7 +1869,7 @@ sub_8132714: @ 8132714 pop {r0} bx r0 .align 2, 0 -_08132744: .4byte gUnknown_203AD30 +_08132744: .4byte gSpecialVar_ItemId _08132748: .4byte gStringVar1 _0813274C: .4byte gStringVar4 _08132750: .4byte gUnknown_841635E @@ -2085,7 +2085,7 @@ sub_8132908: @ 8132908 lsls r0, 3 ldr r1, _08132950 @ =gTasks+0x8 adds r4, r0, r1 - ldr r6, _08132954 @ =gUnknown_203AD30 + ldr r6, _08132954 @ =gSpecialVar_ItemId ldrh r0, [r6] bl itemid_get_market_price lsls r0, 16 @@ -2109,7 +2109,7 @@ sub_8132908: @ 8132908 b _081329AE .align 2, 0 _08132950: .4byte gTasks+0x8 -_08132954: .4byte gUnknown_203AD30 +_08132954: .4byte gSpecialVar_ItemId _08132958: .4byte gStringVar1 _0813295C: .4byte gStringVar4 _08132960: .4byte gUnknown_84168F1 @@ -2503,7 +2503,7 @@ sub_8132CAC: @ 8132CAC bl PutWindowTilemap movs r0, 0 bl schedule_bg_copy_tilemap_to_vram - ldr r0, _08132D1C @ =gUnknown_203AD30 + ldr r0, _08132D1C @ =gSpecialVar_ItemId ldrh r0, [r0] ldr r1, _08132D20 @ =gStringVar1 bl sub_8099E90 @@ -2537,7 +2537,7 @@ sub_8132CAC: @ 8132CAC bx r0 .align 2, 0 _08132D18: .4byte gTasks+0x8 -_08132D1C: .4byte gUnknown_203AD30 +_08132D1C: .4byte gSpecialVar_ItemId _08132D20: .4byte gStringVar1 _08132D24: .4byte gStringVar3 _08132D28: .4byte gStringVar4 @@ -2564,7 +2564,7 @@ sub_8132D34: @ 8132D34 mov r8, r1 movs r0, 0xF8 bl PlaySE - ldr r5, _08132DF8 @ =gUnknown_203AD30 + ldr r5, _08132DF8 @ =gSpecialVar_ItemId ldrh r0, [r5] mov r2, r8 ldrh r1, [r2, 0x10] @@ -2632,7 +2632,7 @@ sub_8132D34: @ 8132D34 bx r0 .align 2, 0 _08132DF4: .4byte gTasks+0x8 -_08132DF8: .4byte gUnknown_203AD30 +_08132DF8: .4byte gSpecialVar_ItemId _08132DFC: .4byte gSaveBlock1Ptr _08132E00: .4byte gUnknown_203B116 _08132E04: .4byte gUnknown_3005E70 diff --git a/asm/trade.s b/asm/trade.s index dff236bfb..6ce974675 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -250,7 +250,7 @@ _0804C80A: ldrb r2, [r0] cmp r2, 0 bne _0804C8B4 - ldr r1, _0804C870 @ =gUnknown_202271A + ldr r1, _0804C870 @ =gLinkType ldr r5, _0804C874 @ =0x00001122 adds r0, r5, 0 strh r0, [r1] @@ -270,7 +270,7 @@ _0804C80A: _0804C864: .4byte gPaletteFade _0804C868: .4byte gEnemyParty _0804C86C: .4byte gUnknown_3003F64 -_0804C870: .4byte gUnknown_202271A +_0804C870: .4byte gLinkType _0804C874: .4byte 0x00001122 _0804C878: .4byte gUnknown_2031DA8 _0804C87C: .4byte gUnknown_3003F3C @@ -2181,7 +2181,7 @@ _0804D860: .4byte _0804DAE0 .4byte _0804DB14 _0804D8B8: - ldr r0, _0804D8D8 @ =gUnknown_2022618 + ldr r0, _0804D8D8 @ =gBlockSendBuffer ldr r1, _0804D8DC @ =gPlayerParty movs r2, 0xC8 bl sub_804D814 @@ -2197,7 +2197,7 @@ _0804D8B8: strb r2, [r0] b _0804DB9E .align 2, 0 -_0804D8D8: .4byte gUnknown_2022618 +_0804D8D8: .4byte gBlockSendBuffer _0804D8DC: .4byte gPlayerParty _0804D8E0: .4byte gUnknown_2031DA8 _0804D8E4: @@ -2247,7 +2247,7 @@ _0804D936: adds r1, r5, 0 eors r1, r2 lsls r1, 8 - ldr r2, _0804D958 @ =gUnknown_2022118 + ldr r2, _0804D958 @ =gBlockRecvBuffer adds r1, r2 movs r2, 0xC8 bl sub_804D814 @@ -2257,10 +2257,10 @@ _0804D936: b _0804DB96 .align 2, 0 _0804D954: .4byte gEnemyParty -_0804D958: .4byte gUnknown_2022118 +_0804D958: .4byte gBlockRecvBuffer _0804D95C: .4byte gUnknown_2031DA8 _0804D960: - ldr r0, _0804D970 @ =gUnknown_2022618 + ldr r0, _0804D970 @ =gBlockSendBuffer ldr r1, _0804D974 @ =gUnknown_202434C movs r2, 0xC8 bl sub_804D814 @@ -2268,7 +2268,7 @@ _0804D960: ldr r1, [r0] b _0804DB96 .align 2, 0 -_0804D970: .4byte gUnknown_2022618 +_0804D970: .4byte gBlockSendBuffer _0804D974: .4byte gUnknown_202434C _0804D978: .4byte gUnknown_2031DA8 _0804D97C: @@ -2295,7 +2295,7 @@ _0804D99E: adds r1, r5, 0 eors r1, r2 lsls r1, 8 - ldr r2, _0804D9C0 @ =gUnknown_2022118 + ldr r2, _0804D9C0 @ =gBlockRecvBuffer adds r1, r2 movs r2, 0xC8 bl sub_804D814 @@ -2305,10 +2305,10 @@ _0804D99E: b _0804DB96 .align 2, 0 _0804D9BC: .4byte gUnknown_20240F4 -_0804D9C0: .4byte gUnknown_2022118 +_0804D9C0: .4byte gBlockRecvBuffer _0804D9C4: .4byte gUnknown_2031DA8 _0804D9C8: - ldr r0, _0804D9D8 @ =gUnknown_2022618 + ldr r0, _0804D9D8 @ =gBlockSendBuffer ldr r1, _0804D9DC @ =gUnknown_2024414 movs r2, 0xC8 bl sub_804D814 @@ -2316,7 +2316,7 @@ _0804D9C8: ldr r1, [r0] b _0804DB96 .align 2, 0 -_0804D9D8: .4byte gUnknown_2022618 +_0804D9D8: .4byte gBlockSendBuffer _0804D9DC: .4byte gUnknown_2024414 _0804D9E0: .4byte gUnknown_2031DA8 _0804D9E4: @@ -2343,7 +2343,7 @@ _0804DA06: adds r1, r5, 0 eors r1, r2 lsls r1, 8 - ldr r2, _0804DA28 @ =gUnknown_2022118 + ldr r2, _0804DA28 @ =gBlockRecvBuffer adds r1, r2 movs r2, 0xC8 bl sub_804D814 @@ -2353,10 +2353,10 @@ _0804DA06: b _0804DB96 .align 2, 0 _0804DA24: .4byte gUnknown_20241BC -_0804DA28: .4byte gUnknown_2022118 +_0804DA28: .4byte gBlockRecvBuffer _0804DA2C: .4byte gUnknown_2031DA8 _0804DA30: - ldr r0, _0804DA48 @ =gUnknown_2022618 + ldr r0, _0804DA48 @ =gBlockSendBuffer ldr r1, _0804DA4C @ =gSaveBlock1Ptr ldr r1, [r1] ldr r2, _0804DA50 @ =0x00002cd0 @@ -2367,7 +2367,7 @@ _0804DA30: ldr r1, [r0] b _0804DB96 .align 2, 0 -_0804DA48: .4byte gUnknown_2022618 +_0804DA48: .4byte gBlockSendBuffer _0804DA4C: .4byte gSaveBlock1Ptr _0804DA50: .4byte 0x00002cd0 _0804DA54: .4byte gUnknown_2031DA8 @@ -2395,7 +2395,7 @@ _0804DA7A: adds r1, r5, 0 eors r1, r2 lsls r1, 8 - ldr r2, _0804DA9C @ =gUnknown_2022118 + ldr r2, _0804DA9C @ =gBlockRecvBuffer adds r1, r2 movs r2, 0xD8 bl sub_804D814 @@ -2405,10 +2405,10 @@ _0804DA7A: b _0804DB96 .align 2, 0 _0804DA98: .4byte gUnknown_2031CCC -_0804DA9C: .4byte gUnknown_2022118 +_0804DA9C: .4byte gBlockRecvBuffer _0804DAA0: .4byte gUnknown_2031DA8 _0804DAA4: - ldr r0, _0804DABC @ =gUnknown_2022618 + ldr r0, _0804DABC @ =gBlockSendBuffer ldr r1, _0804DAC0 @ =gSaveBlock1Ptr ldr r1, [r1] ldr r2, _0804DAC4 @ =0x0000309c @@ -2419,7 +2419,7 @@ _0804DAA4: ldr r1, [r0] b _0804DB96 .align 2, 0 -_0804DABC: .4byte gUnknown_2022618 +_0804DABC: .4byte gBlockSendBuffer _0804DAC0: .4byte gSaveBlock1Ptr _0804DAC4: .4byte 0x0000309c _0804DAC8: .4byte gUnknown_2031DA8 @@ -2447,7 +2447,7 @@ _0804DAE0: adds r1, r5, 0 eors r1, r2 lsls r1, 8 - ldr r2, _0804DB10 @ =gUnknown_2022118 + ldr r2, _0804DB10 @ =gBlockRecvBuffer adds r1, r2 movs r2, 0xB bl sub_804D814 @@ -2456,7 +2456,7 @@ _0804DAE0: b _0804DB96 .align 2, 0 _0804DB0C: .4byte gUnknown_2031DA8 -_0804DB10: .4byte gUnknown_2022118 +_0804DB10: .4byte gBlockRecvBuffer _0804DB14: ldr r4, _0804DB68 @ =gEnemyParty ldr r6, _0804DB6C @ =0x0000012f @@ -2564,7 +2564,7 @@ sub_804DBD4: @ 804DBD4 ands r0, r2 cmp r0, 0 beq _0804DC58 - ldr r0, _0804DBFC @ =gUnknown_2022118 + ldr r0, _0804DBFC @ =gBlockRecvBuffer ldrh r1, [r0] ldr r0, _0804DC00 @ =0x0000bbbb cmp r1, r0 @@ -2576,7 +2576,7 @@ sub_804DBD4: @ 804DBD4 beq _0804DC28 b _0804DC52 .align 2, 0 -_0804DBFC: .4byte gUnknown_2022118 +_0804DBFC: .4byte gBlockRecvBuffer _0804DC00: .4byte 0x0000bbbb _0804DC04: .4byte 0x0000aabb _0804DC08: @@ -2626,7 +2626,7 @@ _0804DC58: ands r0, r2 cmp r0, 0 beq _0804DCEA - ldr r3, _0804DC84 @ =gUnknown_2022118 + ldr r3, _0804DC84 @ =gBlockRecvBuffer movs r1, 0x80 lsls r1, 1 adds r0, r3, r1 @@ -2642,7 +2642,7 @@ _0804DC58: b _0804DCE4 .align 2, 0 _0804DC80: .4byte gUnknown_2031DA8 -_0804DC84: .4byte gUnknown_2022118 +_0804DC84: .4byte gBlockRecvBuffer _0804DC88: .4byte 0x0000bbbb _0804DC8C: .4byte 0x0000aabb _0804DC90: @@ -2712,7 +2712,7 @@ sub_804DCF4: @ 804DCF4 ands r0, r5 cmp r0, 0 beq _0804DDD6 - ldr r2, _0804DD20 @ =gUnknown_2022118 + ldr r2, _0804DD20 @ =gBlockRecvBuffer ldrh r1, [r2] ldr r0, _0804DD24 @ =0x0000ddee cmp r1, r0 @@ -2727,7 +2727,7 @@ sub_804DCF4: @ 804DCF4 beq _0804DD6C b _0804DDD0 .align 2, 0 -_0804DD20: .4byte gUnknown_2022118 +_0804DD20: .4byte gBlockRecvBuffer _0804DD24: .4byte 0x0000ddee _0804DD28: .4byte 0x0000ccdd _0804DD2C: .4byte 0x0000dddd @@ -7428,7 +7428,7 @@ _08050194: ldrb r0, [r0] cmp r0, 0 bne _080501A8 - ldr r1, _0805022C @ =gUnknown_202271A + ldr r1, _0805022C @ =gLinkType ldr r2, _08050230 @ =0x00001144 adds r0, r2, 0 strh r0, [r1] @@ -7491,7 +7491,7 @@ _080501A8: b _08050472 .align 2, 0 _08050228: .4byte gUnknown_3003F64 -_0805022C: .4byte gUnknown_202271A +_0805022C: .4byte gLinkType _08050230: .4byte 0x00001144 _08050234: .4byte gUnknown_2031DAC _08050238: .4byte sub_804FF0C @@ -8131,7 +8131,7 @@ sub_80507A0: @ 80507A0 lsrs r4, 16 adds r0, r4, 0 movs r1, 0x2 - bl sub_8088E74 + bl GetSetPokedexFlag adds r0, r4, 0 movs r1, 0x3 adds r2, r5, 0 @@ -8912,7 +8912,7 @@ _08050EA8: .4byte gStringVar3 _08050EAC: .4byte gPlayerParty _08050EB0: .4byte gStringVar2 _08050EB4: - ldr r0, _08050EF8 @ =gUnknown_20370C0 + ldr r0, _08050EF8 @ =gSpecialVar_0x8004 ldrh r0, [r0] lsls r4, r0, 4 subs r4, r0 @@ -8944,7 +8944,7 @@ _08050EF0: pop {r0} bx r0 .align 2, 0 -_08050EF8: .4byte gUnknown_20370C0 +_08050EF8: .4byte gSpecialVar_0x8004 _08050EFC: .4byte gUnknown_826CF8C _08050F00: .4byte gStringVar1 _08050F04: .4byte gStringVar3 @@ -13477,7 +13477,7 @@ sub_805383C: @ 805383C ands r0, r6 cmp r0, 0 beq _0805387A - ldr r4, _080538A8 @ =gUnknown_2022118 + ldr r4, _080538A8 @ =gBlockRecvBuffer ldrh r1, [r4] ldr r0, _080538AC @ =0x0000dcba cmp r1, r0 @@ -13501,7 +13501,7 @@ _0805387A: ands r0, r5 cmp r0, 0 beq _080538A2 - ldr r0, _080538A8 @ =gUnknown_2022118 + ldr r0, _080538A8 @ =gBlockRecvBuffer movs r1, 0x80 lsls r1, 1 adds r0, r1 @@ -13522,7 +13522,7 @@ _080538A2: pop {r0} bx r0 .align 2, 0 -_080538A8: .4byte gUnknown_2022118 +_080538A8: .4byte gBlockRecvBuffer _080538AC: .4byte 0x0000dcba _080538B0: .4byte sub_8053788 _080538B4: .4byte 0x0000abcd @@ -13782,7 +13782,7 @@ _08053A98: .4byte SpriteCallbackDummy thumb_func_start sub_8053A9C sub_8053A9C: @ 8053A9C push {r4-r6,lr} - ldr r0, _08053AD0 @ =gUnknown_20370C0 + ldr r0, _08053AD0 @ =gSpecialVar_0x8004 ldrh r0, [r0] lsls r4, r0, 4 subs r4, r0 @@ -13806,7 +13806,7 @@ sub_8053A9C: @ 8053A9C pop {r1} bx r1 .align 2, 0 -_08053AD0: .4byte gUnknown_20370C0 +_08053AD0: .4byte gSpecialVar_0x8004 _08053AD4: .4byte gUnknown_826CF8C _08053AD8: .4byte gStringVar1 _08053ADC: .4byte gSpeciesNames @@ -13817,7 +13817,7 @@ _08053AE0: .4byte gStringVar2 sub_8053AE4: @ 8053AE4 push {r4,lr} sub sp, 0x20 - ldr r0, _08053B2C @ =gUnknown_20370C0 + ldr r0, _08053B2C @ =gSpecialVar_0x8004 ldrh r0, [r0] lsls r4, r0, 4 subs r4, r0 @@ -13848,7 +13848,7 @@ sub_8053AE4: @ 8053AE4 pop {r0} bx r0 .align 2, 0 -_08053B2C: .4byte gUnknown_20370C0 +_08053B2C: .4byte gSpecialVar_0x8004 _08053B30: .4byte gUnknown_826CF8C _08053B34: .4byte gSpecialVar_0x8005 _08053B38: .4byte gPlayerParty @@ -14115,14 +14115,14 @@ sub_8053D68: @ 8053D68 push {lr} ldr r0, _08053D7C @ =gSpecialVar_0x8005 ldrb r0, [r0] - ldr r1, _08053D80 @ =gUnknown_20370C0 + ldr r1, _08053D80 @ =gSpecialVar_0x8004 ldrb r1, [r1] bl sub_8053B48 pop {r0} bx r0 .align 2, 0 _08053D7C: .4byte gSpecialVar_0x8005 -_08053D80: .4byte gUnknown_20370C0 +_08053D80: .4byte gSpecialVar_0x8004 thumb_func_end sub_8053D68 thumb_func_start sub_8053D84 diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s index 6ef1e7468..5b65927d5 100644 --- a/asm/trainer_tower.s +++ b/asm/trainer_tower.s @@ -303,7 +303,7 @@ sub_815D9E8: @ 815D9E8 push {lr} bl sub_815DC8C ldr r1, _0815DA08 @ =gUnknown_847A230 - ldr r0, _0815DA0C @ =gUnknown_20370C0 + ldr r0, _0815DA0C @ =gSpecialVar_0x8004 ldrh r0, [r0] lsls r0, 2 adds r0, r1 @@ -314,7 +314,7 @@ sub_815D9E8: @ 815D9E8 bx r0 .align 2, 0 _0815DA08: .4byte gUnknown_847A230 -_0815DA0C: .4byte gUnknown_20370C0 +_0815DA0C: .4byte gSpecialVar_0x8004 thumb_func_end sub_815D9E8 thumb_func_start sub_815DA10 @@ -741,7 +741,7 @@ sub_815DD44: @ 815DD44 ldrb r1, [r4, 0x4] cmp r0, r1 ble _0815DD78 - ldr r0, _0815DD74 @ =gUnknown_20370D0 + ldr r0, _0815DD74 @ =gSpecialVar_Result movs r1, 0x3 strh r1, [r0] movs r0, 0x99 @@ -752,9 +752,9 @@ sub_815DD44: @ 815DD44 _0815DD68: .4byte gMapHeader _0815DD6C: .4byte 0xfffffed7 _0815DD70: .4byte gUnknown_203F458 -_0815DD74: .4byte gUnknown_20370D0 +_0815DD74: .4byte gSpecialVar_Result _0815DD78: - ldr r3, _0815DDA8 @ =gUnknown_20370D0 + ldr r3, _0815DDA8 @ =gSpecialVar_Result ldrb r1, [r4] lsls r0, r1, 5 subs r0, r1 @@ -778,7 +778,7 @@ _0815DDA2: pop {r0} bx r0 .align 2, 0 -_0815DDA8: .4byte gUnknown_20370D0 +_0815DDA8: .4byte gSpecialVar_Result _0815DDAC: .4byte gUnknown_847A284 thumb_func_end sub_815DD44 @@ -1015,7 +1015,7 @@ _0815DF4E: thumb_func_start sub_815DF54 sub_815DF54: @ 815DF54 push {r4,r5,lr} - ldr r0, _0815DF90 @ =gUnknown_20370C4 + ldr r0, _0815DF90 @ =gSpecialVar_0x8006 ldrh r4, [r0] ldr r2, _0815DF94 @ =gUnknown_203F458 ldr r3, [r2] @@ -1046,7 +1046,7 @@ _0815DF7C: beq _0815DFA6 b _0815E05C .align 2, 0 -_0815DF90: .4byte gUnknown_20370C4 +_0815DF90: .4byte gSpecialVar_0x8006 _0815DF94: .4byte gUnknown_203F458 _0815DF98: .4byte gSpecialVar_0x8005 _0815DF9C: @@ -1335,7 +1335,7 @@ sub_815E1C0: @ 815E1C0 ldrh r0, [r0] cmp r0, 0 bne _0815E1DE - ldr r3, _0815E1E8 @ =gUnknown_20370D0 + ldr r3, _0815E1E8 @ =gSpecialVar_Result ldr r0, _0815E1EC @ =gUnknown_203F458 ldr r1, [r0] ldrb r2, [r1] @@ -1350,7 +1350,7 @@ _0815E1DE: bx r0 .align 2, 0 _0815E1E4: .4byte gSpecialVar_0x8005 -_0815E1E8: .4byte gUnknown_20370D0 +_0815E1E8: .4byte gSpecialVar_Result _0815E1EC: .4byte gUnknown_203F458 thumb_func_end sub_815E1C0 @@ -1412,7 +1412,7 @@ sub_815E218: @ 815E218 ldrb r1, [r1, 0xD] cmp r3, r1 bgt _0815E27C - ldr r1, _0815E278 @ =gUnknown_20370D0 + ldr r1, _0815E278 @ =gSpecialVar_Result movs r0, 0 b _0815E280 .align 2, 0 @@ -1422,16 +1422,16 @@ _0815E268: .4byte gSaveBlock1Ptr _0815E26C: .4byte 0x00003d34 _0815E270: .4byte 0xfffffed7 _0815E274: .4byte gUnknown_203F458 -_0815E278: .4byte gUnknown_20370D0 +_0815E278: .4byte gSpecialVar_Result _0815E27C: - ldr r1, _0815E288 @ =gUnknown_20370D0 + ldr r1, _0815E288 @ =gSpecialVar_Result movs r0, 0x1 _0815E280: strh r0, [r1] pop {r0} bx r0 .align 2, 0 -_0815E288: .4byte gUnknown_20370D0 +_0815E288: .4byte gSpecialVar_Result thumb_func_end sub_815E218 thumb_func_start sub_815E28C @@ -1566,7 +1566,7 @@ _0815E390: .4byte 0x00003d38 sub_815E394: @ 815E394 push {lr} bl DisableVBlankCounter1 - ldr r3, _0815E3F8 @ =gUnknown_20370D0 + ldr r3, _0815E3F8 @ =gSpecialVar_Result movs r0, 0 strh r0, [r3] ldr r0, _0815E3FC @ =gSaveBlock1Ptr @@ -1616,7 +1616,7 @@ _0815E3D6: pop {r0} bx r0 .align 2, 0 -_0815E3F8: .4byte gUnknown_20370D0 +_0815E3F8: .4byte gSpecialVar_Result _0815E3FC: .4byte gSaveBlock1Ptr _0815E400: .4byte 0x00003d34 _0815E404: .4byte 0x00003d42 @@ -1651,7 +1651,7 @@ sub_815E408: @ 815E408 lsrs r5, r0, 31 cmp r5, 0 beq _0815E45C - ldr r1, _0815E458 @ =gUnknown_20370D0 + ldr r1, _0815E458 @ =gSpecialVar_Result movs r0, 0x2 b _0815E4A0 .align 2, 0 @@ -1660,7 +1660,7 @@ _0815E448: .4byte gUnknown_203F458 _0815E44C: .4byte gSaveBlock1Ptr _0815E450: .4byte 0x00003d34 _0815E454: .4byte 0x00003d42 -_0815E458: .4byte gUnknown_20370D0 +_0815E458: .4byte gSpecialVar_Result _0815E45C: adds r0, r4, 0 movs r1, 0x1 @@ -1685,14 +1685,14 @@ _0815E45C: movs r2, 0x1 orrs r0, r2 strb r0, [r1] - ldr r0, _0815E498 @ =gUnknown_20370D0 + ldr r0, _0815E498 @ =gSpecialVar_Result strh r5, [r0] b _0815E4A2 .align 2, 0 _0815E494: .4byte gStringVar2 -_0815E498: .4byte gUnknown_20370D0 +_0815E498: .4byte gSpecialVar_Result _0815E49C: - ldr r1, _0815E4AC @ =gUnknown_20370D0 + ldr r1, _0815E4AC @ =gSpecialVar_Result movs r0, 0x1 _0815E4A0: strh r0, [r1] @@ -1703,7 +1703,7 @@ _0815E4A2: pop {r0} bx r0 .align 2, 0 -_0815E4AC: .4byte gUnknown_20370D0 +_0815E4AC: .4byte gSpecialVar_Result thumb_func_end sub_815E408 thumb_func_start sub_815E4B0 @@ -1725,14 +1725,14 @@ sub_815E4B0: @ 815E4B0 lsrs r5, r0, 31 cmp r5, 0 beq _0815E4E8 - ldr r1, _0815E4E4 @ =gUnknown_20370D0 + ldr r1, _0815E4E4 @ =gSpecialVar_Result movs r0, 0x2 b _0815E534 .align 2, 0 _0815E4D8: .4byte gSaveBlock1Ptr _0815E4DC: .4byte 0x00003d34 _0815E4E0: .4byte 0x00003d42 -_0815E4E4: .4byte gUnknown_20370D0 +_0815E4E4: .4byte gSpecialVar_Result _0815E4E8: ldr r4, _0815E520 @ =0x00003d38 adds r0, r1, r4 @@ -1756,16 +1756,16 @@ _0815E4E8: adds r0, r3 adds r1, r4, 0 bl sub_815EDF4 - ldr r0, _0815E52C @ =gUnknown_20370D0 + ldr r0, _0815E52C @ =gSpecialVar_Result strh r5, [r0] b _0815E536 .align 2, 0 _0815E520: .4byte 0x00003d38 _0815E524: .4byte 0x00003d34 _0815E528: .4byte 0x00003d3c -_0815E52C: .4byte gUnknown_20370D0 +_0815E52C: .4byte gSpecialVar_Result _0815E530: - ldr r1, _0815E55C @ =gUnknown_20370D0 + ldr r1, _0815E55C @ =gSpecialVar_Result movs r0, 0x1 _0815E534: strh r0, [r1] @@ -1789,7 +1789,7 @@ _0815E536: pop {r0} bx r0 .align 2, 0 -_0815E55C: .4byte gUnknown_20370D0 +_0815E55C: .4byte gSpecialVar_Result _0815E560: .4byte gSaveBlock1Ptr _0815E564: .4byte 0x00003d34 _0815E568: .4byte 0x00003d42 @@ -1887,14 +1887,14 @@ sub_815E5F0: @ 815E5F0 negs r0, r0 ands r0, r1 strb r0, [r2] - ldr r1, _0815E62C @ =gUnknown_20370D0 + ldr r1, _0815E62C @ =gSpecialVar_Result movs r0, 0 b _0815E64C .align 2, 0 _0815E620: .4byte gSaveBlock1Ptr _0815E624: .4byte 0x00003d34 _0815E628: .4byte 0x00003d42 -_0815E62C: .4byte gUnknown_20370D0 +_0815E62C: .4byte gSpecialVar_Result _0815E630: lsls r0, r1, 27 cmp r0, 0 @@ -1903,20 +1903,20 @@ _0815E630: negs r0, r0 ands r0, r1 strb r0, [r2] - ldr r1, _0815E644 @ =gUnknown_20370D0 + ldr r1, _0815E644 @ =gSpecialVar_Result movs r0, 0x1 b _0815E64C .align 2, 0 -_0815E644: .4byte gUnknown_20370D0 +_0815E644: .4byte gSpecialVar_Result _0815E648: - ldr r1, _0815E654 @ =gUnknown_20370D0 + ldr r1, _0815E654 @ =gSpecialVar_Result movs r0, 0x2 _0815E64C: strh r0, [r1] pop {r0} bx r0 .align 2, 0 -_0815E654: .4byte gUnknown_20370D0 +_0815E654: .4byte gSpecialVar_Result thumb_func_end sub_815E5F0 thumb_func_start sub_815E658 @@ -2187,7 +2187,7 @@ _0815E8B0: .4byte 0x00004001 thumb_func_start sub_815E8B4 sub_815E8B4: @ 815E8B4 push {r4,lr} - ldr r4, _0815E8C8 @ =gUnknown_20370D0 + ldr r4, _0815E8C8 @ =gSpecialVar_Result bl GetMonsStateToDoubles lsls r0, 24 lsrs r0, 24 @@ -2196,7 +2196,7 @@ sub_815E8B4: @ 815E8B4 pop {r0} bx r0 .align 2, 0 -_0815E8C8: .4byte gUnknown_20370D0 +_0815E8C8: .4byte gSpecialVar_Result thumb_func_end sub_815E8B4 thumb_func_start sub_815E8CC @@ -2213,22 +2213,22 @@ sub_815E8CC: @ 815E8CC movs r2, 0 movs r3, 0x1 bl ConvertIntToDecimalStringN - ldr r1, _0815E8F4 @ =gUnknown_20370D0 + ldr r1, _0815E8F4 @ =gSpecialVar_Result movs r0, 0x1 b _0815E8FC .align 2, 0 _0815E8EC: .4byte gUnknown_203F458 _0815E8F0: .4byte gStringVar1 -_0815E8F4: .4byte gUnknown_20370D0 +_0815E8F4: .4byte gSpecialVar_Result _0815E8F8: - ldr r1, _0815E904 @ =gUnknown_20370D0 + ldr r1, _0815E904 @ =gSpecialVar_Result movs r0, 0 _0815E8FC: strh r0, [r1] pop {r0} bx r0 .align 2, 0 -_0815E904: .4byte gUnknown_20370D0 +_0815E904: .4byte gSpecialVar_Result thumb_func_end sub_815E8CC thumb_func_start sub_815E908 @@ -2245,23 +2245,23 @@ sub_815E908: @ 815E908 lsrs r1, r0, 16 cmp r1, 0 bne _0815E938 - ldr r0, _0815E934 @ =gUnknown_20370D0 + ldr r0, _0815E934 @ =gSpecialVar_Result strh r1, [r0] b _0815E93E .align 2, 0 _0815E928: .4byte gMapHeader _0815E92C: .4byte 0x00000129 _0815E930: .4byte 0x00004082 -_0815E934: .4byte gUnknown_20370D0 +_0815E934: .4byte gSpecialVar_Result _0815E938: - ldr r1, _0815E944 @ =gUnknown_20370D0 + ldr r1, _0815E944 @ =gSpecialVar_Result movs r0, 0 strh r0, [r1] _0815E93E: pop {r0} bx r0 .align 2, 0 -_0815E944: .4byte gUnknown_20370D0 +_0815E944: .4byte gSpecialVar_Result thumb_func_end sub_815E908 thumb_func_start sub_815E948 @@ -2332,7 +2332,7 @@ _0815E9C4: .4byte gUnknown_847A2D2 thumb_func_start sub_815E9C8 sub_815E9C8: @ 815E9C8 - ldr r3, _0815E9EC @ =gUnknown_20370D0 + ldr r3, _0815E9EC @ =gSpecialVar_Result ldr r0, _0815E9F0 @ =gSaveBlock1Ptr ldr r1, [r0] ldr r2, _0815E9F4 @ =0x00003d34 @@ -2350,7 +2350,7 @@ sub_815E9C8: @ 815E9C8 strh r0, [r3] bx lr .align 2, 0 -_0815E9EC: .4byte gUnknown_20370D0 +_0815E9EC: .4byte gSpecialVar_Result _0815E9F0: .4byte gSaveBlock1Ptr _0815E9F4: .4byte 0x00003d34 _0815E9F8: .4byte 0x00003d42 diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s index e7454d31f..4c7d6769f 100644 --- a/asm/union_room_chat.s +++ b/asm/union_room_chat.s @@ -2831,7 +2831,7 @@ _081299E6: movs r1, 0x2 ldrsh r0, [r4, r1] lsls r0, 8 - ldr r1, _08129A0C @ =gUnknown_2022118 + ldr r1, _08129A0C @ =gBlockRecvBuffer adds r0, r1 ldrb r0, [r0] subs r0, 0x1 @@ -2843,7 +2843,7 @@ _081299E6: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08129A0C: .4byte gUnknown_2022118 +_08129A0C: .4byte gBlockRecvBuffer _08129A10: .4byte _08129A14 .align 2, 0 _08129A14: @@ -2874,7 +2874,7 @@ _08129A3A: movs r2, 0x2 ldrsh r1, [r4, r2] lsls r1, 8 - ldr r2, _08129A6C @ =gUnknown_2022118 + ldr r2, _08129A6C @ =gBlockRecvBuffer adds r1, r2 bl sub_812963C cmp r0, 0 @@ -2889,7 +2889,7 @@ _08129A3A: b _08129A72 .align 2, 0 _08129A68: .4byte gUnknown_203B0E0 -_08129A6C: .4byte gUnknown_2022118 +_08129A6C: .4byte gBlockRecvBuffer _08129A70: ldrh r0, [r4, 0xA] _08129A72: diff --git a/asm/unk_8147500.s b/asm/unk_8147500.s index 23a3b1b9c..d9867d69f 100644 --- a/asm/unk_8147500.s +++ b/asm/unk_8147500.s @@ -8,9 +8,9 @@ thumb_func_start sub_8147500 sub_8147500: @ 8147500 push {lr} - ldr r0, _08147518 @ =gUnknown_20370C0 + ldr r0, _08147518 @ =gSpecialVar_0x8004 ldrh r1, [r0] - ldr r0, _0814751C @ =gUnknown_20370C4 + ldr r0, _0814751C @ =gSpecialVar_0x8006 ldrh r2, [r0] cmp r1, 0x8 beq _08147512 @@ -20,8 +20,8 @@ _08147512: movs r0, 0x1 b _0814758E .align 2, 0 -_08147518: .4byte gUnknown_20370C0 -_0814751C: .4byte gUnknown_20370C4 +_08147518: .4byte gSpecialVar_0x8004 +_0814751C: .4byte gSpecialVar_0x8006 _08147520: cmp r1, 0 beq _08147528 diff --git a/asm/unk_8147AA8.s b/asm/unk_8147AA8.s index 1b06167f8..5b4fbd0ad 100644 --- a/asm/unk_8147AA8.s +++ b/asm/unk_8147AA8.s @@ -4267,17 +4267,17 @@ _08149A1C: bl sub_8149A00 cmp r0, 0 beq _08149A54 - ldr r1, _08149A50 @ =gUnknown_20370D0 + ldr r1, _08149A50 @ =gSpecialVar_Result movs r0, 0x1 b _08149A5E .align 2, 0 _08149A4C: .4byte gPlayerParty -_08149A50: .4byte gUnknown_20370D0 +_08149A50: .4byte gSpecialVar_Result _08149A54: adds r5, 0x1 cmp r5, 0x5 ble _08149A1C - ldr r1, _08149A68 @ =gUnknown_20370D0 + ldr r1, _08149A68 @ =gSpecialVar_Result movs r0, 0 _08149A5E: strh r0, [r1] @@ -4285,7 +4285,7 @@ _08149A5E: pop {r0} bx r0 .align 2, 0 -_08149A68: .4byte gUnknown_20370D0 +_08149A68: .4byte gSpecialVar_Result thumb_func_end sub_8149A18 thumb_func_start sub_8149A6C diff --git a/asm/unk_814B6F0.s b/asm/unk_814B6F0.s index cfc756cf8..dc7d8d9f8 100644 --- a/asm/unk_814B6F0.s +++ b/asm/unk_814B6F0.s @@ -189,7 +189,7 @@ _0814B85C: .4byte sub_814BA98 sub_814B860: @ 814B860 push {r4,lr} sub sp, 0xC - ldr r1, _0814B878 @ =gUnknown_203AD30 + ldr r1, _0814B878 @ =gSpecialVar_ItemId ldrh r0, [r1] subs r0, 0x85 lsls r0, 16 @@ -200,7 +200,7 @@ sub_814B860: @ 814B860 strh r0, [r1] b _0814B884 .align 2, 0 -_0814B878: .4byte gUnknown_203AD30 +_0814B878: .4byte gSpecialVar_ItemId _0814B87C: ldrh r0, [r1] movs r1, 0x1 @@ -211,7 +211,7 @@ _0814B884: ldrb r0, [r2, 0x8] lsls r0, 5 adds r0, r2, r0 - ldr r1, _0814B8E4 @ =gUnknown_203AD30 + ldr r1, _0814B8E4 @ =gSpecialVar_ItemId ldrh r1, [r1] subs r1, 0x85 adds r0, 0xA4 @@ -250,7 +250,7 @@ _0814B884: bx r0 .align 2, 0 _0814B8E0: .4byte gUnknown_203F3DC -_0814B8E4: .4byte gUnknown_203AD30 +_0814B8E4: .4byte gSpecialVar_ItemId _0814B8E8: .4byte sub_814BA98 _0814B8EC: .4byte sub_814BA80 thumb_func_end sub_814B860 diff --git a/asm/unk_814BB4C.s b/asm/unk_814BB4C.s index 1895133dc..c3f054fc7 100644 --- a/asm/unk_814BB4C.s +++ b/asm/unk_814BB4C.s @@ -540,7 +540,7 @@ _0814BF1A: movs r3, 0 cmp r3, r4 bcs _0814BF7E - ldr r7, _0814BF9C @ =gUnknown_2022118 + ldr r7, _0814BF9C @ =gBlockRecvBuffer movs r6, 0 ldr r4, _0814BFA0 @ =gUnknown_83DFC9C _0814BF3C: @@ -592,7 +592,7 @@ _0814BF7E: b _0814BFC0 .align 2, 0 _0814BF98: .4byte gUnknown_846E3C8 -_0814BF9C: .4byte gUnknown_2022118 +_0814BF9C: .4byte gBlockRecvBuffer _0814BFA0: .4byte gUnknown_83DFC9C _0814BFA4: movs r0, 0 @@ -2299,7 +2299,7 @@ _0814CCB0: adds r4, 0x42 cmp r8, r3 bcs _0814CCDE - ldr r2, _0814CCF8 @ =gUnknown_2022118 + ldr r2, _0814CCF8 @ =gBlockRecvBuffer _0814CCBE: mov r3, r8 lsls r1, r3, 5 @@ -2329,7 +2329,7 @@ _0814CCDE: b _0814CF92 .align 2, 0 _0814CCF4: .4byte gUnknown_846E3C8 -_0814CCF8: .4byte gUnknown_2022118 +_0814CCF8: .4byte gBlockRecvBuffer _0814CCFC: movs r0, 0x6 b _0814CF92 @@ -2635,7 +2635,7 @@ _0814CF3C: movs r1, 0 movs r2, 0x30 bl memset - ldr r1, _0814CF6C @ =gUnknown_2022118 + ldr r1, _0814CF6C @ =gBlockRecvBuffer adds r0, r4, 0 movs r2, 0x30 bl memcpy @@ -2645,7 +2645,7 @@ _0814CF64: strh r0, [r7, 0x10] b _0814CF8E .align 2, 0 -_0814CF6C: .4byte gUnknown_2022118 +_0814CF6C: .4byte gBlockRecvBuffer _0814CF70: bl sub_814B930 movs r0, 0x12 @@ -3071,7 +3071,7 @@ _0814D296: cmp r5, r3 bcs _0814D2D4 adds r1, r6, 0 - ldr r2, _0814D2EC @ =gUnknown_2022118 + ldr r2, _0814D2EC @ =gBlockRecvBuffer _0814D2BC: lsls r0, r5, 8 adds r0, r2 @@ -3096,7 +3096,7 @@ _0814D2D4: b _0814D2FA .align 2, 0 _0814D2E8: .4byte gUnknown_846E3C8 -_0814D2EC: .4byte gUnknown_2022118 +_0814D2EC: .4byte gBlockRecvBuffer _0814D2F0: movs r0, 0x16 movs r1, 0x1 diff --git a/asm/unk_81507FC.s b/asm/unk_81507FC.s index 40d5a13b0..141ff4d18 100644 --- a/asm/unk_81507FC.s +++ b/asm/unk_81507FC.s @@ -1150,7 +1150,7 @@ _081510F4: beq _08151116 ldr r0, [r6] adds r0, 0x4A - ldr r1, _08151148 @ =gUnknown_2022118 + ldr r1, _08151148 @ =gBlockRecvBuffer movs r2, 0x3C bl memcpy adds r0, r4, 0 @@ -1188,7 +1188,7 @@ _08151140: strb r0, [r1, 0x10] b _0815118A .align 2, 0 -_08151148: .4byte gUnknown_2022118 +_08151148: .4byte gBlockRecvBuffer _0815114C: .4byte gUnknown_203F3E0 _08151150: movs r0, 0x1 @@ -1305,7 +1305,7 @@ _08151228: lsls r0, 1 adds r2, r0 lsls r0, r4, 8 - ldr r1, _08151294 @ =gUnknown_2022118 + ldr r1, _08151294 @ =gBlockRecvBuffer adds r0, r1 ldrb r0, [r0] strb r0, [r2] @@ -1350,7 +1350,7 @@ _0815128A: strb r0, [r1, 0x10] b _081512AA .align 2, 0 -_08151294: .4byte gUnknown_2022118 +_08151294: .4byte gBlockRecvBuffer _08151298: .4byte gUnknown_203F3E0 _0815129C: bl sub_8155E68 @@ -1501,7 +1501,7 @@ _081513C4: lsls r0, 1 adds r2, r0 lsls r0, r4, 8 - ldr r1, _08151438 @ =gUnknown_2022118 + ldr r1, _08151438 @ =gBlockRecvBuffer adds r0, r1 ldrb r0, [r0] strb r0, [r2] @@ -1548,7 +1548,7 @@ _0815142A: b _08151480 .align 2, 0 _08151434: .4byte gUnknown_203F3E0 -_08151438: .4byte gUnknown_2022118 +_08151438: .4byte gBlockRecvBuffer _0815143C: bl sub_81532B8 b _08151480 @@ -2016,7 +2016,7 @@ _081517D2: ldr r0, _08151844 @ =0x0000318c adds r2, r0 lsls r0, r4, 8 - ldr r1, _08151848 @ =gUnknown_2022118 + ldr r1, _08151848 @ =gBlockRecvBuffer adds r0, r1 ldrb r0, [r0] strb r0, [r2] @@ -2063,7 +2063,7 @@ _08151836: .align 2, 0 _08151840: .4byte gUnknown_203F3E0 _08151844: .4byte 0x0000318c -_08151848: .4byte gUnknown_2022118 +_08151848: .4byte gBlockRecvBuffer thumb_func_end sub_8151750 thumb_func_start sub_815184C @@ -6310,7 +6310,7 @@ _081537BC: .4byte gUnknown_203F3E0 sub_81537C0: @ 81537C0 push {r4-r6,lr} movs r5, 0 - ldr r6, _081537F0 @ =gUnknown_20370D0 + ldr r6, _081537F0 @ =gSpecialVar_Result _081537C6: movs r0, 0x64 adds r1, r5, 0 @@ -6331,13 +6331,13 @@ _081537C6: strh r0, [r6] b _08153804 .align 2, 0 -_081537F0: .4byte gUnknown_20370D0 +_081537F0: .4byte gSpecialVar_Result _081537F4: .4byte gPlayerParty _081537F8: adds r5, 0x1 cmp r5, 0x5 ble _081537C6 - ldr r1, _0815380C @ =gUnknown_20370D0 + ldr r1, _0815380C @ =gSpecialVar_Result movs r0, 0 strh r0, [r1] _08153804: @@ -6345,7 +6345,7 @@ _08153804: pop {r0} bx r0 .align 2, 0 -_0815380C: .4byte gUnknown_20370D0 +_0815380C: .4byte gSpecialVar_Result thumb_func_end sub_81537C0 thumb_func_start sub_8153810 diff --git a/asm/unk_8159F40.s b/asm/unk_8159F40.s index a8d1b9bf8..aefa4ecff 100644 --- a/asm/unk_8159F40.s +++ b/asm/unk_8159F40.s @@ -23,7 +23,7 @@ sub_8159F40: @ 8159F40 bl ZeroPlayerPartyMons bl ZeroEnemyPartyMons ldr r1, _08159F94 @ =gUnknown_84792D0 - ldr r0, _08159F98 @ =gUnknown_20370C0 + ldr r0, _08159F98 @ =gSpecialVar_0x8004 ldrh r0, [r0] lsls r0, 2 adds r0, r1 @@ -49,7 +49,7 @@ _08159F72: .align 2, 0 _08159F90: .4byte gBattleTypeFlags _08159F94: .4byte gUnknown_84792D0 -_08159F98: .4byte gUnknown_20370C0 +_08159F98: .4byte gSpecialVar_0x8004 _08159F9C: .4byte gPlayerParty _08159FA0: movs r0, 0x64 diff --git a/asm/unk_815EDDC.s b/asm/unk_815EDDC.s index 6acbf447d..116458940 100644 --- a/asm/unk_815EDDC.s +++ b/asm/unk_815EDDC.s @@ -138,7 +138,7 @@ sub_815EEB0: @ 815EEB0 ldr r1, _0815EED0 @ =0x00000af8 adds r0, r1 bl sub_815EE3C - ldr r1, _0815EED4 @ =gUnknown_20370C0 + ldr r1, _0815EED4 @ =gSpecialVar_0x8004 ldrh r1, [r1] cmp r0, r1 bcc _0815EED8 @@ -147,7 +147,7 @@ sub_815EEB0: @ 815EEB0 .align 2, 0 _0815EECC: .4byte gSaveBlock2Ptr _0815EED0: .4byte 0x00000af8 -_0815EED4: .4byte gUnknown_20370C0 +_0815EED4: .4byte gSpecialVar_0x8004 _0815EED8: movs r0, 0 _0815EEDA: @@ -227,7 +227,7 @@ sub_815EF5C: @ 815EF5C ldr r0, [r0] ldr r1, _0815EF90 @ =0x00000af8 adds r4, r0, r1 - ldr r5, _0815EF94 @ =gUnknown_20370C0 + ldr r5, _0815EF94 @ =gSpecialVar_0x8004 ldrh r0, [r5] bl sub_815EE88 lsls r0, 24 @@ -245,7 +245,7 @@ sub_815EF5C: @ 815EF5C .align 2, 0 _0815EF8C: .4byte gSaveBlock2Ptr _0815EF90: .4byte 0x00000af8 -_0815EF94: .4byte gUnknown_20370C0 +_0815EF94: .4byte gSpecialVar_0x8004 _0815EF98: movs r0, 0 _0815EF9A: diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s index c57ca5366..67c159abc 100644 --- a/asm/wild_encounter.s +++ b/asm/wild_encounter.s @@ -1001,15 +1001,15 @@ sub_8082E54: @ 8082E54 bne _08082EB0 bl sub_807F704 _08082E9C: - ldr r0, _08082EAC @ =gUnknown_20370D0 + ldr r0, _08082EAC @ =gSpecialVar_Result strh r4, [r0] b _08082EB6 .align 2, 0 _08082EA4: .4byte 0x0000ffff _08082EA8: .4byte gUnknown_83C9CB8 -_08082EAC: .4byte gUnknown_20370D0 +_08082EAC: .4byte gSpecialVar_Result _08082EB0: - ldr r1, _08082EBC @ =gUnknown_20370D0 + ldr r1, _08082EBC @ =gSpecialVar_Result movs r0, 0 strh r0, [r1] _08082EB6: @@ -1017,7 +1017,7 @@ _08082EB6: pop {r0} bx r0 .align 2, 0 -_08082EBC: .4byte gUnknown_20370D0 +_08082EBC: .4byte gSpecialVar_Result thumb_func_end sub_8082E54 thumb_func_start sub_8082EC0 diff --git a/berry_fix/Makefile b/berry_fix/Makefile new file mode 100644 index 000000000..ffe0cf251 --- /dev/null +++ b/berry_fix/Makefile @@ -0,0 +1,160 @@ +include $(DEVKITARM)/base_tools +export CPP := $(PREFIX)cpp +export LD := $(PREFIX)ld + +ifeq ($(OS),Windows_NT) +EXE := .exe +else +EXE := +endif + +GAME_CODE := AGBJ +MAKER_CODE := 01 +REVISION := 0 + +SHELL := /bin/bash -o pipefail + +CPPFLAGS := -I ../tools/agbcc/include -I ../tools/agbcc -iquote include -nostdinc -undef + +ROM := berry_fix.gba +OBJ_DIR := build +CC1 := ../tools/agbcc/bin/agbcc$(EXE) +override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm + + +ELF = $(ROM:.gba=.elf) +MAP = $(ROM:.gba=.map) + +C_SUBDIR = src +ASM_SUBDIR = asm +DATA_ASM_SUBDIR = data + +C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR) +ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR) +DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR) + +ASFLAGS := -mcpu=arm7tdmi + +LDFLAGS = -Map ../$(MAP) + +SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c +GFX := ../tools/gbagfx/gbagfx$(EXE) +AIF := ../tools/aif2pcm/aif2pcm$(EXE) +MID := ../tools/mid2agb/mid2agb$(EXE) +SCANINC := ../tools/scaninc/scaninc$(EXE) +PREPROC := ../tools/preproc/preproc$(EXE) +RAMSCRGEN := ../tools/ramscrgen/ramscrgen$(EXE) +FIX := ../tools/gbafix/gbafix$(EXE) + +# Clear the default suffixes +.SUFFIXES: +# Don't delete intermediate files +.SECONDARY: +# Delete files that weren't built properly +.DELETE_ON_ERROR: + +# Secondary expansion is required for dependency variables in object rules. +.SECONDEXPANSION: + +.PHONY: rom clean compare tidy + +C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c) +C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS)) + +ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s) +ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS)) + +DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) +DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS)) + +SONG_SRCS := $(wildcard $(SONG_SUBDIR)/*.s) +SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS)) + +MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid) +MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS)) + +OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS) +# OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS)) + +SUBDIRS := $(sort $(dir $(OBJS))) + +$(shell mkdir -p $(SUBDIRS)) + +rom: $(ROM) + +# For contributors to make sure a change didn't affect the contents of the ROM. +compare: $(ROM) + @$(SHA1) rom.sha1 + +clean: tidy + rm -f sound/direct_sound_samples/*.bin + rm -f $(SONG_OBJS) $(MID_OBJS) $(MID_SUBDIR)/*.s + find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + + make -C payload clean + +tidy: + rm -f $(ROM) $(ELF) $(MAP) + rm -r build/* + make -C payload tidy + +%.s: ; +%.png: ; +%.pal: ; +%.aif: ; + +%.1bpp: %.png ; $(GFX) $< $@ +%.4bpp: %.png ; $(GFX) $< $@ +%.8bpp: %.png ; $(GFX) $< $@ +%.gbapal: %.pal ; $(GFX) $< $@ +%.gbapal: %.png ; $(GFX) $< $@ +%.lz: % ; $(GFX) $< $@ +%.rl: % ; $(GFX) $< $@ + + +ifeq ($(NODEP),1) +$(C_BUILDDIR)/%.o: c_dep := +else +$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) -I include $(C_SUBDIR)/$*.c) +endif + +$(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep) + @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i + @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s + $(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s + +ifeq ($(NODEP),1) +$(ASM_BUILDDIR)/%.o: asm_dep := +else +$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) $(ASM_SUBDIR)/$*.s) +endif + +$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep) + $(AS) $(ASFLAGS) -o $@ $< + +ifeq ($(NODEP),1) +$(DATA_ASM_BUILDDIR)/%.o: data_dep := +else +$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s) +endif + +payload: data/payload.gba.lz + +payload/payload.gba: + $(MAKE) -C payload/ + +data/payload.gba.lz: payload/payload.gba + $(GFX) $< $@ -search 1 + +$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) + $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@ + +$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s + $(AS) $(ASFLAGS) -I sound -o $@ $< + +$(ELF): ld_script.txt $(OBJS) + cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ../ld_script.txt -o ../$@ + +$(ROM): $(ELF) + $(OBJCOPY) -O binary $< $@ + $(FIX) $@ -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent + diff --git a/berry_fix/asm/berry_fix_header.inc b/berry_fix/asm/berry_fix_header.inc new file mode 100644 index 000000000..5167d2ff0 --- /dev/null +++ b/berry_fix/asm/berry_fix_header.inc @@ -0,0 +1,35 @@ + .global BerryFixMBHeaderNintendoLogo +BerryFixMBHeaderNintendoLogo: + .space 156 + +BerryFixMBHeaderGameTitle: + .space 12 + + .global BerryFixMBHeaderGameCode +BerryFixMBHeaderGameCode: + .space 4 + +BerryFixMBHeaderMakerCode: + .space 2 + +BerryFixMBHeaderMagic: + .byte 0 + +BerryFixMBHeaderMainUnitCode: + .byte 0 + +BerryFixMBHeaderDeviceType: + .byte 0 + +BerryFixMBHeaderReserved1: + .space 7 + + .global BerryFixMBHeaderSoftwareVersion +BerryFixMBHeaderSoftwareVersion: + .byte 0 + +BerryFixMBHeaderChecksum: + .byte 0 + +BerryFixMBHeaderReserved2: + .space 2 diff --git a/berry_fix/asm/loader.s b/berry_fix/asm/loader.s new file mode 100644 index 000000000..39e0b768a --- /dev/null +++ b/berry_fix/asm/loader.s @@ -0,0 +1,119 @@ + .include "../asm/macros/asm.inc" + .include "../asm/macros/function.inc" + .include "../constants/gba_constants.inc" + + .set SIO_ERROR, 0x0040 + .set SIO_MULTI_BUSY, 0x0080 + + .set EWRAM_ORIG, 0x02000000 + .set gCode, 0x02010000 + .set PROG_ORIG, 0x00008000 + + .syntax unified + + .text + + arm_func_start _start +_start: @ 0 + b _entry + arm_func_end _start + + .include "asm/berry_fix_header.inc" + +@ C0 + .word 0 + + .global _GPIOPortData +_GPIOPortData: @ C4 + .2byte 0 + + .global _GPIOPortDirection +_GPIOPortDirection: @ C6 + .2byte 0 + + .global _GPIOPortReadEnable +_GPIOPortReadEnable: @ C8 + .2byte 0 + +@ CA + .2byte 0 + +@ CC + .space 0x34 + + arm_func_start _entry +_entry: @ 100 + b _send + arm_func_end _entry + + .space 0x1C + + arm_func_start _recv +_recv: + @ Waits until link cable is no longer busy. + @ Returns nz if an error has occurred + @ Otherwise, returns the received short in r1. + @ Preserves r0 +_120: + ldrh r1, [r0, 0x8] @ SIOCNT + tst r1, SIO_MULTI_BUSY + beq _120 +_12c: + ldrh r1, [r0, 0x8] @ SIOCNT + tst r1, SIO_MULTI_BUSY + bne _12c + ldrh r1, [r0, 0x8] @ SIOCNT + tst r1, SIO_ERROR + bxne lr + ldrh r1, [r0] @ SIOMULTI0 + bx lr + arm_func_end _recv + + arm_func_start _send +_send: @ 14c + ldr r0, =REG_SIOMULTI0 +_150: + bl _recv + bne _150 + mov r2, 0 + strh r2, [r0, 0xa] @ SIOMLT_SEND + cmp r1, 0 + bne _150 + mov r2, 0x8000 +_16c: + mov r1, 0 +_170: + strh r1, [r0, 0xa] @ SIOMLT_SEND + bl _recv + bne _150 + cmp r1, r2 + bne _16c + lsr r2, 5 + cmp r1, 0 + bne _170 + ldr r3, =BerryFixMBHeaderGameCode + ldrh r2, [r3] + strh r2, [r0, 0xa] @ SIOMLT_SEND + bl _recv +_1a0: + bne _1a0 + cmp r1, r2 + bne _1a0 + ldrh r2, [r3, 0x2] + strh r2, [r0, 0xa] @ SIOMLT_SEND + bl _recv + bne _1a0 + cmp r1, r2 + bne _1a0 + mov r1, 0 + strh r1, [r0, 0xa] @ SIOMLT_SEND + ldr r0, =_data_2f0 + ldr r1, =gCode + swi 0x11 << 16 + ldr lr, =gCode + bx lr + .pool + arm_func_end _send + @ 1f0 + + .align 2, 0 @ don't pad with nop diff --git a/berry_fix/charmap.txt b/berry_fix/charmap.txt new file mode 100644 index 000000000..a736b40f2 --- /dev/null +++ b/berry_fix/charmap.txt @@ -0,0 +1,1067 @@ +' ' = 00 +'À' = 01 +'Á' = 02 +'Â' = 03 +'Ç' = 04 +'È' = 05 +'É' = 06 +'Ê' = 07 +'Ë' = 08 +'Ì' = 09 +'Î' = 0B +'Ï' = 0C +'Ò' = 0D +'Ó' = 0E +'Ô' = 0F +'Œ' = 10 +'Ù' = 11 +'Ú' = 12 +'Û' = 13 +'Ñ' = 14 +'ß' = 15 +'à' = 16 +'á' = 17 +'ç' = 19 +'è' = 1A +'é' = 1B +'ê' = 1C +'ë' = 1D +'ì' = 1E +'î' = 20 +'ï' = 21 +'ò' = 22 +'ó' = 23 +'ô' = 24 +'œ' = 25 +'ù' = 26 +'ú' = 27 +'û' = 28 +'ñ' = 29 +'º' = 2A +'ª' = 2B +SUPER_ER = 2C +'&' = 2D +'+' = 2E +LV = 34 +'=' = 35 +';' = 36 +'¿' = 51 +'¡' = 52 +PK = 53 +PKMN = 53 54 +POKEBLOCK = 55 56 57 58 59 +'Í' = 5A +'%' = 5B +'(' = 5C +')' = 5D +'â' = 68 +'í' = 6F +UNK_SPACER = 77 +UP_ARROW = 79 +DOWN_ARROW = 7A +LEFT_ARROW = 7B +RIGHT_ARROW = 7C +'0' = A1 +'1' = A2 +'2' = A3 +'3' = A4 +'4' = A5 +'5' = A6 +'6' = A7 +'7' = A8 +'8' = A9 +'9' = AA +'!' = AB +'?' = AC +'.' = AD +'-' = AE +'·' = AF +'…' = B0 +'“' = B1 +'”' = B2 +'‘' = B3 +'’' = B4 +'♂' = B5 +'♀' = B6 +'¥' = B7 +',' = B8 +'×' = B9 +'/' = BA +'A' = BB +'B' = BC +'C' = BD +'D' = BE +'E' = BF +'F' = C0 +'G' = C1 +'H' = C2 +'I' = C3 +'J' = C4 +'K' = C5 +'L' = C6 +'M' = C7 +'N' = C8 +'O' = C9 +'P' = CA +'Q' = CB +'R' = CC +'S' = CD +'T' = CE +'U' = CF +'V' = D0 +'W' = D1 +'X' = D2 +'Y' = D3 +'Z' = D4 +'a' = D5 +'b' = D6 +'c' = D7 +'d' = D8 +'e' = D9 +'f' = DA +'g' = DB +'h' = DC +'i' = DD +'j' = DE +'k' = DF +'l' = E0 +'m' = E1 +'n' = E2 +'o' = E3 +'p' = E4 +'q' = E5 +'r' = E6 +'s' = E7 +'t' = E8 +'u' = E9 +'v' = EA +'w' = EB +'x' = EC +'y' = ED +'z' = EE +'▶' = EF +':' = F0 +'Ä' = F1 +'Ö' = F2 +'Ü' = F3 +'ä' = F4 +'ö' = F5 +'ü' = F6 +TALL_PLUS = FC 0C FB +'$' = FF + +@ Hiragana +'あ' = 01 +'い' = 02 +'う' = 03 +'え' = 04 +'お' = 05 +'か' = 06 +'き' = 07 +'く' = 08 +'け' = 09 +'こ' = 0A +'さ' = 0B +'し' = 0C +'す' = 0D +'せ' = 0E +'そ' = 0F +'た' = 10 +'ち' = 11 +'つ' = 12 +'て' = 13 +'と' = 14 +'な' = 15 +'に' = 16 +'ぬ' = 17 +'ね' = 18 +'の' = 19 +'は' = 1A +'ひ' = 1B +'ふ' = 1C +'へ' = 1D +'ほ' = 1E +'ま' = 1F +'み' = 20 +'む' = 21 +'め' = 22 +'も' = 23 +'や' = 24 +'ゆ' = 25 +'よ' = 26 +'ら' = 27 +'り' = 28 +'る' = 29 +'れ' = 2A +'ろ' = 2B +'わ' = 2C +'を' = 2D +'ん' = 2E +'ぁ' = 2F +'ぃ' = 30 +'ぅ' = 31 +'ぇ' = 32 +'ぉ' = 33 +'ゃ' = 34 +'ゅ' = 35 +'ょ' = 36 +'が' = 37 +'ぎ' = 38 +'ぐ' = 39 +'げ' = 3A +'ご' = 3B +'ざ' = 3C +'じ' = 3D +'ず' = 3E +'ぜ' = 3F +'ぞ' = 40 +'だ' = 41 +'ぢ' = 42 +'づ' = 43 +'で' = 44 +'ど' = 45 +'ば' = 46 +'び' = 47 +'ぶ' = 48 +'べ' = 49 +'ぼ' = 4A +'ぱ' = 4B +'ぴ' = 4C +'ぷ' = 4D +'ぺ' = 4E +'ぽ' = 4F +'っ' = 50 + +@ Katakana +'ア' = 51 +'イ' = 52 +'ウ' = 53 +'エ' = 54 +'オ' = 55 +'カ' = 56 +'キ' = 57 +'ク' = 58 +'ケ' = 59 +'コ' = 5A +'サ' = 5B +'シ' = 5C +'ス' = 5D +'セ' = 5E +'ソ' = 5F +'タ' = 60 +'チ' = 61 +'ツ' = 62 +'テ' = 63 +'ト' = 64 +'ナ' = 65 +'ニ' = 66 +'ヌ' = 67 +'ネ' = 68 +'ノ' = 69 +'ハ' = 6A +'ヒ' = 6B +'フ' = 6C +'ヘ' = 6D +'ホ' = 6E +'マ' = 6F +'ミ' = 70 +'ム' = 71 +'メ' = 72 +'モ' = 73 +'ヤ' = 74 +'ユ' = 75 +'ヨ' = 76 +'ラ' = 77 +'リ' = 78 +'ル' = 79 +'レ' = 7A +'ロ' = 7B +'ワ' = 7C +'ヲ' = 7D +'ン' = 7E +'ァ' = 7F +'ィ' = 80 +'ゥ' = 81 +'ェ' = 82 +'ォ' = 83 +'ャ' = 84 +'ュ' = 85 +'ョ' = 86 +'ガ' = 87 +'ギ' = 88 +'グ' = 89 +'ゲ' = 8A +'ゴ' = 8B +'ザ' = 8C +'ジ' = 8D +'ズ' = 8E +'ゼ' = 8F +'ゾ' = 90 +'ダ' = 91 +'ヂ' = 92 +'ヅ' = 93 +'デ' = 94 +'ド' = 95 +'バ' = 96 +'ビ' = 97 +'ブ' = 98 +'ベ' = 99 +'ボ' = 9A +'パ' = 9B +'ピ' = 9C +'プ' = 9D +'ペ' = 9E +'ポ' = 9F +'ッ' = A0 + +@ Japanese punctuation +' ' = 00 +'!' = AB +'?' = AC +'。' = AD +'ー' = AE +'⋯' = B0 + +STRING = FD + +@ string placeholders +PLAYER = FD 01 +STR_VAR_1 = FD 02 +STR_VAR_2 = FD 03 +STR_VAR_3 = FD 04 +KUN = FD 05 +RIVAL = FD 06 +@ version-dependent strings (originally made for Ruby/Sapphire differences) +@ Emerald uses the Sapphire strings (except for VERSION). +VERSION = FD 07 @ "EMERALD" +AQUA = FD 08 +MAGMA = FD 09 +ARCHIE = FD 0A +MAXIE = FD 0B +KYOGRE = FD 0C +GROUDON = FD 0D + +@ battle string placeholders + +B_BUFF1 = FD 00 +B_BUFF2 = FD 01 +B_COPY_VAR_1 = FD 02 +B_COPY_VAR_2 = FD 03 +B_COPY_VAR_3 = FD 04 +B_PLAYER_MON1_NAME = FD 05 +B_OPPONENT_MON1_NAME = FD 06 +B_PLAYER_MON2_NAME = FD 07 +B_OPPONENT_MON2_NAME = FD 08 +B_LINK_PLAYER_MON1_NAME = FD 09 +B_LINK_OPPONENT_MON1_NAME = FD 0A +B_LINK_PLAYER_MON2_NAME = FD 0B +B_LINK_OPPONENT_MON2_NAME = FD 0C +B_ATK_NAME_WITH_PREFIX_MON1 = FD 0D +B_ATK_PARTNER_NAME = FD 0E +B_ATK_NAME_WITH_PREFIX = FD 0F +B_DEF_NAME_WITH_PREFIX = FD 10 +B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBattler +B_ACTIVE_NAME_WITH_PREFIX = FD 12 +B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13 +B_CURRENT_MOVE = FD 14 +B_LAST_MOVE = FD 15 +B_LAST_ITEM = FD 16 +B_LAST_ABILITY = FD 17 +B_ATK_ABILITY = FD 18 +B_DEF_ABILITY = FD 19 +B_SCR_ACTIVE_ABILITY = FD 1A +B_EFF_ABILITY = FD 1B +B_TRAINER1_CLASS = FD 1C +B_TRAINER1_NAME = FD 1D +B_LINK_PLAYER_NAME = FD 1E +B_LINK_PARTNER_NAME = FD 1F +B_LINK_OPPONENT1_NAME = FD 20 +B_LINK_OPPONENT2_NAME = FD 21 +B_LINK_SCR_TRAINER_NAME = FD 22 +B_PLAYER_NAME = FD 23 +B_TRAINER1_LOSE_TEXT = FD 24 +B_TRAINER1_WIN_TEXT = FD 25 +B_26 = FD 26 +B_PC_CREATOR_NAME = FD 27 +B_ATK_PREFIX1 = FD 28 +B_DEF_PREFIX1 = FD 29 +B_ATK_PREFIX2 = FD 2A +B_DEF_PREFIX2 = FD 2B +B_ATK_PREFIX3 = FD 2C +B_DEF_PREFIX3 = FD 2D +B_TRAINER2_CLASS = FD 2E +B_TRAINER2_NAME = FD 2F +B_TRAINER2_LOSE_TEXT = FD 30 +B_TRAINER2_WIN_TEXT = FD 31 +B_PARTNER_CLASS = FD 32 +B_PARTNER_NAME = FD 33 +B_BUFF3 = FD 34 + +@ indicates the end of a town/city name (before " TOWN" or " CITY") +NAME_END = FC 00 + +@ special 0xF7 character +SPECIAL_F7 = F7 + +@ more text functions + +COLOR = FC 01 @ use a color listed below right after +HIGHLIGHT = FC 02 @ same as fc 01 +SHADOW = FC 03 @ same as fc 01 +COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 bytes +PALETTE = FC 05 @ used in credits +SIZE = FC 06 @ note that anything other than "SMALL" is invalid +UNKNOWN_7 = FC 07 +PAUSE = FC 08 @ manually print the wait byte after this, havent mapped them +PAUSE_UNTIL_PRESS = FC 09 +UNKNOWN_A = FC 0A +PLAY_BGM = FC 0B +ESCAPE = FC 0C +SHIFT_TEXT = FC 0D +UNKNOWN_E = FC 0E +UNKNOWN_F = FC 0F +PLAY_SE = FC 10 +CLEAR = FC 11 +SKIP = FC 12 +CLEAR_TO = FC 13 +UNKNOWN_14 = FC 14 +JPN = FC 15 +ENG = FC 16 +PAUSE_MUSIC = FC 17 +RESUME_MUSIC = FC 18 + +@ colors + +TRANSPARENT = 00 +WHITE = 01 +DARK_GREY = 02 +LIGHT_GREY = 03 +RED = 04 +LIGHT_RED = 05 +GREEN = 06 +LIGHT_GREEN = 07 +BLUE = 08 +LIGHT_BLUE = 09 +@ these next colors can be set to anything arbitrary at runtime +@ usually though they'll have the textbox border colors as described below +DYNAMIC_COLOR1 = 0A @ white +DYNAMIC_COLOR2 = 0B @ white with a tinge of green +DYNAMIC_COLOR3 = 0C @ white 2 +DYNAMIC_COLOR4 = 0D @ aquamarine +DYNAMIC_COLOR5 = 0E @ blue-green +DYNAMIC_COLOR6 = 0F @ cerulean + +@ sound and music + +MUS_DUMMY = 00 00 +SE_KAIFUKU = 01 00 +SE_PC_LOGIN = 02 00 +SE_PC_OFF = 03 00 +SE_PC_ON = 04 00 +SE_SELECT = 05 00 +SE_WIN_OPEN = 06 00 +SE_WALL_HIT = 07 00 +SE_DOOR = 08 00 +SE_KAIDAN = 09 00 +SE_DANSA = 0A 00 +SE_JITENSYA = 0B 00 +SE_KOUKA_L = 0C 00 +SE_KOUKA_M = 0D 00 +SE_KOUKA_H = 0E 00 +SE_BOWA2 = 0F 00 +SE_POKE_DEAD = 10 00 +SE_NIGERU = 11 00 +SE_JIDO_DOA = 12 00 +SE_NAMINORI = 13 00 +SE_BAN = 14 00 +SE_PIN = 15 00 +SE_BOO = 16 00 +SE_BOWA = 17 00 +SE_JYUNI = 18 00 +SE_A = 19 00 +SE_I = 1A 00 +SE_U = 1B 00 +SE_E = 1C 00 +SE_O = 1D 00 +SE_N = 1E 00 +SE_SEIKAI = 1F 00 +SE_HAZURE = 20 00 +SE_EXP = 21 00 +SE_JITE_PYOKO = 22 00 +SE_MU_PACHI = 23 00 +SE_TK_KASYA = 24 00 +SE_FU_ZAKU = 25 00 +SE_FU_ZAKU2 = 26 00 +SE_FU_ZUZUZU = 27 00 +SE_RU_GASHIN = 28 00 +SE_RU_GASYAN = 29 00 +SE_RU_BARI = 2A 00 +SE_RU_HYUU = 2B 00 +SE_KI_GASYAN = 2C 00 +SE_TK_WARPIN = 2D 00 +SE_TK_WARPOUT = 2E 00 +SE_TU_SAA = 2F 00 +SE_HI_TURUN = 30 00 +SE_TRACK_MOVE = 31 00 +SE_TRACK_STOP = 32 00 +SE_TRACK_HAIKI = 33 00 +SE_TRACK_DOOR = 34 00 +SE_MOTER = 35 00 +SE_CARD = 36 00 +SE_SAVE = 37 00 +SE_KON = 38 00 +SE_KON2 = 39 00 +SE_KON3 = 3A 00 +SE_KON4 = 3B 00 +SE_SUIKOMU = 3C 00 +SE_NAGERU = 3D 00 +SE_TOY_C = 3E 00 +SE_TOY_D = 3F 00 +SE_TOY_E = 40 00 +SE_TOY_F = 41 00 +SE_TOY_G = 42 00 +SE_TOY_A = 43 00 +SE_TOY_B = 44 00 +SE_TOY_C1 = 45 00 +SE_MIZU = 46 00 +SE_HASHI = 47 00 +SE_DAUGI = 48 00 +SE_PINPON = 49 00 +SE_FUUSEN1 = 4A 00 +SE_FUUSEN2 = 4B 00 +SE_FUUSEN3 = 4C 00 +SE_TOY_KABE = 4D 00 +SE_TOY_DANGO = 4E 00 +SE_DOKU = 4F 00 +SE_ESUKA = 50 00 +SE_T_AME = 51 00 +SE_T_AME_E = 52 00 +SE_T_OOAME = 53 00 +SE_T_OOAME_E = 54 00 +SE_T_KOAME = 55 00 +SE_T_KOAME_E = 56 00 +SE_T_KAMI = 57 00 +SE_T_KAMI2 = 58 00 +SE_ELEBETA = 59 00 +SE_HINSI = 5A 00 +SE_EXPMAX = 5B 00 +SE_TAMAKORO = 5C 00 +SE_TAMAKORO_E = 5D 00 +SE_BASABASA = 5E 00 +SE_REGI = 5F 00 +SE_C_GAJI = 60 00 +SE_C_MAKU_U = 61 00 +SE_C_MAKU_D = 62 00 +SE_C_PASI = 63 00 +SE_C_SYU = 64 00 +SE_C_PIKON = 65 00 +SE_REAPOKE = 66 00 +SE_OP_BASYU = 67 00 +SE_BT_START = 68 00 +SE_DENDOU = 69 00 +SE_JIHANKI = 6A 00 +SE_TAMA = 6B 00 +SE_Z_SCROLL = 6C 00 +SE_Z_PAGE = 6D 00 +SE_PN_ON = 6E 00 +SE_PN_OFF = 6F 00 +SE_Z_SEARCH = 70 00 +SE_TAMAGO = 71 00 +SE_TB_START = 72 00 +SE_TB_KON = 73 00 +SE_TB_KARA = 74 00 +SE_BIDORO = 75 00 +SE_W085 = 76 00 +SE_W085B = 77 00 +SE_W231 = 78 00 +SE_W171 = 79 00 +SE_W233 = 7A 00 +SE_W233B = 7B 00 +SE_W145 = 7C 00 +SE_W145B = 7D 00 +SE_W145C = 7E 00 +SE_W240 = 7F 00 +SE_W015 = 80 00 +SE_W081 = 81 00 +SE_W081B = 82 00 +SE_W088 = 83 00 +SE_W016 = 84 00 +SE_W016B = 85 00 +SE_W003 = 86 00 +SE_W104 = 87 00 +SE_W013 = 88 00 +SE_W196 = 89 00 +SE_W086 = 8A 00 +SE_W004 = 8B 00 +SE_W025 = 8C 00 +SE_W025B = 8D 00 +SE_W152 = 8E 00 +SE_W026 = 8F 00 +SE_W172 = 90 00 +SE_W172B = 91 00 +SE_W053 = 92 00 +SE_W007 = 93 00 +SE_W092 = 94 00 +SE_W221 = 95 00 +SE_W221B = 96 00 +SE_W052 = 97 00 +SE_W036 = 98 00 +SE_W059 = 99 00 +SE_W059B = 9A 00 +SE_W010 = 9B 00 +SE_W011 = 9C 00 +SE_W017 = 9D 00 +SE_W019 = 9E 00 +SE_W028 = 9F 00 +SE_W013B = A0 00 +SE_W044 = A1 00 +SE_W029 = A2 00 +SE_W057 = A3 00 +SE_W056 = A4 00 +SE_W250 = A5 00 +SE_W030 = A6 00 +SE_W039 = A7 00 +SE_W054 = A8 00 +SE_W077 = A9 00 +SE_W020 = AA 00 +SE_W082 = AB 00 +SE_W047 = AC 00 +SE_W195 = AD 00 +SE_W006 = AE 00 +SE_W091 = AF 00 +SE_W146 = B0 00 +SE_W120 = B1 00 +SE_W153 = B2 00 +SE_W071B = B3 00 +SE_W071 = B4 00 +SE_W103 = B5 00 +SE_W062 = B6 00 +SE_W062B = B7 00 +SE_W048 = B8 00 +SE_W187 = B9 00 +SE_W118 = BA 00 +SE_W155 = BB 00 +SE_W122 = BC 00 +SE_W060 = BD 00 +SE_W185 = BE 00 +SE_W014 = BF 00 +SE_W043 = C0 00 +SE_W207 = C1 00 +SE_W207B = C2 00 +SE_W215 = C3 00 +SE_W109 = C4 00 +SE_W173 = C5 00 +SE_W280 = C6 00 +SE_W202 = C7 00 +SE_W060B = C8 00 +SE_W076 = C9 00 +SE_W080 = CA 00 +SE_W100 = CB 00 +SE_W107 = CC 00 +SE_W166 = CD 00 +SE_W129 = CE 00 +SE_W115 = CF 00 +SE_W112 = D0 00 +SE_W197 = D1 00 +SE_W199 = D2 00 +SE_W236 = D3 00 +SE_W204 = D4 00 +SE_W268 = D5 00 +SE_W070 = D6 00 +SE_W063 = D7 00 +SE_W127 = D8 00 +SE_W179 = D9 00 +SE_W151 = DA 00 +SE_W201 = DB 00 +SE_W161 = DC 00 +SE_W161B = DD 00 +SE_W227 = DE 00 +SE_W227B = DF 00 +SE_W226 = E0 00 +SE_W208 = E1 00 +SE_W213 = E2 00 +SE_W213B = E3 00 +SE_W234 = E4 00 +SE_W260 = E5 00 +SE_W328 = E6 00 +SE_W320 = E7 00 +SE_W255 = E8 00 +SE_W291 = E9 00 +SE_W089 = EA 00 +SE_W239 = EB 00 +SE_W230 = EC 00 +SE_W281 = ED 00 +SE_W327 = EE 00 +SE_W287 = EF 00 +SE_W257 = F0 00 +SE_W253 = F1 00 +SE_W258 = F2 00 +SE_W322 = F3 00 +SE_W298 = F4 00 +SE_W287B = F5 00 +SE_W114 = F6 00 +SE_W063B = F7 00 +SE_RG_W_DOOR = F8 00 +SE_RG_CARD1 = F9 00 +SE_RG_CARD2 = FA 00 +SE_RG_CARD3 = FB 00 +SE_RG_BAG1 = FC 00 +SE_RG_BAG2 = FD 00 +SE_RG_GETTING = FE 00 +SE_RG_SHOP = FF 00 +SE_RG_KITEKI = 00 01 +SE_RG_HELP_OP = 01 01 +SE_RG_HELP_CL = 02 01 +SE_RG_HELP_NG = 03 01 +SE_RG_DEOMOV = 04 01 +SE_RG_EXCELLENT = 05 01 +SE_RG_NAWAMISS = 06 01 +SE_TOREEYE = 07 01 +SE_TOREOFF = 08 01 +SE_HANTEI1 = 09 01 +SE_HANTEI2 = 0A 01 +SE_CURTAIN = 0B 01 +SE_CURTAIN1 = 0C 01 +SE_USSOKI = 0D 01 +MUS_TETSUJI = 5E 01 +MUS_FIELD13 = 5F 01 +MUS_KACHI22 = 60 01 +MUS_KACHI2 = 61 01 +MUS_KACHI3 = 62 01 +MUS_KACHI5 = 63 01 +MUS_PCC = 64 01 +MUS_NIBI = 65 01 +MUS_SUIKUN = 66 01 +MUS_DOORO1 = 67 01 +MUS_DOORO_X1 = 68 01 +MUS_DOORO_X3 = 69 01 +MUS_MACHI_S2 = 6A 01 +MUS_MACHI_S4 = 6B 01 +MUS_GIM = 6C 01 +MUS_NAMINORI = 6D 01 +MUS_DAN01 = 6E 01 +MUS_FANFA1 = 6F 01 +MUS_ME_ASA = 70 01 +MUS_ME_BACHI = 71 01 +MUS_FANFA4 = 72 01 +MUS_FANFA5 = 73 01 +MUS_ME_WAZA = 74 01 +MUS_BIJYUTU = 75 01 +MUS_DOORO_X4 = 76 01 +MUS_FUNE_KAN = 77 01 +MUS_ME_SHINKA = 78 01 +MUS_SHINKA = 79 01 +MUS_ME_WASURE = 7A 01 +MUS_SYOUJOEYE = 7B 01 +MUS_BOYEYE = 7C 01 +MUS_DAN02 = 7D 01 +MUS_MACHI_S3 = 7E 01 +MUS_ODAMAKI = 7F 01 +MUS_B_TOWER = 80 01 +MUS_SWIMEYE = 81 01 +MUS_DAN03 = 82 01 +MUS_ME_KINOMI = 83 01 +MUS_ME_TAMA = 84 01 +MUS_ME_B_BIG = 85 01 +MUS_ME_B_SMALL = 86 01 +MUS_ME_ZANNEN = 87 01 +MUS_BD_TIME = 88 01 +MUS_TEST1 = 89 01 +MUS_TEST2 = 8A 01 +MUS_TEST3 = 8B 01 +MUS_TEST4 = 8C 01 +MUS_TEST = 8D 01 +MUS_GOMACHI0 = 8E 01 +MUS_GOTOWN = 8F 01 +MUS_POKECEN = 90 01 +MUS_NEXTROAD = 91 01 +MUS_GRANROAD = 92 01 +MUS_CYCLING = 93 01 +MUS_FRIENDLY = 94 01 +MUS_MISHIRO = 95 01 +MUS_TOZAN = 96 01 +MUS_GIRLEYE = 97 01 +MUS_MINAMO = 98 01 +MUS_ASHROAD = 99 01 +MUS_EVENT0 = 9A 01 +MUS_DEEPDEEP = 9B 01 +MUS_KACHI1 = 9C 01 +MUS_TITLE3 = 9D 01 +MUS_DEMO1 = 9E 01 +MUS_GIRL_SUP = 9F 01 +MUS_HAGESHII = A0 01 +MUS_KAKKOII = A1 01 +MUS_KAZANBAI = A2 01 +MUS_AQA_0 = A3 01 +MUS_TSURETEK = A4 01 +MUS_BOY_SUP = A5 01 +MUS_RAINBOW = A6 01 +MUS_AYASII = A7 01 +MUS_KACHI4 = A8 01 +MUS_ROPEWAY = A9 01 +MUS_CASINO = AA 01 +MUS_HIGHTOWN = AB 01 +MUS_SAFARI = AC 01 +MUS_C_ROAD = AD 01 +MUS_AJITO = AE 01 +MUS_M_BOAT = AF 01 +MUS_M_DUNGON = B0 01 +MUS_FINECITY = B1 01 +MUS_MACHUPI = B2 01 +MUS_P_SCHOOL = B3 01 +MUS_DENDOU = B4 01 +MUS_TONEKUSA = B5 01 +MUS_MABOROSI = B6 01 +MUS_CON_FAN = B7 01 +MUS_CONTEST0 = B8 01 +MUS_MGM0 = B9 01 +MUS_T_BATTLE = BA 01 +MUS_OOAME = BB 01 +MUS_HIDERI = BC 01 +MUS_RUNECITY = BD 01 +MUS_CON_K = BE 01 +MUS_EIKOU_R = BF 01 +MUS_KARAKURI = C0 01 +MUS_HUTAGO = C1 01 +MUS_SITENNOU = C2 01 +MUS_YAMA_EYE = C3 01 +MUS_CONLOBBY = C4 01 +MUS_INTER_V = C5 01 +MUS_DAIGO = C6 01 +MUS_THANKFOR = C7 01 +MUS_END = C8 01 +MUS_B_FRONTIER = C9 01 +MUS_B_ARENA = CA 01 +MUS_ME_POINTGET = CB 01 +MUS_ME_TORE_EYE = CC 01 +MUS_PYRAMID = CD 01 +MUS_PYRAMID_TOP = CE 01 +MUS_B_PALACE = CF 01 +MUS_REKKUU_KOURIN = D0 01 +MUS_SATTOWER = D1 01 +MUS_ME_SYMBOLGET = D2 01 +MUS_B_DOME = D3 01 +MUS_B_TUBE = D4 01 +MUS_B_FACTORY = D5 01 +MUS_VS_REKKU = D6 01 +MUS_VS_FRONT = D7 01 +MUS_VS_MEW = D8 01 +MUS_B_DOME1 = D9 01 +MUS_BATTLE27 = DA 01 +MUS_BATTLE31 = DB 01 +MUS_BATTLE20 = DC 01 +MUS_BATTLE32 = DD 01 +MUS_BATTLE33 = DE 01 +MUS_BATTLE36 = DF 01 +MUS_BATTLE34 = E0 01 +MUS_BATTLE35 = E1 01 +MUS_BATTLE38 = E2 01 +MUS_BATTLE30 = E3 01 +MUS_RG_ANNAI = E4 01 +MUS_RG_SLOT = E5 01 +MUS_RG_AJITO = E6 01 +MUS_RG_GYM = E7 01 +MUS_RG_PURIN = E8 01 +MUS_RG_DEMO = E9 01 +MUS_RG_TITLE = EA 01 +MUS_RG_GUREN = EB 01 +MUS_RG_SHION = EC 01 +MUS_RG_KAIHUKU = ED 01 +MUS_RG_CYCLING = EE 01 +MUS_RG_ROCKET = EF 01 +MUS_RG_SHOUJO = F0 01 +MUS_RG_SHOUNEN = F1 01 +MUS_RG_DENDOU = F2 01 +MUS_RG_T_MORI = F3 01 +MUS_RG_OTSUKIMI = F4 01 +MUS_RG_POKEYASHI = F5 01 +MUS_RG_ENDING = F6 01 +MUS_RG_LOAD01 = F7 01 +MUS_RG_OPENING = F8 01 +MUS_RG_LOAD02 = F9 01 +MUS_RG_LOAD03 = FA 01 +MUS_RG_CHAMP_R = FB 01 +MUS_RG_VS_GYM = FC 01 +MUS_RG_VS_TORE = FD 01 +MUS_RG_VS_YASEI = FE 01 +MUS_RG_VS_LAST = FF 01 +MUS_RG_MASARA = 00 02 +MUS_RG_KENKYU = 01 02 +MUS_RG_OHKIDO = 02 02 +MUS_RG_POKECEN = 03 02 +MUS_RG_SANTOAN = 04 02 +MUS_RG_NAMINORI = 05 02 +MUS_RG_P_TOWER = 06 02 +MUS_RG_SHIRUHU = 07 02 +MUS_RG_HANADA = 08 02 +MUS_RG_TAMAMUSI = 09 02 +MUS_RG_WIN_TRE = 0A 02 +MUS_RG_WIN_YASEI = 0B 02 +MUS_RG_WIN_GYM = 0C 02 +MUS_RG_KUCHIBA = 0D 02 +MUS_RG_NIBI = 0E 02 +MUS_RG_RIVAL1 = 0F 02 +MUS_RG_RIVAL2 = 10 02 +MUS_RG_FAN2 = 11 02 +MUS_RG_FAN5 = 12 02 +MUS_RG_FAN6 = 13 02 +MUS_ME_RG_PHOTO = 14 02 +MUS_RG_TITLEROG = 15 02 +MUS_RG_GET_YASEI = 16 02 +MUS_RG_SOUSA = 17 02 +MUS_RG_SEKAIKAN = 18 02 +MUS_RG_SEIBETU = 19 02 +MUS_RG_JUMP = 1A 02 +MUS_RG_UNION = 1B 02 +MUS_RG_NETWORK = 1C 02 +MUS_RG_OKURIMONO = 1D 02 +MUS_RG_KINOMIKUI = 1E 02 +MUS_RG_NANADUNGEON = 1F 02 +MUS_RG_OSHIE_TV = 20 02 +MUS_RG_NANASHIMA = 21 02 +MUS_RG_NANAISEKI = 22 02 +MUS_RG_NANA123 = 23 02 +MUS_RG_NANA45 = 24 02 +MUS_RG_NANA67 = 25 02 +MUS_RG_POKEFUE = 26 02 +MUS_RG_VS_DEO = 27 02 +MUS_RG_VS_MYU2 = 28 02 +MUS_RG_VS_DEN = 29 02 +MUS_RG_EXEYE = 2A 02 +MUS_RG_DEOEYE = 2B 02 +MUS_RG_T_TOWER = 2C 02 +MUS_RG_SLOWMASARA = 2D 02 +MUS_RG_TVNOIZE = 2E 02 +PH_TRAP_BLEND = 2F 02 +PH_TRAP_HELD = 30 02 +PH_TRAP_SOLO = 31 02 +PH_FACE_BLEND = 32 02 +PH_FACE_HELD = 33 02 +PH_FACE_SOLO = 34 02 +PH_CLOTH_BLEND = 35 02 +PH_CLOTH_HELD = 36 02 +PH_CLOTH_SOLO = 37 02 +PH_DRESS_BLEND = 38 02 +PH_DRESS_HELD = 39 02 +PH_DRESS_SOLO = 3A 02 +PH_FLEECE_BLEND = 3B 02 +PH_FLEECE_HELD = 3C 02 +PH_FLEECE_SOLO = 3D 02 +PH_KIT_BLEND = 3E 02 +PH_KIT_HELD = 3F 02 +PH_KIT_SOLO = 40 02 +PH_PRICE_BLEND = 41 02 +PH_PRICE_HELD = 42 02 +PH_PRICE_SOLO = 43 02 +PH_LOT_BLEND = 44 02 +PH_LOT_HELD = 45 02 +PH_LOT_SOLO = 46 02 +PH_GOAT_BLEND = 47 02 +PH_GOAT_HELD = 48 02 +PH_GOAT_SOLO = 49 02 +PH_THOUGHT_BLEND = 4A 02 +PH_THOUGHT_HELD = 4B 02 +PH_THOUGHT_SOLO = 4C 02 +PH_CHOICE_BLEND = 4D 02 +PH_CHOICE_HELD = 4E 02 +PH_CHOICE_SOLO = 4F 02 +PH_MOUTH_BLEND = 50 02 +PH_MOUTH_HELD = 51 02 +PH_MOUTH_SOLO = 52 02 +PH_FOOT_BLEND = 53 02 +PH_FOOT_HELD = 54 02 +PH_FOOT_SOLO = 55 02 +PH_GOOSE_BLEND = 56 02 +PH_GOOSE_HELD = 57 02 +PH_GOOSE_SOLO = 58 02 +PH_STRUT_BLEND = 59 02 +PH_STRUT_HELD = 5A 02 +PH_STRUT_SOLO = 5B 02 +PH_CURE_BLEND = 5C 02 +PH_CURE_HELD = 5D 02 +PH_CURE_SOLO = 5E 02 +PH_NURSE_BLEND = 5F 02 +PH_NURSE_HELD = 60 02 +PH_NURSE_SOLO = 61 02 + +A_BUTTON = F8 00 +B_BUTTON = F8 01 +DPAD_UPDOWN = F8 0A +DPAD_NONE = F8 0C + +UP_ARROW_2 = F9 00 +DOWN_ARROW_2 = F9 01 +LEFT_ARROW_2 = F9 02 +RIGHT_ARROW_2 = F9 03 +PLUS = F9 04 +LV_2 = F9 05 +PP = F9 06 +ID = F9 07 +NO = F9 08 +UNDERSCORE = F9 09 +CIRCLE_1 = F9 0A +CIRCLE_2 = F9 0B +CIRCLE_3 = F9 0C +CIRCLE_4 = F9 0D +CIRCLE_5 = F9 0E +CIRCLE_6 = F9 0F +CIRCLE_7 = F9 10 +CIRCLE_8 = F9 11 +CIRCLE_9 = F9 12 +ROUND_LEFT_PAREN = F9 13 +ROUND_RIGHT_PAREN = F9 14 +CIRCLE_DOT = F9 15 +TRIANGLE = F9 16 +BIG_MULT_X = F9 17 + +EMOJI_UNDERSCORE = F9 D0 +EMOJI_PIPE = F9 D1 +EMOJI_HIGHBAR = F9 D2 +EMOJI_TILDE = F9 D3 +EMOJI_LEFT_PAREN = F9 D4 +EMOJI_RIGHT_PAREN = F9 D5 +EMOJI_UNION = F9 D6 @ ⊂ +EMOJI_GREATER_THAN = F9 D7 +EMOJI_LEFT_EYE = F9 D8 +EMOJI_RIGHT_EYE = F9 D9 +EMOJI_AT = F9 DA +EMOJI_SEMICOLON = F9 DB +EMOJI_PLUS = F9 DC +EMOJI_MINUS = F9 DD +EMOJI_EQUALS = F9 DE +EMOJI_SPIRAL = F9 DF +EMOJI_TONGUE = F9 E0 +EMOJI_TRIANGLE_OUTLINE = F9 E1 +EMOJI_ACUTE = F9 E2 +EMOJI_GRAVE = F9 E3 +EMOJI_CIRCLE = F9 E4 +EMOJI_TRIANGLE = F9 E5 +EMOJI_SQUARE = F9 E6 +EMOJI_HEART = F9 E7 +EMOJI_MOON = F9 E8 +EMOJI_NOTE = F9 E9 +EMOJI_BALL = F9 EA +EMOJI_BOLT = F9 EB +EMOJI_LEAF = F9 EC +EMOJI_FIRE = F9 ED +EMOJI_WATER = F9 EE +EMOJI_LEFT_FIST = F9 EF +EMOJI_RIGHT_FIST = F9 F0 +EMOJI_BIGWHEEL = F9 F1 +EMOJI_SMALLWHEEL = F9 F2 +EMOJI_SPHERE = F9 F3 +EMOJI_IRRITATED = F9 F4 +EMOJI_MISCHIEVOUS = F9 F5 +EMOJI_HAPPY = F9 F6 +EMOJI_ANGRY = F9 F7 +EMOJI_SURPRISED = F9 F8 +EMOJI_BIGSMILE = F9 F9 +EMOJI_EVIL = F9 FA +EMOJI_TIRED = F9 FB +EMOJI_NEUTRAL = F9 FC +EMOJI_SHOCKED = F9 FD +EMOJI_BIGANGER = F9 FE + +'\l' = FA @ scroll up window text +'\p' = FB @ new paragraph +'\n' = FE @ new line diff --git a/berry_fix/data/data.s b/berry_fix/data/data.s new file mode 100644 index 000000000..dbb86b13b --- /dev/null +++ b/berry_fix/data/data.s @@ -0,0 +1,4 @@ + .section .rodata + +_data_2f0:: + .incbin "data/payload.gba.lz" diff --git a/berry_fix/ld_script.sed b/berry_fix/ld_script.sed new file mode 100644 index 000000000..b91542b6f --- /dev/null +++ b/berry_fix/ld_script.sed @@ -0,0 +1,14 @@ +/<EWRAM>/ { + r sym_ewram.ld + d +} + +/<BSS>/ { + r sym_bss.ld + d +} + +/<COMMON>/ { + r sym_common.ld + d +} diff --git a/berry_fix/ld_script.txt b/berry_fix/ld_script.txt new file mode 100644 index 000000000..2edeaef7c --- /dev/null +++ b/berry_fix/ld_script.txt @@ -0,0 +1,31 @@ +ENTRY(_start) + +SECTIONS { + . = 0x2000000; + + .text : + ALIGN(4) + { + asm/loader.o(.text); + } =0 + + . += 0x100; + .rodata : + ALIGN(4) + { + data/data.o(.rodata); + } =0 + + . = 0x2010000; + + ewram (NOLOAD) : + ALIGN(4) + { + gCode = .; + } + + /DISCARD/ : + { + *(*); + } +} diff --git a/berry_fix/payload/Makefile b/berry_fix/payload/Makefile new file mode 100644 index 000000000..e63d74234 --- /dev/null +++ b/berry_fix/payload/Makefile @@ -0,0 +1,159 @@ +include $(DEVKITARM)/base_tools +export CPP := $(PREFIX)cpp +export LD := $(PREFIX)ld + +ifeq ($(OS),Windows_NT) +EXE := .exe +else +EXE := +endif + +SHELL := /bin/bash -o pipefail + +CPPFLAGS := -I ../../tools/agbcc/include -I ../../tools/agbcc -iquote include -nostdinc -undef + +ROM := payload.gba +OBJ_DIR := build +CC1 := ../../tools/agbcc/bin/agbcc$(EXE) +override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm + + +ELF = $(ROM:.gba=.elf) +MAP = $(ROM:.gba=.map) + +C_SUBDIR = src +ASM_SUBDIR = asm +DATA_ASM_SUBDIR = data + +C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR) +ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR) +DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR) + +ASFLAGS := -mcpu=arm7tdmi + +LDFLAGS = -Map ../$(MAP) + +LIB := -L ../../../tools/agbcc/lib -lagb_flash -lsiirtc -lagbsyscall -lgcc + +SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c +GFX := ../../tools/gbagfx/gbagfx$(EXE) +AIF := ../../tools/aif2pcm/aif2pcm$(EXE) +MID := ../../tools/mid2agb/mid2agb$(EXE) +SCANINC := ../../tools/scaninc/scaninc$(EXE) +PREPROC := ../../tools/preproc/preproc$(EXE) +RAMSCRGEN := ../../tools/ramscrgen/ramscrgen$(EXE) +FIX := ../../tools/gbafix/gbafix$(EXE) + +# Clear the default suffixes +.SUFFIXES: +# Don't delete intermediate files +.SECONDARY: +# Delete files that weren't built properly +.DELETE_ON_ERROR: + +# Secondary expansion is required for dependency variables in object rules. +.SECONDEXPANSION: + +.PHONY: rom clean compare tidy + +C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c) +C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS)) + +ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s) +ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS)) + +DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) +DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS)) + +SONG_SRCS := $(wildcard $(SONG_SUBDIR)/*.s) +SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS)) + +MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid) +MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS)) + +OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS) +# OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS)) + +SUBDIRS := $(sort $(dir $(OBJS))) + +$(shell mkdir -p $(SUBDIRS)) + +rom: $(ROM) + +# For contributors to make sure a change didn't affect the contents of the ROM. +compare: $(ROM) + @$(SHA1) rom.sha1 + +clean: tidy + rm -f sound/direct_sound_samples/*.bin + rm -f $(SONG_OBJS) $(MID_OBJS) $(MID_SUBDIR)/*.s + find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + + +tidy: + rm -f $(ROM) $(ELF) $(MAP) + rm -r build/* + +%.s: ; +%.png: ; +%.pal: ; +%.aif: ; + +%.1bpp: %.png ; $(GFX) $< $@ +%.4bpp: %.png ; $(GFX) $< $@ +%.8bpp: %.png ; $(GFX) $< $@ +%.gbapal: %.pal ; $(GFX) $< $@ +%.gbapal: %.png ; $(GFX) $< $@ +%.lz: % ; $(GFX) $< $@ +%.rl: % ; $(GFX) $< $@ + + +ifeq ($(NODEP),1) +$(C_BUILDDIR)/%.o: c_dep := +else +$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) -I include $(C_SUBDIR)/$*.c) +endif + +$(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep) + @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i + @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s + $(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s + +ifeq ($(NODEP),1) +$(ASM_BUILDDIR)/%.o: asm_dep := +else +$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) $(ASM_SUBDIR)/$*.s) +endif + +$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep) + $(AS) $(ASFLAGS) -o $@ $< + +ifeq ($(NODEP),1) +$(DATA_ASM_BUILDDIR)/%.o: data_dep := +else +$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s) +endif + +$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) + $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@ + +$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s + $(AS) $(ASFLAGS) -I sound -o $@ $< + +$(OBJ_DIR)/sym_bss.ld: sym_bss.txt + $(RAMSCRGEN) .bss $< ENGLISH > $@ + +$(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt) + $(RAMSCRGEN) COMMON $< ENGLISH -c $(C_BUILDDIR),common_syms,../../tools/agbcc/lib > $@ + +$(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt + $(RAMSCRGEN) ewram_data $< ENGLISH > $@ + +$(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld + cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../$< | sed "s#tools/#../tools/#g" > ld_script.ld + +$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) + cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../$@ $(LIB) + +$(ROM): $(ELF) + $(OBJCOPY) -O binary $< $@ + diff --git a/berry_fix/payload/asm/crt0.s b/berry_fix/payload/asm/crt0.s new file mode 100644 index 000000000..73da8a38f --- /dev/null +++ b/berry_fix/payload/asm/crt0.s @@ -0,0 +1,83 @@ + .include "../../asm/macros/asm.inc" + .include "../../asm/macros/function.inc" + .include "../../constants/gba_constants.inc" + + .syntax unified + + .text + + .arm + .align 2, 0 + .global Init +Init: + mov r0, PSR_IRQ_MODE + msr cpsr_cf, r0 + ldr sp, sp_irq + mov r0, PSR_SYS_MODE + msr cpsr_cf, r0 + ldr sp, sp_sys + ldr r1, =INTR_VECTOR + ldr r0, =IntrMain + str r0, [r1] + ldr r1, =AgbMain + 1 + mov lr, pc + bx r1 + b Init + + .align 2, 0 +sp_sys: .word IWRAM_END - 0x100 +sp_irq: .word IWRAM_END - 0x60 + + .pool + .size Init, .-Init + + .arm + .align 2, 0 + .global IntrMain +IntrMain: @ 0x2010048 + mov ip, REG_BASE + add r3, ip, OFFSET_REG_IE + ldr r2, [r3] + and r1, r2, r2, lsr #16 + mov r2, #0 + ands r0, r1, #0x2000 + strbne r0, [r3, #-0x17c] +_02010064: + bne _02010064 + ands r0, r1, #0xc0 + bne _020100DC + add r2, r2, #4 + ands r0, r1, #1 + strhne r0, [ip, #-8] + bne _020100DC + add r2, r2, #4 + ands r0, r1, #2 + bne _020100DC + add r2, r2, #4 + ands r0, r1, #4 + bne _020100DC + add r2, r2, #4 + ands r0, r1, #0x100 + bne _020100DC + add r2, r2, #4 + ands r0, r1, #0x200 + bne _020100DC + add r2, r2, #4 + ands r0, r1, #0x400 + bne _020100DC + add r2, r2, #4 + ands r0, r1, #0x800 + bne _020100DC + add r2, r2, #4 + ands r0, r1, #0x1000 + bne _020100DC + add r2, r2, #4 + ands r0, r1, #8 +_020100DC: + strh r0, [r3, #2] + ldr r1, =gIntrTable + add r1, r1, r2 + ldr r0, [r1] + bx r0 + .pool + .size IntrMain, .-IntrMain diff --git a/berry_fix/payload/charmap.txt b/berry_fix/payload/charmap.txt new file mode 100644 index 000000000..a736b40f2 --- /dev/null +++ b/berry_fix/payload/charmap.txt @@ -0,0 +1,1067 @@ +' ' = 00 +'À' = 01 +'Á' = 02 +'Â' = 03 +'Ç' = 04 +'È' = 05 +'É' = 06 +'Ê' = 07 +'Ë' = 08 +'Ì' = 09 +'Î' = 0B +'Ï' = 0C +'Ò' = 0D +'Ó' = 0E +'Ô' = 0F +'Œ' = 10 +'Ù' = 11 +'Ú' = 12 +'Û' = 13 +'Ñ' = 14 +'ß' = 15 +'à' = 16 +'á' = 17 +'ç' = 19 +'è' = 1A +'é' = 1B +'ê' = 1C +'ë' = 1D +'ì' = 1E +'î' = 20 +'ï' = 21 +'ò' = 22 +'ó' = 23 +'ô' = 24 +'œ' = 25 +'ù' = 26 +'ú' = 27 +'û' = 28 +'ñ' = 29 +'º' = 2A +'ª' = 2B +SUPER_ER = 2C +'&' = 2D +'+' = 2E +LV = 34 +'=' = 35 +';' = 36 +'¿' = 51 +'¡' = 52 +PK = 53 +PKMN = 53 54 +POKEBLOCK = 55 56 57 58 59 +'Í' = 5A +'%' = 5B +'(' = 5C +')' = 5D +'â' = 68 +'í' = 6F +UNK_SPACER = 77 +UP_ARROW = 79 +DOWN_ARROW = 7A +LEFT_ARROW = 7B +RIGHT_ARROW = 7C +'0' = A1 +'1' = A2 +'2' = A3 +'3' = A4 +'4' = A5 +'5' = A6 +'6' = A7 +'7' = A8 +'8' = A9 +'9' = AA +'!' = AB +'?' = AC +'.' = AD +'-' = AE +'·' = AF +'…' = B0 +'“' = B1 +'”' = B2 +'‘' = B3 +'’' = B4 +'♂' = B5 +'♀' = B6 +'¥' = B7 +',' = B8 +'×' = B9 +'/' = BA +'A' = BB +'B' = BC +'C' = BD +'D' = BE +'E' = BF +'F' = C0 +'G' = C1 +'H' = C2 +'I' = C3 +'J' = C4 +'K' = C5 +'L' = C6 +'M' = C7 +'N' = C8 +'O' = C9 +'P' = CA +'Q' = CB +'R' = CC +'S' = CD +'T' = CE +'U' = CF +'V' = D0 +'W' = D1 +'X' = D2 +'Y' = D3 +'Z' = D4 +'a' = D5 +'b' = D6 +'c' = D7 +'d' = D8 +'e' = D9 +'f' = DA +'g' = DB +'h' = DC +'i' = DD +'j' = DE +'k' = DF +'l' = E0 +'m' = E1 +'n' = E2 +'o' = E3 +'p' = E4 +'q' = E5 +'r' = E6 +'s' = E7 +'t' = E8 +'u' = E9 +'v' = EA +'w' = EB +'x' = EC +'y' = ED +'z' = EE +'▶' = EF +':' = F0 +'Ä' = F1 +'Ö' = F2 +'Ü' = F3 +'ä' = F4 +'ö' = F5 +'ü' = F6 +TALL_PLUS = FC 0C FB +'$' = FF + +@ Hiragana +'あ' = 01 +'い' = 02 +'う' = 03 +'え' = 04 +'お' = 05 +'か' = 06 +'き' = 07 +'く' = 08 +'け' = 09 +'こ' = 0A +'さ' = 0B +'し' = 0C +'す' = 0D +'せ' = 0E +'そ' = 0F +'た' = 10 +'ち' = 11 +'つ' = 12 +'て' = 13 +'と' = 14 +'な' = 15 +'に' = 16 +'ぬ' = 17 +'ね' = 18 +'の' = 19 +'は' = 1A +'ひ' = 1B +'ふ' = 1C +'へ' = 1D +'ほ' = 1E +'ま' = 1F +'み' = 20 +'む' = 21 +'め' = 22 +'も' = 23 +'や' = 24 +'ゆ' = 25 +'よ' = 26 +'ら' = 27 +'り' = 28 +'る' = 29 +'れ' = 2A +'ろ' = 2B +'わ' = 2C +'を' = 2D +'ん' = 2E +'ぁ' = 2F +'ぃ' = 30 +'ぅ' = 31 +'ぇ' = 32 +'ぉ' = 33 +'ゃ' = 34 +'ゅ' = 35 +'ょ' = 36 +'が' = 37 +'ぎ' = 38 +'ぐ' = 39 +'げ' = 3A +'ご' = 3B +'ざ' = 3C +'じ' = 3D +'ず' = 3E +'ぜ' = 3F +'ぞ' = 40 +'だ' = 41 +'ぢ' = 42 +'づ' = 43 +'で' = 44 +'ど' = 45 +'ば' = 46 +'び' = 47 +'ぶ' = 48 +'べ' = 49 +'ぼ' = 4A +'ぱ' = 4B +'ぴ' = 4C +'ぷ' = 4D +'ぺ' = 4E +'ぽ' = 4F +'っ' = 50 + +@ Katakana +'ア' = 51 +'イ' = 52 +'ウ' = 53 +'エ' = 54 +'オ' = 55 +'カ' = 56 +'キ' = 57 +'ク' = 58 +'ケ' = 59 +'コ' = 5A +'サ' = 5B +'シ' = 5C +'ス' = 5D +'セ' = 5E +'ソ' = 5F +'タ' = 60 +'チ' = 61 +'ツ' = 62 +'テ' = 63 +'ト' = 64 +'ナ' = 65 +'ニ' = 66 +'ヌ' = 67 +'ネ' = 68 +'ノ' = 69 +'ハ' = 6A +'ヒ' = 6B +'フ' = 6C +'ヘ' = 6D +'ホ' = 6E +'マ' = 6F +'ミ' = 70 +'ム' = 71 +'メ' = 72 +'モ' = 73 +'ヤ' = 74 +'ユ' = 75 +'ヨ' = 76 +'ラ' = 77 +'リ' = 78 +'ル' = 79 +'レ' = 7A +'ロ' = 7B +'ワ' = 7C +'ヲ' = 7D +'ン' = 7E +'ァ' = 7F +'ィ' = 80 +'ゥ' = 81 +'ェ' = 82 +'ォ' = 83 +'ャ' = 84 +'ュ' = 85 +'ョ' = 86 +'ガ' = 87 +'ギ' = 88 +'グ' = 89 +'ゲ' = 8A +'ゴ' = 8B +'ザ' = 8C +'ジ' = 8D +'ズ' = 8E +'ゼ' = 8F +'ゾ' = 90 +'ダ' = 91 +'ヂ' = 92 +'ヅ' = 93 +'デ' = 94 +'ド' = 95 +'バ' = 96 +'ビ' = 97 +'ブ' = 98 +'ベ' = 99 +'ボ' = 9A +'パ' = 9B +'ピ' = 9C +'プ' = 9D +'ペ' = 9E +'ポ' = 9F +'ッ' = A0 + +@ Japanese punctuation +' ' = 00 +'!' = AB +'?' = AC +'。' = AD +'ー' = AE +'⋯' = B0 + +STRING = FD + +@ string placeholders +PLAYER = FD 01 +STR_VAR_1 = FD 02 +STR_VAR_2 = FD 03 +STR_VAR_3 = FD 04 +KUN = FD 05 +RIVAL = FD 06 +@ version-dependent strings (originally made for Ruby/Sapphire differences) +@ Emerald uses the Sapphire strings (except for VERSION). +VERSION = FD 07 @ "EMERALD" +AQUA = FD 08 +MAGMA = FD 09 +ARCHIE = FD 0A +MAXIE = FD 0B +KYOGRE = FD 0C +GROUDON = FD 0D + +@ battle string placeholders + +B_BUFF1 = FD 00 +B_BUFF2 = FD 01 +B_COPY_VAR_1 = FD 02 +B_COPY_VAR_2 = FD 03 +B_COPY_VAR_3 = FD 04 +B_PLAYER_MON1_NAME = FD 05 +B_OPPONENT_MON1_NAME = FD 06 +B_PLAYER_MON2_NAME = FD 07 +B_OPPONENT_MON2_NAME = FD 08 +B_LINK_PLAYER_MON1_NAME = FD 09 +B_LINK_OPPONENT_MON1_NAME = FD 0A +B_LINK_PLAYER_MON2_NAME = FD 0B +B_LINK_OPPONENT_MON2_NAME = FD 0C +B_ATK_NAME_WITH_PREFIX_MON1 = FD 0D +B_ATK_PARTNER_NAME = FD 0E +B_ATK_NAME_WITH_PREFIX = FD 0F +B_DEF_NAME_WITH_PREFIX = FD 10 +B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBattler +B_ACTIVE_NAME_WITH_PREFIX = FD 12 +B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13 +B_CURRENT_MOVE = FD 14 +B_LAST_MOVE = FD 15 +B_LAST_ITEM = FD 16 +B_LAST_ABILITY = FD 17 +B_ATK_ABILITY = FD 18 +B_DEF_ABILITY = FD 19 +B_SCR_ACTIVE_ABILITY = FD 1A +B_EFF_ABILITY = FD 1B +B_TRAINER1_CLASS = FD 1C +B_TRAINER1_NAME = FD 1D +B_LINK_PLAYER_NAME = FD 1E +B_LINK_PARTNER_NAME = FD 1F +B_LINK_OPPONENT1_NAME = FD 20 +B_LINK_OPPONENT2_NAME = FD 21 +B_LINK_SCR_TRAINER_NAME = FD 22 +B_PLAYER_NAME = FD 23 +B_TRAINER1_LOSE_TEXT = FD 24 +B_TRAINER1_WIN_TEXT = FD 25 +B_26 = FD 26 +B_PC_CREATOR_NAME = FD 27 +B_ATK_PREFIX1 = FD 28 +B_DEF_PREFIX1 = FD 29 +B_ATK_PREFIX2 = FD 2A +B_DEF_PREFIX2 = FD 2B +B_ATK_PREFIX3 = FD 2C +B_DEF_PREFIX3 = FD 2D +B_TRAINER2_CLASS = FD 2E +B_TRAINER2_NAME = FD 2F +B_TRAINER2_LOSE_TEXT = FD 30 +B_TRAINER2_WIN_TEXT = FD 31 +B_PARTNER_CLASS = FD 32 +B_PARTNER_NAME = FD 33 +B_BUFF3 = FD 34 + +@ indicates the end of a town/city name (before " TOWN" or " CITY") +NAME_END = FC 00 + +@ special 0xF7 character +SPECIAL_F7 = F7 + +@ more text functions + +COLOR = FC 01 @ use a color listed below right after +HIGHLIGHT = FC 02 @ same as fc 01 +SHADOW = FC 03 @ same as fc 01 +COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 bytes +PALETTE = FC 05 @ used in credits +SIZE = FC 06 @ note that anything other than "SMALL" is invalid +UNKNOWN_7 = FC 07 +PAUSE = FC 08 @ manually print the wait byte after this, havent mapped them +PAUSE_UNTIL_PRESS = FC 09 +UNKNOWN_A = FC 0A +PLAY_BGM = FC 0B +ESCAPE = FC 0C +SHIFT_TEXT = FC 0D +UNKNOWN_E = FC 0E +UNKNOWN_F = FC 0F +PLAY_SE = FC 10 +CLEAR = FC 11 +SKIP = FC 12 +CLEAR_TO = FC 13 +UNKNOWN_14 = FC 14 +JPN = FC 15 +ENG = FC 16 +PAUSE_MUSIC = FC 17 +RESUME_MUSIC = FC 18 + +@ colors + +TRANSPARENT = 00 +WHITE = 01 +DARK_GREY = 02 +LIGHT_GREY = 03 +RED = 04 +LIGHT_RED = 05 +GREEN = 06 +LIGHT_GREEN = 07 +BLUE = 08 +LIGHT_BLUE = 09 +@ these next colors can be set to anything arbitrary at runtime +@ usually though they'll have the textbox border colors as described below +DYNAMIC_COLOR1 = 0A @ white +DYNAMIC_COLOR2 = 0B @ white with a tinge of green +DYNAMIC_COLOR3 = 0C @ white 2 +DYNAMIC_COLOR4 = 0D @ aquamarine +DYNAMIC_COLOR5 = 0E @ blue-green +DYNAMIC_COLOR6 = 0F @ cerulean + +@ sound and music + +MUS_DUMMY = 00 00 +SE_KAIFUKU = 01 00 +SE_PC_LOGIN = 02 00 +SE_PC_OFF = 03 00 +SE_PC_ON = 04 00 +SE_SELECT = 05 00 +SE_WIN_OPEN = 06 00 +SE_WALL_HIT = 07 00 +SE_DOOR = 08 00 +SE_KAIDAN = 09 00 +SE_DANSA = 0A 00 +SE_JITENSYA = 0B 00 +SE_KOUKA_L = 0C 00 +SE_KOUKA_M = 0D 00 +SE_KOUKA_H = 0E 00 +SE_BOWA2 = 0F 00 +SE_POKE_DEAD = 10 00 +SE_NIGERU = 11 00 +SE_JIDO_DOA = 12 00 +SE_NAMINORI = 13 00 +SE_BAN = 14 00 +SE_PIN = 15 00 +SE_BOO = 16 00 +SE_BOWA = 17 00 +SE_JYUNI = 18 00 +SE_A = 19 00 +SE_I = 1A 00 +SE_U = 1B 00 +SE_E = 1C 00 +SE_O = 1D 00 +SE_N = 1E 00 +SE_SEIKAI = 1F 00 +SE_HAZURE = 20 00 +SE_EXP = 21 00 +SE_JITE_PYOKO = 22 00 +SE_MU_PACHI = 23 00 +SE_TK_KASYA = 24 00 +SE_FU_ZAKU = 25 00 +SE_FU_ZAKU2 = 26 00 +SE_FU_ZUZUZU = 27 00 +SE_RU_GASHIN = 28 00 +SE_RU_GASYAN = 29 00 +SE_RU_BARI = 2A 00 +SE_RU_HYUU = 2B 00 +SE_KI_GASYAN = 2C 00 +SE_TK_WARPIN = 2D 00 +SE_TK_WARPOUT = 2E 00 +SE_TU_SAA = 2F 00 +SE_HI_TURUN = 30 00 +SE_TRACK_MOVE = 31 00 +SE_TRACK_STOP = 32 00 +SE_TRACK_HAIKI = 33 00 +SE_TRACK_DOOR = 34 00 +SE_MOTER = 35 00 +SE_CARD = 36 00 +SE_SAVE = 37 00 +SE_KON = 38 00 +SE_KON2 = 39 00 +SE_KON3 = 3A 00 +SE_KON4 = 3B 00 +SE_SUIKOMU = 3C 00 +SE_NAGERU = 3D 00 +SE_TOY_C = 3E 00 +SE_TOY_D = 3F 00 +SE_TOY_E = 40 00 +SE_TOY_F = 41 00 +SE_TOY_G = 42 00 +SE_TOY_A = 43 00 +SE_TOY_B = 44 00 +SE_TOY_C1 = 45 00 +SE_MIZU = 46 00 +SE_HASHI = 47 00 +SE_DAUGI = 48 00 +SE_PINPON = 49 00 +SE_FUUSEN1 = 4A 00 +SE_FUUSEN2 = 4B 00 +SE_FUUSEN3 = 4C 00 +SE_TOY_KABE = 4D 00 +SE_TOY_DANGO = 4E 00 +SE_DOKU = 4F 00 +SE_ESUKA = 50 00 +SE_T_AME = 51 00 +SE_T_AME_E = 52 00 +SE_T_OOAME = 53 00 +SE_T_OOAME_E = 54 00 +SE_T_KOAME = 55 00 +SE_T_KOAME_E = 56 00 +SE_T_KAMI = 57 00 +SE_T_KAMI2 = 58 00 +SE_ELEBETA = 59 00 +SE_HINSI = 5A 00 +SE_EXPMAX = 5B 00 +SE_TAMAKORO = 5C 00 +SE_TAMAKORO_E = 5D 00 +SE_BASABASA = 5E 00 +SE_REGI = 5F 00 +SE_C_GAJI = 60 00 +SE_C_MAKU_U = 61 00 +SE_C_MAKU_D = 62 00 +SE_C_PASI = 63 00 +SE_C_SYU = 64 00 +SE_C_PIKON = 65 00 +SE_REAPOKE = 66 00 +SE_OP_BASYU = 67 00 +SE_BT_START = 68 00 +SE_DENDOU = 69 00 +SE_JIHANKI = 6A 00 +SE_TAMA = 6B 00 +SE_Z_SCROLL = 6C 00 +SE_Z_PAGE = 6D 00 +SE_PN_ON = 6E 00 +SE_PN_OFF = 6F 00 +SE_Z_SEARCH = 70 00 +SE_TAMAGO = 71 00 +SE_TB_START = 72 00 +SE_TB_KON = 73 00 +SE_TB_KARA = 74 00 +SE_BIDORO = 75 00 +SE_W085 = 76 00 +SE_W085B = 77 00 +SE_W231 = 78 00 +SE_W171 = 79 00 +SE_W233 = 7A 00 +SE_W233B = 7B 00 +SE_W145 = 7C 00 +SE_W145B = 7D 00 +SE_W145C = 7E 00 +SE_W240 = 7F 00 +SE_W015 = 80 00 +SE_W081 = 81 00 +SE_W081B = 82 00 +SE_W088 = 83 00 +SE_W016 = 84 00 +SE_W016B = 85 00 +SE_W003 = 86 00 +SE_W104 = 87 00 +SE_W013 = 88 00 +SE_W196 = 89 00 +SE_W086 = 8A 00 +SE_W004 = 8B 00 +SE_W025 = 8C 00 +SE_W025B = 8D 00 +SE_W152 = 8E 00 +SE_W026 = 8F 00 +SE_W172 = 90 00 +SE_W172B = 91 00 +SE_W053 = 92 00 +SE_W007 = 93 00 +SE_W092 = 94 00 +SE_W221 = 95 00 +SE_W221B = 96 00 +SE_W052 = 97 00 +SE_W036 = 98 00 +SE_W059 = 99 00 +SE_W059B = 9A 00 +SE_W010 = 9B 00 +SE_W011 = 9C 00 +SE_W017 = 9D 00 +SE_W019 = 9E 00 +SE_W028 = 9F 00 +SE_W013B = A0 00 +SE_W044 = A1 00 +SE_W029 = A2 00 +SE_W057 = A3 00 +SE_W056 = A4 00 +SE_W250 = A5 00 +SE_W030 = A6 00 +SE_W039 = A7 00 +SE_W054 = A8 00 +SE_W077 = A9 00 +SE_W020 = AA 00 +SE_W082 = AB 00 +SE_W047 = AC 00 +SE_W195 = AD 00 +SE_W006 = AE 00 +SE_W091 = AF 00 +SE_W146 = B0 00 +SE_W120 = B1 00 +SE_W153 = B2 00 +SE_W071B = B3 00 +SE_W071 = B4 00 +SE_W103 = B5 00 +SE_W062 = B6 00 +SE_W062B = B7 00 +SE_W048 = B8 00 +SE_W187 = B9 00 +SE_W118 = BA 00 +SE_W155 = BB 00 +SE_W122 = BC 00 +SE_W060 = BD 00 +SE_W185 = BE 00 +SE_W014 = BF 00 +SE_W043 = C0 00 +SE_W207 = C1 00 +SE_W207B = C2 00 +SE_W215 = C3 00 +SE_W109 = C4 00 +SE_W173 = C5 00 +SE_W280 = C6 00 +SE_W202 = C7 00 +SE_W060B = C8 00 +SE_W076 = C9 00 +SE_W080 = CA 00 +SE_W100 = CB 00 +SE_W107 = CC 00 +SE_W166 = CD 00 +SE_W129 = CE 00 +SE_W115 = CF 00 +SE_W112 = D0 00 +SE_W197 = D1 00 +SE_W199 = D2 00 +SE_W236 = D3 00 +SE_W204 = D4 00 +SE_W268 = D5 00 +SE_W070 = D6 00 +SE_W063 = D7 00 +SE_W127 = D8 00 +SE_W179 = D9 00 +SE_W151 = DA 00 +SE_W201 = DB 00 +SE_W161 = DC 00 +SE_W161B = DD 00 +SE_W227 = DE 00 +SE_W227B = DF 00 +SE_W226 = E0 00 +SE_W208 = E1 00 +SE_W213 = E2 00 +SE_W213B = E3 00 +SE_W234 = E4 00 +SE_W260 = E5 00 +SE_W328 = E6 00 +SE_W320 = E7 00 +SE_W255 = E8 00 +SE_W291 = E9 00 +SE_W089 = EA 00 +SE_W239 = EB 00 +SE_W230 = EC 00 +SE_W281 = ED 00 +SE_W327 = EE 00 +SE_W287 = EF 00 +SE_W257 = F0 00 +SE_W253 = F1 00 +SE_W258 = F2 00 +SE_W322 = F3 00 +SE_W298 = F4 00 +SE_W287B = F5 00 +SE_W114 = F6 00 +SE_W063B = F7 00 +SE_RG_W_DOOR = F8 00 +SE_RG_CARD1 = F9 00 +SE_RG_CARD2 = FA 00 +SE_RG_CARD3 = FB 00 +SE_RG_BAG1 = FC 00 +SE_RG_BAG2 = FD 00 +SE_RG_GETTING = FE 00 +SE_RG_SHOP = FF 00 +SE_RG_KITEKI = 00 01 +SE_RG_HELP_OP = 01 01 +SE_RG_HELP_CL = 02 01 +SE_RG_HELP_NG = 03 01 +SE_RG_DEOMOV = 04 01 +SE_RG_EXCELLENT = 05 01 +SE_RG_NAWAMISS = 06 01 +SE_TOREEYE = 07 01 +SE_TOREOFF = 08 01 +SE_HANTEI1 = 09 01 +SE_HANTEI2 = 0A 01 +SE_CURTAIN = 0B 01 +SE_CURTAIN1 = 0C 01 +SE_USSOKI = 0D 01 +MUS_TETSUJI = 5E 01 +MUS_FIELD13 = 5F 01 +MUS_KACHI22 = 60 01 +MUS_KACHI2 = 61 01 +MUS_KACHI3 = 62 01 +MUS_KACHI5 = 63 01 +MUS_PCC = 64 01 +MUS_NIBI = 65 01 +MUS_SUIKUN = 66 01 +MUS_DOORO1 = 67 01 +MUS_DOORO_X1 = 68 01 +MUS_DOORO_X3 = 69 01 +MUS_MACHI_S2 = 6A 01 +MUS_MACHI_S4 = 6B 01 +MUS_GIM = 6C 01 +MUS_NAMINORI = 6D 01 +MUS_DAN01 = 6E 01 +MUS_FANFA1 = 6F 01 +MUS_ME_ASA = 70 01 +MUS_ME_BACHI = 71 01 +MUS_FANFA4 = 72 01 +MUS_FANFA5 = 73 01 +MUS_ME_WAZA = 74 01 +MUS_BIJYUTU = 75 01 +MUS_DOORO_X4 = 76 01 +MUS_FUNE_KAN = 77 01 +MUS_ME_SHINKA = 78 01 +MUS_SHINKA = 79 01 +MUS_ME_WASURE = 7A 01 +MUS_SYOUJOEYE = 7B 01 +MUS_BOYEYE = 7C 01 +MUS_DAN02 = 7D 01 +MUS_MACHI_S3 = 7E 01 +MUS_ODAMAKI = 7F 01 +MUS_B_TOWER = 80 01 +MUS_SWIMEYE = 81 01 +MUS_DAN03 = 82 01 +MUS_ME_KINOMI = 83 01 +MUS_ME_TAMA = 84 01 +MUS_ME_B_BIG = 85 01 +MUS_ME_B_SMALL = 86 01 +MUS_ME_ZANNEN = 87 01 +MUS_BD_TIME = 88 01 +MUS_TEST1 = 89 01 +MUS_TEST2 = 8A 01 +MUS_TEST3 = 8B 01 +MUS_TEST4 = 8C 01 +MUS_TEST = 8D 01 +MUS_GOMACHI0 = 8E 01 +MUS_GOTOWN = 8F 01 +MUS_POKECEN = 90 01 +MUS_NEXTROAD = 91 01 +MUS_GRANROAD = 92 01 +MUS_CYCLING = 93 01 +MUS_FRIENDLY = 94 01 +MUS_MISHIRO = 95 01 +MUS_TOZAN = 96 01 +MUS_GIRLEYE = 97 01 +MUS_MINAMO = 98 01 +MUS_ASHROAD = 99 01 +MUS_EVENT0 = 9A 01 +MUS_DEEPDEEP = 9B 01 +MUS_KACHI1 = 9C 01 +MUS_TITLE3 = 9D 01 +MUS_DEMO1 = 9E 01 +MUS_GIRL_SUP = 9F 01 +MUS_HAGESHII = A0 01 +MUS_KAKKOII = A1 01 +MUS_KAZANBAI = A2 01 +MUS_AQA_0 = A3 01 +MUS_TSURETEK = A4 01 +MUS_BOY_SUP = A5 01 +MUS_RAINBOW = A6 01 +MUS_AYASII = A7 01 +MUS_KACHI4 = A8 01 +MUS_ROPEWAY = A9 01 +MUS_CASINO = AA 01 +MUS_HIGHTOWN = AB 01 +MUS_SAFARI = AC 01 +MUS_C_ROAD = AD 01 +MUS_AJITO = AE 01 +MUS_M_BOAT = AF 01 +MUS_M_DUNGON = B0 01 +MUS_FINECITY = B1 01 +MUS_MACHUPI = B2 01 +MUS_P_SCHOOL = B3 01 +MUS_DENDOU = B4 01 +MUS_TONEKUSA = B5 01 +MUS_MABOROSI = B6 01 +MUS_CON_FAN = B7 01 +MUS_CONTEST0 = B8 01 +MUS_MGM0 = B9 01 +MUS_T_BATTLE = BA 01 +MUS_OOAME = BB 01 +MUS_HIDERI = BC 01 +MUS_RUNECITY = BD 01 +MUS_CON_K = BE 01 +MUS_EIKOU_R = BF 01 +MUS_KARAKURI = C0 01 +MUS_HUTAGO = C1 01 +MUS_SITENNOU = C2 01 +MUS_YAMA_EYE = C3 01 +MUS_CONLOBBY = C4 01 +MUS_INTER_V = C5 01 +MUS_DAIGO = C6 01 +MUS_THANKFOR = C7 01 +MUS_END = C8 01 +MUS_B_FRONTIER = C9 01 +MUS_B_ARENA = CA 01 +MUS_ME_POINTGET = CB 01 +MUS_ME_TORE_EYE = CC 01 +MUS_PYRAMID = CD 01 +MUS_PYRAMID_TOP = CE 01 +MUS_B_PALACE = CF 01 +MUS_REKKUU_KOURIN = D0 01 +MUS_SATTOWER = D1 01 +MUS_ME_SYMBOLGET = D2 01 +MUS_B_DOME = D3 01 +MUS_B_TUBE = D4 01 +MUS_B_FACTORY = D5 01 +MUS_VS_REKKU = D6 01 +MUS_VS_FRONT = D7 01 +MUS_VS_MEW = D8 01 +MUS_B_DOME1 = D9 01 +MUS_BATTLE27 = DA 01 +MUS_BATTLE31 = DB 01 +MUS_BATTLE20 = DC 01 +MUS_BATTLE32 = DD 01 +MUS_BATTLE33 = DE 01 +MUS_BATTLE36 = DF 01 +MUS_BATTLE34 = E0 01 +MUS_BATTLE35 = E1 01 +MUS_BATTLE38 = E2 01 +MUS_BATTLE30 = E3 01 +MUS_RG_ANNAI = E4 01 +MUS_RG_SLOT = E5 01 +MUS_RG_AJITO = E6 01 +MUS_RG_GYM = E7 01 +MUS_RG_PURIN = E8 01 +MUS_RG_DEMO = E9 01 +MUS_RG_TITLE = EA 01 +MUS_RG_GUREN = EB 01 +MUS_RG_SHION = EC 01 +MUS_RG_KAIHUKU = ED 01 +MUS_RG_CYCLING = EE 01 +MUS_RG_ROCKET = EF 01 +MUS_RG_SHOUJO = F0 01 +MUS_RG_SHOUNEN = F1 01 +MUS_RG_DENDOU = F2 01 +MUS_RG_T_MORI = F3 01 +MUS_RG_OTSUKIMI = F4 01 +MUS_RG_POKEYASHI = F5 01 +MUS_RG_ENDING = F6 01 +MUS_RG_LOAD01 = F7 01 +MUS_RG_OPENING = F8 01 +MUS_RG_LOAD02 = F9 01 +MUS_RG_LOAD03 = FA 01 +MUS_RG_CHAMP_R = FB 01 +MUS_RG_VS_GYM = FC 01 +MUS_RG_VS_TORE = FD 01 +MUS_RG_VS_YASEI = FE 01 +MUS_RG_VS_LAST = FF 01 +MUS_RG_MASARA = 00 02 +MUS_RG_KENKYU = 01 02 +MUS_RG_OHKIDO = 02 02 +MUS_RG_POKECEN = 03 02 +MUS_RG_SANTOAN = 04 02 +MUS_RG_NAMINORI = 05 02 +MUS_RG_P_TOWER = 06 02 +MUS_RG_SHIRUHU = 07 02 +MUS_RG_HANADA = 08 02 +MUS_RG_TAMAMUSI = 09 02 +MUS_RG_WIN_TRE = 0A 02 +MUS_RG_WIN_YASEI = 0B 02 +MUS_RG_WIN_GYM = 0C 02 +MUS_RG_KUCHIBA = 0D 02 +MUS_RG_NIBI = 0E 02 +MUS_RG_RIVAL1 = 0F 02 +MUS_RG_RIVAL2 = 10 02 +MUS_RG_FAN2 = 11 02 +MUS_RG_FAN5 = 12 02 +MUS_RG_FAN6 = 13 02 +MUS_ME_RG_PHOTO = 14 02 +MUS_RG_TITLEROG = 15 02 +MUS_RG_GET_YASEI = 16 02 +MUS_RG_SOUSA = 17 02 +MUS_RG_SEKAIKAN = 18 02 +MUS_RG_SEIBETU = 19 02 +MUS_RG_JUMP = 1A 02 +MUS_RG_UNION = 1B 02 +MUS_RG_NETWORK = 1C 02 +MUS_RG_OKURIMONO = 1D 02 +MUS_RG_KINOMIKUI = 1E 02 +MUS_RG_NANADUNGEON = 1F 02 +MUS_RG_OSHIE_TV = 20 02 +MUS_RG_NANASHIMA = 21 02 +MUS_RG_NANAISEKI = 22 02 +MUS_RG_NANA123 = 23 02 +MUS_RG_NANA45 = 24 02 +MUS_RG_NANA67 = 25 02 +MUS_RG_POKEFUE = 26 02 +MUS_RG_VS_DEO = 27 02 +MUS_RG_VS_MYU2 = 28 02 +MUS_RG_VS_DEN = 29 02 +MUS_RG_EXEYE = 2A 02 +MUS_RG_DEOEYE = 2B 02 +MUS_RG_T_TOWER = 2C 02 +MUS_RG_SLOWMASARA = 2D 02 +MUS_RG_TVNOIZE = 2E 02 +PH_TRAP_BLEND = 2F 02 +PH_TRAP_HELD = 30 02 +PH_TRAP_SOLO = 31 02 +PH_FACE_BLEND = 32 02 +PH_FACE_HELD = 33 02 +PH_FACE_SOLO = 34 02 +PH_CLOTH_BLEND = 35 02 +PH_CLOTH_HELD = 36 02 +PH_CLOTH_SOLO = 37 02 +PH_DRESS_BLEND = 38 02 +PH_DRESS_HELD = 39 02 +PH_DRESS_SOLO = 3A 02 +PH_FLEECE_BLEND = 3B 02 +PH_FLEECE_HELD = 3C 02 +PH_FLEECE_SOLO = 3D 02 +PH_KIT_BLEND = 3E 02 +PH_KIT_HELD = 3F 02 +PH_KIT_SOLO = 40 02 +PH_PRICE_BLEND = 41 02 +PH_PRICE_HELD = 42 02 +PH_PRICE_SOLO = 43 02 +PH_LOT_BLEND = 44 02 +PH_LOT_HELD = 45 02 +PH_LOT_SOLO = 46 02 +PH_GOAT_BLEND = 47 02 +PH_GOAT_HELD = 48 02 +PH_GOAT_SOLO = 49 02 +PH_THOUGHT_BLEND = 4A 02 +PH_THOUGHT_HELD = 4B 02 +PH_THOUGHT_SOLO = 4C 02 +PH_CHOICE_BLEND = 4D 02 +PH_CHOICE_HELD = 4E 02 +PH_CHOICE_SOLO = 4F 02 +PH_MOUTH_BLEND = 50 02 +PH_MOUTH_HELD = 51 02 +PH_MOUTH_SOLO = 52 02 +PH_FOOT_BLEND = 53 02 +PH_FOOT_HELD = 54 02 +PH_FOOT_SOLO = 55 02 +PH_GOOSE_BLEND = 56 02 +PH_GOOSE_HELD = 57 02 +PH_GOOSE_SOLO = 58 02 +PH_STRUT_BLEND = 59 02 +PH_STRUT_HELD = 5A 02 +PH_STRUT_SOLO = 5B 02 +PH_CURE_BLEND = 5C 02 +PH_CURE_HELD = 5D 02 +PH_CURE_SOLO = 5E 02 +PH_NURSE_BLEND = 5F 02 +PH_NURSE_HELD = 60 02 +PH_NURSE_SOLO = 61 02 + +A_BUTTON = F8 00 +B_BUTTON = F8 01 +DPAD_UPDOWN = F8 0A +DPAD_NONE = F8 0C + +UP_ARROW_2 = F9 00 +DOWN_ARROW_2 = F9 01 +LEFT_ARROW_2 = F9 02 +RIGHT_ARROW_2 = F9 03 +PLUS = F9 04 +LV_2 = F9 05 +PP = F9 06 +ID = F9 07 +NO = F9 08 +UNDERSCORE = F9 09 +CIRCLE_1 = F9 0A +CIRCLE_2 = F9 0B +CIRCLE_3 = F9 0C +CIRCLE_4 = F9 0D +CIRCLE_5 = F9 0E +CIRCLE_6 = F9 0F +CIRCLE_7 = F9 10 +CIRCLE_8 = F9 11 +CIRCLE_9 = F9 12 +ROUND_LEFT_PAREN = F9 13 +ROUND_RIGHT_PAREN = F9 14 +CIRCLE_DOT = F9 15 +TRIANGLE = F9 16 +BIG_MULT_X = F9 17 + +EMOJI_UNDERSCORE = F9 D0 +EMOJI_PIPE = F9 D1 +EMOJI_HIGHBAR = F9 D2 +EMOJI_TILDE = F9 D3 +EMOJI_LEFT_PAREN = F9 D4 +EMOJI_RIGHT_PAREN = F9 D5 +EMOJI_UNION = F9 D6 @ ⊂ +EMOJI_GREATER_THAN = F9 D7 +EMOJI_LEFT_EYE = F9 D8 +EMOJI_RIGHT_EYE = F9 D9 +EMOJI_AT = F9 DA +EMOJI_SEMICOLON = F9 DB +EMOJI_PLUS = F9 DC +EMOJI_MINUS = F9 DD +EMOJI_EQUALS = F9 DE +EMOJI_SPIRAL = F9 DF +EMOJI_TONGUE = F9 E0 +EMOJI_TRIANGLE_OUTLINE = F9 E1 +EMOJI_ACUTE = F9 E2 +EMOJI_GRAVE = F9 E3 +EMOJI_CIRCLE = F9 E4 +EMOJI_TRIANGLE = F9 E5 +EMOJI_SQUARE = F9 E6 +EMOJI_HEART = F9 E7 +EMOJI_MOON = F9 E8 +EMOJI_NOTE = F9 E9 +EMOJI_BALL = F9 EA +EMOJI_BOLT = F9 EB +EMOJI_LEAF = F9 EC +EMOJI_FIRE = F9 ED +EMOJI_WATER = F9 EE +EMOJI_LEFT_FIST = F9 EF +EMOJI_RIGHT_FIST = F9 F0 +EMOJI_BIGWHEEL = F9 F1 +EMOJI_SMALLWHEEL = F9 F2 +EMOJI_SPHERE = F9 F3 +EMOJI_IRRITATED = F9 F4 +EMOJI_MISCHIEVOUS = F9 F5 +EMOJI_HAPPY = F9 F6 +EMOJI_ANGRY = F9 F7 +EMOJI_SURPRISED = F9 F8 +EMOJI_BIGSMILE = F9 F9 +EMOJI_EVIL = F9 FA +EMOJI_TIRED = F9 FB +EMOJI_NEUTRAL = F9 FC +EMOJI_SHOCKED = F9 FD +EMOJI_BIGANGER = F9 FE + +'\l' = FA @ scroll up window text +'\p' = FB @ new paragraph +'\n' = FE @ new line diff --git a/berry_fix/payload/common_syms/agb_flash.txt b/berry_fix/payload/common_syms/agb_flash.txt new file mode 100644 index 000000000..cb421ec80 --- /dev/null +++ b/berry_fix/payload/common_syms/agb_flash.txt @@ -0,0 +1,10 @@ +gFlashTimeoutFlag +PollFlashStatus +WaitForFlashWrite +ProgramFlashSector +gFlash +ProgramFlashByte +gFlashNumRemainingBytes +EraseFlashChip +EraseFlashSector +gFlashMaxTime diff --git a/berry_fix/payload/common_syms/main.txt b/berry_fix/payload/common_syms/main.txt new file mode 100644 index 000000000..b62c72124 --- /dev/null +++ b/berry_fix/payload/common_syms/main.txt @@ -0,0 +1,9 @@ +gIntrTable +gHeldKeys +gNewKeys +gIntrVector +gUpdateSuccessful +gUnknown_3001194 +gUnknown_30011A0 +gMainCallbackState +gGameVersion diff --git a/berry_fix/payload/common_syms/rtc.txt b/berry_fix/payload/common_syms/rtc.txt new file mode 100644 index 000000000..7aafbe65d --- /dev/null +++ b/berry_fix/payload/common_syms/rtc.txt @@ -0,0 +1,2 @@ +gTimeSinceBerryUpdate +gRtcUTCTime diff --git a/berry_fix/payload/graphics/debug_digits.png b/berry_fix/payload/graphics/debug_digits.png Binary files differnew file mode 100644 index 000000000..edf0d36c9 --- /dev/null +++ b/berry_fix/payload/graphics/debug_digits.png diff --git a/berry_fix/payload/graphics/msg_box.png b/berry_fix/payload/graphics/msg_box.png Binary files differnew file mode 100644 index 000000000..00d1bbe37 --- /dev/null +++ b/berry_fix/payload/graphics/msg_box.png diff --git a/berry_fix/payload/graphics/msg_box.tilemap b/berry_fix/payload/graphics/msg_box.tilemap Binary files differnew file mode 100644 index 000000000..5b82401ba --- /dev/null +++ b/berry_fix/payload/graphics/msg_box.tilemap diff --git a/berry_fix/payload/include/constants/game_stat.h b/berry_fix/payload/include/constants/game_stat.h new file mode 100644 index 000000000..47d703d85 --- /dev/null +++ b/berry_fix/payload/include/constants/game_stat.h @@ -0,0 +1,56 @@ +#ifndef GUARD_CONSTANTS_GAME_STAT_H +#define GUARD_CONSTANTS_GAME_STAT_H + +#define GAME_STAT_SAVED_GAME 0 +#define GAME_STAT_FIRST_HOF_PLAY_TIME 1 +#define GAME_STAT_STARTED_TRENDS 2 +#define GAME_STAT_PLANTED_BERRIES 3 +#define GAME_STAT_TRADED_BIKES 4 +#define GAME_STAT_STEPS 5 +#define GAME_STAT_GOT_INTERVIEWED 6 +#define GAME_STAT_TOTAL_BATTLES 7 +#define GAME_STAT_WILD_BATTLES 8 +#define GAME_STAT_TRAINER_BATTLES 9 +#define GAME_STAT_ENTERED_HOF 10 +#define GAME_STAT_POKEMON_CAPTURES 11 +#define GAME_STAT_FISHING_CAPTURES 12 +#define GAME_STAT_HATCHED_EGGS 13 +#define GAME_STAT_EVOLVED_POKEMON 14 +#define GAME_STAT_USED_POKECENTER 15 +#define GAME_STAT_RESTED_AT_HOME 16 +#define GAME_STAT_ENTERED_SAFARI_ZONE 17 +#define GAME_STAT_USED_CUT 18 +#define GAME_STAT_USED_ROCK_SMASH 19 +#define GAME_STAT_MOVED_SECRET_BASE 20 +#define GAME_STAT_POKEMON_TRADES 21 +#define GAME_STAT_UNKNOWN_22 22 +#define GAME_STAT_LINK_BATTLE_WINS 23 +#define GAME_STAT_LINK_BATTLE_LOSSES 24 +#define GAME_STAT_LINK_BATTLE_DRAWS 25 +#define GAME_STAT_USED_SPLASH 26 +#define GAME_STAT_USED_STRUGGLE 27 +#define GAME_STAT_SLOT_JACKPOTS 28 +#define GAME_STAT_CONSECUTIVE_ROULETTE_WINS 29 +#define GAME_STAT_ENTERED_BATTLE_TOWER 30 +#define GAME_STAT_UNKNOWN_31 31 +#define GAME_STAT_BATTLE_TOWER_BEST_STREAK 32 +#define GAME_STAT_POKEBLOCKS 33 +#define GAME_STAT_POKEBLOCKS_WITH_FRIENDS 34 +#define GAME_STAT_WON_LINK_CONTEST 35 +#define GAME_STAT_ENTERED_CONTEST 36 +#define GAME_STAT_WON_CONTEST 37 +#define GAME_STAT_SHOPPED 38 +#define GAME_STAT_USED_ITEMFINDER 39 +#define GAME_STAT_GOT_RAINED_ON 40 +#define GAME_STAT_CHECKED_POKEDEX 41 +#define GAME_STAT_RECEIVED_RIBBONS 42 +#define GAME_STAT_JUMPED_DOWN_LEDGES 43 +#define GAME_STAT_WATCHED_TV 44 +#define GAME_STAT_CHECKED_CLOCK 45 +#define GAME_STAT_WON_POKEMON_LOTTERY 46 +#define GAME_STAT_USED_DAYCARE 47 +#define GAME_STAT_RODE_CABLE_CAR 48 +#define GAME_STAT_ENTERED_HOT_SPRINGS 49 +#define NUM_GAME_STATS 50 + +#endif // GUARD_CONSTANTS_GAME_STAT_H diff --git a/berry_fix/payload/include/constants/vars.h b/berry_fix/payload/include/constants/vars.h new file mode 100644 index 000000000..856aba069 --- /dev/null +++ b/berry_fix/payload/include/constants/vars.h @@ -0,0 +1,196 @@ +#ifndef GUARD_CONSTANTS_VARS_H +#define GUARD_CONSTANTS_VARS_H + +#define VAR_0x3F20 0x3F20 + +#define VARS_START 0x4000 + +// temporary vars +// The first 0x10 vars are are temporary--they are cleared every time a map is loaded. +#define VAR_TEMP_0 0x4000 +#define VAR_TEMP_1 0x4001 +#define VAR_TEMP_2 0x4002 +#define VAR_TEMP_3 0x4003 +#define VAR_TEMP_4 0x4004 +#define VAR_TEMP_5 0x4005 +#define VAR_TEMP_6 0x4006 +#define VAR_TEMP_7 0x4007 +#define VAR_TEMP_8 0x4008 +#define VAR_TEMP_9 0x4009 +#define VAR_TEMP_A 0x400A +#define VAR_TEMP_B 0x400B +#define VAR_TEMP_C 0x400C +#define VAR_TEMP_D 0x400D +#define VAR_TEMP_E 0x400E +#define VAR_TEMP_F 0x400F + +// object gfx id vars +// These 0x10 vars are used to dynamically control a event object's sprite. +// For example, the rival's sprite id is dynamically set based on the player's gender. +// See VarGetEventObjectGraphicsId(). +#define VAR_OBJ_GFX_ID_0 0x4010 +#define VAR_OBJ_GFX_ID_1 0x4011 +#define VAR_OBJ_GFX_ID_2 0x4012 +#define VAR_OBJ_GFX_ID_3 0x4013 +#define VAR_OBJ_GFX_ID_4 0x4014 +#define VAR_OBJ_GFX_ID_5 0x4015 +#define VAR_OBJ_GFX_ID_6 0x4016 +#define VAR_OBJ_GFX_ID_7 0x4017 +#define VAR_OBJ_GFX_ID_8 0x4018 +#define VAR_OBJ_GFX_ID_9 0x4019 +#define VAR_OBJ_GFX_ID_A 0x401A +#define VAR_OBJ_GFX_ID_B 0x401B +#define VAR_OBJ_GFX_ID_C 0x401C +#define VAR_OBJ_GFX_ID_D 0x401D +#define VAR_OBJ_GFX_ID_E 0x401E +#define VAR_OBJ_GFX_ID_F 0x401F + +// general purpose vars +#define VAR_RECYCLE_GOODS 0x4020 +#define VAR_REPEL_STEP_COUNT 0x4021 +#define VAR_ICE_STEP_COUNT 0x4022 +#define VAR_STARTER_MON 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip +#define VAR_MIRAGE_RND_H 0x4024 +#define VAR_MIRAGE_RND_L 0x4025 +#define VAR_SECRET_BASE_MAP 0x4026 +#define VAR_CYCLING_ROAD_RECORD_COLLISIONS 0x4027 +#define VAR_CYCLING_ROAD_RECORD_TIME_L 0x4028 +#define VAR_CYCLING_ROAD_RECORD_TIME_H 0x4029 +#define VAR_HAPPINESS_STEP_COUNTER 0x402A +#define VAR_POISON_STEP_COUNTER 0x402B +#define VAR_RESET_RTC_ENABLE 0x402C +#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D + +#define VAR_DAYS 0x4040 +#define VAR_FANCLUB_UNKNOWN_1 0x4041 // TODO: document these two fanclub vars +#define VAR_FANCLUB_UNKNOWN_2 0x4042 +#define VAR_DEPT_STORE_FLOOR 0x4043 +#define VAR_TRICK_HOUSE_ROOMS_COMPLETED 0x4044 +#define VAR_LOTTERY_PRIZE 0x4045 +#define VAR_NATIONAL_DEX 0x4046 +#define VAR_SHROOMISH_SIZE_RECORD 0x4047 +#define VAR_ASH_GATHER_COUNT 0x4048 +#define VAR_BIRCH_STATE 0x4049 +#define VAR_CRUISE_STEP_COUNT 0x404A +#define VAR_LOTTERY_RND_L 0x404B +#define VAR_LOTTERY_RND_H 0x404C + +#define VAR_BARBOACH_SIZE_RECORD 0x404F +#define VAR_LITTLEROOT_STATE 0x4050 +#define VAR_ROUTE102_ACCESSIBLE 0x4051 + +#define VAR_LAVARIDGE_RIVAL_STATE 0x4053 +#define VAR_CURRENT_SECRET_BASE 0x4054 + +#define VAR_PETALBURG_STATE 0x4057 +#define VAR_SLATEPORT_STATE 0x4058 + +#define VAR_RUSTBORO_STATE 0x405A + +#define VAR_SOOTOPOLIS_STATE 0x405E + +#define VAR_ROUTE101_STATE 0x4060 + +#define VAR_ROUTE103_STATE 0x4062 + +#define VAR_ROUTE110_STATE 0x4069 + +#define VAR_ROUTE116_STATE 0x406F + +#define VAR_ROUTE118_STATE 0x4071 +#define VAR_ROUTE119_STATE 0x4072 + +#define VAR_ROUTE121_STATE 0x4074 +#define VAR_ROUTE128_STATE 0x407B + +#define VAR_LITTLEROOT_HOUSES_STATE 0x4082 // TODO: needs more investigation + +#define VAR_BIRCH_LAB_STATE 0x4084 +#define VAR_PETALBURG_GYM_STATE 0x4085 +#define VAR_LINK_CONTEST_ROOM_STATE 0x4086 +#define VAR_CABLE_CLUB_STATE 0x4087 +#define VAR_CONTEST_LOCATION 0x4088 +#define VAR_0x4089 0x4089 // TODO: related to decorations +#define VAR_CONTEST_PRIZE_PICKUP 0x408A + +#define VAR_LITTLEROOT_HOUSES_STATE_2 0x408C // TODO: needs more investigation +#define VAR_LITTLEROOT_RIVAL_STATE 0x408D +#define VAR_BOARD_BRINEY_BOAT_ROUTE104_STATE 0x408E +#define VAR_DEVON_CORP_3F_STATE 0x408F +#define VAR_BRINEY_HOUSE_STATE 0x4090 + +#define VAR_LITTLEROOT_INTRO_STATE 0x4092 +#define VAR_MAUVILLE_GYM_STATE 0x4093 +#define VAR_LILYCOVE_MUSEUM_2F_STATE 0x4094 +#define VAR_LILYCOVE_FAN_CLUB_STATE 0x4095 +#define VAR_BRINEY_LOCATION 0x4096 +#define VAR_0x4097 0x4097 // TODO: related to creating new secret base +#define VAR_PETALBURG_WOODS_STATE 0x4098 +#define VAR_LILYCOVE_CONTEST_LOBBY_STATE 0x4099 +#define VAR_RUSTURF_TUNNEL_STATE 0x409a +#define VAR_CAVE_OF_ORIGIN_B4F_STATE 0x409B +#define VAR_ELITE_4_STATE 0x409C + +#define VAR_SLATEPORT_HARBOR_STATE 0x40A0 + +#define VAR_SEAFLOOR_CAVERN_STATE 0x40A2 +#define VAR_CABLE_CAR_STATION_STATE 0x40A3 +#define VAR_SAFARI_ZONE_STATE 0x40A4 +#define VAR_TRICK_HOUSE_ENTRANCE_STATE 0x40A5 +#define VAR_TRICK_HOUSE_ENTRANCE_STATE_2 0x40A6 +#define VAR_TRICK_HOUSE_ENTRANCE_STATE_3 0x40A7 + +#define VAR_CYCLING_CHALLENGE_STATE 0x40A9 +#define VAR_SLATEPORT_MUSEUM_1F_STATE 0x40AA +#define VAR_TRICK_HOUSE_PUZZLE_1_STATE 0x40AB +#define VAR_TRICK_HOUSE_PUZZLE_2_STATE 0x40AC +#define VAR_TRICK_HOUSE_PUZZLE_3_STATE 0x40AD +#define VAR_TRICK_HOUSE_PUZZLE_4_STATE 0x40AE +#define VAR_TRICK_HOUSE_PUZZLE_5_STATE 0x40AF +#define VAR_TRICK_HOUSE_PUZZLE_6_STATE 0x40B0 +#define VAR_TRICK_HOUSE_PUZZLE_7_STATE 0x40B1 +#define VAR_TRICK_HOUSE_PUZZLE_8_STATE 0x40B2 +#define VAR_WEATHER_INSTITUTE_STATE 0x40B3 +#define VAR_PORTHOLE_STATE 0x40B4 +#define VAR_TRICK_HOUSE_STATE 0x40B5 // TODO: needs some further investigation +#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2 0x40B6 +#define VAR_SLATEPORT_FAN_CLUB_STATE 0x40B7 + +#define VAR_MT_PYRE_STATE 0x40B9 +#define VAR_NEW_MAUVILLE_STATE 0x40BA + +#define VAR_BRAVO_TRAINER_BATTLE_TOWER_ON 0x40BC +#define VAR_JAGGED_PASS_ASH_WEATHER 0x40BD +#define VAR_GLASS_WORKSHOP_STATE 0x40BE +#define VAR_METEOR_FALLS_STATE 0x40BF +#define VAR_GAME_CORNER_STATE 0x40C0 +#define VAR_TRICK_HOUSE_PRIZE_PICKUP 0x40C1 +#define VAR_PACIFIDLOG_TM_RECEIVED_DAY 0x40C2 +#define VAR_VICTORY_ROAD_1F_STATE 0x40C3 +#define VAR_FOSSIL_RESURRECTION_STATE 0x40C4 +#define VAR_WHICH_FOSSIL_REVIVED 0x40C5 +#define VAR_STEVENS_HOUSE_STATE 0x40C6 +#define VAR_OLDALE_STATE 0x40C7 + +// special vars +// They are commonly used as parameters to commands, or return values from commands. +#define VAR_SPECIAL_0 0x8000 +#define VAR_SPECIAL_1 0x8001 +#define VAR_SPECIAL_2 0x8002 +#define VAR_SPECIAL_3 0x8003 +#define VAR_SPECIAL_4 0x8004 +#define VAR_SPECIAL_5 0x8005 +#define VAR_SPECIAL_6 0x8006 +#define VAR_SPECIAL_7 0x8007 +#define VAR_SPECIAL_8 0x8008 +#define VAR_SPECIAL_9 0x8009 +#define VAR_SPECIAL_A 0x800A +#define VAR_SPECIAL_B 0x800B +#define FACING 0x800C +#define RESULT 0x800D +#define ITEM_ID 0x800E +#define LAST_TALKED 0x800F +#define CONTEST_RANK 0x8010 +#define CONTEST_CATEGORY 0x8011 + +#endif // GUARD_CONSTANTS_VARS_H diff --git a/berry_fix/payload/include/flash.h b/berry_fix/payload/include/flash.h new file mode 100644 index 000000000..26de88216 --- /dev/null +++ b/berry_fix/payload/include/flash.h @@ -0,0 +1,55 @@ +#ifndef GUARD_FLASH_H +#define GUARD_FLASH_H + +#include <gba/gba.h> + +enum +{ + SECTOR_DAMAGED, + SECTOR_OK, + SECTOR_CHECK, // unused +}; + +enum MsgBoxUpdateMessage +{ + MSGBOX_WILL_NOW_UPDATE = 0, + MSGBOX_HAS_BEEN_UPDATED, + MSGBOX_UNABLE_TO_UPDATE, + MSGBOX_NO_NEED_TO_UPDATE, + MSGBOX_UPDATING +}; + +struct SaveSector +{ + u8 data[0xFF4]; + u16 id; + u16 checksum; + u32 signature; + u32 counter; +}; // size is 0x1000 + +// headless save section? +struct UnkSaveSection +{ + u8 data[0xFF4]; + u32 signature; +}; // size is 0xFF8 + +#define eSaveSection ((struct SaveSector *)0x2020000) + +#define NUM_SECTORS_PER_SAVE_SLOT 14 // Number of sectors occupied by a save slot +#define FILE_SIGNATURE 0x08012025 + +#define SAVE_STATUS_EMPTY 0 +#define SAVE_STATUS_OK 1 +#define SAVE_STATUS_NO_FLASH 4 +#define SAVE_STATUS_ERROR 0xFF + +bool32 flash_maincb_ident_is_valid(void); +bool8 flash_maincb_read_save(u32); +void msg_load_gfx(void); +void msg_display(enum MsgBoxUpdateMessage); +bool32 flash_maincb_check_need_reset_pacifidlog_tm(void); +bool32 flash_maincb_reset_pacifidlog_tm(void); + +#endif //GUARD_FLASH_H diff --git a/berry_fix/payload/include/global.berry.h b/berry_fix/payload/include/global.berry.h new file mode 100644 index 000000000..8f185c8f9 --- /dev/null +++ b/berry_fix/payload/include/global.berry.h @@ -0,0 +1,62 @@ +#ifndef GUARD_GLOBAL_BERRY_H +#define GUARD_GLOBAL_BERRY_H + +struct Berry +{ + /*0x00*/ u8 name[7]; + /*0x07*/ u8 firmness; + /*0x08*/ u16 size; + /*0x0A*/ u8 maxYield; + /*0x0B*/ u8 minYield; + /*0x0C*/ const u8 *description1; + /*0x10*/ const u8 *description2; + /*0x14*/ u8 stageDuration; + /*0x15*/ u8 spicy; + /*0x16*/ u8 dry; + /*0x17*/ u8 sweet; + /*0x18*/ u8 bitter; + /*0x19*/ u8 sour; + /*0x1A*/ u8 smoothness; +}; + +struct EnigmaBerry +{ + /*0x000*/ struct Berry berry; + /*0x01B*/ u8 pic[(6 * 6) * TILE_SIZE_4BPP]; + /*0x49C*/ u16 palette[16]; + /*0x4BC*/ u8 description1[45]; + /*0x4E9*/ u8 description2[45]; + /*0x516*/ u8 itemEffect[18]; + /*0x528*/ u8 holdEffect; + /*0x529*/ u8 holdEffectParam; + /*0x52C*/ u32 checksum; +}; + +struct BattleEnigmaBerry +{ + /*0x00*/ u8 name[7]; + /*0x07*/ u8 holdEffect; + /*0x08*/ u8 itemEffect[18]; + /*0x1A*/ u8 holdEffectParam; +}; + +struct BerryTree +{ + /*0x00*/ u8 berry; + /*0x01*/ u8 stage:7; + /* + A berry sparkle is a state that a berry tree + can be in after growing within the player's + viewport. + */ + /*0x01*/ bool8 growthSparkle:1; + /*0x02*/ u16 minutesUntilNextStage; + /*0x04*/ u8 berryYield; + /*0x05*/ u8 regrowthCount:4; + /*0x05*/ u8 watered1:1; + /*0x05*/ u8 watered2:1; + /*0x05*/ u8 watered3:1; + /*0x05*/ u8 watered4:1; +}; + +#endif // GUARD_GLOBAL_BERRY_H diff --git a/berry_fix/payload/include/global.fieldmap.h b/berry_fix/payload/include/global.fieldmap.h new file mode 100644 index 000000000..81f805ee2 --- /dev/null +++ b/berry_fix/payload/include/global.fieldmap.h @@ -0,0 +1,317 @@ +#ifndef GUARD_GLOBAL_FIELDMAP_H +#define GUARD_GLOBAL_FIELDMAP_H + +enum +{ + CONNECTION_SOUTH = 1, + CONNECTION_NORTH, + CONNECTION_WEST, + CONNECTION_EAST, + CONNECTION_DIVE, + CONNECTION_EMERGE +}; + +typedef void (*TilesetCB)(void); + +struct Tileset +{ + /*0x00*/ bool8 isCompressed; + /*0x01*/ bool8 isSecondary; + /*0x04*/ void *tiles; + /*0x08*/ void *palettes; + /*0x0c*/ void *metatiles; + /*0x10*/ void *metatileAttributes; + /*0x14*/ TilesetCB callback; +}; + +struct MapLayout +{ + /*0x00*/ s32 width; + /*0x04*/ s32 height; + /*0x08*/ u16 *border; + /*0x0c*/ u16 *map; + /*0x10*/ struct Tileset *primaryTileset; + /*0x14*/ struct Tileset *secondaryTileset; +}; + +struct BackupMapLayout +{ + s32 width; + s32 height; + u16 *map; +}; + +struct EventObjectTemplate +{ + /*0x00*/ u8 localId; + /*0x01*/ u8 graphicsId; + /*0x02*/ u8 unk2; + /*0x04*/ s16 x; + /*0x06*/ s16 y; + /*0x08*/ u8 elevation; + /*0x09*/ u8 movementType; + /*0x0A*/ u8 movementRangeX:4; + u8 movementRangeY:4; + /*0x0C*/ u16 trainerType; + /*0x0E*/ u16 trainerRange_berryTreeId; + /*0x10*/ u8 *script; + /*0x14*/ u16 flagId; +}; + +struct WarpEvent +{ + s16 x, y; + u8 elevation; + u8 warpId; + u8 mapNum; + u8 mapGroup; +}; + +struct CoordEvent +{ + s16 x, y; + u8 elevation; + u16 trigger; + u16 index; + u8 filler_A[0x2]; + u8 *script; +}; + +struct BgEvent +{ + /*0x00*/u16 x; + /*0x02*/u16 y; + /*0x04*/u8 elevation; + /*0x05*/u8 kind; + /*0x08*/union { // carried over from diego's FR/LG work, seems to be the same struct + // in gen 3, "kind" (0x3 in BgEvent struct) determines the method to read the union. + u8 *script; + + // hidden item type + struct { + u16 item; + u16 hiddenItemId; // flag offset to determine flag lookup + } hiddenItem; + + // secret base type + u32 secretBaseId; + + } bgUnion; +}; + +struct MapEvents +{ + u8 eventObjectCount; + u8 warpCount; + u8 coordEventCount; + u8 bgEventCount; + + struct EventObjectTemplate *eventObjects; + struct WarpEvent *warps; + struct CoordEvent *coordEvents; + struct BgEvent *bgEvents; +}; + +struct MapConnection +{ + /*0x00*/ u8 direction; + /*0x01*/ u32 offset; + /*0x05*/ u8 mapGroup; + /*0x06*/ u8 mapNum; +}; + +struct MapConnections +{ + s32 count; + struct MapConnection *connections; +}; + +struct MapHeader +{ + /* 0x00 */ struct MapLayout *mapLayout; + /* 0x04 */ struct MapEvents *events; + /* 0x08 */ u8 *mapScripts; + /* 0x0C */ struct MapConnections *connections; + /* 0x10 */ u16 music; + /* 0x12 */ u16 mapLayoutId; + /* 0x14 */ u8 regionMapSectionId; + /* 0x15 */ u8 cave; + /* 0x16 */ u8 weather; + /* 0x17 */ u8 mapType; + /* 0x18 */ u8 filler_18; + /* 0x19 */ u8 escapeRope; + /* 0x1A */ u8 flags; + /* 0x1B */ u8 battleType; +}; + +struct EventObject +{ + /*0x00*/ u32 active:1; + u32 singleMovementActive:1; + u32 triggerGroundEffectsOnMove:1; + u32 triggerGroundEffectsOnStop:1; + u32 disableCoveringGroundEffects:1; // disables ground effects that cover parts of the object's sprite + u32 landingJump:1; + u32 heldMovementActive:1; + u32 heldMovementFinished:1; + /*0x01*/ u32 frozen:1; + u32 facingDirectionLocked:1; + u32 disableAnim:1; // used to disable forced movement sliding animations (like on ice) + u32 enableAnim:1; + u32 inanimate:1; + u32 invisible:1; + u32 offScreen:1; + u32 trackedByCamera:1; // only set for the player object + /*0x02*/ u32 isPlayer:1; + u32 hasReflection:1; + u32 inShortGrass:1; + u32 inShallowFlowingWater:1; + u32 inSandPile:1; + u32 inHotSprings:1; + u32 hasShadow:1; + u32 spriteAnimPausedBackup:1; + /*0x03*/ u32 spriteAffineAnimPausedBackup:1; + u32 disableJumpLandingGroundEffect:1; + u32 fixedPriority:1; + /*0x04*/ u8 spriteId; + /*0x05*/ u8 graphicsId; + /*0x06*/ u8 movementType; + /*0x07*/ u8 trainerType; + /*0x08*/ u8 localId; + /*0x09*/ u8 mapNum; + /*0x0A*/ u8 mapGroup; + /*0x0B*/ u8 currentElevation:4; + u8 previousElevation:4; + /*0x0C*/ struct Coords16 initialCoords; + /*0x10*/ struct Coords16 currentCoords; + /*0x14*/ struct Coords16 previousCoords; + /*0x18*/ u8 facingDirection:4; + /*0x18*/ u8 movementDirection:4; + /*0x19*/ union __attribute__((packed)) { + u8 as_byte; + struct __attribute__((packed)) { + u16 x:4; + u16 y:4; + } as_nybbles; + } range; + /*0x1A*/ u8 fieldEffectSpriteId; + /*0x1B*/ u8 warpArrowSpriteId; + /*0x1C*/ u8 movementActionId; + /*0x1D*/ u8 trainerRange_berryTreeId; + /*0x1E*/ u8 currentMetatileBehavior; + /*0x1F*/ u8 previousMetatileBehavior; + /*0x20*/ u8 previousMovementDirection; + /*0x21*/ u8 directionSequenceIndex; + /*0x22*/ u8 playerCopyableMovement; // used as an index to gCopyPlayerMovementFuncs for the "copy player" movement types + /*size = 0x24*/ +}; + +struct EventObjectGraphicsInfo +{ + /*0x00*/ u16 tileTag; + /*0x02*/ u16 paletteTag; + /*0x04*/ u16 bridgeReflectionPaletteTag; + /*0x06*/ u16 size; + /*0x08*/ s16 width; + /*0x0A*/ s16 height; + /*0x0C*/ u8 paletteSlot:4; + u8 shadowSize:2; + u8 inanimate:1; + u8 disableReflectionPaletteLoad:1; + /*0x0D*/ u8 tracks; + /*0x10*/ const struct OamData *oam; + /*0x14*/ const struct SubspriteTable *subspriteTables; + /*0x18*/ const union AnimCmd *const *anims; + /*0x1C*/ const struct SpriteFrameImage *images; + /*0x20*/ const union AffineAnimCmd *const *affineAnims; +}; + +#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0) +#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1) +#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2) +#define PLAYER_AVATAR_FLAG_SURFING (1 << 3) +#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4) +#define PLAYER_AVATAR_FLAG_5 (1 << 5) +#define PLAYER_AVATAR_FLAG_6 (1 << 6) +#define PLAYER_AVATAR_FLAG_DASH (1 << 7) + +enum +{ + ACRO_BIKE_NORMAL, + ACRO_BIKE_TURNING, + ACRO_BIKE_WHEELIE_STANDING, + ACRO_BIKE_BUNNY_HOP, + ACRO_BIKE_WHEELIE_MOVING, + ACRO_BIKE_STATE5, + ACRO_BIKE_STATE6, +}; + +enum +{ + DIR_NONE, + DIR_SOUTH, + DIR_NORTH, + DIR_WEST, + DIR_EAST, + DIR_SOUTHWEST, + DIR_SOUTHEAST, + DIR_NORTHWEST, + DIR_NORTHEAST, +}; + +enum +{ + COLLISION_LEDGE_JUMP = 6 +}; + +// player running states +enum +{ + NOT_MOVING, + TURN_DIRECTION, // not the same as turning! turns your avatar without moving. also known as a turn frame in some circles + MOVING, +}; + +// player tile transition states +enum +{ + T_NOT_MOVING, + T_TILE_TRANSITION, + T_TILE_CENTER, // player is on a frame in which they are centered on a tile during which the player either stops or keeps their momentum and keeps going, changing direction if necessary. +}; + +struct PlayerAvatar /* 0x202E858 */ +{ + /*0x00*/ u8 flags; + /*0x01*/ u8 unk1; // used to be named bike, but its definitely not that. seems to be some transition flags + /*0x02*/ u8 runningState; // this is a static running state. 00 is not moving, 01 is turn direction, 02 is moving. + /*0x03*/ u8 tileTransitionState; // this is a transition running state: 00 is not moving, 01 is transition between tiles, 02 means you are on the frame in which you have centered on a tile but are about to keep moving, even if changing directions. 2 is also used for a ledge hop, since you are transitioning. + /*0x04*/ u8 spriteId; + /*0x05*/ u8 eventObjectId; + /*0x06*/ bool8 preventStep; + /*0x07*/ u8 gender; + /*0x08*/ u8 acroBikeState; // 00 is normal, 01 is turning, 02 is standing wheelie, 03 is hopping wheelie + /*0x09*/ u8 newDirBackup; // during bike movement, the new direction as opposed to player's direction is backed up here. + /*0x0A*/ u8 bikeFrameCounter; // on the mach bike, when this value is 1, the bike is moving but not accelerating yet for 1 tile. on the acro bike, this acts as a timer for acro bike. + /*0x0B*/ u8 bikeSpeed; + // acro bike only + /*0x0C*/ u32 directionHistory; // up/down/left/right history is stored in each nybble, but using the field directions and not the io inputs. + /*0x10*/ u32 abStartSelectHistory; // same as above but for A + B + start + select only + // these two are timer history arrays which [0] is the active timer for acro bike. every element is backed up to the next element upon update. + /*0x14*/ u8 dirTimerHistory[8]; + /*0x1C*/ u8 abStartSelectTimerHistory[8]; +}; + +struct Camera +{ + bool8 active:1; + s32 x; + s32 y; +}; + +extern struct EventObject gEventObjects[]; +extern u8 gSelectedEventObject; +extern struct MapHeader gMapHeader; +extern struct PlayerAvatar gPlayerAvatar; + +#endif // GUARD_GLOBAL_FIELDMAP_H diff --git a/berry_fix/payload/include/global.h b/berry_fix/payload/include/global.h new file mode 100644 index 000000000..ad83b544c --- /dev/null +++ b/berry_fix/payload/include/global.h @@ -0,0 +1,875 @@ +#ifndef GUARD_GLOBAL_H +#define GUARD_GLOBAL_H + +#include <gba/gba.h> + +// global.h from pokemon ruby + +// IDE support +#if defined(__APPLE__) || defined(__CYGWIN__) +#define _(x) x +#define __(x) x +#define INCBIN(x) {0} +#define INCBIN_U8 INCBIN +#define INCBIN_U16 INCBIN +#define INCBIN_U32 INCBIN +#define INCBIN_S8 INCBIN +#define INCBIN_S16 INCBIN +#define INCBIN_S32 INCBIN +#endif + +// Prevent cross-jump optimization. +#define BLOCK_CROSS_JUMP asm(""); + +// to help in decompiling +#define asm_comment(x) asm volatile("@ -- " x " -- ") + +#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided\n") + +#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) + + +#define POKEMON_SLOTS_NUMBER 412 +#define POKEMON_NAME_LENGTH 10 +#define OT_NAME_LENGTH 7 + +#define min(a, b) ((a) < (b) ? (a) : (b)) +#define max(a, b) ((a) >= (b) ? (a) : (b)) + +// why does GF hate 2d arrays +#define MULTI_DIM_ARR(x, dim, y) ((x) * dim + (y)) + +// dim access enums +enum +{ + B_8 = 1, + B_16 = 2, + B_32 = 4 +}; + +// There are many quirks in the source code which have overarching behavioral differences from +// a number of other files. For example, diploma.c seems to declare rodata before each use while +// other files declare out of order and must be at the beginning. There are also a number of +// macros which differ from one file to the next due to the method of obtaining the result, such +// as these below. Because of this, there is a theory (Two Team Theory) that states that these +// programming projects had more than 1 "programming team" which utilized different macros for +// each of the files that were worked on. +#define T1_READ_8(ptr) ((ptr)[0]) +#define T1_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define T1_READ_32(ptr) ((ptr)[0] | ((ptr)[1] << 8) | ((ptr)[2] << 16) | ((ptr)[3] << 24)) +#define T1_READ_PTR(ptr) (u8*) T1_READ_32(ptr) + +// T2_READ_8 is a duplicate to remain consistent with each group. +#define T2_READ_8(ptr) ((ptr)[0]) +#define T2_READ_16(ptr) ((ptr)[0] + ((ptr)[1] << 8)) +#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) +#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr) + +// Credits to Made (dolphin emoji) +#define S16TOPOSFLOAT(val) \ +({ \ + s16 v = (val); \ + float f = (float)v; \ + if(v < 0) f += 65536.0f; \ + f; \ +}) + +enum +{ + VERSION_SAPPHIRE = 1, + VERSION_RUBY = 2, + VERSION_EMERALD = 3, +}; + +enum LanguageId +{ + LANGUAGE_JAPANESE = 1, + LANGUAGE_ENGLISH = 2, + LANGUAGE_GERMAN = 5, +}; + +// capacities of various saveblock objects +#define DAYCARE_MON_COUNT 2 +#define POKEBLOCKS_COUNT 40 +#define PARTY_SIZE 6 +#define EVENT_OBJECTS_COUNT 16 +#define BERRY_TREES_COUNT 128 +#define FLAGS_COUNT 288 +#define VARS_COUNT 256 +#define MAIL_COUNT 16 +#define SECRET_BASES_COUNT 20 +#define TV_SHOWS_COUNT 25 +#define POKE_NEWS_COUNT 16 +#define PC_ITEMS_COUNT 50 +#define BAG_ITEMS_COUNT 20 +#define BAG_KEYITEMS_COUNT 20 +#define BAG_POKEBALLS_COUNT 16 +#define BAG_TMHM_COUNT 64 +#define BAG_BERRIES_COUNT 46 + +enum +{ + MALE, + FEMALE +}; + +enum +{ + OPTIONS_BUTTON_MODE_NORMAL, + OPTIONS_BUTTON_MODE_LR, + OPTIONS_BUTTON_MODE_L_EQUALS_A +}; + +enum +{ + OPTIONS_TEXT_SPEED_SLOW, + OPTIONS_TEXT_SPEED_MID, + OPTIONS_TEXT_SPEED_FAST +}; + +enum +{ + OPTIONS_SOUND_MONO, + OPTIONS_SOUND_STEREO +}; + +enum +{ + OPTIONS_BATTLE_STYLE_SHIFT, + OPTIONS_BATTLE_STYLE_SET +}; + +enum +{ + BAG_ITEMS = 1, + BAG_POKEBALLS, + BAG_TMsHMs, + BAG_BERRIES, + BAG_KEYITEMS +}; + +struct Coords16 +{ + s16 x; + s16 y; +}; + +struct UCoords16 +{ + u16 x; + u16 y; +}; + +struct SecretBaseRecord +{ + /*0x1A08*/ u8 secretBaseId; + /*0x1A09*/ u8 sbr_field_1_0:4; + /*0x1A09*/ u8 gender:1; + /*0x1A09*/ u8 sbr_field_1_5:1; + /*0x1A09*/ u8 sbr_field_1_6:2; + /*0x1A0A*/ u8 playerName[OT_NAME_LENGTH]; + /*0x1A11*/ u8 trainerId[4]; // byte 0 is used for determining trainer class + /*0x1A16*/ u16 sbr_field_e; + /*0x1A18*/ u8 sbr_field_10; + /*0x1A19*/ u8 sbr_field_11; + /*0x1A1A*/ u8 decorations[16]; + /*0x1A2A*/ u8 decorationPos[16]; + /*0x1A3C*/ u32 partyPersonality[6]; + /*0x1A54*/ u16 partyMoves[6 * 4]; + /*0x1A84*/ u16 partySpecies[6]; + /*0x1A90*/ u16 partyHeldItems[6]; + /*0x1A9C*/ u8 partyLevels[6]; + /*0x1AA2*/ u8 partyEVs[6]; +}; + +#include "constants/game_stat.h" +#include "global.fieldmap.h" +#include "global.berry.h" +#include "pokemon.h" + +struct WarpData +{ + s8 mapGroup; + s8 mapNum; + s8 warpId; + s16 x, y; +}; + +struct ItemSlot +{ + u16 itemId; + u16 quantity; +}; + +struct Pokeblock +{ + u8 color; + u8 spicy; + u8 dry; + u8 sweet; + u8 bitter; + u8 sour; + u8 feel; +}; + +struct Roamer +{ + /*0x00*/ u32 ivs; + /*0x04*/ u32 personality; + /*0x08*/ u16 species; + /*0x0A*/ u16 hp; + /*0x0C*/ u8 level; + /*0x0D*/ u8 status; + /*0x0E*/ u8 cool; + /*0x0F*/ u8 beauty; + /*0x10*/ u8 cute; + /*0x11*/ u8 smart; + /*0x12*/ u8 tough; + /*0x13*/ bool8 active; + /*0x14*/ u8 filler[0x8]; +}; + +struct RamScriptData +{ + u8 magic; + u8 mapGroup; + u8 mapNum; + u8 objectId; + u8 script[995]; +}; + +struct RamScript +{ + u32 checksum; + struct RamScriptData data; +}; + +struct EasyChatPair +{ + u16 unk0_0:7; + u16 unk0_7:7; + u16 unk1_6:1; + u16 unk2; + u16 words[2]; +}; /*size = 0x8*/ + +struct TVShowCommon +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 pad02[20]; + /*0x16*/ u16 var16[3]; + /*0x1C*/ u8 srcTrainerId3Lo; + /*0x1D*/ u8 srcTrainerId3Hi; + /*0x1E*/ u8 srcTrainerId2Lo; + /*0x1F*/ u8 srcTrainerId2Hi; + /*0x20*/ u8 srcTrainerIdLo; + /*0x21*/ u8 srcTrainerIdHi; + /*0x22*/ u8 trainerIdLo; + /*0x23*/ u8 trainerIdHi; +}; + +struct TVShowFanClubLetter +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 species; + /*0x04*/ u16 pad04[6]; + /*0x10*/ u8 playerName[8]; + /*0x18*/ u8 language; +}; + +struct TVShowRecentHappenings +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 var02; + /*0x04*/ u16 var04[6]; + /*0x10*/ u8 playerName[8]; + /*0x18*/ u8 language; + /*0x19*/ u8 pad19[10]; +}; + +struct TVShowFanclubOpinions +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 var02; + /*0x04*/ u8 var04A:4; + /*0x04*/ u8 var04B:4; + /*0x05*/ u8 playerName[8]; + /*0x0D*/ u8 language; + /*0x0E*/ u8 var0E; + /*0x0F*/ u8 var0F; + /*0x10*/ u8 var10[8]; + /*0x18*/ u16 var18[2]; + /*0x1C*/ u16 var1C[4]; +}; + +struct TVShowUnknownType04 +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 pad02[4]; + /*0x06*/ u16 var06; +}; + +struct TVShowNameRaterShow +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 species; + /*0x04*/ u8 pokemonName[11]; + /*0x0F*/ u8 trainerName[11]; + /*0x1A*/ u8 random; + /*0x1B*/ u8 random2; + /*0x1C*/ u16 var1C; + /*0x1E*/ u8 language; + /*0x1F*/ u8 pokemonNameLanguage; +}; + +struct TVShowBravoTrainerPokemonProfiles +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 species; + /*0x04*/ u16 var04[2]; + /*0x08*/ u8 pokemonNickname[11]; + /*0x13*/ u8 contestCategory:3; + /*0x13*/ u8 contestRank:2; + /*0x13*/ u8 contestResult:2; + /*0x13*/ u8 var13_7:1; + /*0x14*/ u16 var14; + /*0x16*/ u8 playerName[8]; + /*0x1E*/ u8 language; + /*0x1F*/ u8 var1f; +}; + +struct TVShowBravoTrainerBattleTowerSpotlight +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 trainerName[8]; + /*0x0A*/ u16 species; + /*0x0C*/ u8 enemyTrainerName[8]; + /*0x14*/ u16 defeatedSpecies; + /*0x16*/ u16 var16; + /*0x18*/ u16 var18[1]; + /*0x1A*/ u8 btLevel; + /*0x1B*/ u8 var1b; + /*0x1C*/ u8 var1c; + /*0x1D*/ u8 language; +}; + +struct TVShowPokemonToday +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 language; + /*0x03*/ u8 language2; + /*0x04*/ u8 nickname[11]; + /*0x0F*/ u8 ball; + /*0x10*/ u16 species; + /*0x12*/ u8 var12; + /*0x13*/ u8 playerName[8]; +}; + +struct TVShowSmartShopper +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 priceReduced; + /*0x03*/ u8 language; + /*0x04*/ u8 pad04[2]; + /*0x06*/ u16 itemIds[3]; + /*0x0C*/ u16 itemAmounts[3]; + /*0x12*/ u8 shopLocation; + /*0x13*/ u8 playerName[8]; +}; + +struct TVShowPokemonTodayFailed +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 language; + /*0x03*/ u8 pad03[9]; + /*0x0c*/ u16 species; + /*0x0e*/ u16 species2; + /*0x10*/ u8 var10; + /*0x11*/ u8 var11; + /*0x12*/ u8 var12; + /*0x13*/ u8 playerName[8]; +}; + +struct TVShowPokemonAngler +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 var02; + /*0x03*/ u8 var03; + /*0x04*/ u16 var04; + /*0x06*/ u8 language; + u8 pad07[12]; + /*0x13*/ u8 playerName[8]; +}; + +struct TVShowWorldOfMasters +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u16 var02; + /*0x04*/ u16 var04; + /*0x06*/ u16 var06; + /*0x08*/ u16 var08; + /*0x0a*/ u8 var0a; + /*0x0b*/ u8 language; + u8 pad0c[7]; + /*0x13*/ u8 playerName[8]; +}; + +struct TVShowMassOutbreak +{ + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 var02; + /*0x03*/ u8 var03; + /*0x04*/ u16 moves[4]; + /*0x0C*/ u16 species; + /*0x0E*/ u16 var0E; + /*0x10*/ u8 locationMapNum; + /*0x11*/ u8 locationMapGroup; + /*0x12*/ u8 var12; + /*0x13*/ u8 probability; + /*0x14*/ u8 level; + /*0x15*/ u8 var15; + /*0x16*/ u16 daysLeft; + /*0x18*/ u8 language; + u8 pad19[11]; +}; + +typedef union TVShow +{ + struct TVShowCommon common; + struct TVShowFanClubLetter fanclubLetter; + struct TVShowRecentHappenings recentHappenings; + struct TVShowFanclubOpinions fanclubOpinions; + struct TVShowUnknownType04 unkShow04; + struct TVShowNameRaterShow nameRaterShow; + struct TVShowBravoTrainerPokemonProfiles bravoTrainer; + struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower; + struct TVShowPokemonToday pokemonToday; + struct TVShowSmartShopper smartshopperShow; + struct TVShowPokemonTodayFailed pokemonTodayFailed; + struct TVShowPokemonAngler pokemonAngler; + struct TVShowWorldOfMasters worldOfMasters; + struct TVShowMassOutbreak massOutbreak; +} TVShow; + +struct MailStruct +{ + /*0x00*/ u16 words[9]; + /*0x12*/ u8 playerName[8]; + /*0x1A*/ u8 trainerId[4]; + /*0x1E*/ u16 species; + /*0x20*/ u16 itemId; +}; + + +// Mauville Pokemon Center men + +struct MauvilleManCommon +{ + u8 id; +}; + +struct MauvilleManBard +{ + /*0x00*/ u8 id; + /*0x02*/ u16 songLyrics[6]; + /*0x0E*/ u16 temporaryLyrics[6]; + /*0x1A*/ u8 playerName[8]; + /*0x22*/ u8 filler_2DB6[0x3]; + /*0x25*/ u8 playerTrainerId[4]; + /*0x29*/ bool8 hasChangedSong; +}; /*size = 0x2C*/ + +struct MauvilleManHipster +{ + u8 id; + bool8 alreadySpoken; +}; + +struct MauvilleManTrader +{ + u8 id; + u8 unk1[4]; + u8 unk5[4][11]; + bool8 alreadyTraded; +}; + +struct MauvilleManStoryteller +{ + u8 id; + bool8 alreadyRecorded; + u8 filler2[2]; + u8 gameStatIDs[4]; + u8 trainerNames[4][7]; + u8 statValues[4][4]; +}; + +struct MauvilleManGiddy +{ + /*0x00*/ u8 id; + /*0x01*/ u8 taleCounter; + /*0x02*/ u8 questionNum; + /*0x04*/ u16 randomWords[10]; + /*0x18*/ u8 questionList[12]; +}; /*size = 0x2C*/ + + +union MauvilleMan +{ + struct MauvilleManCommon common; + struct MauvilleManBard bard; + struct MauvilleManHipster hipster; + struct MauvilleManTrader trader; + struct MauvilleManStoryteller storyteller; + struct MauvilleManGiddy giddy; + u8 filler[0x40]; // needed to pad out the struct +}; + +struct PokeNews +{ + u8 kind; + u8 state; + u16 days; +}; + +struct GabbyAndTyData +{ + /*2b10*/ u16 mon1; + /*2b12*/ u16 mon2; + /*2b14*/ u16 lastMove; + /*2b16*/ u16 quote; + /*2b18*/ u8 mapnum; + /*2b19*/ u8 battleNum; + /*2b1a*/ u8 valA_0:1; + /*2b1a*/ u8 valA_1:1; + /*2b1a*/ u8 valA_2:1; + /*2b1a*/ u8 valA_3:1; + /*2b1a*/ u8 valA_4:1; + /*2b1a*/ u8 valA_5:3; + /*2b1b*/ u8 valB_0:1; + /*2b1b*/ u8 valB_1:1; + /*2b1b*/ u8 valB_2:1; + /*2b1b*/ u8 valB_3:1; + /*2b1b*/ u8 valB_4:1; + /*2b1b*/ u8 valB_5:3; +}; + +struct DayCareMail +{ + /*0x00*/ struct MailStruct message; + /*0x24*/ u8 names[19]; +}; + +struct DayCareStepCountersEtc { + u32 steps[DAYCARE_MON_COUNT]; + u16 pendingEggPersonality; + u8 eggCycleStepsRemaining; +}; + +struct RecordMixingDayCareMail +{ + struct DayCareMail mail[DAYCARE_MON_COUNT]; + u32 numDaycareMons; + u16 itemsHeld[DAYCARE_MON_COUNT]; // marks whether or not each daycare mon is currently holding an item. +}; + +struct DayCareMisc +{ + struct DayCareMail mail[DAYCARE_MON_COUNT]; + struct DayCareStepCountersEtc countersEtc; +}; + +struct DayCare { + struct BoxPokemon mons[DAYCARE_MON_COUNT]; + struct DayCareMisc misc; +}; + +struct LinkBattleRecord +{ + u8 name[8]; + u16 trainerId; + u16 wins; + u16 losses; + u16 draws; +}; + +struct RecordMixingGiftData +{ + u8 unk0; + u8 quantity; + u16 itemId; + u8 filler4[8]; +}; + +struct RecordMixingGift +{ + int checksum; + struct RecordMixingGiftData data; +}; + +struct ContestWinner +{ + /*0x00*/ u32 personality; // personality + /*0x04*/ u32 otId; // otId + /*0x08*/ u16 species; // species + /*0x0A*/ u8 contestCategory; + /*0x0B*/ u8 nickname[11]; + /*0x16*/ u8 trainerName[8]; +}; + +// there should be enough flags for all 412 slots +// each slot takes up 8 flags +// if the value is not divisible by 8, we need to account for the reminder as well +#define DEX_FLAGS_NO ((POKEMON_SLOTS_NUMBER / 8) + ((POKEMON_SLOTS_NUMBER % 8) ? 1 : 0)) + +struct SaveBlock1 /* 0x02025734 */ +{ + /*0x00*/ struct Coords16 pos; + /*0x04*/ struct WarpData location; + /*0x0C*/ struct WarpData warp1; + /*0x14*/ struct WarpData warp2; + /*0x1C*/ struct WarpData lastHealLocation; + /*0x24*/ struct WarpData warp4; + /*0x2C*/ u16 savedMusic; + /*0x2E*/ u8 weather; + /*0x2F*/ u8 weatherCycleStage; + /*0x30*/ u8 flashLevel; // flash level on current map, 0 being normal and 4 being the darkest + /*0x32*/ u16 mapLayoutId; + /*0x34*/ u16 mapView[0x100]; + /*0x234*/ u8 playerPartyCount; + /*0x238*/ struct Pokemon playerParty[6]; + /*0x490*/ u32 money; + /*0x494*/ u16 coins; + /*0x496*/ u16 registeredItem; // registered for use with SELECT button + /*0x498*/ struct ItemSlot pcItems[PC_ITEMS_COUNT]; + /*0x560*/ struct ItemSlot bagPocket_Items[BAG_ITEMS_COUNT]; + /*0x5B0*/ struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT]; + /*0x600*/ struct ItemSlot bagPocket_PokeBalls[BAG_POKEBALLS_COUNT]; + /*0x640*/ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT]; + /*0x740*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT]; + /*0x7F8*/ struct Pokeblock pokeblocks[POKEBLOCKS_COUNT]; + /*0x938*/ u8 dexSeen2[DEX_FLAGS_NO]; + /*0x96C*/ u16 berryBlenderRecords[3]; + /*0x972*/ u8 filler_972[0x6]; + /*0x978*/ u16 trainerRematchStepCounter; + /*0x97A*/ u8 trainerRematches[100]; + /*0x9E0*/ struct EventObject eventObjects[EVENT_OBJECTS_COUNT]; + /*0xC20*/ struct EventObjectTemplate eventObjectTemplates[64]; + /*0x1220*/ u8 flags[FLAGS_COUNT]; + /*0x1340*/ u16 vars[VARS_COUNT]; + /*0x1540*/ u32 gameStats[NUM_GAME_STATS]; + /*0x1608*/ struct BerryTree berryTrees[BERRY_TREES_COUNT]; + /*0x1A08*/ struct SecretBaseRecord secretBases[SECRET_BASES_COUNT]; + /*0x2688*/ u8 playerRoomDecor[12]; + /*0x2694*/ u8 playerRoomDecorPos[12]; + /*0x26A0*/ u8 decorDesk[10]; + /*0x26AA*/ u8 decorChair[10]; + /*0x26B4*/ u8 decorPlant[10]; + /*0x26BE*/ u8 decorOrnament[30]; + /*0x26DC*/ u8 decorMat[30]; + /*0x26FA*/ u8 decorPoster[10]; + /*0x2704*/ u8 decorDoll[40]; + /*0x272C*/ u8 decorCushion[10]; + /*0x2736*/ u8 padding_2736[2]; + /*0x2738*/ TVShow tvShows[TV_SHOWS_COUNT]; + /*0x2ABC*/ struct PokeNews pokeNews[POKE_NEWS_COUNT]; + /*0x2AFC*/ u16 outbreakPokemonSpecies; + /*0x2AFE*/ u8 outbreakLocationMapNum; + /*0x2AFF*/ u8 outbreakLocationMapGroup; + /*0x2B00*/ u8 outbreakPokemonLevel; + /*0x2B01*/ u8 outbreakUnk1; + /*0x2B02*/ u16 outbreakUnk2; + /*0x2B04*/ u16 outbreakPokemonMoves[4]; + /*0x2B0C*/ u8 outbreakUnk4; + /*0x2B0D*/ u8 outbreakPokemonProbability; + /*0x2B0E*/ u16 outbreakUnk5; + /*0x2B10*/ struct GabbyAndTyData gabbyAndTyData; + /*0x2B1C*/ struct { + /*0x2B1C*/ u16 unk2B1C[6]; + /*0x2B28*/ u16 unk2B28[6]; + /*0x2B34*/ u16 unk2B34[6]; + /*0x2B40*/ u16 unk2B40[6]; + } easyChats; + /*0x2B4C*/ struct MailStruct mail[MAIL_COUNT]; + /*0x2D8C*/ u8 unk2D8C[4]; // What is this? Apparently it's supposed to be 64 bytes in size. + /*0x2D90*/ u8 filler_2D90[0x4]; + /*0x2D94*/ union MauvilleMan mauvilleMan; + /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff + /*0x2DFC*/ struct ContestWinner contestWinners[8]; + /*0x2EFC*/ struct ContestWinner museumPortraits[5]; + /*0x2F9C*/ struct DayCare daycare; + /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5]; + struct { + /*0x3108*/ u8 unknown1[8]; + /*0x3110*/ u8 giftRibbons[11]; + /*0x311B*/ u8 unknown2[8]; + /*0x3123*/ u32 currentPokeCoupons; + /*0x3127*/ u32 totalEarnedPokeCoupons; + /*0x312B*/ u8 unknown3[6]; + /*0x3131*/ u8 receivedWishmakerJirachi; + /*0x3132*/ u8 unknown4[18]; + } __attribute__((packed)) externalReservedData; + /*0x3144*/ struct Roamer roamer; + /*0x3160*/ struct EnigmaBerry enigmaBerry; + /*0x3690*/ struct RamScript ramScript; + /*0x3A7C*/ struct RecordMixingGift recordMixingGift; + /*0x3A8C*/ u8 dexSeen3[DEX_FLAGS_NO]; +}; + +extern struct SaveBlock1 gSaveBlock1; + +struct Time +{ + /*0x00*/ s16 days; + /*0x02*/ s8 hours; + /*0x03*/ s8 minutes; + /*0x04*/ s8 seconds; +}; + +struct Pokedex +{ + /*0x00*/ u8 order; + /*0x01*/ u8 unknown1; + /*0x02*/ u8 nationalMagic; // must equal 0xDA in order to have National mode + /*0x03*/ u8 unknown2; + /*0x04*/ u32 unownPersonality; // set when you first see Unown + /*0x08*/ u32 spindaPersonality; // set when you first see Spinda + /*0x0C*/ u32 unknown3; + /*0x10*/ u8 owned[DEX_FLAGS_NO]; + /*0x44*/ u8 seen[DEX_FLAGS_NO]; +}; + +struct BattleTowerTrainer +{ + /*0x00*/ u8 trainerClass; + /*0x01*/ u8 name[8]; + /*0x09*/ u8 teamFlags; + u8 filler0A[2]; + /*0x0C*/ u16 greeting[6]; +}; + +struct BattleTowerRecord // record mixing +{ + /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 + /*0x01*/ u8 trainerClass; + /*0x02*/ u16 winStreak; + /*0x04*/ u8 name[8]; + /*0x0C*/ u8 trainerId[4]; + /*0x10*/ u16 greeting[6]; + /*0x1C*/ struct BattleTowerPokemon party[3]; + /*0xA0*/ u32 checksum; +}; + +struct BattleTowerEReaderTrainer +{ + /*0x00*/ u8 unk0; + /*0x01*/ u8 trainerClass; + /*0x02*/ u16 winStreak; + /*0x04*/ u8 name[8]; + /*0x0C*/ u8 trainerId[4]; + /*0x10*/ u16 greeting[6]; + /*0x1C*/ u16 farewellPlayerLost[6]; + /*0x28*/ u16 farewellPlayerWon[6]; + /*0x34*/ struct BattleTowerPokemon party[3]; + /*0xB8*/ u32 checksum; +}; + +struct BattleTowerData +{ + /*0x0000, 0x00A8*/ struct BattleTowerRecord playerRecord; + /*0x00A4, 0x014C*/ struct BattleTowerRecord records[5]; // from record mixing + /*0x03D8, 0x0480*/ u16 firstMonSpecies; // species of the first pokemon in the player's battle tower party + /*0x03DA, 0x0482*/ u16 defeatedBySpecies; // species of the pokemon that defated the player + /*0x03DC, 0x0484*/ u8 defeatedByTrainerName[8]; + /*0x03E4, 0x048C*/ u8 firstMonNickname[POKEMON_NAME_LENGTH]; // nickname of the first pokemon in the player's battle tower party + /*0x03F0, 0x0498*/ struct BattleTowerEReaderTrainer ereaderTrainer; + /*0x04AC, 0x0554*/ u8 battleTowerLevelType:1; // 0 = level 50; 1 = level 100 + /*0x04AC, 0x0554*/ u8 unk_554:1; + /*0x04AD, 0x0555*/ u8 battleOutcome; + /*0x04AE, 0x0556*/ u8 var_4AE[2]; + /*0x04B0, 0x0558*/ u16 curChallengeBattleNum[2]; // 1-based index of battle in the current challenge. (challenges consist of 7 battles) + /*0x04B4, 0x055C*/ u16 curStreakChallengesNum[2]; // 1-based index of the current challenge in the current streak. + /*0x04B8, 0x0560*/ u16 recordWinStreaks[2]; + /*0x04BC, 0x0564*/ u8 battleTowerTrainerId; // index for gBattleTowerTrainers table + /*0x04BD, 0x0565*/ u8 selectedPartyMons[0x3]; // indices of the 3 selected player party mons. + /*0x04C0, 0x0568*/ u16 prizeItem; + /*0x04C2, 0x056A*/ u8 battledTrainerIds[6]; + /*0x04C8, 0x0570*/ u16 totalBattleTowerWins; + /*0x04CA, 0x0572*/ u16 bestBattleTowerWinStreak; + /*0x04CC, 0x0574*/ u16 currentWinStreaks[2]; + /*0x04D0, 0x0578*/ u8 lastStreakLevelType; // 0 = level 50, 1 = level 100. level type of the last streak. Used by tv to report the level mode. + /*0x04D1, 0x0579*/ u8 filler_4D1[0x317]; +}; + +struct SaveBlock2 /* 0x02024EA4 */ +{ + /*0x00*/ u8 playerName[8]; + /*0x08*/ u8 playerGender; // MALE, FEMALE + /*0x09*/ u8 specialSaveWarp; + /*0x0A*/ u8 playerTrainerId[4]; + /*0x0E*/ u16 playTimeHours; + /*0x10*/ u8 playTimeMinutes; + /*0x11*/ u8 playTimeSeconds; + /*0x12*/ u8 playTimeVBlanks; + /*0x13*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A] + /*0x14*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST] + u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes + u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] + u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] + u16 optionsBattleSceneOff:1; // whether battle animations are disabled + u16 regionMapZoom:1; // whether the map is zoomed in + /*0x18*/ struct Pokedex pokedex; + /*0x90*/ u8 filler_90[0x8]; + /*0x98*/ struct Time localTimeOffset; + /*0xA0*/ struct Time lastBerryTreeUpdate; + /*0xA8*/ struct BattleTowerData battleTower; +}; + +struct MapPosition +{ + s16 x; + s16 y; + s8 height; +}; + +struct UnkStruct_8054FF8 +{ + u8 a; + u8 b; + u8 c; + u8 d; + struct MapPosition sub; + u16 field_C; +}; + +// wasnt defined so I had to define it +struct HallOfFame +{ + u8 filler[0x1F00]; +}; + +extern struct SaveBlock2 gSaveBlock2; + +#define RomHeaderGameTitle ((const char *)0x080000A0) +#define RomHeaderGameCode ((const char *)0x080000AC) +#define RomHeaderMakerCode ((const char *)0x080000B0) +#define RomHeaderMagic ((const u8 *) 0x080000B2) +#define RomHeaderSoftwareVersion ((const u8 *) 0x080000BC) + +#define LocalTimeOffset ((struct Time *)0x02028098) +#define LastBerryTreeUpdate ((struct Time *)0x020280A0) + +#endif //GUARD_GLOBAL_H diff --git a/berry_fix/payload/include/main.h b/berry_fix/payload/include/main.h new file mode 100644 index 000000000..8f7ef1a5a --- /dev/null +++ b/berry_fix/payload/include/main.h @@ -0,0 +1,45 @@ +#ifndef GUARD_MAIN_H +#define GUARD_MAIN_H + +#include <gba/gba.h> + +enum RomHeaderValidationResult +{ + SAPPHIRE_UPDATABLE = 2, + RUBY_UPDATABLE, + SAPPHIRE_NONEED, + RUBY_NONEED, + INVALID +}; + +enum MainCallbackState +{ + MAINCB_INIT = 0, + MAINCB_CHECK_RTC, + MAINCB_CHECK_FLASH, + MAINCB_READ_SAVE, + MAINCB_CHECK_TIME, + MAINCB_FIX_DATE, + MAINCB_NO_NEED_TO_FIX, + MAINCB_YEAR_MAKES_NO_SENSE, + MAINCB_FINISHED, + MAINCB_CHECK_PACIFIDLOG_TM, + MAINCB_FIX_PACIFIDLOG_TM, + MAINCB_ERROR +}; + +extern IntrFunc gIntrTable[]; +extern u16 gHeldKeys; +extern u16 gNewKeys; +extern u8 gIntrVector[]; +extern u32 gUpdateSuccessful; +extern u32 gUnknown_3001194; +extern u32 gUnknown_30011A0[]; +extern u32 gMainCallbackState; +extern u32 gGameVersion; + +extern u8 gSharedMem[0x8000]; + +extern const IntrFunc gIntrFuncPointers[]; + +#endif //GUARD_MAIN_H diff --git a/berry_fix/payload/include/pokemon.h b/berry_fix/payload/include/pokemon.h new file mode 100644 index 000000000..d3a14ffff --- /dev/null +++ b/berry_fix/payload/include/pokemon.h @@ -0,0 +1,154 @@ +#ifndef GUARD_POKEMON_H +#define GUARD_POKEMON_H + +struct PokemonSubstruct0 +{ + u16 species; + u16 heldItem; + u32 experience; + u8 ppBonuses; + u8 friendship; +}; + +struct PokemonSubstruct1 +{ + u16 moves[4]; + u8 pp[4]; +}; + +struct PokemonSubstruct2 +{ + u8 hpEV; + u8 attackEV; + u8 defenseEV; + u8 speedEV; + u8 spAttackEV; + u8 spDefenseEV; + u8 cool; + u8 beauty; + u8 cute; + u8 smart; + u8 tough; + u8 sheen; +}; + +struct PokemonSubstruct3 +{ + /*0x00*/ u8 pokerus; + /*0x01*/ u8 metLocation; + + /*0x02*/ u16 metLevel:7; + /*0x02*/ u16 metGame:4; + /*0x03*/ u16 pokeball:4; + /*0x03*/ u16 otGender:1; + + /*0x04*/ u32 hpIV:5; + /*0x04*/ u32 attackIV:5; + /*0x05*/ u32 defenseIV:5; + /*0x05*/ u32 speedIV:5; + /*0x05*/ u32 spAttackIV:5; + /*0x06*/ u32 spDefenseIV:5; + /*0x07*/ u32 isEgg:1; + /*0x07*/ u32 altAbility:1; + + /*0x08*/ u32 coolRibbon:3; + /*0x08*/ u32 beautyRibbon:3; + /*0x08*/ u32 cuteRibbon:3; + /*0x09*/ u32 smartRibbon:3; + /*0x09*/ u32 toughRibbon:3; + /*0x09*/ u32 championRibbon:1; + /*0x0A*/ u32 winningRibbon:1; + /*0x0A*/ u32 victoryRibbon:1; + /*0x0A*/ u32 artistRibbon:1; + /*0x0A*/ u32 effortRibbon:1; + /*0x0A*/ u32 giftRibbon1:1; + /*0x0A*/ u32 giftRibbon2:1; + /*0x0A*/ u32 giftRibbon3:1; + /*0x0A*/ u32 giftRibbon4:1; + /*0x0B*/ u32 giftRibbon5:1; + /*0x0B*/ u32 giftRibbon6:1; + /*0x0B*/ u32 giftRibbon7:1; + /*0x0B*/ u32 fatefulEncounter:5; // unused in Ruby/Sapphire, but the high bit must be set for Mew/Deoxys to obey in FR/LG/Emerald +}; + +union PokemonSubstruct +{ + struct PokemonSubstruct0 type0; + struct PokemonSubstruct1 type1; + struct PokemonSubstruct2 type2; + struct PokemonSubstruct3 type3; + u16 raw[6]; +}; + +struct BoxPokemon +{ + /*0x00*/ u32 personality; + /*0x04*/ u32 otId; + /*0x08*/ u8 nickname[POKEMON_NAME_LENGTH]; + /*0x12*/ u8 language; + /*0x13*/ u8 isBadEgg:1; + u8 hasSpecies:1; + u8 isEgg:1; + /*0x14*/ u8 otName[OT_NAME_LENGTH]; + /*0x1B*/ u8 markings; + /*0x1C*/ u16 checksum; + /*0x1E*/ u16 unknown; + + union + { + u32 raw[12]; + union PokemonSubstruct substructs[4]; + } secure; +}; /*size = 0x50*/ + +struct Pokemon +{ + /*0x00*/ struct BoxPokemon box; + /*0x50*/ u32 status; + /*0x54*/ u8 level; + /*0x55*/ u8 mail; + /*0x56*/ u16 hp; + /*0x58*/ u16 maxHP; + /*0x5A*/ u16 attack; + /*0x5C*/ u16 defense; + /*0x5E*/ u16 speed; + /*0x60*/ u16 spAttack; + /*0x62*/ u16 spDefense; +}; + +struct BattleTowerPokemon +{ + /*0x00*/u16 species; + /*0x02*/u16 heldItem; + /*0x04*/u16 moves[4]; + /*0x0C*/u8 level; + /*0x0D*/u8 ppBonuses; + /*0x0E*/u8 hpEV; + /*0x0F*/u8 attackEV; + /*0x10*/u8 defenseEV; + /*0x11*/u8 speedEV; + /*0x12*/u8 spAttackEV; + /*0x13*/u8 spDefenseEV; + /*0x14*/u32 otId; + /*0x18*/u32 hpIV:5; + /*0x18*/u32 attackIV:5; + /*0x19*/u32 defenseIV:5; + /*0x19*/u32 speedIV:5; + /*0x1A*/u32 spAttackIV:5; + /*0x1A*/u32 spDefenseIV:5; + /*0x1B*/u32 gap:1; + /*0x1B*/u32 altAbility:1; + /*0x1C*/u32 personality; + /*0x20*/u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x2B*/u8 friendship; +}; + +struct PokemonStorage +{ + /*0x0000*/ u8 currentBox; + /*0x0004*/ struct BoxPokemon boxes[14][30]; + /*0x8344*/ u8 boxNames[14][9]; + /*0x83c2*/ u8 wallpaper[14]; +}; + +#endif // GUARD_POKEMON_H diff --git a/berry_fix/payload/include/rtc.h b/berry_fix/payload/include/rtc.h new file mode 100644 index 000000000..64a1f2295 --- /dev/null +++ b/berry_fix/payload/include/rtc.h @@ -0,0 +1,15 @@ +#ifndef GUARD_RTC_H +#define GUARD_RTC_H + +#include <gba/gba.h> +#include <siirtc.h> +#include "global.h" + +extern struct Time gTimeSinceBerryUpdate; +extern struct Time gRtcUTCTime; + +bool32 rtc_maincb_is_rtc_working(void); +bool32 rtc_maincb_is_time_since_last_berry_update_positive(u8 *); +void rtc_maincb_fix_date(void); + +#endif //GUARD_RTC_H diff --git a/berry_fix/payload/ld_script.sed b/berry_fix/payload/ld_script.sed new file mode 100644 index 000000000..b91542b6f --- /dev/null +++ b/berry_fix/payload/ld_script.sed @@ -0,0 +1,14 @@ +/<EWRAM>/ { + r sym_ewram.ld + d +} + +/<BSS>/ { + r sym_bss.ld + d +} + +/<COMMON>/ { + r sym_common.ld + d +} diff --git a/berry_fix/payload/ld_script.txt b/berry_fix/payload/ld_script.txt new file mode 100644 index 000000000..a70ecac09 --- /dev/null +++ b/berry_fix/payload/ld_script.txt @@ -0,0 +1,122 @@ +ENTRY(Init) + +SECTIONS { + . = 0x2010000; + + .text : + ALIGN(4) + { + asm/crt0.o(.text); + src/main.o(.text); + src/rtc.o(.text); + src/flash.o(.text); + } =0 + + lib_text : + ALIGN(4) + { + *libagb_flash.a:agb_flash.o(.text); + *libagb_flash.a:agb_flash_1m.o(.text); + *libagb_flash.a:agb_flash_mx.o(.text); + *libagbsyscall.a:ArcTan2.o(.text); + *libagbsyscall.a:BgAffineSet.o(.text); + *libagbsyscall.a:CpuFastSet.o(.text); + *libagbsyscall.a:CpuSet.o(.text); + *libagbsyscall.a:Div.o(.text); + *libagbsyscall.a:Mod.o(.text); + *libagbsyscall.a:LZ77UnCompVram.o(.text); + *libagbsyscall.a:LZ77UnCompWram.o(.text); + *libagbsyscall.a:MultiBoot.o(.text); + *libagbsyscall.a:ObjAffineSet.o(.text); + *libagbsyscall.a:RLUnCompVram.o(.text); + *libagbsyscall.a:RLUnCompWram.o(.text); + *libagbsyscall.a:RegisterRamReset.o(.text); + *libagbsyscall.a:SoftReset.o(.text); + *libagbsyscall.a:Sqrt.o(.text); + *libagbsyscall.a:VBlankIntrWait.o(.text); + *libsiirtc.a:siirtc.o(.text); + *libgcc.a:_call_via_rX.o(.text); + *libgcc.a:_modsi3.o(.text); + *libgcc.a:_umodsi3.o(.text); + *libgcc.a:_dvmd_tls.o(.text); + } =0 + + .rodata : + ALIGN(4) + { + src/main.o(.rodata); + src/rtc.o(.rodata); + src/flash.o(.rodata); + } =0 + + lib_rodata : + ALIGN(4) + { + *libagb_flash.a:agb_flash.o(.rodata); + *libagb_flash.a:agb_flash_1m.o(.rodata); + *libagb_flash.a:agb_flash_mx.o(.rodata); + *libagb_flash.a:agb_flash_le.o(.rodata); + *libsiirtc.a:siirtc.o(.rodata); + } + + . = 0x2020000; + + ewram (NOLOAD) : + ALIGN(4) + { +<EWRAM> + } + + . = 0x3001000; + + iwram (NOLOAD) : + ALIGN(4) + { +<BSS> + . = 0x40; +<COMMON> + end = .; + } + + . = 0x8000000; + + RS_Rom (NOLOAD) : + ALIGN(4) + { + _start = .; + . += 4; + RomHeaderNintendoLogo = .; + . += 156; + RS_RomHeader = .; + RomHeaderGameTitle = .; + . += 12; + RomHeaderGameCode = .; + . += 4; + RomHeaderMakerCode = .; + . += 2; + RomHeaderMagic = .; + . += 1; + RomHeaderMainUnitCode = .; + . += 1; + RomHeaderDeviceType = .; + . += 1; + RomHeaderReserved1 = .; + . += 7; + RomHeaderSoftwareVersion = .; + . += 1; + RomHeaderChecksum = .; + . += 1; + RomHeaderReserved2 = .; + . += 6; + GPIOPortData = .; + . += 2; + GPIOPortDirection = .; + . += 2; + GPIOPortReadEnable = .; + } =0 + + /DISCARD/ : + { + *(*); + } +} diff --git a/berry_fix/payload/rom.sha1 b/berry_fix/payload/rom.sha1 new file mode 100644 index 000000000..92eee7e87 --- /dev/null +++ b/berry_fix/payload/rom.sha1 @@ -0,0 +1 @@ +866991e2b5a8de02d12f53abe0ee9af03a2b6e01 payload.gba diff --git a/berry_fix/payload/src/flash.c b/berry_fix/payload/src/flash.c new file mode 100644 index 000000000..3a0369dda --- /dev/null +++ b/berry_fix/payload/src/flash.c @@ -0,0 +1,752 @@ +#include <gba/gba.h> +#include <agb_flash.h> +#include "constants/vars.h" +#include "global.h" +#include "main.h" +#include "flash.h" +#include "rtc.h" + +struct SaveBlockChunk +{ + u8 * data; + u16 size; +}; + +u8 WriteSaveBlockChunks(u16 a0, const struct SaveBlockChunk * a1); +u8 WriteSingleChunk(u16 a0, const struct SaveBlockChunk * a1); +u8 TryWriteSector(u8, u8 *); +u8 EraseCurrentChunk(u16 a0, const struct SaveBlockChunk * a1); +u8 TryReadAllSaveSectorsCurrentSlot(u16 a0, const struct SaveBlockChunk * a1); +u8 ReadAllSaveSectorsCurrentSlot(u16 a0, const struct SaveBlockChunk * a1); +u8 GetSaveValidStatus(const struct SaveBlockChunk * a1); +u32 DoReadFlashWholeSection(u8 a0, struct SaveSector * a1); +u16 CalculateChecksum(const void *, u16); + +u16 gFirstSaveSector; +u32 gPrevSaveCounter; +u16 gLastKnownGoodSector; +u32 gDamagedSaveSectors; +u32 gSaveCounter; +struct SaveSector * gFastSaveSection; +u16 gCurSaveChunk; +bool32 gFlashIdentIsValid; + +EWRAM_DATA struct SaveBlock2 gSaveBlock2 = {}; +EWRAM_DATA struct SaveBlock1 gSaveBlock1 = {}; +EWRAM_DATA struct PokemonStorage gPokemonStorage = {}; + +// Each 4 KiB flash sector contains 3968 bytes of actual data followed by a 128 byte footer +#define SECTOR_DATA_SIZE 3968 +#define SECTOR_FOOTER_SIZE 128 + +#define SAVEBLOCK_CHUNK(structure, chunkNum) \ +{ \ + (u8 *)&structure + chunkNum * SECTOR_DATA_SIZE, \ + min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \ +} \ + +static const struct SaveBlockChunk sSaveBlockChunks[] = +{ + SAVEBLOCK_CHUNK(gSaveBlock2, 0), + + SAVEBLOCK_CHUNK(gSaveBlock1, 0), + SAVEBLOCK_CHUNK(gSaveBlock1, 1), + SAVEBLOCK_CHUNK(gSaveBlock1, 2), + SAVEBLOCK_CHUNK(gSaveBlock1, 3), + + SAVEBLOCK_CHUNK(gPokemonStorage, 0), + SAVEBLOCK_CHUNK(gPokemonStorage, 1), + SAVEBLOCK_CHUNK(gPokemonStorage, 2), + SAVEBLOCK_CHUNK(gPokemonStorage, 3), + SAVEBLOCK_CHUNK(gPokemonStorage, 4), + SAVEBLOCK_CHUNK(gPokemonStorage, 5), + SAVEBLOCK_CHUNK(gPokemonStorage, 6), + SAVEBLOCK_CHUNK(gPokemonStorage, 7), + SAVEBLOCK_CHUNK(gPokemonStorage, 8), +}; + +const u16 gInfoMessagesPal[] = INCBIN_U16("graphics/msg_box.gbapal"); +const u8 gInfoMessagesTilemap[] = INCBIN_U8("graphics/msg_box.tilemap.lz"); +const u8 gInfoMessagesGfx[] = INCBIN_U8("graphics/msg_box.4bpp.lz"); + +bool32 flash_maincb_ident_is_valid(void) +{ + gFlashIdentIsValid = TRUE; + if (!IdentifyFlash()) + { + SetFlashTimerIntr(0, &((IntrFunc *)gIntrFuncPointers)[9]); + return TRUE; + } + gFlashIdentIsValid = FALSE; + return FALSE; +} + +void Call_ReadFlash(u16 sectorNum, ptrdiff_t offset, void * dest, size_t size) +{ + ReadFlash(sectorNum, offset, dest, size); +} + +u8 Call_WriteSaveBlockChunks(u16 a0, const struct SaveBlockChunk * a1) +{ + return WriteSaveBlockChunks(a0, a1); +} + +u8 Call_TryReadAllSaveSectorsCurrentSlot(u16 a0, const struct SaveBlockChunk * a1) +{ + return TryReadAllSaveSectorsCurrentSlot(a0, a1); +} + +u32 * GetDamagedSaveSectorsPtr(void) +{ + return &gDamagedSaveSectors; +} + +s32 flash_write_save_block_chunks(u8 a0) +{ + u8 i; + + switch (a0) + { + case 0: + default: + Call_WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks); + break; + case 1: + for (i = 0; i < 5; i++) + { + Call_WriteSaveBlockChunks(i, sSaveBlockChunks); + } + break; + case 2: + Call_WriteSaveBlockChunks(0, sSaveBlockChunks); + break; + } + + return 0; +} + +u8 flash_write_save_block_chunks_check_damage(u8 a0) +{ + flash_write_save_block_chunks(a0); + if (*GetDamagedSaveSectorsPtr() == 0) + return 1; + return 0xFF; +} + +u8 flash_maincb_read_save(u32 unused) +{ + return Call_TryReadAllSaveSectorsCurrentSlot(0xFFFF, sSaveBlockChunks); +} + +void msg_load_gfx(void) +{ + REG_DISPCNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BLDCNT = 0; + LZ77UnCompVram(gInfoMessagesGfx, (void *)BG_VRAM); + LZ77UnCompVram(gInfoMessagesTilemap, (void *)BG_SCREEN_ADDR(28)); + CpuCopy16(gInfoMessagesPal, (void *)BG_PLTT, 0x200); + REG_BG0CNT = BGCNT_SCREENBASE(28) | BGCNT_TXT512x512; + REG_DISPCNT = DISPCNT_BG0_ON; +} + +void msg_display(enum MsgBoxUpdateMessage a0) +{ + switch (a0) + { + case MSGBOX_WILL_NOW_UPDATE: + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + break; + case MSGBOX_HAS_BEEN_UPDATED: + REG_BG0HOFS = 0x100; + REG_BG0VOFS = 0; + break; + case MSGBOX_UNABLE_TO_UPDATE: + REG_BG0HOFS = 0x100; + REG_BG0VOFS = 0xB0; + break; + case MSGBOX_NO_NEED_TO_UPDATE: + REG_BG0HOFS = 0; + REG_BG0VOFS = 0xB0; + break; + case MSGBOX_UPDATING: + REG_BG0HOFS = 0; + REG_BG0VOFS = 0x160; + break; + } +} + +void Save_EraseAllData(void) +{ + u16 i; + for (i = 0; i < 32; i++) + EraseFlashSector(i); +} + +void Save_ResetSaveCounters(void) +{ + gSaveCounter = 0; + gFirstSaveSector = 0; + gDamagedSaveSectors = 0; +} + +bool32 SetSectorDamagedStatus(u8 op, u8 sectorNum) +{ + bool32 retVal = FALSE; + + switch (op) + { + case SECTOR_DAMAGED: + gDamagedSaveSectors |= (1 << sectorNum); + break; + case SECTOR_OK: + gDamagedSaveSectors &= ~(1 << sectorNum); + break; + case SECTOR_CHECK: // unused + if (gDamagedSaveSectors & (1 << sectorNum)) + retVal = TRUE; + break; + } + + return retVal; +} + +u8 WriteSaveBlockChunks(u16 chunkId, const struct SaveBlockChunk *chunks) +{ + u32 retVal; + u16 i; + + gFastSaveSection = eSaveSection; + + if (chunkId != 0xFFFF) // write single chunk + { + retVal = WriteSingleChunk(chunkId, chunks); + } + else // write all chunks + { + gLastKnownGoodSector = gFirstSaveSector; + gPrevSaveCounter = gSaveCounter; + gFirstSaveSector++; + gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT; + gSaveCounter++; + retVal = SAVE_STATUS_OK; + + for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++) + WriteSingleChunk(i, chunks); + + // Check for any bad sectors + if (gDamagedSaveSectors != 0) // skip the damaged sector. + { + retVal = SAVE_STATUS_ERROR; + gFirstSaveSector = gLastKnownGoodSector; + gSaveCounter = gPrevSaveCounter; + } + } + + return retVal; +} + +u8 WriteSingleChunk(u16 chunkId, const struct SaveBlockChunk * chunks) +{ + u16 i; + u16 sectorNum; + u8 *chunkData; + u16 chunkSize; + + // select sector number + sectorNum = chunkId + gFirstSaveSector; + sectorNum %= NUM_SECTORS_PER_SAVE_SLOT; + // select save slot + sectorNum += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); + + chunkData = chunks[chunkId].data; + chunkSize = chunks[chunkId].size; + + // clear save section. + for (i = 0; i < sizeof(struct SaveSector); i++) + ((u8 *)gFastSaveSection)[i] = 0; + + gFastSaveSection->id = chunkId; + gFastSaveSection->signature = FILE_SIGNATURE; + gFastSaveSection->counter = gSaveCounter; + for (i = 0; i < chunkSize; i++) + gFastSaveSection->data[i] = chunkData[i]; + gFastSaveSection->checksum = CalculateChecksum(chunkData, chunkSize); + + return TryWriteSector(sectorNum, gFastSaveSection->data); +} + +u8 HandleWriteSectorNBytes(u8 sectorNum, u8 *data, u16 size) +{ + u16 i; + struct SaveSector *section = eSaveSection; + + for (i = 0; i < sizeof(struct SaveSector); i++) + ((char *)section)[i] = 0; + + section->signature = FILE_SIGNATURE; + for (i = 0; i < size; i++) + section->data[i] = data[i]; + section->id = CalculateChecksum(data, size); // though this appears to be incorrect, it might be some sector checksum instead of a whole save checksum and only appears to be relevent to HOF data, if used. + + return TryWriteSector(sectorNum, section->data); +} + +u8 TryWriteSector(u8 sectorNum, u8 *data) +{ + if (ProgramFlashSectorAndVerify(sectorNum, data) != 0) // is damaged? + { + SetSectorDamagedStatus(SECTOR_DAMAGED, sectorNum); // set damaged sector bits. + return SAVE_STATUS_ERROR; + } + else + { + SetSectorDamagedStatus(SECTOR_OK, sectorNum); // unset damaged sector bits. it's safe now. + return SAVE_STATUS_OK; + } +} + +u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *chunk) // chunk is unused +{ + gFastSaveSection = eSaveSection; + gLastKnownGoodSector = gFirstSaveSector; + gPrevSaveCounter = gSaveCounter; + gFirstSaveSector++; + gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT; + gSaveCounter++; + gCurSaveChunk = 0; + gDamagedSaveSectors = 0; + return 0; +} + +u32 RestoreSaveBackupVars(const struct SaveBlockChunk *chunk) +{ + gFastSaveSection = eSaveSection; + gLastKnownGoodSector = gFirstSaveSector; + gPrevSaveCounter = gSaveCounter; + gCurSaveChunk = 0; + gDamagedSaveSectors = 0; + return 0; +} + +u8 WriteSingleChunkAndIncrement(u16 a1, const struct SaveBlockChunk * chunk) +{ + u8 retVal; + + if (gCurSaveChunk < a1 - 1) + { + retVal = SAVE_STATUS_OK; + WriteSingleChunk(gCurSaveChunk, chunk); + gCurSaveChunk++; + if (gDamagedSaveSectors) + { + retVal = SAVE_STATUS_ERROR; + gFirstSaveSector = gLastKnownGoodSector; + gSaveCounter = gPrevSaveCounter; + } + } + else + { + retVal = SAVE_STATUS_ERROR; + } + + return retVal; +} + +u8 ErasePreviousChunk(u16 a1, const struct SaveBlockChunk *chunk) +{ + u8 retVal = SAVE_STATUS_OK; + + EraseCurrentChunk(a1 - 1, chunk); + + if (gDamagedSaveSectors) + { + retVal = SAVE_STATUS_ERROR; + gFirstSaveSector = gLastKnownGoodSector; + gSaveCounter = gPrevSaveCounter; + } + return retVal; +} + +u8 EraseCurrentChunk(u16 chunkId, const struct SaveBlockChunk *chunks) +{ + u16 i; + u16 sector; + u8 *data; + u16 size; + u8 status; + + // select sector number + sector = chunkId + gFirstSaveSector; + sector %= NUM_SECTORS_PER_SAVE_SLOT; + // select save slot + sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); + + data = chunks[chunkId].data; + size = chunks[chunkId].size; + + // clear temp save section. + for (i = 0; i < sizeof(struct SaveSector); i++) + ((char *)gFastSaveSection)[i] = 0; + + gFastSaveSection->id = chunkId; + gFastSaveSection->signature = FILE_SIGNATURE; + gFastSaveSection->counter = gSaveCounter; + + // set temp section's data. + for (i = 0; i < size; i++) + gFastSaveSection->data[i] = data[i]; + + // calculate checksum. + gFastSaveSection->checksum = CalculateChecksum(data, size); + + EraseFlashSector(sector); + + status = SAVE_STATUS_OK; + + for (i = 0; i < sizeof(struct UnkSaveSection); i++) + { + if (ProgramFlashByte(sector, i, gFastSaveSection->data[i])) + { + status = SAVE_STATUS_ERROR; + break; + } + } + + if (status == SAVE_STATUS_ERROR) + { + SetSectorDamagedStatus(SECTOR_DAMAGED, sector); + return SAVE_STATUS_ERROR; + } + else + { + status = SAVE_STATUS_OK; + + for (i = 0; i < 7; i++) + { + if (ProgramFlashByte(sector, 0xFF9 + i, ((u8 *)gFastSaveSection)[0xFF9 + i])) + { + status = SAVE_STATUS_ERROR; + break; + } + } + + if (status == SAVE_STATUS_ERROR) + { + SetSectorDamagedStatus(SECTOR_DAMAGED, sector); + return SAVE_STATUS_ERROR; + } + else + { + SetSectorDamagedStatus(SECTOR_OK, sector); + return SAVE_STATUS_OK; + } + } +} + +u8 WriteSomeFlashByteToPrevSector(u16 a1, const struct SaveBlockChunk *chunk) +{ + u16 sector; + + // select sector number + sector = a1 + gFirstSaveSector - 1; + sector %= NUM_SECTORS_PER_SAVE_SLOT; + // select save slot + sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); + + if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)])) + { + // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter. + SetSectorDamagedStatus(SECTOR_DAMAGED, sector); + gFirstSaveSector = gLastKnownGoodSector; + gSaveCounter = gPrevSaveCounter; + return SAVE_STATUS_ERROR; + } + else + { + SetSectorDamagedStatus(SECTOR_OK, sector); + return SAVE_STATUS_OK; + } +} + +u8 WriteSomeFlashByte0x25ToPrevSector(u16 a1, const struct SaveBlockChunk *chunk) +{ + u16 sector; + + sector = a1 + gFirstSaveSector - 1; + sector %= NUM_SECTORS_PER_SAVE_SLOT; + sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); + + if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25)) + { + // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter. + SetSectorDamagedStatus(SECTOR_DAMAGED, sector); + gFirstSaveSector = gLastKnownGoodSector; + gSaveCounter = gPrevSaveCounter; + return SAVE_STATUS_ERROR; + } + else + { + SetSectorDamagedStatus(SECTOR_OK, sector); + return SAVE_STATUS_OK; + } +} + +u8 TryReadAllSaveSectorsCurrentSlot(u16 a1, const struct SaveBlockChunk *chunk) +{ + u8 retVal; + gFastSaveSection = eSaveSection; + if (a1 != 0xFFFF) + { + retVal = SAVE_STATUS_ERROR; + } + else + { + retVal = GetSaveValidStatus(chunk); + ReadAllSaveSectorsCurrentSlot(0xFFFF, chunk); + } + + return retVal; +} + +u8 ReadAllSaveSectorsCurrentSlot(u16 a1, const struct SaveBlockChunk *chunks) +{ + u16 i; + u16 checksum; + u16 sector = NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); + u16 id; + + for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++) + { + DoReadFlashWholeSection(i + sector, gFastSaveSection); + id = gFastSaveSection->id; + if (id == 0) + gFirstSaveSector = i; + checksum = CalculateChecksum(gFastSaveSection->data, chunks[id].size); + if (gFastSaveSection->signature == FILE_SIGNATURE + && gFastSaveSection->checksum == checksum) + { + u16 j; + for (j = 0; j < chunks[id].size; j++) + chunks[id].data[j] = gFastSaveSection->data[j]; + } + } + + return 1; +} + +u8 GetSaveValidStatus(const struct SaveBlockChunk *chunks) +{ + u16 sector; + bool8 signatureValid; + u16 checksum; + u32 slot1saveCounter = 0; + u32 slot2saveCounter = 0; + u8 slot1Status; + u8 slot2Status; + u32 validSectors; + const u32 ALL_SECTORS = (1 << NUM_SECTORS_PER_SAVE_SLOT) - 1; // bitmask of all saveblock sectors + + // check save slot 1. + validSectors = 0; + signatureValid = FALSE; + for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++) + { + DoReadFlashWholeSection(sector, gFastSaveSection); + if (gFastSaveSection->signature == FILE_SIGNATURE) + { + signatureValid = TRUE; + checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size); + if (gFastSaveSection->checksum == checksum) + { + slot1saveCounter = gFastSaveSection->counter; + validSectors |= 1 << gFastSaveSection->id; + } + } + } + + if (signatureValid) + { + if (validSectors == ALL_SECTORS) + slot1Status = SAVE_STATUS_OK; + else + slot1Status = SAVE_STATUS_ERROR; + } + else + { + slot1Status = SAVE_STATUS_EMPTY; + } + + // check save slot 2. + validSectors = 0; + signatureValid = FALSE; + for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++) + { + DoReadFlashWholeSection(NUM_SECTORS_PER_SAVE_SLOT + sector, gFastSaveSection); + if (gFastSaveSection->signature == FILE_SIGNATURE) + { + signatureValid = TRUE; + checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size); + if (gFastSaveSection->checksum == checksum) + { + slot2saveCounter = gFastSaveSection->counter; + validSectors |= 1 << gFastSaveSection->id; + } + } + } + + if (signatureValid) + { + if (validSectors == ALL_SECTORS) + slot2Status = SAVE_STATUS_OK; + else + slot2Status = SAVE_STATUS_ERROR; + } + else + { + slot2Status = SAVE_STATUS_EMPTY; + } + + if (slot1Status == SAVE_STATUS_OK && slot2Status == SAVE_STATUS_OK) + { + // Choose counter of the most recent save file + if ((slot1saveCounter == -1 && slot2saveCounter == 0) || (slot1saveCounter == 0 && slot2saveCounter == -1)) + { + if ((unsigned)(slot1saveCounter + 1) < (unsigned)(slot2saveCounter + 1)) + gSaveCounter = slot2saveCounter; + else + gSaveCounter = slot1saveCounter; + } + else + { + if (slot1saveCounter < slot2saveCounter) + gSaveCounter = slot2saveCounter; + else + gSaveCounter = slot1saveCounter; + } + return SAVE_STATUS_OK; + } + + if (slot1Status == SAVE_STATUS_OK) + { + gSaveCounter = slot1saveCounter; + if (slot2Status == SAVE_STATUS_ERROR) + return SAVE_STATUS_ERROR; + else + return SAVE_STATUS_OK; + } + + if (slot2Status == SAVE_STATUS_OK) + { + gSaveCounter = slot2saveCounter; + if (slot1Status == SAVE_STATUS_ERROR) + return SAVE_STATUS_ERROR; + else + return SAVE_STATUS_OK; + } + + if (slot1Status == SAVE_STATUS_EMPTY && slot2Status == SAVE_STATUS_EMPTY) + { + gSaveCounter = 0; + gFirstSaveSector = 0; + return SAVE_STATUS_EMPTY; + } + + gSaveCounter = 0; + gFirstSaveSector = 0; + return 2; +} + +u8 ReadSomeUnknownSectorAndVerify(u8 sector, u8 *data, u16 size) +{ + u16 i; + struct SaveSector *section = eSaveSection; + + DoReadFlashWholeSection(sector, section); + if (section->signature == FILE_SIGNATURE) + { + u16 checksum = CalculateChecksum(section->data, size); + if (section->id == checksum) + { + for (i = 0; i < size; i++) + data[i] = section->data[i]; + return SAVE_STATUS_OK; + } + else + { + return 2; + } + } + else + { + return SAVE_STATUS_EMPTY; + } +} + +u32 DoReadFlashWholeSection(u8 sector, struct SaveSector *section) +{ + ReadFlash(sector, 0, section->data, sizeof(struct SaveSector)); + return 1; +} + +u16 CalculateChecksum(const void *data, u16 size) +{ + u16 i; + u32 checksum = 0; + + for (i = 0; i < (size / 4); i++) + { + checksum += *((u32 *)data); + data += sizeof(u32); + } + + return ((checksum >> 16) + checksum); +} + +void nullsub_0201182C() +{ +} + +void nullsub_02011830() +{ +} + +void nullsub_02011834() +{ +} + +u16 * get_var_addr(u16 a0) +{ + if (a0 < VARS_START) + return NULL; + if (a0 < VAR_SPECIAL_0) + return &gSaveBlock1.vars[a0 - VARS_START]; + return NULL; +} + +bool32 flash_maincb_check_need_reset_pacifidlog_tm(void) +{ + u8 sp0; + u16 * data = get_var_addr(VAR_PACIFIDLOG_TM_RECEIVED_DAY); + rtc_maincb_is_time_since_last_berry_update_positive(&sp0); + if (*data <= gRtcUTCTime.days) + return TRUE; + else + return FALSE; +} + +bool32 flash_maincb_reset_pacifidlog_tm(void) +{ + u8 sp0; + if (flash_maincb_check_need_reset_pacifidlog_tm() == TRUE) + return TRUE; + rtc_maincb_is_time_since_last_berry_update_positive(&sp0); + if (gRtcUTCTime.days < 0) + return FALSE; + *get_var_addr(VAR_PACIFIDLOG_TM_RECEIVED_DAY) = 1; + if (flash_write_save_block_chunks_check_damage(0) != TRUE) + return FALSE; + return TRUE; +} diff --git a/berry_fix/payload/src/main.c b/berry_fix/payload/src/main.c new file mode 100644 index 000000000..249150665 --- /dev/null +++ b/berry_fix/payload/src/main.c @@ -0,0 +1,289 @@ +#include <gba/gba.h> +#include "global.h" +#include "main.h" +#include "rtc.h" +#include "flash.h" + +static s32 gInitialWaitTimer; +IntrFunc gIntrTable[16]; +u16 gHeldKeys; +u16 gNewKeys; +u8 gIntrVector[0x100]; +u32 gUpdateSuccessful; +u32 gUnknown_3001194; +u32 gUnknown_30011A0[0x19]; +u32 gMainCallbackState; +u32 gGameVersion; + +EWRAM_DATA u8 gSharedMem[0x8000] = {}; + +void IntrMain(void); +void ReadKeys(void); +void dummy_intr_0(void); +void dummy_intr_1(void); +void main_callback(u32 *, void *, void *); + + +const char gBerryFixGameCode[] = "AGBJ"; +const IntrFunc gIntrFuncPointers[] = { + dummy_intr_0, + dummy_intr_1, + dummy_intr_0, + dummy_intr_0, + dummy_intr_0, + dummy_intr_0, + dummy_intr_0, + dummy_intr_0, + dummy_intr_0, + dummy_intr_0, + NULL, + NULL, + NULL +}; +const char gVersionData[][2] = { + {'J', 1}, + {'E', 2}, + {'D', 1}, + {'F', 1}, + {'I', 1}, + {'S', 1} +}; +const char gRubyTitleAndCode[] = "POKEMON RUBYAXV"; +const char gSapphireTitleAndCode[] = "POKEMON SAPPAXP"; +const u16 sDebugPals[20] = { + RGB(00, 00, 00), + RGB(31, 00, 00), + RGB(00, 31, 00), + RGB(00, 00, 31) +}; +const u16 sDebugDigitsGfx[] = INCBIN_U16("graphics/debug_digits.4bpp"); + +void AgbMain(void) +{ + RegisterRamReset(0x1E); + DmaCopy32(3, gIntrFuncPointers, gIntrTable, sizeof gIntrFuncPointers); + DmaCopy32(3, IntrMain, gIntrVector, sizeof(gIntrVector)); + INTR_VECTOR = gIntrVector; + REG_IE = INTR_FLAG_VBLANK; + if (*RomHeaderMagic == 0x96 && *(u32 *)RomHeaderGameCode == *(u32 *)gBerryFixGameCode) + REG_IE |= INTR_FLAG_GAMEPAK; + REG_DISPSTAT = DISPSTAT_VBLANK_INTR; + REG_IME = INTR_FLAG_VBLANK; + msg_load_gfx(); + gMainCallbackState = MAINCB_INIT; + gUnknown_3001194 = 0; + for (;;) + { + VBlankIntrWait(); + ReadKeys(); + main_callback(&gMainCallbackState, gUnknown_30011A0, gSharedMem); + } +} + +void dummy_intr_1(void) +{} + +void dummy_intr_0(void) +{} + +void ReadKeys(void) +{ + u16 keyInput = REG_KEYINPUT ^ KEYS_MASK; + gNewKeys = keyInput & ~gHeldKeys; + gHeldKeys = keyInput; +} + +void fill_palette(const u8 * src, u16 * dest, u8 value) +{ + s32 i; + for (i = 0; src[i] != 0; i++) + dest[i] = src[i] | value << 12; +} + +bool32 berry_fix_memcmp(const char * src1, const char * src2, size_t size) +{ + s32 i; + for (i = 0; i < size; i++) + { + if (src1[i] != src2[i]) + return FALSE; + } + return TRUE; +} + +s32 validate_rom_header_internal(void) +{ + char languageCode = *(RomHeaderGameCode + 3); + s32 softwareVersion = *RomHeaderSoftwareVersion; + s32 shouldUpdate = -1; + s32 i; + for (i = 0; i < ARRAY_COUNT(gVersionData); i++) + { + if (languageCode == gVersionData[i][0]) + { + if (softwareVersion >= gVersionData[i][1]) + { + shouldUpdate = 0; + } + else + { + shouldUpdate = 1; + } + break; + } + } + if (shouldUpdate != -1) + { + if (berry_fix_memcmp(RomHeaderGameTitle, gRubyTitleAndCode, 15) == TRUE) + { + if (shouldUpdate == 0) + return RUBY_NONEED; + else + { + gGameVersion = VERSION_RUBY; + return RUBY_UPDATABLE; + } + } + else if (berry_fix_memcmp(RomHeaderGameTitle, gSapphireTitleAndCode, 15) == TRUE) + { + if (shouldUpdate == 0) + return SAPPHIRE_NONEED; + else + { + gGameVersion = VERSION_SAPPHIRE; + return SAPPHIRE_UPDATABLE; + } + } + } + return INVALID; +} + +s32 validate_rom_header(void) +{ + if (*RomHeaderMakerCode == '0' && *(RomHeaderMakerCode + 1) == '1' && *RomHeaderMagic == 0x96) + return validate_rom_header_internal(); + else + return INVALID; +} + +void main_callback(u32 * state, void * unused1, void * unused2) +{ + u8 year; + switch (*state) + { + case MAINCB_INIT: + msg_display(MSGBOX_WILL_NOW_UPDATE); + if (++gInitialWaitTimer >= 180) + { + gInitialWaitTimer = 0; + gUpdateSuccessful = 0; + switch (validate_rom_header()) + { + case SAPPHIRE_UPDATABLE: + case RUBY_UPDATABLE: // Should Update Ruby + ++(*state); // MAINCB_CHECK_RTC + break; + case INVALID: // Invalid header + *state = MAINCB_ERROR; + break; + case SAPPHIRE_NONEED: // Should not update Sapphire + case RUBY_NONEED: // Should not update Ruby + *state = MAINCB_NO_NEED_TO_FIX; + break; + } + } + break; + case MAINCB_CHECK_RTC: + if (!rtc_maincb_is_rtc_working()) + *state = MAINCB_ERROR; + else + ++(*state); // MAINCB_CHECK_FLASH + break; + case MAINCB_CHECK_FLASH: + if (flash_maincb_ident_is_valid() == TRUE) + ++(*state); // MAINCB_READ_SAVE + else + *state = MAINCB_ERROR; + break; + case MAINCB_READ_SAVE: + if (flash_maincb_read_save(0) == SAVE_STATUS_OK) + ++(*state); // MAINCB_CHECK_TIME + else + *state = MAINCB_ERROR; + break; + case MAINCB_CHECK_TIME: + if (rtc_maincb_is_time_since_last_berry_update_positive(&year) == TRUE) + { + if (year == 0) + ++(*state); // MAINCB_FIX_DATE + else + *state = MAINCB_CHECK_PACIFIDLOG_TM; + } + else + { + if (year != 1) + *state = MAINCB_YEAR_MAKES_NO_SENSE; + else + ++(*state); // MAINCB_FIX_DATE + } + break; + case MAINCB_FIX_DATE: + rtc_maincb_fix_date(); + gUpdateSuccessful |= 1; + *state = MAINCB_CHECK_PACIFIDLOG_TM; + break; + case MAINCB_CHECK_PACIFIDLOG_TM: + if (flash_maincb_check_need_reset_pacifidlog_tm() == TRUE) + *state = MAINCB_FINISHED; + else + *state = MAINCB_FIX_PACIFIDLOG_TM; + break; + case MAINCB_FIX_PACIFIDLOG_TM: + msg_display(MSGBOX_UPDATING); + if (flash_maincb_reset_pacifidlog_tm() == TRUE) + { + gUpdateSuccessful |= 1; + *state = MAINCB_FINISHED; + } + else + *state = MAINCB_ERROR; + break; + case MAINCB_FINISHED: + if (gUpdateSuccessful == 0) + *state = MAINCB_NO_NEED_TO_FIX; + else + msg_display(MSGBOX_HAS_BEEN_UPDATED); + break; + case MAINCB_NO_NEED_TO_FIX: + msg_display(MSGBOX_NO_NEED_TO_UPDATE); + break; + case MAINCB_YEAR_MAKES_NO_SENSE: + msg_display(MSGBOX_UNABLE_TO_UPDATE); + break; + case MAINCB_ERROR: + msg_display(MSGBOX_UNABLE_TO_UPDATE); + break; + } +} + +void DBG_LoadDigitsPal(void) +{ + const u16 * src; + s32 i; + register vu16 * dest asm("r3") = (vu16 *)BG_PLTT + 1; + DmaFill16(3, RGB(31, 31, 31), (vu16 *)BG_PLTT, BG_PLTT_SIZE); + src = sDebugPals; + for (i = 0; i < 4; i++) + { + *dest = *src; + dest += 16; + src++; + } +} + +void DBG_LoadDigits(void) +{ + DmaFill16(3, 0x1111, (void *)VRAM + 0x8420, 0x1800); + DmaCopy32(3, sDebugDigitsGfx, (void *)VRAM + 0x8600, 0x200); + DBG_LoadDigitsPal(); +} diff --git a/berry_fix/payload/src/rtc.c b/berry_fix/payload/src/rtc.c new file mode 100644 index 000000000..97692e205 --- /dev/null +++ b/berry_fix/payload/src/rtc.c @@ -0,0 +1,346 @@ +#include <gba/gba.h> +#include <siirtc.h> +#include "global.h" +#include "main.h" + +struct Time gTimeSinceBerryUpdate; +struct Time gRtcUTCTime; + +static u16 sRtcProbeStatus; +static struct SiiRtcInfo sRtcInfoBuffer; +static u8 sRtcProbeCode; +static u16 sImeBak; +static struct SiiRtcInfo sRtcInfoWork; + +const struct SiiRtcInfo sDefaultRTC = { + .year = 0, // 2000 + .month = 1, // January + .day = 1, // 01 + .dayOfWeek = 0, + .hour = 0, + .minute = 0, + .second = 0, + .status = 0, + .alarmHour = 0, + .alarmMinute = 0 +}; +const s32 sDaysPerMonth[] = { + 31, + 28, + 31, + 30, + 31, + 30, + 31, + 31, + 30, + 31, + 30, + 31 +}; + +void rtc_get_status_and_datetime(struct SiiRtcInfo *); +u16 rtc_validate_datetime(struct SiiRtcInfo *); + + +void rtc_intr_disable(void) +{ + sImeBak = REG_IME; + REG_IME = 0; +} + +void rtc_intr_enable(void) +{ + REG_IME = sImeBak; +} + +s32 bcd_to_hex(u8 a0) +{ + if (a0 >= 0xa0 || (a0 & 0xF) >= 10) + return 0xFF; + return ((a0 >> 4) & 0xF) * 10 + (a0 & 0xF); +} + +bool8 is_leap_year(u8 year) +{ + if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) + return TRUE; + return FALSE; +} + +u16 rtc_count_days_parameterized(u8 year, u8 month, u8 day) +{ + u16 numDays = 0; + s32 i; + for (i = year - 1; i > 0; i--) + { + numDays += 365; + if (is_leap_year(i) == TRUE) + numDays++; + } + for (i = 0; i < month - 1; i++) + numDays += sDaysPerMonth[i]; + if (month > MONTH_FEB && is_leap_year(year) == TRUE) + numDays++; + numDays += day; + return numDays; +} + +u16 rtc_count_days_from_info(struct SiiRtcInfo *info) +{ + return rtc_count_days_parameterized(bcd_to_hex(info->year), bcd_to_hex(info->month), bcd_to_hex(info->day)); +} + +static void rtc_probe_status(void) +{ + sRtcProbeStatus = 0; + rtc_intr_disable(); + SiiRtcUnprotect(); + sRtcProbeCode = SiiRtcProbe(); + rtc_intr_enable(); + if ((sRtcProbeCode & 0xF) != 1) + sRtcProbeStatus = 1; + else + { + if (sRtcProbeCode & 0xF0) + sRtcProbeStatus = 2; + else + sRtcProbeStatus = 0; + rtc_get_status_and_datetime(&sRtcInfoBuffer); + sRtcProbeStatus = rtc_validate_datetime(&sRtcInfoBuffer); + } +} + +u16 rtc_get_probe_status(void) +{ + return sRtcProbeStatus; +} + +void sub_020106EC(struct SiiRtcInfo * info) +{ + if (sRtcProbeStatus & 0xFF0) + *info = sDefaultRTC; + else + rtc_get_status_and_datetime(info); +} + +void rtc_get_datetime(struct SiiRtcInfo * info) +{ + rtc_intr_disable(); + SiiRtcGetDateTime(info); + rtc_intr_enable(); +} + +void rtc_get_status(struct SiiRtcInfo * info) +{ + rtc_intr_disable(); + SiiRtcGetStatus(info); + rtc_intr_enable(); +} + +void rtc_get_status_and_datetime(struct SiiRtcInfo * info) +{ + rtc_get_status(info); + rtc_get_datetime(info); +} + +u16 rtc_validate_datetime(struct SiiRtcInfo * info) +{ + s32 year, month, day; + u16 r4 = (info->status & SIIRTCINFO_POWER) ? 0x20 : 0; + if (!(info->status & SIIRTCINFO_24HOUR)) + r4 |= 0x10; + year = bcd_to_hex(info->year); + if (year == 0xFF) + r4 |= 0x40; + month = bcd_to_hex(info->month); + if (month == 0xFF || month == 0 || month > 12) + r4 |= 0x80; + day = bcd_to_hex(info->day); + if (day == 0xFF) + r4 |= 0x100; + if (month == MONTH_FEB) + { + if (day > is_leap_year(year) + sDaysPerMonth[1]) + r4 |= 0x100; + } + else + { + if (day > sDaysPerMonth[month - 1]) + r4 |= 0x100; + } + day = bcd_to_hex(info->hour); + if (day > 24) + r4 |= 0x200; + day = bcd_to_hex(info->minute); + if (day > 60) + r4 |= 0x400; + day = bcd_to_hex(info->second); + if (day > 60) + r4 |= 0x800; + return r4; +} + +void rtc_reset(void) +{ + rtc_intr_disable(); + SiiRtcReset(); + rtc_intr_enable(); +} + +void rtc_sub_time_from_datetime(struct SiiRtcInfo * datetime, struct Time * dest, struct Time * timediff) +{ + u16 r4 = rtc_count_days_from_info(datetime); + dest->seconds = bcd_to_hex(datetime->second) - timediff->seconds; + dest->minutes = bcd_to_hex(datetime->minute) - timediff->minutes; + dest->hours = bcd_to_hex(datetime->hour) - timediff->hours; + dest->days = r4 - timediff->days; + if (dest->seconds < 0) + { + dest->seconds += 60; + dest->minutes--; + } + if (dest->minutes < 0) + { + dest->minutes += 60; + dest->hours--; + } + if (dest->hours < 0) + { + dest->hours += 24; + dest->days--; + } +} + +void rtc_sub_time_from_time(struct Time * dest, struct Time * diff, struct Time * src) +{ + dest->seconds = src->seconds - diff->seconds; + dest->minutes = src->minutes - diff->minutes; + dest->hours = src->hours - diff->hours; + dest->days = src->days - diff->days; + if (dest->seconds < 0) + { + dest->seconds += 60; + dest->minutes--; + } + if (dest->minutes < 0) + { + dest->minutes += 60; + dest->hours--; + } + if (dest->hours < 0) + { + dest->hours += 24; + dest->days--; + } +} + +bool32 rtc_maincb_is_rtc_working(void) +{ + rtc_probe_status(); + if (rtc_get_probe_status() & 0xFF0) + return FALSE; + return TRUE; +} + +void rtc_set_datetime(struct SiiRtcInfo * info) +{ + vu16 imeBak = REG_IME; + REG_IME = 0; + SiiRtcSetDateTime(info); + REG_IME = imeBak; +} + +bool32 rtc_maincb_is_time_since_last_berry_update_positive(u8 * a0) +{ + rtc_get_status_and_datetime(&sRtcInfoWork); + *a0 = bcd_to_hex(sRtcInfoWork.year); + rtc_sub_time_from_datetime(&sRtcInfoWork, &gRtcUTCTime, LocalTimeOffset); + rtc_sub_time_from_time(&gTimeSinceBerryUpdate, LastBerryTreeUpdate, &gRtcUTCTime); + if (gTimeSinceBerryUpdate.days * 1440 + gTimeSinceBerryUpdate.hours * 60 + gTimeSinceBerryUpdate.minutes >= 0) + return TRUE; + return FALSE; +} + +u32 hex_to_bcd(u8 a0) +{ + u32 r4; + if (a0 > 99) + return 0xFF; + r4 = Div(a0, 10) << 4; + r4 |= Mod(a0, 10); + return r4; +} + +void sii_rtc_inc(u8 * a0) +{ + *a0 = hex_to_bcd(bcd_to_hex(*a0) + 1); +} + +void sii_rtc_inc_month(struct SiiRtcInfo * a0) +{ + sii_rtc_inc(&a0->month); + if (bcd_to_hex(a0->month) > 12) + { + sii_rtc_inc(&a0->year); + a0->month = MONTH_JAN; + } +} + +void sii_rtc_inc_day(struct SiiRtcInfo * a0) +{ + sii_rtc_inc(&a0->day); + if (bcd_to_hex(a0->day) > sDaysPerMonth[bcd_to_hex(a0->month) - 1]) + { + if (!is_leap_year(bcd_to_hex(a0->year)) || bcd_to_hex(a0->month) != MONTH_FEB || bcd_to_hex(a0->day) != 29) + { + a0->day = 1; + sii_rtc_inc_month(a0); + } + } +} + +bool32 rtc_is_past_feb_28_2000(struct SiiRtcInfo * a0) +{ + if (bcd_to_hex(a0->year) == 0) + { + if (bcd_to_hex(a0->month) == MONTH_JAN) + return FALSE; + if (bcd_to_hex(a0->month) > MONTH_FEB) + return TRUE; + if (bcd_to_hex(a0->day) == 29) + return TRUE; + return FALSE; + } + if (bcd_to_hex(a0->year) == 1) + return TRUE; + return FALSE; +} + +void rtc_maincb_fix_date(void) +{ + rtc_get_status_and_datetime(&sRtcInfoWork); + if (bcd_to_hex(sRtcInfoWork.year) == 0 || bcd_to_hex(sRtcInfoWork.year) == 1) + { + if (bcd_to_hex(sRtcInfoWork.year) == 1) + { + sRtcInfoWork.year = 2; + sRtcInfoWork.month = MONTH_JAN; + sRtcInfoWork.day = 2; + rtc_set_datetime(&sRtcInfoWork); + } + else + { + if (rtc_is_past_feb_28_2000(&sRtcInfoWork) == TRUE) + { + sii_rtc_inc_day(&sRtcInfoWork); + sii_rtc_inc(&sRtcInfoWork.year); + } + else + { + sii_rtc_inc(&sRtcInfoWork.year); + } + rtc_set_datetime(&sRtcInfoWork); + } + } +} diff --git a/berry_fix/payload/sym_bss.txt b/berry_fix/payload/sym_bss.txt new file mode 100644 index 000000000..17bb7f204 --- /dev/null +++ b/berry_fix/payload/sym_bss.txt @@ -0,0 +1,5 @@ + .include "src/main.o" + .include "src/rtc.o" + .include "src/flash.o" + .include "*libagb_flash.a:agb_flash.o" + .include "*libsiirtc.a:siirtc.o" diff --git a/berry_fix/payload/sym_common.txt b/berry_fix/payload/sym_common.txt new file mode 100644 index 000000000..e284737fc --- /dev/null +++ b/berry_fix/payload/sym_common.txt @@ -0,0 +1,29 @@ + .include "main.o" + .include "rtc.o" + + .align 4 +gFirstSaveSector: @ 0x03001220 + .space 0x4 + +gPrevSaveCounter: @ 0x03001224 + .space 0x4 + +gLastKnownGoodSector: @ 0x03001228 + .space 0x4 + +gDamagedSaveSectors: @ 0x0300122C + .space 0x4 + +gSaveCounter: @ 0x03001230 + .space 0x4 + +gFastSaveSection: @ 0x03001234 + .space 0x4 + +gCurSaveChunk: + .space 0x4 + +gFlashIdentIsValid: @ 0x0300123C + .space 0x4 + + .include "*libagb_flash.a:agb_flash.o" diff --git a/berry_fix/payload/sym_ewram.txt b/berry_fix/payload/sym_ewram.txt new file mode 100644 index 000000000..2c61f5e7e --- /dev/null +++ b/berry_fix/payload/sym_ewram.txt @@ -0,0 +1,3 @@ + .include "src/main.o" + .include "src/rtc.o" + .include "src/flash.o" diff --git a/berry_fix/rom.sha1 b/berry_fix/rom.sha1 new file mode 100644 index 000000000..145b083b2 --- /dev/null +++ b/berry_fix/rom.sha1 @@ -0,0 +1 @@ +2eb0a94a913bebfb4cb59ceb57f3f965da55ef6d berry_fix.gba diff --git a/common_syms/mevent.txt b/common_syms/mevent.txt new file mode 100644 index 000000000..cfaf59d33 --- /dev/null +++ b/common_syms/mevent.txt @@ -0,0 +1 @@ +gUnknown_3005ED0 diff --git a/data/data_835B488.s b/data/data_835B488.s index de6460b81..44e4fe725 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -751,7 +751,13 @@ sFanfares:: @ 83AC990 .incbin "baserom.gba", 0x3AC990, 0x40 gUnknown_83AC9D0:: @ 83AC9D0 - .incbin "baserom.gba", 0x3AC9D0, 0x238 + .incbin "baserom.gba", 0x3AC9D0, 0x28 + +gUnknown_83AC9F8:: + .incbin "baserom.gba", 0x3AC9F8, 0x8 + +gUnknown_83ACA00:: + .incbin "baserom.gba", 0x3ACA00, 0x208 gUnknown_83ACC08:: @ 83ACC08 .incbin "baserom.gba", 0x3ACC08, 0x440 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 2e5c0e6c7..9c39a96d2 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -556,7 +556,7 @@ gExpandedPlaceholder_Green:: @ 8415A5C gText_EggNickname:: @ 8415A62 .incbin "baserom.gba", 0x415A62, 0x4 -gUnknown_8415A66:: @ 8415A66 +gText_Pokemon:: @ 8415A66 .incbin "baserom.gba", 0x415A66, 0x8 gUnknown_8415A6E:: @ 8415A6E @@ -1956,67 +1956,88 @@ gUnknown_841D198:: @ 841D198 .incbin "baserom.gba", 0x41D198, 0xCB8 gUnknown_841DE50:: @ 841DE50 - .incbin "baserom.gba", 0x41DE50, 0x1 + .string "$" gUnknown_841DE51:: @ 841DE51 - .incbin "baserom.gba", 0x41DE51, 0x1 + .string "$" gUnknown_841DE52:: @ 841DE52 - .incbin "baserom.gba", 0x41DE52, 0x1 + .string "$" gUnknown_841DE53:: @ 841DE53 - .incbin "baserom.gba", 0x41DE53, 0x1 + .string "$" gUnknown_841DE54:: @ 841DE54 - .incbin "baserom.gba", 0x41DE54, 0x28 + .string "$" + +gUnknown_841DE55:: @ 841DE55 + .incbin "baserom.gba", 0x41DE55, 0x27 @ japanese gUnknown_841DE7C:: @ 841DE7C - .incbin "baserom.gba", 0x41DE7C, 0x1 + .string "$" gUnknown_841DE7D:: @ 841DE7D - .incbin "baserom.gba", 0x41DE7D, 0x18 + .string "$" + +gUnknown_841DE7E:: @ 841DE7E + .incbin "baserom.gba", 0x0041de7e, 0x17 @ japanese gUnknown_841DE95:: @ 841DE95 - .incbin "baserom.gba", 0x41DE95, 0x1 + .string "$" gUnknown_841DE96:: @ 841DE96 - .incbin "baserom.gba", 0x41DE96, 0x1 + .string "$" gUnknown_841DE97:: @ 841DE97 - .incbin "baserom.gba", 0x41DE97, 0x1 + .string "$" gUnknown_841DE98:: @ 841DE98 - .incbin "baserom.gba", 0x41DE98, 0x1 + .string "$" gUnknown_841DE99:: @ 841DE99 - .incbin "baserom.gba", 0x41DE99, 0x1 + .string "$" gUnknown_841DE9A:: @ 841DE9A - .incbin "baserom.gba", 0x41DE9A, 0x1 + .string "$" gUnknown_841DE9B:: @ 841DE9B - .incbin "baserom.gba", 0x41DE9B, 0x1 + .string "$" gUnknown_841DE9C:: @ 841DE9C - .incbin "baserom.gba", 0x41DE9C, 0x1 + .string "$" gUnknown_841DE9D:: @ 841DE9D - .incbin "baserom.gba", 0x41DE9D, 0x53 + .string "Communication error…\n" + .string "Please check all connections,\n" + .string "then turn the power OFF and ON.$" gUnknown_841DEF0:: @ 841DEF0 - .incbin "baserom.gba", 0x41DEF0, 0x15 + .string "Communication error…$" gUnknown_841DF05:: @ 841DF05 - .incbin "baserom.gba", 0x41DF05, 0x47 + .string "Move closer to your link partner(s).\n" + .string "Avoid obstacles between partners.$" gUnknown_841DF4C:: @ 841DF4C - .incbin "baserom.gba", 0x41DF4C, 0x1F + .string "A Button: Registration Counter$" gUnknown_841DF6B:: @ 841DF6B - .incbin "baserom.gba", 0x41DF6B, 0x17 + .string "A Button: Title Screen$" gUnknown_841DF82:: @ 841DF82 - .incbin "baserom.gba", 0x41DF82, 0x23 + .string "{STR_VAR_1}P LINK$" + +gUnknown_841DF8B:: @ 841DF8B + .string "BRONZE$" + +gUnknown_841DF92:: @ 841DF92 + .string "COPPER$" + +gUnknown_841DF99:: @ 841DF99 + .string "SILVER$" + +gUnknown_841DFA0:: @ 841DFA0 + .string "GOLD$" gUnknown_841DFA5:: @ 841DFA5 .incbin "baserom.gba", 0x41DFA5, 0x7 @@ -3155,7 +3176,10 @@ gUnknown_8459580:: @ 8459580 .incbin "baserom.gba", 0x459580, 0x8 gUnknown_8459588:: @ 8459588 - .incbin "baserom.gba", 0x459588, 0xAC + .incbin "baserom.gba", 0x459588, 0x64 + +gUnknown_84595EC:: + .incbin "baserom.gba", 0x4595EC, 0x48 gUnknown_8459634:: @ 8459634 .incbin "baserom.gba", 0x459634, 0x8 diff --git a/data/data_845FD54.s b/data/data_845FD54.s index d2b52192d..d05e14570 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -598,89 +598,3 @@ gUnknown_8466EE8:: @ 8466EE8 gUnknown_8466EF0:: @ 8466EF0 .incbin "baserom.gba", 0x466EF0, 0x10 - -gUnknown_8466F00:: @ 8466F00 - .incbin "baserom.gba", 0x466F00, 0x28 - - .align 2 -gUnknown_8466F28:: @ 8466F28 - .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c" - - .align 2 -gUnknown_8466F5C:: @ 8466F5C - .asciz "0" - - .align 2 -gUnknown_8466F60:: @ 8466F60 - .incbin "baserom.gba", 0x466F60, 0x20 - - .align 2 -gUnknown_8466F80:: @ 8466F80 - .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - - .align 2 -gUnknown_8466FB8:: @ 8466FB8 - .asciz "size <= ME_SEND_BUF_SIZE" - - .align 2 -gUnknown_8466FD4:: @ 8466FD4 - .asciz "cmd->parameter == NULL" - - .align 2 -gUnknown_8466FEC:: @ 8466FEC - .asciz "cmd->flag == FALSE" - - .align 2 -gUnknown_8467000:: @ 8467000 - .asciz "cmd->flag == FALSE && cmd->parameter == NULL" - - .align 2 -gUnknown_8467030:: @ 8467030 - .incbin "baserom.gba", 0x467030, 0x14 - - .align 2 -gUnknown_8467044:: @ 8467044 - .asciz "svr->mainseqno < NELEMS(func_tbl)" - - .align 2 -gUnknown_8467068:: @ 8467068 - .incbin "baserom.gba", 0x467068, 0x8 - -gUnknown_8467070:: @ 8467070 - .incbin "baserom.gba", 0x467070, 0x4 - -gUnknown_8467074:: @ 8467074 - .incbin "baserom.gba", 0x467074, 0xEE4 - -gUnknown_8467F58:: @ 8467F58 - .incbin "baserom.gba", 0x467F58, 0x8 - -gUnknown_8467F60:: @ 8467F60 - .incbin "baserom.gba", 0x467F60, 0x40 - -gUnknown_8467FA0:: @ 8467FA0 - .incbin "baserom.gba", 0x467FA0, 0x18 - -gUnknown_8467FB8:: @ 8467FB8 - .incbin "baserom.gba", 0x467FB8, 0x80 - -gUnknown_8468038:: @ 8468038 - .incbin "baserom.gba", 0x468038, 0x8 - -gUnknown_8468040:: @ 8468040 - .incbin "baserom.gba", 0x468040, 0x10 - -gUnknown_8468050:: @ 8468050 - .incbin "baserom.gba", 0x468050, 0x6D0 - -gUnknown_8468720:: @ 8468720 - .incbin "baserom.gba", 0x468720, 0xC0 - -gUnknown_84687E0:: @ 84687E0 - .incbin "baserom.gba", 0x4687E0, 0x38C - -gUnknown_8468B6C:: @ 8468B6C - .incbin "baserom.gba", 0x468B6C, 0x60 - -gUnknown_8468BCC:: @ 8468BCC - .incbin "baserom.gba", 0x468BCC, 0x90 diff --git a/data/data_8466FB8.s b/data/data_8466FB8.s new file mode 100644 index 000000000..9436bc4fd --- /dev/null +++ b/data/data_8466FB8.s @@ -0,0 +1,12 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gUnknown_84687A0:: + .string "You have collected all STAMPs!\n" + .string "Want to input a CARD as a prize?$" + + .include "data/mevent/script_ish.inc" + .include "data/mevent/script_common.inc" diff --git a/data/data_8471F00.s b/data/data_8471F00.s index b9767d933..28454ac2d 100644 --- a/data/data_8471F00.s +++ b/data/data_8471F00.s @@ -336,33 +336,3 @@ gUnknown_84827B4:: @ 84827B4 gUnknown_84886E8:: @ 84886E8 .incbin "baserom.gba", 0x4886E8, 0x588 - -gUnknown_8488C70:: @ 8488C70 - .incbin "baserom.gba", 0x488C70, 0x32 - -gUnknown_8488CA2:: @ 8488CA2 - .incbin "baserom.gba", 0x488CA2, 0x2C - -gUnknown_8488CCE:: @ 8488CCE - .incbin "baserom.gba", 0x488CCE, 0x28 - -gUnknown_8488CF6:: @ 8488CF6 - .incbin "baserom.gba", 0x488CF6, 0x34 - -gUnknown_8488D2A:: @ 8488D2A - .incbin "baserom.gba", 0x488D2A, 0x36 - -gUnknown_8488D60:: @ 8488D60 - .incbin "baserom.gba", 0x488D60, 0x1C - -gUnknown_8488D7C:: @ 8488D7C - .incbin "baserom.gba", 0x488D7C, 0x12 - -gUnknown_8488D8E:: @ 8488D8E - .incbin "baserom.gba", 0x488D8E, 0x2F - -gUnknown_8488DBD:: @ 8488DBD - .incbin "baserom.gba", 0x488DBD, 0x40 - -gUnknown_8488DFD:: @ 8488DFD - .incbin "baserom.gba", 0x488DFD, 0xB6B diff --git a/data/event_scripts.s b/data/event_scripts.s index c27df1946..9baa201e5 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1,19 +1,46 @@ .section script_data, "aw", %progbits -gScriptCmdTable:: @ 815F9B4 - .incbin "baserom.gba", 0x15F9B4, 0x354 - -gScriptCmdTableEnd:: @ 815FD08 - .incbin "baserom.gba", 0x15FD08, 0x4 - -gUnknown_815FD0C:: @ 815FD0C - .incbin "baserom.gba", 0x15FD0C, 0x54 - -gUnknown_815FD60:: @ 815FD60 - .incbin "baserom.gba", 0x15FD60, 0x6F0 - -gUnknown_8160450:: @ 8160450 - .incbin "baserom.gba", 0x160450, 0x28 + .include "data/script_cmd_table.inc" + + .align 2 +gSpecialVars:: @ 815FD0C + .4byte gSpecialVar_0x8000 + .4byte gSpecialVar_0x8001 + .4byte gSpecialVar_0x8002 + .4byte gSpecialVar_0x8003 + .4byte gSpecialVar_0x8004 + .4byte gSpecialVar_0x8005 + .4byte gSpecialVar_0x8006 + .4byte gSpecialVar_0x8007 + .4byte gSpecialVar_0x8008 + .4byte gSpecialVar_0x8009 + .4byte gSpecialVar_0x800A + .4byte gSpecialVar_0x800B + .4byte gSpecialVar_Facing + .4byte gSpecialVar_Result + .4byte gSpecialVar_ItemId + .4byte gSpecialVar_LastTalked + .4byte gSpecialVar_MonBoxId + .4byte gSpecialVar_MonBoxPos + .4byte gUnknown_20370DA + .4byte gUnknown_20370DC + .4byte gUnknown_20370DE + + .include "data/specials.inc" + + .align 2 +gStdScripts:: @ 8160450 + .4byte gStdScript_81A667B + .4byte gStdScript_81A67B3 + .4byte gStdScript_81A4E3F + .4byte gStdScript_81A4E4A + .4byte gStdScript_81A4E54 + .4byte gStdScript_81A4E5C + .4byte gStdScript_81A501F + .4byte gStdScript_81A676C + .4byte gStdScript_81A8E58 + .4byte gStdScript_81A4E66 +gStdScripts_End:: gUnknown_8160478:: @ 8160478 .incbin "baserom.gba", 0x160478, 0x886C @@ -22,7 +49,22 @@ gUnknown_8168CE4:: @ 8168CE4 .incbin "baserom.gba", 0x168CE4, 0x33 gUnknown_8168D17:: @ 8168D17 - .incbin "baserom.gba", 0x168D17, 0x3C19D + .incbin "baserom.gba", 0x168D17, 0x3C128 + +gStdScript_81A4E3F:: + .incbin "baserom.gba", 0x1A4E3F, 0xB + +gStdScript_81A4E4A:: + .incbin "baserom.gba", 0x1A4E4A, 0xA + +gStdScript_81A4E54:: + .incbin "baserom.gba", 0x1A4E54, 0x8 + +gStdScript_81A4E5C:: + .incbin "baserom.gba", 0x1A4E5C, 0xA + +gStdScript_81A4E66:: + .incbin "baserom.gba", 0x1A4E66, 0x4E gUnknown_81A4EB4:: @ 81A4EB4 .incbin "baserom.gba", 0x1A4EB4, 0xD @@ -40,7 +82,10 @@ gUnknown_81A4F3E:: @ 81A4F3E .incbin "baserom.gba", 0x1A4F3E, 0x35 gUnknown_81A4F73:: @ 81A4F73 - .incbin "baserom.gba", 0x1A4F73, 0x117 + .incbin "baserom.gba", 0x1A4F73, 0xAC + +gStdScript_81A501F:: + .incbin "baserom.gba", 0x1A501F, 0x6B gUnknown_81A508A:: @ 81A508A .incbin "baserom.gba", 0x1A508A, 0x3EC @@ -52,7 +97,16 @@ gUnknown_81A6481:: @ 81A6481 .incbin "baserom.gba", 0x1A6481, 0xCA gUnknown_81A654B:: @ 81A654B - .incbin "baserom.gba", 0x1A654B, 0x2F8 + .incbin "baserom.gba", 0x1A654B, 0x130 + +gStdScript_81A667B:: + .incbin "baserom.gba", 0x1A667B, 0xF1 + +gStdScript_81A676C:: + .incbin "baserom.gba", 0x1A676C, 0x47 + +gStdScript_81A67B3:: + .incbin "baserom.gba", 0x1A67B3, 0x90 gUnknown_81A6843:: @ 81A6843 .incbin "baserom.gba", 0x1A6843, 0x112 @@ -226,7 +280,10 @@ gUnknown_81A8DD8:: @ 81A8DD8 .incbin "baserom.gba", 0x1A8DD8, 0x25 gUnknown_81A8DFD:: @ 81A8DFD - .incbin "baserom.gba", 0x1A8DFD, 0x4309 + .incbin "baserom.gba", 0x1A8DFD, 0x5B + +gStdScript_81A8E58:: + .incbin "baserom.gba", 0x1A8E58, 0x42AE .include "data/text/fame_checker.inc" diff --git a/data/graphics/mevent/gfx_46718C.png b/data/graphics/mevent/gfx_46718C.png Binary files differnew file mode 100644 index 000000000..bf52445e6 --- /dev/null +++ b/data/graphics/mevent/gfx_46718C.png diff --git a/data/graphics/mevent/gfx_46737C.png b/data/graphics/mevent/gfx_46737C.png Binary files differnew file mode 100644 index 000000000..1a23f8b94 --- /dev/null +++ b/data/graphics/mevent/gfx_46737C.png diff --git a/data/graphics/mevent/gfx_467558.png b/data/graphics/mevent/gfx_467558.png Binary files differnew file mode 100644 index 000000000..c28edd891 --- /dev/null +++ b/data/graphics/mevent/gfx_467558.png diff --git a/data/graphics/mevent/gfx_467700.png b/data/graphics/mevent/gfx_467700.png Binary files differnew file mode 100644 index 000000000..f31385746 --- /dev/null +++ b/data/graphics/mevent/gfx_467700.png diff --git a/data/graphics/mevent/gfx_467A7C.png b/data/graphics/mevent/gfx_467A7C.png Binary files differnew file mode 100644 index 000000000..f94b6c50f --- /dev/null +++ b/data/graphics/mevent/gfx_467A7C.png diff --git a/data/graphics/mevent/gfx_467EF4.png b/data/graphics/mevent/gfx_467EF4.png Binary files differnew file mode 100644 index 000000000..51a1aeb0c --- /dev/null +++ b/data/graphics/mevent/gfx_467EF4.png diff --git a/data/graphics/mevent/gfx_4680C0.png b/data/graphics/mevent/gfx_4680C0.png Binary files differnew file mode 100644 index 000000000..1a27f3213 --- /dev/null +++ b/data/graphics/mevent/gfx_4680C0.png diff --git a/data/graphics/mevent/gfx_46821C.png b/data/graphics/mevent/gfx_46821C.png Binary files differnew file mode 100644 index 000000000..aab27d16c --- /dev/null +++ b/data/graphics/mevent/gfx_46821C.png diff --git a/data/graphics/mevent/gfx_46830C.png b/data/graphics/mevent/gfx_46830C.png Binary files differnew file mode 100644 index 000000000..3c2b8e6d1 --- /dev/null +++ b/data/graphics/mevent/gfx_46830C.png diff --git a/data/graphics/mevent/gfx_468448.png b/data/graphics/mevent/gfx_468448.png Binary files differnew file mode 100644 index 000000000..137dbe9f3 --- /dev/null +++ b/data/graphics/mevent/gfx_468448.png diff --git a/data/graphics/mevent/gfx_4685B4.png b/data/graphics/mevent/gfx_4685B4.png Binary files differnew file mode 100644 index 000000000..137dbe9f3 --- /dev/null +++ b/data/graphics/mevent/gfx_4685B4.png diff --git a/data/graphics/mevent/pal_46708C.pal b/data/graphics/mevent/pal_46708C.pal new file mode 100644 index 000000000..9c5ef9b26 --- /dev/null +++ b/data/graphics/mevent/pal_46708C.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +213 213 213 +74 74 74 +98 106 106 +213 189 74 +238 213 82 +246 246 213 +255 255 255 +230 230 213 +238 238 213 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/data/graphics/mevent/pal_4670AC.pal b/data/graphics/mevent/pal_4670AC.pal new file mode 100644 index 000000000..18c2be3fd --- /dev/null +++ b/data/graphics/mevent/pal_4670AC.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +82 82 106 +131 131 139 +197 189 213 +205 230 255 +115 139 197 +49 74 82 +0 0 0 +0 0 0 +222 255 246 +197 255 222 +222 238 255 +156 180 222 +156 106 115 +172 139 164 +255 255 255 diff --git a/data/graphics/mevent/pal_4670CC.pal b/data/graphics/mevent/pal_4670CC.pal new file mode 100644 index 000000000..db02d5d4b --- /dev/null +++ b/data/graphics/mevent/pal_4670CC.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +82 82 106 +131 131 139 +164 156 172 +197 189 213 +246 238 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 230 230 +255 197 197 +255 164 164 +246 139 139 +238 90 90 +255 255 255 diff --git a/data/graphics/mevent/pal_4670EC.pal b/data/graphics/mevent/pal_4670EC.pal new file mode 100644 index 000000000..bfbf036a5 --- /dev/null +++ b/data/graphics/mevent/pal_4670EC.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +82 82 106 +131 131 139 +164 156 172 +197 189 213 +246 238 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +238 255 230 +213 255 189 +189 230 156 +164 213 131 +148 197 106 +255 255 255 diff --git a/data/graphics/mevent/pal_46710C.pal b/data/graphics/mevent/pal_46710C.pal new file mode 100644 index 000000000..fa41ee3b0 --- /dev/null +++ b/data/graphics/mevent/pal_46710C.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +82 82 106 +131 131 139 +164 156 172 +197 189 213 +246 238 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +238 246 255 +205 238 246 +180 222 246 +156 197 238 +115 156 197 +255 255 255 diff --git a/data/graphics/mevent/pal_46712C.pal b/data/graphics/mevent/pal_46712C.pal new file mode 100644 index 000000000..8a71f5846 --- /dev/null +++ b/data/graphics/mevent/pal_46712C.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +82 82 106 +131 131 139 +164 156 172 +197 189 213 +246 238 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +238 238 197 +230 230 139 +222 222 115 +213 213 90 +189 189 57 +255 255 255 diff --git a/data/graphics/mevent/pal_46714C.pal b/data/graphics/mevent/pal_46714C.pal new file mode 100644 index 000000000..01832b5e2 --- /dev/null +++ b/data/graphics/mevent/pal_46714C.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 123 148 +213 213 213 +74 74 74 +115 123 123 +164 156 90 +164 148 90 +197 197 90 +213 205 90 +222 213 90 +213 213 106 +238 246 98 +230 222 98 +213 205 98 +197 180 98 +238 230 98 +246 238 106 diff --git a/data/graphics/mevent/pal_46716C.pal b/data/graphics/mevent/pal_46716C.pal new file mode 100644 index 000000000..28a498b57 --- /dev/null +++ b/data/graphics/mevent/pal_46716C.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 123 148 +213 213 213 +74 74 74 +115 123 123 +156 156 156 +139 139 148 +180 180 197 +197 189 205 +205 205 222 +189 189 189 +197 230 222 +189 213 213 +180 197 197 +156 164 172 +222 222 230 +230 230 238 diff --git a/data/graphics/mevent/pal_467DF4.pal b/data/graphics/mevent/pal_467DF4.pal new file mode 100644 index 000000000..7314ddbc8 --- /dev/null +++ b/data/graphics/mevent/pal_467DF4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +189 189 164 +205 205 172 +213 213 189 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/data/graphics/mevent/pal_467E14.pal b/data/graphics/mevent/pal_467E14.pal new file mode 100644 index 000000000..333dd9280 --- /dev/null +++ b/data/graphics/mevent/pal_467E14.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +82 82 106 +164 156 180 +246 238 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/data/graphics/mevent/pal_467E34.pal b/data/graphics/mevent/pal_467E34.pal new file mode 100644 index 000000000..3fca3cdf3 --- /dev/null +++ b/data/graphics/mevent/pal_467E34.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +246 139 139 +246 180 180 +255 230 230 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/data/graphics/mevent/pal_467E54.pal b/data/graphics/mevent/pal_467E54.pal new file mode 100644 index 000000000..f5125b4c9 --- /dev/null +++ b/data/graphics/mevent/pal_467E54.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +164 213 131 +197 230 180 +238 255 230 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/data/graphics/mevent/pal_467E74.pal b/data/graphics/mevent/pal_467E74.pal new file mode 100644 index 000000000..e8ec07ab5 --- /dev/null +++ b/data/graphics/mevent/pal_467E74.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +156 197 238 +197 222 246 +238 246 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/data/graphics/mevent/pal_467E94.pal b/data/graphics/mevent/pal_467E94.pal new file mode 100644 index 000000000..783979089 --- /dev/null +++ b/data/graphics/mevent/pal_467E94.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +213 213 90 +222 222 139 +238 238 197 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/data/graphics/mevent/pal_467EB4.pal b/data/graphics/mevent/pal_467EB4.pal new file mode 100644 index 000000000..1c74daace --- /dev/null +++ b/data/graphics/mevent/pal_467EB4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +205 189 98 +222 205 115 +230 222 98 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/data/graphics/mevent/pal_467ED4.pal b/data/graphics/mevent/pal_467ED4.pal new file mode 100644 index 000000000..d1d92ba57 --- /dev/null +++ b/data/graphics/mevent/pal_467ED4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +197 197 197 +205 205 205 +213 213 213 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/data/graphics/mevent/pal_468060.pal b/data/graphics/mevent/pal_468060.pal new file mode 100644 index 000000000..970736bbb --- /dev/null +++ b/data/graphics/mevent/pal_468060.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +90 197 148 +213 213 213 +74 74 74 +98 106 106 +213 189 74 +238 213 82 +246 246 213 +255 255 255 +230 230 213 +238 238 213 +246 246 238 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/data/graphics/mevent/pal_468080.pal b/data/graphics/mevent/pal_468080.pal new file mode 100644 index 000000000..01832b5e2 --- /dev/null +++ b/data/graphics/mevent/pal_468080.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 123 148 +213 213 213 +74 74 74 +115 123 123 +164 156 90 +164 148 90 +197 197 90 +213 205 90 +222 213 90 +213 213 106 +238 246 98 +230 222 98 +213 205 98 +197 180 98 +238 230 98 +246 238 106 diff --git a/data/graphics/mevent/pal_4680A0.pal b/data/graphics/mevent/pal_4680A0.pal new file mode 100644 index 000000000..28a498b57 --- /dev/null +++ b/data/graphics/mevent/pal_4680A0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +189 123 148 +213 213 213 +74 74 74 +115 123 123 +156 156 156 +139 139 148 +180 180 197 +197 189 205 +205 205 222 +189 189 189 +197 230 222 +189 213 213 +180 197 197 +156 164 172 +222 222 230 +230 230 238 diff --git a/data/graphics/mevent/tilemap_467288.bin b/data/graphics/mevent/tilemap_467288.bin Binary files differnew file mode 100644 index 000000000..8e4a4717b --- /dev/null +++ b/data/graphics/mevent/tilemap_467288.bin diff --git a/data/graphics/mevent/tilemap_467470.bin b/data/graphics/mevent/tilemap_467470.bin Binary files differnew file mode 100644 index 000000000..b59dbabb5 --- /dev/null +++ b/data/graphics/mevent/tilemap_467470.bin diff --git a/data/graphics/mevent/tilemap_46762C.bin b/data/graphics/mevent/tilemap_46762C.bin Binary files differnew file mode 100644 index 000000000..aba2b9e92 --- /dev/null +++ b/data/graphics/mevent/tilemap_46762C.bin diff --git a/data/graphics/mevent/tilemap_467934.bin b/data/graphics/mevent/tilemap_467934.bin Binary files differnew file mode 100644 index 000000000..1800bff4d --- /dev/null +++ b/data/graphics/mevent/tilemap_467934.bin diff --git a/data/graphics/mevent/tilemap_467CAC.bin b/data/graphics/mevent/tilemap_467CAC.bin Binary files differnew file mode 100644 index 000000000..1800bff4d --- /dev/null +++ b/data/graphics/mevent/tilemap_467CAC.bin diff --git a/data/graphics/mevent/tilemap_468140.bin b/data/graphics/mevent/tilemap_468140.bin Binary files differnew file mode 100644 index 000000000..f8185b28e --- /dev/null +++ b/data/graphics/mevent/tilemap_468140.bin diff --git a/data/graphics/mevent/tilemap_46824C.bin b/data/graphics/mevent/tilemap_46824C.bin Binary files differnew file mode 100644 index 000000000..72c7ea278 --- /dev/null +++ b/data/graphics/mevent/tilemap_46824C.bin diff --git a/data/graphics/mevent/tilemap_46837C.bin b/data/graphics/mevent/tilemap_46837C.bin Binary files differnew file mode 100644 index 000000000..c7b2e3e21 --- /dev/null +++ b/data/graphics/mevent/tilemap_46837C.bin diff --git a/data/graphics/mevent/tilemap_4684D8.bin b/data/graphics/mevent/tilemap_4684D8.bin Binary files differnew file mode 100644 index 000000000..f8185b28e --- /dev/null +++ b/data/graphics/mevent/tilemap_4684D8.bin diff --git a/data/graphics/mevent/tilemap_468644.bin b/data/graphics/mevent/tilemap_468644.bin Binary files differnew file mode 100644 index 000000000..f8185b28e --- /dev/null +++ b/data/graphics/mevent/tilemap_468644.bin diff --git a/data/librfu_rodata.s b/data/librfu_rodata.s index 867a1a17c..c6ca84f4b 100644 --- a/data/librfu_rodata.s +++ b/data/librfu_rodata.s @@ -1,10 +1,28 @@ .section .rodata -gUnknown_86FC03C:: @ 86FC03C - .incbin "baserom.gba", 0x6FC03C, 0x2C + .set VERSION_MAJOR, 1 + .set VERSION_MINOR, 0 + .set VERSION_REVISION, 24 -gUnknown_86FC068:: @ 86FC068 - .incbin "baserom.gba", 0x6FC068, 0xC + .align 2 +_Str_RfuHeader:: + .byte 2, 14, 0, 10, 9, 5, 7, 2 + .byte 0, 15, 1, 3, 3, 0, 31, 0 + .byte 3, 22, 18, 14, 13, 9, 11, 3 + .byte 15, 15, 1, 3, 3, 0, 0x7f, 0 + + .ascii "RFU_V" + .byte VERSION_MAJOR + 0x30 + .byte VERSION_MINOR + 0x30 + .byte (VERSION_REVISION / 10) + 0x30 + .byte (VERSION_REVISION % 10) + 0x30 + .byte 0 + + .align 2 +_Str_RFU_MBOOT:: + .asciz "RFU-MBOOT" + + .align 2 +_Str_Sio32ID:: + .asciz "NINTENDOSio32ID_030820" -gUnknown_86FC074:: @ 86FC074 - .incbin "baserom.gba", 0x6FC074, 0x18 diff --git a/data/mevent/script_common.inc b/data/mevent/script_common.inc new file mode 100644 index 000000000..abf03ab95 --- /dev/null +++ b/data/mevent/script_common.inc @@ -0,0 +1,84 @@ +gUnknown_8468920:: + .4byte 0x12, 0x10, gUnknown_8468810 + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x14, NULL + .4byte 0x00, 0x0a, NULL + .4byte 0x12, 0x10, gUnknown_8468820 + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x14, NULL + .4byte 0x00, 0x0b, NULL + .4byte 0x12, 0x10, gUnknown_84688E0 + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x14, NULL + .4byte 0x00, 0x09, NULL + +gUnknown_84689B0:: + .4byte 0x12, 0x10, gUnknown_8468898 + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x14, NULL + .4byte 0x00, 0x07, NULL + +gUnknown_84689E0:: + .4byte 0x12, 0x28, gUnknown_8468870 + .4byte 0x01, 0x00, NULL + .4byte 0x0e, 0x00, NULL + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x13, NULL + .4byte 0x08, 0x00, NULL + .4byte 0x04, 0x01, gUnknown_84689B0 + .4byte 0x12, 0x10, gUnknown_84688A8 + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x14, NULL + .4byte 0x00, 0x03, NULL + +gUnknown_8468A64:: + .4byte 0x12, 0x30, gUnknown_8468840 + .4byte 0x01, 0x00, NULL + .4byte 0x0d, 0x00, NULL + .4byte 0x01, 0x00, NULL + .4byte 0x0f, 0x00, NULL + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x14, NULL + .4byte 0x00, 0x02, NULL + +gUnknown_8468AC4:: + .4byte 0x12, 0x28, gUnknown_84688B8 + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x13, NULL + .4byte 0x08, 0x00, NULL + .4byte 0x04, 0x00, gUnknown_8468A64 + .4byte 0x03, 0x00, gUnknown_84595EC + +gUnknown_8468B0C:: + .4byte 0x12, 0x10, gUnknown_84688F0 + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x14, NULL + .4byte 0x00, 0x05, NULL + .4byte 0x12, 0x10, gUnknown_8468830 + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x14, NULL + .4byte 0x00, 0x00, NULL + +gUnknown_8468B6C:: @ 8468B6C + .4byte 0x1b, 0x00, NULL + .4byte 0x12, 0x20, gUnknown_84687F0 + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x11, NULL + .4byte 0x05, 0x00, NULL + .4byte 0x06, 0x00, NULL + .4byte 0x04, 0x00, gUnknown_8468920 + .4byte 0x03, 0x00, gUnknown_84689E0 + +gUnknown_8468BCC:: @ 8468BCC + .4byte 0x1a, 0x00, NULL + .4byte 0x1c, 0x00, NULL + .4byte 0x12, 0x20, gUnknown_84687F0 + .4byte 0x01, 0x00, NULL + .4byte 0x02, 0x11, NULL + .4byte 0x05, 0x00, NULL + .4byte 0x06, 0x00, NULL + .4byte 0x04, 0x00, gUnknown_8468920 + .4byte 0x07, 0x00, NULL + .4byte 0x04, 0x02, gUnknown_8468AC4 + .4byte 0x04, 0x00, gUnknown_8468A64 + .4byte 0x03, 0x00, gUnknown_8468B0C diff --git a/data/mevent/script_ish.inc b/data/mevent/script_ish.inc new file mode 100644 index 000000000..3d79cf1ee --- /dev/null +++ b/data/mevent/script_ish.inc @@ -0,0 +1,65 @@ +gUnknown_84687E0:: @ 84687E0 + .4byte 0x02, 0x10 @ RECEIVE ID(0x10) + .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER + +gUnknown_84687F0:: + .4byte 0x08, 0x00 @ SEND HEADER MAYBE + .4byte 0x03, 0x00 @ WAIT SEND + .4byte 0x02, 0x10 @ RECEIVE ID(0x10) + .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER + +gUnknown_8468810:: + .4byte 0x14, 0x00 @ SEND ALL + .4byte 0x01, 0x0a @ RETURN 0x0a + +gUnknown_8468820:: + .4byte 0x14, 0x00 @ SEND ALL + .4byte 0x01, 0x0b @ RETURN 0x0b + +gUnknown_8468830:: + .4byte 0x14, 0x00 @ SEND ALL + .4byte 0x01, 0x00 @ RETURN 0x00 + +gUnknown_8468840:: + .4byte 0x02, 0x16 @ RECEIVE ID(0x16) + .4byte 0x0a, 0x00 @ RECEIVE_TO_SAVE_FILE + .4byte 0x02, 0x19 @ RECEIVE ID(0x19) + .4byte 0x11, 0x00 @ RECEIVE_TO_RAM_SCRIPT + .4byte 0x14, 0x00 @ SEND ALL + .4byte 0x01, 0x02 @ RETURN 0x02 + +gUnknown_8468870:: + .4byte 0x02, 0x17 @ RECEIVE ID(0x17) + .4byte 0x09, 0x00 @ VALIDATE BUFF3120 + .4byte 0x03, 0x00 @ WAIT SEND + .4byte 0x02, 0x10 @ RECEIVE ID(0x10) + .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER + +gUnknown_8468898:: + .4byte 0x14, 0x00 @ SEND ALL + .4byte 0x01, 0x07 @ RETURN 0x07 + +gUnknown_84688A8:: + .4byte 0x14, 0x00 @ SEND ALL + .4byte 0x01, 0x03 @ RETURN 0x03 + +gUnknown_84688B8:: + .4byte 0x0d, 0x00 @ REQUEST PARAMETER + .4byte 0x0e, 0x00 @ SEND PARAMETER + .4byte 0x03, 0x00 @ WAIT SEND + .4byte 0x02, 0x10 @ RECEIVE ID(0x10) + .4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER + +gUnknown_84688E0:: + .4byte 0x14, 0x00 @ SEND ALL + .4byte 0x01, 0x09 @ RETURN 0x09 + +gUnknown_84688F0:: + .4byte 0x14, 0x00 @ SEND ALL + .4byte 0x01, 0x05 @ RETURN 0x05 + +gUnknown_8468900:: + .4byte 0x02, 0x15 @ RECEIVE ID(0x15) + .4byte 0x0c, 0x00 @ READ PACKET AND COMPUTE SOMETHING + .4byte 0x14, 0x00 @ SEND ALL + .4byte 0x01, 0x0d @ RETURN 0x0d diff --git a/data/multiboot_berry_glitch_fix.s b/data/multiboot_berry_glitch_fix.s index 0e4bcf384..1eb843d3f 100644 --- a/data/multiboot_berry_glitch_fix.s +++ b/data/multiboot_berry_glitch_fix.s @@ -1,5 +1,5 @@ .section .rodata gMultiBootProgram_BerryGlitchFix_Start:: @ 86FFC6C - .incbin "baserom.gba", 0x6FFC6C, 0x3BF4 + .incbin "berry_fix/berry_fix.gba" gMultiBootProgram_BerryGlitchFix_End:: diff --git a/data/multiboot_pokemon_colosseum.s b/data/multiboot_pokemon_colosseum.s index 64df89692..bbc47a9e8 100644 --- a/data/multiboot_pokemon_colosseum.s +++ b/data/multiboot_pokemon_colosseum.s @@ -1,5 +1,5 @@ .section .rodata gMultiBootProgram_PokemonColosseum_Start:: @ 8703860 - .incbin "baserom.gba", 0x703860, 0x28000 + .incbin "data/pokemon_colosseum.mb" gMultiBootProgram_PokemonColosseum_End:: diff --git a/data/mystery_event_msg.s b/data/mystery_event_msg.s new file mode 100644 index 000000000..48be143d7 --- /dev/null +++ b/data/mystery_event_msg.s @@ -0,0 +1,342 @@ +#include "constants/flags.h" +#include "constants/moves.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "constants/vars.h" + .include "asm/macros.inc" + .include "asm/macros/event.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +MysteryEventScript_StampCard:: @ 8488E2 + .incbin "baserom.gba", 0x488E28, 0xB40 + +@ setvaddress MysteryEventScript_StampCard +@ setorcopyvar VAR_RESULT, 1 +@ specialvar VAR_0x8008, sub_813986C +@ setorcopyvar VAR_RESULT, 0 +@ specialvar VAR_0x8009, sub_813986C +@ subvar VAR_0x8008, 32777 +@ getnumberstring 0, VAR_0x8008 +@ lock +@ faceplayer +@ vmessage sText_MysteryGiftStampCard +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ sText_MysteryGiftStampCard: +@ .string "Thank you for using the STAMP CARD\nSystem.\pYou have {STR_VAR_1} more to collect to\nfill your STAMP CARD.$" +@ +@ MysteryEventScript_SurfPichu:: @ 8674D3D +@ setvaddress MysteryEventScript_SurfPichu +@ checkflag FLAG_MYSTERY_EVENT_DONE +@ vgoto_if 0, SurfPichu_GiveIfPossible +@ gotoram +@ +@ SurfPichu_GiveIfPossible: @ 8674D4C +@ specialvar VAR_EVENT_PICHU_SLOT, CalculatePlayerPartyCount +@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 6 +@ vgoto_if 1, SurfPichu_FullParty +@ setflag FLAG_MYSTERY_EVENT_DONE +@ vcall SurfPichu_GiveEgg +@ lock +@ faceplayer +@ vmessage sText_MysteryGiftEgg +@ waitmessage +@ waitbutton +@ playfanfare MUS_FANFA4 +@ waitfanfare +@ release +@ end +@ +@ SurfPichu_FullParty: @ 8674D73 +@ lock +@ faceplayer +@ vmessage sText_FullParty +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ SurfPichu_GiveEgg: @ 8674D7E +@ giveegg SPECIES_PICHU +@ setobedience VAR_EVENT_PICHU_SLOT +@ setcatchlocale VAR_EVENT_PICHU_SLOT, 255 +@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 1 +@ vgoto_if 1, SurfPichu_Slot1 +@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 2 +@ vgoto_if 1, SurfPichu_Slot2 +@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 3 +@ vgoto_if 1, SurfPichu_Slot3 +@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 4 +@ vgoto_if 1, SurfPichu_Slot4 +@ compare_var_to_value VAR_EVENT_PICHU_SLOT, 5 +@ vgoto_if 1, SurfPichu_Slot5 +@ return +@ +@ SurfPichu_Slot1: @ 8674DC0 +@ setpokemove 1, 2, MOVE_SURF +@ return +@ +@ SurfPichu_Slot2:: @ 8674DC6 +@ setpokemove 2, 2, MOVE_SURF +@ return +@ +@ SurfPichu_Slot3: @ 8674DCC +@ setpokemove 3, 2, MOVE_SURF +@ return +@ +@ SurfPichu_Slot4: @ 8674DD2 +@ setpokemove 4, 2, MOVE_SURF +@ return +@ +@ SurfPichu_Slot5: @ 8674DD8 +@ setpokemove 5, 2, MOVE_SURF +@ return +@ +@ sText_MysteryGiftEgg: +@ .string "Thank you for using the MYSTERY\nGIFT System.\pFrom the POKéMON CENTER we\nhave a gift--a POKéMON EGG!\pPlease raise it with love and\nkindness.$" +@ +@ sText_FullParty: +@ .string "Oh, your party appears to be full.\pPlease come see me after storing\na POKéMON on a PC.$" +@ +@ MysteryEventScript_VisitingTrainer:: @ 8674EC1 +@ setvaddress MysteryEventScript_VisitingTrainer +@ special ValidateEReaderTrainer +@ compare_var_to_value VAR_RESULT, 0 +@ vgoto_if 1, MysteryEventScript_VisitingTrainerArrived +@ lock +@ faceplayer +@ vmessage sText_MysteryGiftVisitingTrainer +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ MysteryEventScript_VisitingTrainerArrived: @ 8674EDF +@ lock +@ faceplayer +@ vmessage sText_MysteryGiftVisitingTrainer_2 +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ sText_MysteryGiftVisitingTrainer: +@ .string "Thank you for using the MYSTERY\nGIFT System.\pBy holding this WONDER CARD, you\nmay take part in a survey at a\lPOKéMON MART.\pUse these surveys to invite\nTRAINERS to SOOTOPOLIS CITY.\p…Let me give you a secret\npassword for a survey:\p“GIVE ME\nAWESOME TRAINER”\pWrite that in on a survey and send\nit to the WIRELESS\lCOMMUNICATION SYSTEM.$" +@ +@ sText_MysteryGiftVisitingTrainer_2: +@ .string "Thank you for using the MYSTERY\nGIFT System.\pA TRAINER has arrived in\nSOOTOPOLIS CITY looking for you.\pWe hope you will enjoy\nbattling the visiting TRAINER.\pYou may invite other TRAINERS by\nentering other passwords.\pTry looking for other passwords\nthat may work.$" +@ +@ MysteryEventScript_BattleCard:: @ 867513C +@ setvaddress MysteryEventScript_BattleCard +@ checkflag FLAG_MYSTERY_EVENT_DONE +@ vgoto_if 1, MysteryEventScript_BattleCardInfo +@ setorcopyvar VAR_RESULT, 2 +@ specialvar VAR_0x8008, sub_813986C +@ compare_var_to_value VAR_0x8008, 3 +@ vgoto_if 0, MysteryEventScript_BattleCardInfo +@ lock +@ faceplayer +@ vmessage sText_MysteryGiftBattleCountCard_2 +@ waitmessage +@ waitbutton +@ giveitem ITEM_POTION +@ release +@ setflag FLAG_MYSTERY_EVENT_DONE +@ end +@ +@ MysteryEventScript_BattleCardInfo: @ 8675179 +@ lock +@ faceplayer +@ vmessage sText_MysteryGiftBattleCountCard +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ sText_MysteryGiftBattleCountCard: +@ .string "Thank you for using the MYSTERY\nGIFT System.\pYour BATTLE COUNT CARD keeps\ntrack of your battle record against\lTRAINERS with the same CARD.\pLook for and battle TRAINERS who\nhave the same CARD as you.\pYou may check the overall rankings\nby reading the NEWS.\pPlease do give it a try!$" +@ +@ sText_MysteryGiftBattleCountCard_2: +@ .string "Thank you for using the MYSTERY\nGIFT System.\pCongratulations!\pYou have won a prize for winning\nthree battles!\pWe hope you will be inspired to\nbattle some more.$" +@ +@ MysteryEventScript_AuroraTicket:: @ 867533C +@ setvaddress MysteryEventScript_AuroraTicket +@ lock +@ faceplayer +@ checkflag FLAG_0x13A +@ vgoto_if 1, AuroraTicket_Obtained +@ checkflag FLAG_0x1AD +@ vgoto_if 1, AuroraTicket_Obtained +@ checkitem ITEM_AURORA_TICKET, 1 +@ compare_var_to_value VAR_RESULT, 1 +@ vgoto_if 1, AuroraTicket_Obtained +@ vmessage sText_AuroraTicket1 +@ waitmessage +@ waitbutton +@ checkitemspace ITEM_AURORA_TICKET, 1 +@ compare_var_to_value VAR_RESULT, 0 +@ vgoto_if 1, AuroraTicket_NoBagSpace +@ giveitem ITEM_AURORA_TICKET +@ setflag FLAG_0x8D5 +@ setflag FLAG_0x13A +@ vmessage sText_AuroraTicket2 +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ AuroraTicket_NoBagSpace: @ 8675397 +@ vmessage sText_AuroraTicketNoPlace +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ AuroraTicket_Obtained: @ 86753A0 +@ vmessage sText_AuroraTicketGot +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ sText_AuroraTicket1: +@ .string "Thank you for using the MYSTERY\nGIFT System.\pYou must be {PLAYER}.\nThere is a ticket here for you.$" +@ +@ sText_AuroraTicket2: +@ .string "It appears to be for use at the\nLILYCOVE CITY port.\pWhy not give it a try and see what\nit is about?$" +@ +@ sText_AuroraTicketGot: +@ .string "Thank you for using the MYSTERY\nGIFT System.$" +@ +@ sText_AuroraTicketNoPlace: +@ .string "Oh, I’m sorry, {PLAYER}.\nYour BAG’s KEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.$" +@ +@ MysteryEventScript_MysticTicket:: @ 867550B +@ setvaddress MysteryEventScript_MysticTicket +@ lock +@ faceplayer +@ checkflag FLAG_0x13B +@ vgoto_if 1, MysticTicket_Obtained +@ checkflag FLAG_0x091 +@ vgoto_if 1, MysticTicket_Obtained +@ checkflag FLAG_0x092 +@ vgoto_if 1, MysticTicket_Obtained +@ checkitem ITEM_MYSTIC_TICKET, 1 +@ compare_var_to_value VAR_RESULT, 1 +@ vgoto_if 1, MysticTicket_Obtained +@ vmessage sText_MysticTicket2 +@ waitmessage +@ waitbutton +@ checkitemspace ITEM_MYSTIC_TICKET, 1 +@ compare_var_to_value VAR_RESULT, 0 +@ vgoto_if 1, MysticTicket_NoBagSpace +@ giveitem ITEM_MYSTIC_TICKET +@ setflag FLAG_0x8E0 +@ setflag FLAG_0x13B +@ vmessage sText_MysticTicket1 +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ MysticTicket_NoBagSpace: @ 867556F +@ vmessage sText_MysticTicketNoPlace +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ MysticTicket_Obtained: @ 8675578 +@ vmessage sText_MysticTicketGot +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ sText_MysticTicket2: +@ .string "Thank you for using the MYSTERY\nGIFT System.\pYou must be {PLAYER}.\nThere is a ticket here for you.$" +@ +@ sText_MysticTicket1: +@ .string "It appears to be for use at the\nLILYCOVE CITY port.\pWhy not give it a try and see what\nit is about?$" +@ +@ sText_MysticTicketGot: +@ .string "Thank you for using the MYSTERY\nGIFT System.$" +@ +@ sText_MysticTicketNoPlace: +@ .string "Oh, I’m sorry, {PLAYER}.\nYour BAG’s KEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.$" +@ +@ MysteryEventScript_AlteringCave:: @ 86756E3 +@ setvaddress MysteryEventScript_AlteringCave +@ addvar VAR_ALTERING_CAVE_WILD_SET, 1 +@ compare_var_to_value VAR_ALTERING_CAVE_WILD_SET, 10 +@ vgoto_if 0, MysteryEventScript_AlteringCave_ +@ setvar VAR_ALTERING_CAVE_WILD_SET, 0 +@ MysteryEventScript_AlteringCave_: @ 86756FD +@ lock +@ faceplayer +@ vmessage sText_MysteryGiftAlteringCave +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ sText_MysteryGiftAlteringCave:: +@ .string "Thank you for using the MYSTERY\nGIFT System.\pThere appears to be a rumor about\nrare POKéMON sightings.\pThe sightings reportedly came from\nthe ALTERING CAVE on ROUTE 103.\pPerhaps it would be worthwhile for\nyou to investigate this rumor.$" +@ +@ MysteryEventScript_OldSeaMap:: @ 86757F4 +@ setvaddress MysteryEventScript_OldSeaMap +@ lock +@ faceplayer +@ checkflag FLAG_0x13C +@ vgoto_if 1, OldSeaMap_Obtained +@ checkflag FLAG_0x1CA +@ vgoto_if 1, OldSeaMap_Obtained +@ checkitem ITEM_OLD_SEA_MAP, 1 +@ compare_var_to_value VAR_RESULT, 1 +@ vgoto_if 1, OldSeaMap_Obtained +@ vmessage sText_MysteryGiftOldSeaMap +@ waitmessage +@ waitbutton +@ checkitemspace ITEM_OLD_SEA_MAP, 1 +@ compare_var_to_value VAR_RESULT, 0 +@ vgoto_if 1, OldSeaMap_NoBagSpace +@ giveitem ITEM_OLD_SEA_MAP +@ setflag FLAG_0x8D6 +@ setflag FLAG_0x13C +@ vmessage sText_MysteryGiftOldSeaMap_1 +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ OldSeaMap_NoBagSpace: @ 867584F +@ vmessage sText_MysteryGiftOldSeaMap_3 +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ OldSeaMap_Obtained: @ 8675858 +@ vmessage sText_MysteryGiftOldSeaMap_2 +@ waitmessage +@ waitbutton +@ release +@ end +@ +@ sText_MysteryGiftOldSeaMap: +@ .string "Thank you for using the MYSTERY\nGIFT System.\pLet me confirm--you are {PLAYER}?\pWe received this OLD SEA MAP\naddressed to you.$" +@ +@ sText_MysteryGiftOldSeaMap_1: +@ .string "It appears to be for use at the\nLILYCOVE CITY port.\pWhy not give it a try and see what\nit is about?$" +@ +@ sText_MysteryGiftOldSeaMap_2: +@ .string "Thank you for using the MYSTERY\nGIFT System.$" +@ +@ sText_MysteryGiftOldSeaMap_3: +@ .string "Oh, I’m sorry, {PLAYER}.\nYour BAG’s KEY ITEMS POCKET is full.\pPlease store something on your PC,\nthen come back for this.$" diff --git a/data/mystery_event_script_cmd_table.s b/data/mystery_event_script_cmd_table.s index 76b7ab5a5..5dbcf50ee 100644 --- a/data/mystery_event_script_cmd_table.s +++ b/data/mystery_event_script_cmd_table.s @@ -1,4 +1,21 @@ .section script_data, "aw", %progbits -gUnknown_81DBCF0:: @ 81DBCF0 - .incbin "baserom.gba", 0x1DBCF0, 0x44 +gMysteryEventScriptCmdTable:: @ 81DBCF0 + .4byte MEScrCmd_nop + .4byte MEScrCmd_checkcompat + .4byte MEScrCmd_end + .4byte MEScrCmd_setmsg + .4byte MEScrCmd_setstatus + .4byte MEScrCmd_runscript + .4byte MEScrCmd_initramscript + .4byte MEScrCmd_setenigmaberry + .4byte MEScrCmd_giveribbon + .4byte MEScrCmd_givenationaldex + .4byte MEScrCmd_addrareword + .4byte MEScrCmd_setrecordmixinggift + .4byte MEScrCmd_givepokemon + .4byte MEScrCmd_addtrainer + .4byte MEScrCmd_enableresetrtc + .4byte MEScrCmd_checksum + .4byte MEScrCmd_crc +gMysteryEventScriptCmdTableEnd:: @ 81DBD34 diff --git a/data/pokemon_colosseum.mb b/data/pokemon_colosseum.mb Binary files differnew file mode 100644 index 000000000..2ff3f88bc --- /dev/null +++ b/data/pokemon_colosseum.mb diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc new file mode 100644 index 000000000..29850d685 --- /dev/null +++ b/data/script_cmd_table.inc @@ -0,0 +1,219 @@ + .align 2 + +gScriptCmdTable:: @ 815F9B4 + .4byte sub_8069ED0 + .4byte sub_8069ED4 + .4byte ScrCmd_end + .4byte ScrCmd_return + .4byte ScrCmd_call + .4byte ScrCmd_goto + .4byte ScrCmd_goto_if + .4byte ScrCmd_call_if + .4byte ScrCmd_gotostd + .4byte ScrCmd_callstd + .4byte ScrCmd_gotostd_if + .4byte ScrCmd_callstd_if + .4byte ScrCmd_gotoram + .4byte ScrCmd_killscript + .4byte ScrCmd_setmysteryeventstatus + .4byte ScrCmd_loadword + .4byte ScrCmd_loadbyte + .4byte ScrCmd_writebytetoaddr + .4byte ScrCmd_loadbytefromaddr + .4byte ScrCmd_setptrbyte + .4byte ScrCmd_copylocal + .4byte ScrCmd_copybyte + .4byte ScrCmd_setvar + .4byte ScrCmd_addvar + .4byte ScrCmd_subvar + .4byte ScrCmd_copyvar + .4byte ScrCmd_setorcopyvar + .4byte ScrCmd_compare_local_to_local + .4byte ScrCmd_compare_local_to_value + .4byte ScrCmd_compare_local_to_addr + .4byte ScrCmd_compare_addr_to_local + .4byte ScrCmd_compare_addr_to_value + .4byte ScrCmd_compare_addr_to_addr + .4byte ScrCmd_compare_var_to_value + .4byte ScrCmd_compare_var_to_var + .4byte ScrCmd_callnative + .4byte ScrCmd_gotonative + .4byte sub_8069EFC + .4byte sub_8069F3C + .4byte sub_8069FA4 + .4byte ScrCmd_delay + .4byte ScrCmd_setflag + .4byte ScrCmd_clearflag + .4byte ScrCmd_checkflag + .4byte sub_806A9D4 + .4byte sub_806A9D8 + .4byte sub_806A9DC + .4byte ScrCmd_playse + .4byte sub_806B094 + .4byte ScrCmd_playfanfare + .4byte sub_806B0CC + .4byte sub_806B0E0 + .4byte sub_806B120 + .4byte sub_806B134 + .4byte sub_806B154 + .4byte sub_806B17C + .4byte sub_806B1C8 + .4byte ScrCmd_warp + .4byte ScrCmd_warpsilent + .4byte ScrCmd_warpdoor + .4byte ScrCmd_warphole + .4byte sub_806AC70 + .4byte ScrCmd_setwarp + .4byte ScrCmd_setdynamicwarp + .4byte sub_806AE90 + .4byte sub_806AF10 + .4byte ScrCmd_getplayerxy + .4byte ScrCmd_getpartysize + .4byte sub_806A610 + .4byte ScrCmd_takeitem + .4byte sub_806A6A0 + .4byte sub_806A6E4 + .4byte ScrCmd_checkitemtype + .4byte ScrCmd_givepcitem + .4byte ScrCmd_checkpcitem + .4byte sub_806A7DC + .4byte sub_806A7F0 + .4byte sub_806A818 + .4byte sub_806A804 + .4byte ScrCmd_applymovement + .4byte ScrCmd_applymovement_at + .4byte ScrCmd_waitmovement + .4byte ScrCmd_waitmovement_at + .4byte ScrCmd_removeobject + .4byte ScrCmd_removeobject_at + .4byte ScrCmd_addobject + .4byte ScrCmd_addobject_at + .4byte ScrCmd_setobjectxy + .4byte ScrCmd_showobject_at + .4byte ScrCmd_hideobject_at + .4byte ScrCmd_faceplayer + .4byte ScrCmd_turnobject + .4byte ScrCmd_trainerbattle + .4byte sub_806C2D8 + .4byte ScrCmd_ontrainerbattleend + .4byte ScrCmd_ontrainerbattleendgoto + .4byte ScrCmd_checktrainerflag + .4byte ScrCmd_settrainerflag + .4byte ScrCmd_cleartrainerflag + .4byte ScrCmd_setobjectxyperm + .4byte ScrCmd_moveobjectoffscreen + .4byte ScrCmd_setobjectmovementtype + .4byte sub_806B878 + .4byte sub_806B80C + .4byte sub_806B88C + .4byte ScrCmd_lockall + .4byte ScrCmd_lock + .4byte ScrCmd_releaseall + .4byte ScrCmd_release + .4byte sub_806BA3C + .4byte ScrCmd_yesnobox + .4byte ScrCmd_multichoice + .4byte ScrCmd_multichoicedefault + .4byte ScrCmd_multichoicegrid + .4byte sub_806BB38 + .4byte sub_806BB8C + .4byte sub_806BB98 + .4byte sub_806BB9C + .4byte sub_806BBD8 + .4byte sub_806BBF8 + .4byte sub_806BC04 + .4byte ScrCmd_givemon + .4byte ScrCmd_giveegg + .4byte ScrCmd_setmonmove + .4byte ScrCmd_checkpartymove + .4byte ScrCmd_bufferspeciesname + .4byte ScrCmd_bufferleadmonspeciesname + .4byte ScrCmd_bufferpartymonnick + .4byte ScrCmd_bufferitemname + .4byte sub_806BE34 + .4byte ScrCmd_buffermovename + .4byte ScrCmd_buffernumberstring + .4byte ScrCmd_bufferstdstring + .4byte ScrCmd_bufferstring + .4byte sub_806C3AC + .4byte sub_806C3C0 + .4byte sub_806C3D4 + .4byte ScrCmd_playslotmachine + .4byte sub_806C410 + .4byte sub_806C418 + .4byte sub_806C424 + .4byte sub_806C428 + .4byte sub_806C42C + .4byte ScrCmd_random + .4byte ScrCmd_givemoney + .4byte ScrCmd_takemoney + .4byte ScrCmd_checkmoney + .4byte sub_806C1CC + .4byte sub_806C21C + .4byte sub_806C228 + .4byte sub_806C414 + .4byte ScrCmd_fadescreen + .4byte ScrCmd_fadescreenspeed + .4byte ScrCmd_setflashradius + .4byte ScrCmd_animateflash + .4byte sub_806B85C + .4byte ScrCmd_dofieldeffect + .4byte ScrCmd_setfieldeffectarg + .4byte ScrCmd_waitfieldeffect + .4byte ScrCmd_setrespawn + .4byte ScrCmd_checkplayergender + .4byte ScrCmd_playmoncry + .4byte ScrCmd_setmetatile + .4byte ScrCmd_resetweather + .4byte ScrCmd_setweather + .4byte ScrCmd_doweather + .4byte ScrCmd_setstepcallback + .4byte ScrCmd_setmaplayoutindex + .4byte ScrCmd_setobjectpriority + .4byte ScrCmd_resetobjectpriority + .4byte ScrCmd_createvobject + .4byte ScrCmd_turnvobject + .4byte ScrCmd_opendoor + .4byte ScrCmd_closedoor + .4byte sub_806C688 + .4byte ScrCmd_setdooropen + .4byte ScrCmd_setdoorclosed + .4byte sub_806C724 + .4byte sub_806C728 + .4byte ScrCmd_checkcoins + .4byte ScrCmd_givecoins + .4byte ScrCmd_takecoins + .4byte ScrCmd_setwildbattle + .4byte sub_806C39C + .4byte ScrCmd_setvaddress + .4byte ScrCmd_vgoto + .4byte ScrCmd_vcall + .4byte ScrCmd_vgoto_if + .4byte ScrCmd_vcall_if + .4byte ScrCmd_vmessage + .4byte ScrCmd_vloadword + .4byte ScrCmd_vbufferstring + .4byte sub_806C258 + .4byte ScrCmd_hidecoinsbox + .4byte ScrCmd_updatecoinsbox + .4byte ScrCmd_incrementgamestat + .4byte ScrCmd_setescapewarp + .4byte sub_806C540 + .4byte ScrCmd_bufferboxname + .4byte sub_806B7EC + .4byte sub_806B828 + .4byte sub_806B850 + .4byte sub_806C7BC + .4byte sub_806C7C8 + .4byte sub_806A888 + .4byte ScrCmd_setmonobedient + .4byte ScrCmd_checkmonobedience + .4byte sub_806A28C + .4byte sub_806A8C0 + .4byte sub_806ACF8 + .4byte sub_806C844 + .4byte sub_806BC40 + .4byte sub_806BD90 + +gScriptCmdTableEnd:: @ 815FD08 + .4byte sub_8069ED0 diff --git a/data/specials.inc b/data/specials.inc new file mode 100644 index 000000000..171a6fd8e --- /dev/null +++ b/data/specials.inc @@ -0,0 +1,456 @@ +.macro def_special ptr +.global SPECIAL_\ptr +.set SPECIAL_\ptr, __special__ +.set __special__, __special__ + 1 + .4byte \ptr + .endm + +.set __special__, 0 + .align 2 + +gSpecials:: @ 815FD60 + def_special sp000_heal_pokemon + def_special SetCableClubWarp + def_special sub_807E654 + def_special sub_807E704 + def_special sub_8081744 + def_special sub_8081770 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_8081064 + def_special sub_80810CC + def_special sub_80810F4 + def_special sub_80098B8 + def_special sub_80819C8 + def_special sub_8081978 + def_special sub_80819B8 + def_special sub_808130C + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special SavePlayerParty + def_special LoadPlayerParty + def_special sub_80A0334 + def_special sp02A_crash_sound + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special IsEnigmaBerryValid + def_special sub_80803CC + def_special sub_80805D8 + def_special sub_8080618 + def_special ScrSpecial_HasTrainerBeenFought + def_special ScrSpecial_EndTrainerApproach + def_special sub_8080628 + def_special sub_810CD4C + def_special sub_810CEB4 + def_special sub_80805B0 + def_special sub_808C6A8 + def_special CheckForAlivePartyMons + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80CBEBC + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_8081128 + def_special sub_806F67C + def_special nullsub_56 + def_special sub_80FEE44 + def_special sub_80BDA7C + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80A0918 + def_special sub_80A0930 + def_special sub_80A096C + def_special sub_80A0984 + def_special sub_80CBFA0 + def_special TV_CopyNicknameToStringVar1AndEnsureTerminated + def_special TV_CheckMonOTIDEqualsPlayerID + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80BDB1C + def_special nullsub_75 + def_special sub_809A540 + def_special CalculatePlayerPartyCount + def_special CountPartyNonEggMons + def_special CountPartyAliveNonEggMons_IgnoreVar0x8004Slot + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80CA68C + def_special DrawWholeMapView + def_special sub_80CA69C + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80CA6BC + def_special sub_80CA6DC + def_special sub_80CA714 + def_special sub_80CA758 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_8055DC4 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_807F888 + def_special ChangePokemonNickname + def_special sub_80BF8FC + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_8113364 + def_special sub_8113288 + def_special sub_81133A4 + def_special sub_8113064 + def_special sub_81132CC + def_special sub_8113510 + def_special sub_81130A8 + def_special sub_8113530 + def_special sub_8082E54 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80CA74C + def_special GetDaycareMonNicknames + def_special sub_80464B4 + def_special RejectEggFromDayCare + def_special GiveEggFromDaycare + def_special SetDaycareCompatibilityString + def_special GetSelectedMonNickAndSpecies + def_special StoreSelectedPokemonInDaycare + def_special ChooseSendDaycareMon + def_special ShowDaycareLevelMenu + def_special GetNumLevelsGainedFromDaycare + def_special GetDaycareCost + def_special TakePokemonFromDaycare + def_special ScriptHatchMon + def_special sub_8046FD4 + def_special sub_8046EAC + def_special sub_80CD228 + def_special IsEnoughForCostInVar0x8005 + def_special SubtractMoneyFromVar0x8005 + def_special ExecuteWhiteOut + def_special sub_80CA3C4 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80A0EC4 + def_special sub_80A0EEC + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80CA3D8 + def_special sub_80CA524 + def_special sub_80CA86C + def_special sub_80CA9A8 + def_special sub_80CB204 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80BF93C + def_special sub_80BF9BC + def_special sub_80BFBA8 + def_special ScrSpecial_GetPokemonNicknameAndMoveName + def_special ScrSpecial_CountPokemonMoves + def_special sub_80E4634 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80CA664 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80CA76C + def_special sub_80E5970 + def_special sub_80E5C28 + def_special sub_80E6648 + def_special sub_80E67FC + def_special sub_80E7538 + def_special sub_80E6900 + def_special sub_80E6A0C + def_special sub_80E6C8C + def_special sub_80E6E14 + def_special sub_80E6FB8 + def_special sub_80E7058 + def_special sub_80E71D0 + def_special sub_80E724C + def_special sub_80E72B8 + def_special sub_80A0380 + def_special ValidateEReaderTrainer + def_special nullsub_75 + def_special sub_80A03D8 + def_special sub_80EB6AC + def_special sub_80EB6FC + def_special sub_80CA7EC + def_special sub_8053A9C + def_special sub_8053D68 + def_special sub_8054440 + def_special sub_8053D2C + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sp109_CreatePCMenu + def_special sub_80CA574 + def_special sub_80CA618 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_61 + def_special DoSoftReset + def_special sub_80CA2E4 + def_special sub_80CB498 + def_special nullsub_75 + def_special SpawnScriptFieldObject + def_special RemoveScriptFieldObject + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80CAAAC + def_special sub_80CAABC + def_special player_get_direction_lower_nybble + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special LeadMonHasEffortRibbon + def_special GivLeadMonEffortRibbon + def_special ScrSpecial_AreLeadMonEVsMaxedOut + def_special sub_8069740 + def_special sub_8069768 + def_special sub_8141D9C + def_special nullsub_75 + def_special sub_80CA804 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80CAB78 + def_special nullsub_75 + def_special sub_80CABD0 + def_special nullsub_75 + def_special sub_80CB580 + def_special nullsub_75 + def_special sub_80CAC08 + def_special sub_806E99C + def_special sub_80CAC28 + def_special sub_807FA68 + def_special sub_807F9D8 + def_special sub_807FABC + def_special sub_8080398 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_807B6C0 + def_special sp13E_warp_to_last_warp + def_special sp13F_fall_to_last_warp + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80E5E70 + def_special sub_807F998 + def_special nullsub_75 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_80CAD54 + def_special sub_80BFC14 + def_special nullsub_75 + def_special nullsub_75 + def_special LoadPlayerBag + def_special sub_807F0B0 + def_special nullsub_75 + def_special nullsub_75 + def_special sub_8088F58 + def_special sub_80CAD7C + def_special nullsub_75 + def_special sub_80E759C + def_special GetNameOfEnigmaBerryInPlayerParty + def_special nullsub_75 + def_special sub_810B82C + def_special sub_807F904 + def_special sub_80CA630 + def_special sub_80CB7C4 + def_special sub_80CBC5C + def_special sub_80CADC4 + def_special sub_80CADEC + def_special sub_805D1A8 + def_special sub_80CB0A8 + def_special sub_80CB1D8 + def_special GetDaycarePokemonCount + def_special sub_80CB63C + def_special sub_80CBD80 + def_special sub_80CBDB0 + def_special sub_80CBDCC + def_special sub_810C444 + def_special sub_80CC7B4 + def_special ChangeBoxPokemonNickname + def_special sub_80CC2BC + def_special sub_80CC3CC + def_special sub_80CC524 + def_special sub_8009480 + def_special sub_8115A24 + def_special BerryBlenderLinkJoinGroup + def_special UnionRoomSpecial + def_special sub_814F1D4 + def_special EnableNationalPokedex + def_special sub_80699E0 + def_special sub_80699BC + def_special sub_810C3A4 + def_special SetFlavorTextFlagFromSpecialVars + def_special UpdatePickStateFromSpecialVar8005 + def_special sub_8054C48 + def_special sub_8046B40 + def_special sub_8046B70 + def_special sub_8046B94 + def_special sub_8046BBC + def_special sub_8046BDC + def_special sub_8146E78 + def_special sub_80CC48C + def_special sub_812B220 + def_special sub_812B234 + def_special sub_812B248 + def_special sub_8143FC8 + def_special sub_810B810 + def_special sub_811999C + def_special sp182_move_string + def_special sub_811390C + def_special sub_80CC4D4 + def_special sub_80CC730 + def_special sub_8110AB4 + def_special sub_8112364 + def_special sub_8146CE8 + def_special get_unknown_box_id + def_special sub_809D504 + def_special sub_809D620 + def_special sub_812781C + def_special sub_8127888 + def_special sub_80803FC + def_special sub_812B35C + def_special sub_815D334 + def_special sub_8149A18 + def_special sub_806E25C + def_special sub_815D9E8 + def_special sub_814B504 + def_special sub_80CC8CC + def_special sub_80CC948 + def_special sub_812B478 + def_special sub_812B484 + def_special sub_810B82C + def_special sub_8099FAC + def_special sub_815F094 + def_special sub_815F114 + def_special sub_815EEB0 + def_special sub_815EF5C + def_special sub_815F070 + def_special sub_80CC974 + def_special sub_814EA7C + def_special sub_80CCB94 + def_special sub_80CCCF8 + def_special sub_80F39B4 + def_special sub_8153810 + def_special sub_809D764 + def_special sub_809D8C0 + def_special sub_8147500 + def_special player_get_direction_lower_nybble + def_special sub_80CCDFC + def_special sub_80CD008 + def_special sub_8147594 + def_special sub_80CD034 + def_special sub_815D834 + def_special sub_8088F84 + def_special sub_80CD074 + def_special sub_80CD098 + def_special sub_811B15C + def_special sub_80CD0F4 + def_special sub_809C4A8 + def_special sub_81537C0 + def_special sub_809C5FC + def_special sub_80CB328 + def_special sub_80CD154 + def_special sub_80CD1B4 + def_special sub_8044838 +gSpecialsEnd:: diff --git a/include/battle_tower.h b/include/battle_tower.h index 120ab9a99..ec00d1f96 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -4,5 +4,7 @@ #include "global.h" u16 sub_8164FCC(u8, u8); +void sub_80E7524(u32 *); +void ValidateEReaderTrainer(void); #endif //GUARD_BATTLE_TOWER_H diff --git a/include/cereader_tool.h b/include/cereader_tool.h new file mode 100644 index 000000000..28ef526eb --- /dev/null +++ b/include/cereader_tool.h @@ -0,0 +1,9 @@ +#ifndef GUARD_CEREADER_TOOL_H +#define GUARD_CEREADER_TOOL_H + +#include "global.h" + +bool32 sub_815D794(u8 *); +u8 sub_815D6B4(u8 *); + +#endif //GUARD_CEREADER_TOOL_H diff --git a/include/constants/vars.h b/include/constants/vars.h index 6dc8d0ccd..c9340a3b4 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -51,12 +51,12 @@ #define VAR_0x402D 0x402D #define VAR_0x402E 0x402E -#define VAR_FRONTIER_MANIAC_FACILITY 0x402F +#define VAR_0x402F 0x402F -#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030 -#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031 -#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032 -#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033 +#define VAR_0x4030 0x4030 +#define VAR_0x4031 0x4031 +#define VAR_0x4032 0x4032 +#define VAR_ENIGMA_BERRY_AVAILABLE 0x4033 #define VAR_0x4034 0x4034 #define VAR_0x4035 0x4035 diff --git a/include/decompress.h b/include/decompress.h index 5f3863dc7..36672dcfd 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -32,4 +32,6 @@ void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src u32 sub_8034974(const u8 *ptr); +void sub_800F034(const struct CompressedSpriteSheet *src); + #endif // GUARD_DECOMPRESS_H diff --git a/include/easy_chat.h b/include/easy_chat.h index 2b5664420..bd5c9a026 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -37,5 +37,7 @@ bool32 sub_811F8D8(u16 word); void InitializeEasyChatWordArray(u16 *words, u16 length); void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2); bool8 ECWord_CheckIfOutsideOfValidRange(u16 word); +void sub_80BDE28(void); +void EnableRareWord(u8); #endif // GUARD_EASYCHAT_H diff --git a/include/event_data.h b/include/event_data.h index 2e340f073..13e388bf2 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -34,6 +34,8 @@ bool8 FlagGet(u16 id); u16 * GetVarPointer(u16 id); bool32 sub_806E2BC(void); void sub_806E6FC(void); +void sub_806E2D0(void); +void sub_806E370(void); extern u16 gSpecialVar_0x8000; extern u16 gSpecialVar_0x8001; @@ -54,7 +56,7 @@ extern u16 gSpecialVar_MonBoxId; extern u16 gSpecialVar_MonBoxPos; extern u16 gSpecialVar_0x8014; -extern u16 gUnknown_20370D0; -extern u16 gUnknown_20370C0; +extern u16 gSpecialVar_Result; +extern u16 gSpecialVar_0x8004; #endif // GUARD_EVENT_DATA_H diff --git a/include/global.berry.h b/include/global.berry.h index 5c8a43a02..148bbc957 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -1,6 +1,7 @@ #ifndef GUARD_GLOBAL_BERRY_H #define GUARD_GLOBAL_BERRY_H +#define BERRY_NAME_LENGTH 6 #define BERRY_NAME_COUNT 7 #define BERRY_ITEM_EFFECT_COUNT 18 diff --git a/include/global.h b/include/global.h index d5bfc5241..775b3115e 100644 --- a/include/global.h +++ b/include/global.h @@ -28,6 +28,8 @@ #endif // __APPLE__ #define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) +// GF's lingo +#define NELEMS ARRAY_COUNT // useful math macros @@ -264,7 +266,9 @@ struct SaveBlock2 /*0x098*/ struct Time localTimeOffset; /*0x0A0*/ struct Time lastBerryTreeUpdate; /*0x0A8*/ u32 field_A8; - /*0x0AC*/ u8 filler_AC[0x9ec]; + /*0x0AC*/ u8 filler_AC[0x3F4]; + /*0x4A0*/ u32 unk_4A0[0x2F]; + /*0x55c*/ u8 filler_55C[0x53C]; /*0xA98*/ u8 unk_A98[2][16]; /*0xAB8*/ u8 filler_AB8[0x468]; /*0xF20*/ u32 encryptionKey; @@ -591,6 +595,68 @@ struct FameCheckerSaveData #define NUM_EASY_CHAT_EXTRA_PHRASES 33 #define EASY_CHAT_EXTRA_PHRASES_SIZE ((NUM_EASY_CHAT_EXTRA_PHRASES >> 3) + (NUM_EASY_CHAT_EXTRA_PHRASES % 8 ? 1 : 0)) +struct MEventBuffer_3120_Sub +{ + u16 unk_00; + u8 unk_02; + u8 unk_03; + u8 unk_04[40]; + u8 unk_2C[10][40]; +}; + +struct MEventBuffer_3120 +{ + u32 crc; + struct MEventBuffer_3120_Sub data; +}; + +struct MEventBuffer_32E0_Sub +{ + u16 unk_00; + u16 unk_02; + u32 unk_04; + u8 unk_08_0:2; + u8 unk_08_2:4; + u8 unk_08_6:2; + u8 unk_09; + u8 unk_0A[40]; + u8 unk_32[40]; + u8 unk_5A[4][40]; + u8 unk_FA[40]; + u8 unk_122[40]; +}; + +struct MEventBuffer_32E0 +{ + u32 crc; + struct MEventBuffer_32E0_Sub data; +}; + +struct MEventBuffer_3430_Sub +{ + u16 unk_00; + u16 unk_02; + u16 unk_04; + u16 unk_06; + u16 unk_08[2][7]; +}; + +struct MEventBuffer_3430 +{ + u32 crc; + struct MEventBuffer_3430_Sub data; +}; + +struct MEventBuffers +{ + /*0x000 0x3120*/ struct MEventBuffer_3120 buffer_000; + /*0x1c0 0x32e0*/ struct MEventBuffer_32E0 buffer_1c0; + /*0x310 0x3430*/ struct MEventBuffer_3430 buffer_310; + /*0x338 0x3458*/ u16 unk_338[4]; + /*0x340 0x3460*/ struct MysteryEventStruct unk_340; + /*0x344 0x3464*/ u32 unk_344[2][5]; +}; // 0x36C 0x348C + struct SaveBlock1 { /*0x0000*/ struct Coords16 pos; @@ -638,9 +704,8 @@ struct SaveBlock1 /*0x309C*/ u8 giftRibbons[52]; /*0x30D0*/ struct Roamer roamer; /*0x30EC*/ struct EnigmaBerry enigmaBerry; - /*0x3120*/ u8 filler3120[0x340]; - /*0x3460*/ struct MysteryEventStruct unk_3460; - /*0x3464*/ u8 filler_3464[0x1b8]; + /*0x3120*/ struct MEventBuffers unk_3120; + /*0x348C*/ u8 filler_348C[0x190]; /*0x361C*/ struct RamScript ramScript; /*0x3A08*/ u8 filler3A08[12]; /*0x3A14*/ u8 seen2[DEX_FLAGS_NO]; diff --git a/include/help_system.h b/include/help_system.h index 3f6a741c6..632788148 100644 --- a/include/help_system.h +++ b/include/help_system.h @@ -5,4 +5,6 @@ extern bool8 gUnknown_3005ECC; +void sub_812B484(void); + #endif //GUARD_HELP_SYSTEM_H diff --git a/include/item_menu.h b/include/item_menu.h index 2482aa51f..a6128b9fb 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -7,7 +7,7 @@ // Exported RAM declarations -extern u16 gUnknown_203AD30; +extern u16 gSpecialVar_ItemId; // Exported ROM declarations void sub_81AAC50(void); diff --git a/include/link.h b/include/link.h index 239a59b71..ef8776c64 100644 --- a/include/link.h +++ b/include/link.h @@ -146,6 +146,11 @@ extern u16 word_3002910[]; extern bool8 gReceivedRemoteLinkPlayers; extern bool8 gLinkVSyncDisabled; +extern u8 gUnknown_3003F64; +extern u8 gUnknown_3003F84; +extern u64 gUnknown_3003FB4; +extern u16 gLinkType; + void Task_DestroySelf(u8); void OpenLink(void); void CloseLink(void); @@ -164,7 +169,7 @@ void sub_8007E24(void); void sub_8007E4C(void); u8 GetMultiplayerId(void); u8 bitmask_all_link_players_but_self(void); -bool8 SendBlock(u8, void *, u16); +bool8 SendBlock(u8, const void *, u16); u8 GetBlockReceivedStatus(void); void ResetBlockReceivedFlags(void); void ResetBlockReceivedFlag(u8); @@ -196,5 +201,12 @@ void sub_8011BD0(void); u8 sub_800ABAC(void); u8 sub_800ABBC(void); void sub_800AC34(void); +void sub_8009804(void); +bool8 sub_800AA48(void); +void sub_800A5BC(void); +void sub_800AA80(u8); +void sub_80098D8(void); +void sub_80098B8(void); +bool8 sub_800A4BC(void); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h new file mode 100644 index 000000000..6e54fcc6c --- /dev/null +++ b/include/link_rfu.h @@ -0,0 +1,9 @@ +#ifndef GUARD_LINK_RFU_H +#define GUARD_LINK_RFU_H + +void sub_8142504(const u8 *str); +bool32 mevent_0814257C(u8 * cmdPtr, const u8 * src); +void sub_80FA190(void); +void sub_8142420(void); + +#endif //GUARD_LINK_RFU_H diff --git a/include/mail_data.h b/include/mail_data.h index bbe695203..0275d8dc6 100644 --- a/include/mail_data.h +++ b/include/mail_data.h @@ -10,5 +10,6 @@ // Exported ROM declarations u16 sub_80D45E8(u16, u16 *); +bool8 itemid_is_mail(u16 itemId); #endif //GUARD_MAIL_DATA_H diff --git a/include/main.h b/include/main.h index 84d356692..adbf1fb5d 100644 --- a/include/main.h +++ b/include/main.h @@ -9,6 +9,8 @@ typedef void (*MainCallback)(void); typedef void (*IntrCallback)(void); typedef void (*IntrFunc)(void); +extern IntrFunc gIntrTable[]; + struct Main { /*0x000*/ MainCallback callback1; @@ -62,5 +64,9 @@ void SetSerialCallback(IntrCallback callback); void InitFlashTimer(void); void DoSoftReset(void); void ClearPokemonCrySongs(void); +void RestoreSerialTimer3IntrHandlers(void); + +extern const char RomHeaderGameCode[4]; +extern const char RomHeaderSoftwareVersion; #endif // GUARD_MAIN_H diff --git a/include/mevent.h b/include/mevent.h index 7df669da3..d940b212c 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -3,7 +3,51 @@ #include "global.h" +struct MEventStruct_Unk1442CC +{ + u32 unk_00; + u16 unk_04; + u32 unk_08; + u16 unk_0C; + u32 unk_10; + u16 unk_14; + u16 unk_16[4]; + struct MEventBuffer_3430_Sub unk_20; + u8 unk_44; + u8 unk_45[7]; + u8 unk_4C[4]; + u16 unk_50[6]; + u8 unk_5C[4]; + u8 unk_60; +}; + +struct MEvent_Str_1 +{ + u16 unk_000; + size_t unk_004; + const void * unk_008; +}; + +struct MEvent_Str_2 +{ + u8 fill_00[0x40]; +}; + +struct MEventBuffer_3120_Sub * sub_8143D58(void); +struct MEventBuffer_32E0_Sub * sav1_get_mevent_buffer_1(void); +struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void); struct MysteryEventStruct * sub_8143D94(void); +bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src); bool32 sub_8143E1C(void); +bool32 sub_8143EF4(const u8 * src); +bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data); +void sub_814410C(struct MEventBuffer_32E0_Sub * buffer); +bool32 sub_8144254(const u16 * data); +void sub_81442CC(struct MEventStruct_Unk1442CC * data); +bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data); +u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused); +u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused); +bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1); +u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command); #endif //GUARD_MEVENT_H diff --git a/include/mevent_server.h b/include/mevent_server.h new file mode 100644 index 000000000..e593b5dbd --- /dev/null +++ b/include/mevent_server.h @@ -0,0 +1,95 @@ +#ifndef GUARD_MEVENT_SERVER_H +#define GUARD_MEVENT_SERVER_H + +#include "global.h" + +#define ME_SEND_BUF_SIZE 0x400 + +struct mevent_srv_sub +{ + s32 seqno; + u8 sendPlayerNo; + u8 recvPlayerNo; + u16 recvIdent; + u16 recvCounter; + u16 recvCRC; + u16 recvSize; + u16 sendIdent; + u16 sendCounter; + u16 sendCRC; + u16 sendSize; + void * recvBfr; + const void * sendBfr; + u32 (*recvFunc)(struct mevent_srv_sub *); + u32 (*sendFunc)(struct mevent_srv_sub *); +}; + +struct send_recv_header +{ + u16 ident; + u16 crc; + u16 size; +}; + +struct mevent_cmd_ish +{ + u32 instr; + u32 parameter; +}; + +struct mevent_srv_ish +{ + u32 unk_00; + u32 param; + u32 mainseqno; + u32 flag; + u32 cmdidx; + void * sendBuffer; + void * recvBuffer; + struct mevent_cmd_ish * cmdBuffer; + void * buffer; + struct mevent_srv_sub manager; +}; + +struct mevent_cmd +{ + u32 instr; + bool32 flag; + void * parameter; +}; + +struct mevent_srv_common +{ + u32 unk_00; + u32 param; + u32 mainseqno; + u32 cmdidx; + const struct mevent_cmd * cmdBuffer; + void * recvBuffer; + struct MEventBuffer_32E0_Sub * mevent_32e0; + struct MEventBuffer_3120_Sub * mevent_3120; + struct MEventStruct_Unk1442CC * mevent_unk1442cc; + void * sendBuffer1; + u32 sendBuffer1Size; + void * sendBuffer2; + u32 sendBuffer2Size; + u32 sendWord; + struct mevent_srv_sub manager; +}; + +u32 mevent_srv_sub_recv(struct mevent_srv_sub * svr); +u32 mevent_srv_sub_send(struct mevent_srv_sub * svr); +void mevent_srv_sub_init(struct mevent_srv_sub * svr, u32 sendPlayerNo, u32 recvPlayerNo); +void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 ident, const void * src, u32 size); +void mevent_srv_sub_init_recv(struct mevent_srv_sub * svr, u32 ident, void * dest); + +void mevent_srv_ish_do_init(void); +u32 mevent_srv_ish_do_exec(u16 * a0); +void mevent_srv_ish_inc_flag(void); +void * mevent_srv_ish_get_buffer(void); +void mevent_srv_ish_set_param(u32 a0); +void mevent_srv_common_do_init_1(void); +void mevent_srv_common_do_init_2(void); +u32 mevent_srv_init_do_exec(u16 * a0); + +#endif //GUARD_MEVENT_SERVER_H diff --git a/include/mystery_event_msg.h b/include/mystery_event_msg.h new file mode 100644 index 000000000..e96c3069b --- /dev/null +++ b/include/mystery_event_msg.h @@ -0,0 +1,18 @@ +#ifndef GUARD_MYSTERY_EVENT_MSG_H +#define GUARD_MYSTERY_EVENT_MSG_H + +#include <gba/gba.h> + +extern const u8 gText_MysteryGiftBerry[]; +extern const u8 gText_MysteryGiftBerryTransform[]; +extern const u8 gText_MysteryGiftBerryObtained[]; +extern const u8 gText_MysteryGiftSpecialRibbon[]; +extern const u8 gText_MysteryGiftNationalDex[]; +extern const u8 gText_MysteryGiftRareWord[]; +extern const u8 gText_MysteryGiftSentOver[]; +extern const u8 gText_MysteryGiftFullParty[]; +extern const u8 gText_MysteryGiftNewTrainer[]; +extern const u8 gText_MysteryGiftNewAdversaryInBattleTower[]; +extern const u8 gText_MysteryGiftCantBeUsed[]; + +#endif // GUARD_MYSTERY_EVENT_MSG_H diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h index 1ba1464fa..be64663ed 100644 --- a/include/mystery_event_script.h +++ b/include/mystery_event_script.h @@ -7,4 +7,7 @@ u32 RunMysteryEventScript(u8 *); void SetMysteryEventScriptStatus(u32 val); u16 GetRecordMixingGift(void); +void sub_80DA89C(u8 *); +bool32 sub_80DA8B0(u32 *); + #endif // GUARD_MYSTERY_EVENT_SCRIPT_H diff --git a/include/mystery_gift_menu.h b/include/mystery_gift_menu.h new file mode 100644 index 000000000..24bf85a13 --- /dev/null +++ b/include/mystery_gift_menu.h @@ -0,0 +1,9 @@ +#ifndef GUARD_MYSTERY_GIFT_MENU_H +#define GUARD_MYSTERY_GIFT_MENU_H + +extern bool8 gUnknown_203F3B8; + +void sub_81422FC(void); +void sub_8142344(bool8, bool32); + +#endif //GUARD_MYSTERY_GIFT_MENU_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index da58a2d83..593715b7d 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -10,5 +10,10 @@ void sub_80D2F68(u16 iconId); u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5); void sub_80D2FF0(u16 iconId); void sub_80D2EF8(struct Sprite *sprite); +void sub_809707C(void); +void FreeMonIconPalettes(void); +u16 sub_8096FD4(u16); +u8 sub_8096ECC(u16, void (*)(struct Sprite *), s16, s16, u8, bool32); +void sub_8097070(struct Sprite *); #endif // GUARD_POKEMON_ICON_H diff --git a/include/script.h b/include/script.h index 9e26b8a28..ebb4caa86 100644 --- a/include/script.h +++ b/include/script.h @@ -62,5 +62,8 @@ u8 *GetRamScript(u8 objectId, u8 *script); bool32 sub_80991F8(void); u8 *sub_8099244(void); void sub_80992A0(u8 *script, u16 scriptSize); +bool32 sub_8069DFC(void); +void sub_8069EA4(u8 * script, u16 scriptSize); +u8 * sub_8069E48(void); #endif // GUARD_SCRIPT_H diff --git a/include/strings.h b/include/strings.h index 90c84c9b9..40021a01d 100644 --- a/include/strings.h +++ b/include/strings.h @@ -89,5 +89,7 @@ extern const u8 gText_Cancel4[]; extern const u8 gText_IsThisTheCorrectTime[]; extern const u8 gText_PkmnFainted3[]; extern const u8 gText_Coins[]; +extern const u8 gText_EggNickname[]; +extern const u8 gText_Pokemon[]; #endif //GUARD_STRINGS_H diff --git a/include/unk_815c27c.h b/include/unk_815c27c.h new file mode 100644 index 000000000..cc1cbb7ce --- /dev/null +++ b/include/unk_815c27c.h @@ -0,0 +1,11 @@ +#ifndef GUARD_UNK_815C27C_H +#define GUARD_UNK_815C27C_H + +void sub_815C6D4(void); +void sub_815C6C4(void); +void sub_815C8C8(void); +void sub_815C960(void); +void sub_815C91C(void); +u16 sub_815C498(u8, size_t, const void *, u8); + +#endif //GUARD_UNK_815C27C_H diff --git a/include/util.h b/include/util.h index a22cc77fa..e0034d816 100644 --- a/include/util.h +++ b/include/util.h @@ -12,8 +12,8 @@ u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *)); void StoreWordInTwoHalfwords(u16 *, u32); void LoadWordFromTwoHalfwords(u16 *, u32 *); int CountTrailingZeroBits(u32 value); -u16 CalcCRC16(u8 *data, s32 length); -u16 CalcCRC16WithTable(u8 *data, u32 length); +u16 CalcCRC16(const u8 *data, s32 length); +u16 CalcCRC16WithTable(const u8 *data, u32 length); u32 CalcByteArraySum(const u8* data, u32 length); #endif // GUARD_UTIL_H diff --git a/ld_script.txt b/ld_script.txt index 2a42825c9..d37858b3f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -182,7 +182,7 @@ SECTIONS { asm/roulette_util.o(.text); asm/cable_car_util.o(.text); src/save.o(.text); - asm/mystery_event_script.o(.text); + src/mystery_event_script.o(.text); asm/field_effect_helpers.o(.text); asm/battle_anim_sound_tasks.o(.text); asm/battle_controller_safari.o(.text); @@ -243,9 +243,10 @@ SECTIONS { asm/roamer.o(.text); asm/mystery_gift_menu.o(.text); asm/link_rfu_4.o(.text); - asm/mevent.o(.text); - asm/mevent_server.o(.text); - asm/mevent_8145654.o(.text); + src/mevent.o(.text); + src/mevent_server_helpers.o(.text); + src/mevent_server.o(.text); + src/mevent_8145654.o(.text); src/menews_jisan.o(.text); asm/seagallop.o(.text); asm/unk_8147500.o(.text); @@ -378,11 +379,18 @@ SECTIONS { data/data_83FECCC.o(.rodata.8456C74); src/fame_checker.o(.rodata); data/data_845FD54.o(.rodata); + src/mevent.o(.rodata); + src/mevent_server_helpers.o(.rodata); + src/mevent_server.o(.rodata); + src/mevent_8145654.o(.rodata); + data/data_8466FB8.o(.rodata); src/menews_jisan.o(.rodata); src/menews_jisan.o(.rodata.str1.4); data/data_8468C98.o(.rodata); src/quest_log_8150454.o(.rodata); data/data_8471F00.o(.rodata); + src/mystery_event_msg.o(.rodata); + data/mystery_event_msg.o(.rodata); src/m4a_tables.o(.rodata); data/sound_data.o(.rodata); } =0 diff --git a/src/fame_checker.c b/src/fame_checker.c index ed38406cb..bbbe02c58 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -1038,9 +1038,9 @@ static void FCSetup_ResetBGCoords(void) void SetFlavorTextFlagFromSpecialVars(void) { - if (gUnknown_20370C0 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 6) + if (gSpecialVar_0x8004 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 6) { - gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].flavorTextFlags |= (1 << gSpecialVar_0x8005); + gSaveBlock1Ptr->fameChecker[gSpecialVar_0x8004].flavorTextFlags |= (1 << gSpecialVar_0x8005); gSpecialVar_0x8005 = FCPICKSTATE_SILHOUETTE; UpdatePickStateFromSpecialVar8005(); } @@ -1048,15 +1048,15 @@ void SetFlavorTextFlagFromSpecialVars(void) void UpdatePickStateFromSpecialVar8005(void) { - if (gUnknown_20370C0 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 3) + if (gSpecialVar_0x8004 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 3) { if (gSpecialVar_0x8005 == FCPICKSTATE_NO_DRAW) return; if ( gSpecialVar_0x8005 == FCPICKSTATE_SILHOUETTE - && gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState == FCPICKSTATE_COLORED + && gSaveBlock1Ptr->fameChecker[gSpecialVar_0x8004].pickState == FCPICKSTATE_COLORED ) return; - gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState = gSpecialVar_0x8005; + gSaveBlock1Ptr->fameChecker[gSpecialVar_0x8004].pickState = gSpecialVar_0x8005; } } diff --git a/src/menews_jisan.c b/src/menews_jisan.c index 13c787df7..b4fe080bf 100644 --- a/src/menews_jisan.c +++ b/src/menews_jisan.c @@ -107,7 +107,7 @@ void sub_8146CA4(void) u16 sub_8146CE8(void) { - u16 *r6 = &gUnknown_20370D0; + u16 *r6 = &gSpecialVar_Result; struct MysteryEventStruct *r4 = sub_8143D94(); u16 r5; diff --git a/src/mevent.c b/src/mevent.c new file mode 100644 index 000000000..7a7fcc399 --- /dev/null +++ b/src/mevent.c @@ -0,0 +1,1016 @@ +#include "global.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "malloc.h" +#include "sound.h" +#include "easy_chat.h" +#include "main.h" +#include "task.h" +#include "decompress.h" +#include "link.h" +#include "link_rfu.h" +#include "unk_815c27c.h" +#include "util.h" +#include "script.h" +#include "event_data.h" +#include "battle_tower.h" +#include "new_game.h" +#include "string_util.h" +#include "menews_jisan.h" +#include "cereader_tool.h" +#include "mystery_gift_menu.h" +#include "help_system.h" +#include "mevent.h" + +struct MEventTaskData1 +{ + u16 t00; + u16 t02; + u16 t04; + u16 t06; + u8 t08; + u8 t09; + u8 t0A; + u8 t0B; + u8 t0C; + u8 t0D; + u8 t0E; + struct MEvent_Str_2 *t10; +}; + +void sub_8143910(u8 taskId); +bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * src); +void sub_8143E9C(void); +void sub_8143ED0(void); +bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * src); +void sub_814407C(void); +void sub_81440B4(void); +void sub_8144824(u32, u32, u32 *, s32); +void sub_8144790(void); + +extern const u8 gUnknown_841DE52[]; +extern const u8 gUnknown_841DE53[]; +extern const u8 gUnknown_841DE54[]; +extern const u8 gUnknown_841DE7C[]; +extern const u8 gUnknown_841DE7D[]; +extern const u8 gUnknown_841DE95[]; +extern const u8 gUnknown_841DE96[]; +extern const u8 gUnknown_841DE97[]; +extern const u8 gUnknown_841DE98[]; +extern const u8 gUnknown_841DE99[]; +extern const u8 gUnknown_841DE9A[]; +extern const u8 gUnknown_841DE9B[]; +extern const u8 gUnknown_841DE9C[]; +extern const u8 gUnknownSerialData_Start[]; +extern const u8 gUnknownSerialData_End[]; + +const u16 gUnknown_8466F00[] = { + 0x02a7, + 0x02a8, + 0x02a9, + 0x02aa, + 0x02ab, + 0x02ac, + 0x02ad, + 0x02ae, + 0x02af, + 0x02b0, + 0x02b1, + 0x02b2, + 0x02b3, + 0x02b4, + 0x02b5, + 0x02b6, + 0x02b7, + 0x02b8, + 0x02b9, + 0x02ba +}; + +struct MEvent_Str_1 gUnknown_3005ED0; + +static EWRAM_DATA bool32 gUnknown_203F3BC = FALSE; + +void sub_81435DC(struct MEvent_Str_1 *a0, size_t a1, const void * a2) +{ + vu16 imeBak = REG_IME; + REG_IME = 0; + gIntrTable[1] = sub_815C6D4; + gIntrTable[2] = sub_815C6C4; + sub_815C8C8(); + sub_815C960(); + REG_IE |= INTR_FLAG_VCOUNT; + REG_IME = imeBak; + a0->unk_000 = 0; + a0->unk_004 = a1; + a0->unk_008 = a2; +} + +void sub_8143644(struct MEvent_Str_1 *unused) +{ + vu16 imeBak = REG_IME; + REG_IME = 0; + sub_815C960(); + sub_815C91C(); + RestoreSerialTimer3IntrHandlers(); + REG_IME = imeBak; +} + +u8 sub_8143674(struct MEvent_Str_1 *a0) +{ + u8 resp = 0; + a0->unk_000 = sub_815C498(1, a0->unk_004, a0->unk_008, 0); + if ((a0->unk_000 & 0x13) == 0x10) + resp = 1; + if (a0->unk_000 & 8) + resp = 2; + if (a0->unk_000 & 4) + resp = 3; + gUnknown_3003F84 = 0; + return resp; +} + +void sub_81436BC(void) +{ + memset(gDecompressionBuffer, 0, 0x2000); + gLinkType = 0x5502; + sub_8009804(); + SetSuppressLinkErrorMessage(TRUE); +} + +bool32 sub_81436EC(void) +{ + vu16 imeBak = REG_IME; + u16 data[4]; + REG_IME = 0; + *(u64 *)data = gUnknown_3003FB4; + REG_IME = imeBak; + if ( data[0] == 0xB9A0 + && data[1] == 0xCCD0 + && data[2] == 0xFFFF + && data[3] == 0xFFFF + ) + return TRUE; + return FALSE; +} + +bool32 sub_814374C(void) +{ + if (sub_800AA48() && GetLinkPlayerCount_2() == 2) + return TRUE; + return FALSE; +} + +u32 sub_8143770(u8 * r4, u16 * r5) +{ + if ((*r4 == 3 || *r4 == 4 || *r4 == 5) && HasLinkErrorOccurred()) + { + *r4 = 0; + return 3; + } + switch (*r4) + { + case 0: + if (sub_800AA48() && GetLinkPlayerCount_2() > 1) + { + *r4 = 1; + ; + } + else if (JOY_NEW(B_BUTTON)) + { + *r4 = 0; + return 1; + } + break; + case 1: + if (++(*r5) > 5) + { + *r5 = 0; + *r4 = 2; + } + break; + case 2: + if (GetLinkPlayerCount_2() == 2) + { + PlaySE(SE_TOY_G); + sub_800A5BC(); + *r5 = 0; + *r4 = 3; + } + else if (JOY_NEW(B_BUTTON)) + { + *r4 = 0; + return 1; + } + break; + case 3: + if (++(*r5) > 30) + { + *r4 = 0; + return 5; + } + else if (IsLinkConnectionEstablished()) + { + if (gUnknown_3003F64) + { + if (IsLinkPlayerDataExchangeComplete()) + { + *r4 = 0; + return 2; + } + else + *r4 = 4; + } + else + *r4 = 3; + } + break; + case 4: + sub_800AA80(0); + *r4 = 5; + break; + case 5: + if (!gUnknown_3003F64) + { + *r4 = 0; + return 4; + } + break; + } + return 0; +} + +void sub_81438A0(void) +{ + u8 taskId = CreateTask(sub_8143910, 0); + struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data; + data->t08 = 0; + data->t09 = 0; + data->t0A = 0; + data->t0B = 0; + data->t0C = 0; + data->t0D = 0; + data->t00 = 0; + data->t02 = 0; + data->t04 = 0; + data->t06 = 0; + data->t0E = 0; + data->t10 = AllocZeroed(sizeof(struct MEvent_Str_2)); +} + +void sub_81438E8(u16 *a0) +{ + *a0 = 0; +} + +bool32 sub_81438F0(u16 * a0, u16 a1) +{ + if (++(*a0) > a1) + { + *a0 = 0; + return TRUE; + } + return FALSE; +} + +void sub_8143910(u8 taskId) +{ + struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data; + switch (data->t08) + { + case 0: + if (mevent_0814257C(&data->t09, gUnknown_841DE52)) + data->t08 = 1; + break; + case 1: + sub_81436BC(); + sub_81438E8(&data->t00); + data->t08 = 2; + break; + case 2: + if (sub_81438F0(&data->t00, 10)) + data->t08 = 3; + break; + case 3: + if (!sub_814374C()) + { + sub_80098B8(); + data->t08 = 4; + } + else + data->t08 = 13; + break; + case 4: + if (mevent_0814257C(&data->t09, gUnknown_841DE53)) + { + sub_8142504(gUnknown_841DE54); + sub_81438E8(&data->t00); + data->t08 = 5; + } + break; + case 5: + if (sub_81438F0(&data->t00, 90)) + { + sub_81436BC(); + data->t08 = 6; + } + else if (JOY_NEW(B_BUTTON)) + { + sub_81438E8(&data->t00); + PlaySE(SE_SELECT); + data->t08 = 23; + } + break; + case 6: + if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_80098B8(); + sub_81438E8(&data->t00); + data->t08 = 23; + } + else if (GetLinkPlayerCount_2() > 1) + { + sub_81438E8(&data->t00); + sub_80098B8(); + data->t08 = 7; + } + else if (sub_81436EC()) + { + PlaySE(SE_SELECT); + sub_80098B8(); + sub_81438E8(&data->t00); + data->t08 = 8; + } + else if (sub_81438F0(&data->t00, 10)) + { + sub_80098B8(); + sub_81436BC(); + sub_81438E8(&data->t00); + } + break; + case 7: + if (mevent_0814257C(&data->t09, gUnknown_841DE7C)) + data->t08 = 4; + break; + case 8: + sub_8142504(gUnknown_841DE95); + sub_81435DC(&gUnknown_3005ED0, gUnknownSerialData_End - gUnknownSerialData_Start, gUnknownSerialData_Start); + data->t08 = 9; + break; + case 9: + data->t0E = sub_8143674(&gUnknown_3005ED0); + if (data->t0E != 0) + data->t08 = 10; + break; + case 10: + sub_8143644(&gUnknown_3005ED0); + if (data->t0E == 3) + data->t08 = 20; + else if (data->t0E == 1) + { + sub_81438E8(&data->t00); + sub_8142504(gUnknown_841DE9B); + data->t08 = 11; + } + else + data->t08 = 0; + break; + case 11: + if (sub_81438F0(&data->t00, 840)) + data->t08 = 12; + break; + case 12: + sub_81436BC(); + sub_8142504(gUnknown_841DE98); + data->t08 = 13; + break; + case 13: + switch (sub_8143770(&data->t09, &data->t00)) + { + case 0: + break; + case 2: + sub_8142504(gUnknown_841DE95); + data->t08 = 14; + break; + case 1: + PlaySE(SE_SELECT); + sub_80098B8(); + data->t08 = 23; + break; + case 5: + sub_80098B8(); + data->t08 = 21; + break; + case 3: + case 4: + sub_80098B8(); + data->t08 = 20; + break; + } + break; + case 14: + if (HasLinkErrorOccurred()) + { + sub_80098B8(); + data->t08 = 20; + } + else if (GetBlockReceivedStatus()) + { + ResetBlockReceivedFlags(); + data->t08 = 15; + } + break; + case 15: + data->t0E = sub_815D6B4(gDecompressionBuffer); + sub_800AA80(data->t0E); + data->t08 = 16; + break; + case 16: + if (!gUnknown_3003F64) + { + if (data->t0E == 1) + data->t08 = 17; + else + data->t08 = 20; + } + break; + case 17: + if (sub_815D794(gDecompressionBuffer)) + { + sub_8142504(gUnknown_841DE99); + sub_81438E8(&data->t00); + data->t08 = 18; + } + else + data->t08 = 22; + break; + case 18: + if (sub_81438F0(&data->t00, 120)) + { + sub_8142504(gUnknown_841DE9A); + PlayFanfare(258); + data->t08 = 19; + } + break; + case 19: + if (IsFanfareTaskInactive() &&JOY_NEW(A_BUTTON | B_BUTTON)) + data->t08 = 26; + break; + case 23: + if (mevent_0814257C(&data->t09, gUnknown_841DE7D)) + data->t08 = 26; + break; + case 20: + if (mevent_0814257C(&data->t09, gUnknown_841DE96)) + data->t08 = 0; + break; + case 21: + if (mevent_0814257C(&data->t09, gUnknown_841DE97)) + data->t08 = 0; + break; + case 22: + if (mevent_0814257C(&data->t09, gUnknown_841DE9C)) + data->t08 = 0; + break; + case 26: + sub_812B484(); + Free(data->t10); + DestroyTask(taskId); + SetMainCallback2(sub_81422FC); + break; + } +} + +void sub_8143D24(void) +{ + CpuFill32(0, &gSaveBlock1Ptr->unk_3120, sizeof(gSaveBlock1Ptr->unk_3120)); + sub_8143ED0(); + sub_80BDE28(); +} + +struct MEventBuffer_3120_Sub * sub_8143D58(void) +{ + return &gSaveBlock1Ptr->unk_3120.buffer_000.data; +} + +struct MEventBuffer_32E0_Sub * sav1_get_mevent_buffer_1(void) +{ + return &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; +} + +struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void) +{ + return &gSaveBlock1Ptr->unk_3120.buffer_310.data; +} + +struct MysteryEventStruct * sub_8143D94(void) +{ + return &gSaveBlock1Ptr->unk_3120.unk_340; +} + +u16 * sub_8143DA8(void) +{ + return gSaveBlock1Ptr->unk_3120.unk_338; +} + +void sub_8143DBC(void) +{ + sub_8143E9C(); +} + +bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src) +{ + if (!sub_8143E64(src)) + return FALSE; + sub_8143E9C(); + gSaveBlock1Ptr->unk_3120.buffer_000.data = *src; + gSaveBlock1Ptr->unk_3120.buffer_000.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)); + return TRUE; +} + +bool32 sub_8143E1C(void) +{ + if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)) != gSaveBlock1Ptr->unk_3120.buffer_000.crc) + return FALSE; + if (!sub_8143E64(&gSaveBlock1Ptr->unk_3120.buffer_000.data)) + return FALSE; + return TRUE; +} + +bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * data) +{ + if (data->unk_00 == 0) + return FALSE; + return TRUE; +} + +bool32 sub_8143E78(void) +{ + const struct MEventBuffer_3120_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_000.data; + if (data->unk_02 == 0) + return FALSE; + return TRUE; +} + +void sub_8143E9C(void) +{ + CpuFill32(0, sub_8143D58(), sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)); + gSaveBlock1Ptr->unk_3120.buffer_000.crc = 0; +} + +void sub_8143ED0(void) +{ + CpuFill32(0, sub_8143D94(), sizeof(struct MysteryEventStruct)); + sub_8146C88(); +} + +bool32 sub_8143EF4(const u8 * src) +{ + const u8 * r5 = (const u8 *)&gSaveBlock1Ptr->unk_3120.buffer_000.data; + u32 i; + if (!sub_8143E1C()) + return FALSE; + for (i = 0; i < sizeof(struct MEventBuffer_3120_Sub); i++) + { + if (r5[i] != src[i]) + return FALSE; + } + return TRUE; +} + +void sub_8143F38(void) +{ + sub_814407C(); + sub_81440B4(); + sub_8144790(); + ClearRamScript(); + sub_806E2D0(); + sub_806E370(); + sub_80E7524(gSaveBlock2Ptr->unk_4A0); +} + +bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data) +{ + struct MEventBuffer_3430_Sub * r2; + struct MEventBuffer_32E0_Sub * r1; + if (!sub_8144018(data)) + return FALSE; + sub_8143F38(); + memcpy(&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, data, sizeof(struct MEventBuffer_32E0_Sub)); + gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)); + r2 = &gSaveBlock1Ptr->unk_3120.buffer_310.data; + r1 = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + r2->unk_06 = r1->unk_02; + return TRUE; +} + +bool32 sub_8143FC8(void) +{ + if (gSaveBlock1Ptr->unk_3120.buffer_1c0.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub))) + return FALSE; + if (!sub_8144018(&gSaveBlock1Ptr->unk_3120.buffer_1c0.data)) + return FALSE; + if (!sub_8069DFC()) + return FALSE; + return TRUE; +} + +bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * data) +{ + if (data->unk_00 == 0) + return FALSE; + if (data->unk_08_0 > 2) + return FALSE; + if (!(data->unk_08_6 == 0 || data->unk_08_6 == 1 || data->unk_08_6 == 2)) + return FALSE; + if (data->unk_08_2 > 7) + return FALSE; + if (data->unk_09 > 7) + return FALSE; + return TRUE; +} + +bool32 sub_8144054(void) +{ + const struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_6 == 0) + return FALSE; + return TRUE; +} + +void sub_814407C(void) +{ + CpuFill32(0, &gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)); + gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = 0; +} + +void sub_81440B4(void) +{ + CpuFill32(0, sav1_get_mevent_buffer_2(), 18 * sizeof(u16)); + gSaveBlock1Ptr->unk_3120.buffer_310.crc = 0; +} + +u16 sub_81440E8(void) +{ + if (sub_8143FC8()) + return gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00; + return 0; +} + +void sub_814410C(struct MEventBuffer_32E0_Sub * buffer) +{ + if (buffer->unk_08_6 == 1) + buffer->unk_08_6 = 0; +} + +bool32 sub_8144124(u16 a0) +{ + if (a0 >= 1000 && a0 < 1020) + return TRUE; + return FALSE; +} + +bool32 sub_8144144(void) +{ + u16 value = sub_81440E8(); + if (!sub_8144124(value)) + return FALSE; + if (FlagGet(gUnknown_8466F00[value - 1000]) == TRUE) + return FALSE; + return TRUE; +} + +s32 sub_8144184(const struct MEventBuffer_3430_Sub * data, s32 size) +{ + s32 r3 = 0; + s32 i; + for (i = 0; i < size; i++) + { + if (data->unk_08[1][i] && data->unk_08[0][i]) + r3++; + } + return r3; +} + +bool32 sub_81441AC(const struct MEventBuffer_3430_Sub * data1, const u16 * data2, s32 size) +{ + s32 i; + for (i = 0; i < size; i++) + { + if (data1->unk_08[1][i] == data2[1]) + return TRUE; + if (data1->unk_08[0][i] == data2[0]) + return TRUE; + } + return FALSE; +} + +bool32 sub_81441F0(const u16 * data) +{ + if (data[1] == 0) + return FALSE; + if (data[0] == 0) + return FALSE; + if (data[0] >= NUM_SPECIES) + return FALSE; + return TRUE; +} + +s32 sub_8144218(void) +{ + struct MEventBuffer_32E0_Sub * data; + if (!sub_8143FC8()) + return 0; + data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 != 1) + return 0; + return sub_8144184(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data->unk_09); +} + +bool32 sub_8144254(const u16 * data) +{ + struct MEventBuffer_32E0_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + s32 size = buffer->unk_09; + s32 i; + if (!sub_81441F0(data)) + return FALSE; + if (sub_81441AC(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data, size)) + return FALSE; + for (i = 0; i < size; i++) + { + if (gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] == 0 && gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] == 0) + { + gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] = data[1]; + gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] = data[0]; + return TRUE; + } + } + return FALSE; +} + +void sub_81442CC(struct MEventStruct_Unk1442CC * data) +{ + s32 i; + CpuFill32(0, data, sizeof(struct MEventStruct_Unk1442CC)); + data->unk_00 = 0x101; + data->unk_04 = 1; + data->unk_08 = 1; + data->unk_0C = 1; + data->unk_10 = 1; + if (sub_8143FC8()) + { + data->unk_14 = sav1_get_mevent_buffer_1()->unk_00; + data->unk_20 = *sav1_get_mevent_buffer_2(); + data->unk_44 = sav1_get_mevent_buffer_1()->unk_09; + } + else + data->unk_14 = 0; + for (i = 0; i < 4; i++) + data->unk_16[i] = gSaveBlock1Ptr->unk_3120.unk_338[i]; + CopyUnalignedWord(data->unk_4C, gSaveBlock2Ptr->playerTrainerId); + StringCopy(data->unk_45, gSaveBlock2Ptr->playerName); + for (i = 0; i < 6; i++) + data->unk_50[i] = gSaveBlock1Ptr->unk2CA0[i]; + memcpy(data->unk_5C, RomHeaderGameCode, 4); + data->unk_60 = RomHeaderSoftwareVersion; +} + +bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data) +{ + if (data->unk_00 != 0x101) + return FALSE; + if (!(data->unk_04 & 1)) + return FALSE; + if (!(data->unk_08 & 1)) + return FALSE; + if (!(data->unk_0C & 1)) + return FALSE; + if (!(data->unk_10 & 0x0F)) + return FALSE; + return TRUE; +} + +u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused) +{ + if (a1->unk_14 == 0) + return 0; + if (*a0 == a1->unk_14) + return 1; + return 2; +} + +u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused) +{ + s32 r4 = a1->unk_44 - sub_8144184(&a1->unk_20, a1->unk_44); + if (r4 == 0) + return 1; + if (sub_81441AC(&a1->unk_20, a0, a1->unk_44)) + return 3; + if (r4 == 1) + return 4; + return 2; +} + +bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1) +{ + s32 i; + for (i = 0; i < 4; i++) + { + if (a0->unk_16[i] != a1[i]) + return FALSE; + } + return TRUE; +} + +s32 sub_814449C(const struct MEventStruct_Unk1442CC * a0) +{ + return sub_8144184(&a0->unk_20, a0->unk_44); +} + +u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command) +{ + switch (command) + { + case 0: + return a0->unk_20.unk_00; + case 1: + return a0->unk_20.unk_02; + case 2: + return a0->unk_20.unk_04; + case 3: + return sub_814449C(a0); + case 4: + return a0->unk_44; + default: + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 825); + return 0; + } +} + +void sub_814451C(u32 command) +{ + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + u16 * dest = NULL; + switch (command) + { + case 0: + dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_00; + break; + case 1: + dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_02; + break; + case 2: + dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_04; + break; + case 3: + break; + case 4: + break; + } + if (dest == NULL) + { + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 868); + } + else if (++(*dest) > 999) + { + *dest = 999; + } + } +} + +u16 sub_81445C0(u32 command) +{ + switch (command) + { + case 0: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data; + return buffer->unk_00; + } + break; + } + case 1: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data; + return buffer->unk_02; + } + break; + } + case 2: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data; + return buffer->unk_04; + } + break; + } + case 3: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 1) + return sub_8144218(); + break; + } + case 4: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 1) + return data->unk_09; + break; + } + } + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 913); + return 0; +} + +void sub_81446C4(void) +{ + gUnknown_203F3BC = FALSE; +} + +bool32 sub_81446D0(u16 a0) +{ + gUnknown_203F3BC = FALSE; + if (a0 == 0) + return FALSE; + if (!sub_8143FC8()) + return FALSE; + if (gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00 != a0) + return FALSE; + gUnknown_203F3BC = TRUE; + return TRUE; +} + +void sub_8144714(u32 a0, u32 a1) +{ + if (gUnknown_203F3BC) + { + switch (a0) + { + case 2: + sub_8144824(2, a1, gSaveBlock1Ptr->unk_3120.unk_344[1], 5); + break; + case 0: + sub_8144824(0, a1, gSaveBlock1Ptr->unk_3120.unk_344[0], 5); + break; + case 1: + sub_8144824(1, a1, gSaveBlock1Ptr->unk_3120.unk_344[0], 5); + break; + default: + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 988); + } + } +} + +void sub_8144790(void) +{ + CpuFill32(0, gSaveBlock1Ptr->unk_3120.unk_344, sizeof(gSaveBlock1Ptr->unk_3120.unk_344)); +} + +bool32 sub_81447BC(u32 a0, u32 * a1, s32 size) +{ + s32 i; + s32 j; + + for (i = 0; i < size; i++) + { + if (a1[i] == a0) + break; + } + if (i == size) + { + for (j = size - 1; j > 0; j--) + { + a1[j] = a1[j - 1]; + } + a1[0] = a0; + return TRUE; + } + else + { + for (j = i; j > 0; j--) + { + a1[j] = a1[j - 1]; + } + a1[0] = a0; + return FALSE; + } +} + +void sub_8144824(u32 a0, u32 a1, u32 * a2, s32 a3) +{ + if (sub_81447BC(a1, a2, a3)) + sub_814451C(a0); +} diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c new file mode 100644 index 000000000..c39d76f25 --- /dev/null +++ b/src/mevent_8145654.c @@ -0,0 +1,793 @@ +#include "global.h" +#include "constants/species.h" +#include "bg.h" +#include "gpu_regs.h" +#include "palette.h" +#include "decompress.h" +#include "malloc.h" +#include "menu.h" +#include "pokemon_icon.h" +#include "mystery_gift_menu.h" +#include "menu_indicators.h" +#include "string_util.h" +#include "link_rfu.h" +#include "mevent.h" + +struct UnkStruct_8467FB8 +{ + u8 textPal1:4; + u8 textPal2:4; + u8 textPal3:4; + u8 textPal4:4; + const u8 * tiles; + const u8 * map; + const u16 * pal; +}; + +struct UnkStruct_203F3C8_02DC +{ + u8 unk_00; + u8 unk_01[41]; + u8 unk_42[4]; +}; + +struct UnkStruct_203F3C8 +{ + /*0000*/ struct MEventBuffer_32E0_Sub unk_0000; + /*014c*/ struct MEventBuffer_3430_Sub unk_014C; + /*0170*/ const struct UnkStruct_8467FB8 * unk_0170; + /*0174*/ u8 unk_0174; + /*0175*/ u8 unk_0175; + /*0176*/ u16 unk_0176[3]; + /*017C*/ u8 unk_017C; + /*017D*/ u8 unk_017D[7][2]; + /*018B*/ u8 unk_018B[41]; + /*01B4*/ u8 unk_01B4[41]; + /*01DD*/ u8 unk_01DD[7]; + /*01E4*/ u8 unk_01E4[4][41]; + /*0288*/ u8 unk_0288[41]; + /*02B1*/ u8 unk_02B1[41]; + /*02DC*/ struct UnkStruct_203F3C8_02DC unk_02DC[8]; + /*045C*/ u8 buffer_045C[0x1000]; +}; + +EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_203F3C8 = NULL; + +void sub_8145A98(void); +void sub_8145D18(u8 whichWindow); +void sub_8146060(void); +void sub_81461D8(void); + +extern const struct OamData gUnknown_83AC9F8; + +const struct TextColor gUnknown_8467068[] = { + {0, 2, 3}, + {0, 1, 2} +}; +const u8 ALIGNED(4) gUnknown_8467070[3] = {7, 4, 7}; +const struct WindowTemplate gUnknown_8467074[] = { + {0x01, 0x01, 0x01, 0x19, 0x04, 0x0f, 0x029c}, + {0x01, 0x01, 0x06, 0x1c, 0x08, 0x0f, 0x01bc}, + {0x01, 0x01, 0x0e, 0x1c, 0x05, 0x0f, 0x0130} +}; + +const u16 gUnknown_846708C[] = INCBIN_U16("data/graphics/mevent/pal_46708C.gbapal"); +const u16 gUnknown_84670AC[] = INCBIN_U16("data/graphics/mevent/pal_4670AC.gbapal"); +const u16 gUnknown_84670CC[] = INCBIN_U16("data/graphics/mevent/pal_4670CC.gbapal"); +const u16 gUnknown_84670EC[] = INCBIN_U16("data/graphics/mevent/pal_4670EC.gbapal"); +const u16 gUnknown_846710C[] = INCBIN_U16("data/graphics/mevent/pal_46710C.gbapal"); +const u16 gUnknown_846712C[] = INCBIN_U16("data/graphics/mevent/pal_46712C.gbapal"); +const u16 gUnknown_846714C[] = INCBIN_U16("data/graphics/mevent/pal_46714C.gbapal"); +const u16 gUnknown_846716C[] = INCBIN_U16("data/graphics/mevent/pal_46716C.gbapal"); +const u8 gUnknown_846718C[] = INCBIN_U8("data/graphics/mevent/gfx_46718C.4bpp.lz"); +const u8 gUnknown_8467288[] = INCBIN_U8("data/graphics/mevent/tilemap_467288.bin.lz"); +const u8 gUnknown_846737C[] = INCBIN_U8("data/graphics/mevent/gfx_46737C.4bpp.lz"); +const u8 gUnknown_8467470[] = INCBIN_U8("data/graphics/mevent/tilemap_467470.bin.lz"); +const u8 gUnknown_8467558[] = INCBIN_U8("data/graphics/mevent/gfx_467558.4bpp.lz"); +const u8 gUnknown_846762C[] = INCBIN_U8("data/graphics/mevent/tilemap_46762C.bin.lz"); +const u8 gUnknown_8467700[] = INCBIN_U8("data/graphics/mevent/gfx_467700.4bpp.lz"); +const u8 gUnknown_8467934[] = INCBIN_U8("data/graphics/mevent/tilemap_467934.bin.lz"); +const u8 gUnknown_8467A7C[] = INCBIN_U8("data/graphics/mevent/gfx_467A7C.4bpp.lz"); +const u8 gUnknown_8467CAC[] = INCBIN_U8("data/graphics/mevent/tilemap_467CAC.bin.lz"); +const u16 gUnknown_8467DF4[] = INCBIN_U16("data/graphics/mevent/pal_467DF4.gbapal"); +const u16 gUnknown_8467E14[] = INCBIN_U16("data/graphics/mevent/pal_467E14.gbapal"); +const u16 gUnknown_8467E34[] = INCBIN_U16("data/graphics/mevent/pal_467E34.gbapal"); +const u16 gUnknown_8467E54[] = INCBIN_U16("data/graphics/mevent/pal_467E54.gbapal"); +const u16 gUnknown_8467E74[] = INCBIN_U16("data/graphics/mevent/pal_467E74.gbapal"); +const u16 gUnknown_8467E94[] = INCBIN_U16("data/graphics/mevent/pal_467E94.gbapal"); +const u16 gUnknown_8467EB4[] = INCBIN_U16("data/graphics/mevent/pal_467EB4.gbapal"); +const u16 gUnknown_8467ED4[] = INCBIN_U16("data/graphics/mevent/pal_467ED4.gbapal"); +const u8 gUnknown_8467EF4[] = INCBIN_U8("data/graphics/mevent/gfx_467EF4.4bpp.lz"); + +const struct CompressedSpriteSheet gUnknown_8467F58 = { + gUnknown_8467EF4, 0x100, 0x8000 +}; +const struct SpritePalette gUnknown_8467F60[] = { + {gUnknown_8467DF4, 0x8000}, + {gUnknown_8467E14, 0x8000}, + {gUnknown_8467E34, 0x8000}, + {gUnknown_8467E54, 0x8000}, + {gUnknown_8467E74, 0x8000}, + {gUnknown_8467E94, 0x8000}, + {gUnknown_8467EB4, 0x8000}, + {gUnknown_8467ED4, 0x8000} +}; +const struct SpriteTemplate gUnknown_8467FA0 = { + 0x8000, 0x8000, &gUnknown_83AC9F8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; +const struct UnkStruct_8467FB8 gUnknown_8467FB8[8] = { + {1, 0, 0, 0, gUnknown_846718C, gUnknown_8467288, gUnknown_846708C}, + {1, 0, 0, 1, gUnknown_846737C, gUnknown_8467470, gUnknown_84670AC}, + {1, 0, 0, 2, gUnknown_8467558, gUnknown_846762C, gUnknown_84670CC}, + {1, 0, 0, 3, gUnknown_8467558, gUnknown_846762C, gUnknown_84670EC}, + {1, 0, 0, 4, gUnknown_8467558, gUnknown_846762C, gUnknown_846710C}, + {1, 0, 0, 5, gUnknown_8467558, gUnknown_846762C, gUnknown_846712C}, + {1, 0, 0, 6, gUnknown_8467700, gUnknown_8467934, gUnknown_846714C}, + {1, 0, 0, 7, gUnknown_8467A7C, gUnknown_8467CAC, gUnknown_846716C} +}; + +bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6) +{ + if (r5 == NULL || r6 == NULL) + return FALSE; + gUnknown_203F3C8 = AllocZeroed(sizeof(struct UnkStruct_203F3C8)); + if (gUnknown_203F3C8 == NULL) + return FALSE; + gUnknown_203F3C8->unk_0000 = *r5; + gUnknown_203F3C8->unk_014C = *r6; + if (gUnknown_203F3C8->unk_0000.unk_08_2 >= NELEMS(gUnknown_8467FB8)) + gUnknown_203F3C8->unk_0000.unk_08_2 = 0; + if (gUnknown_203F3C8->unk_0000.unk_08_0 >= NELEMS(gUnknown_8467070)) + gUnknown_203F3C8->unk_0000.unk_08_0 = 0; + if (gUnknown_203F3C8->unk_0000.unk_09 > NELEMS(gUnknown_203F3C8->unk_017D)) + gUnknown_203F3C8->unk_0000.unk_09 = 0; + gUnknown_203F3C8->unk_0170 = &gUnknown_8467FB8[gUnknown_203F3C8->unk_0000.unk_08_2]; + return TRUE; +} + +void sub_81456F0(void) +{ + if (gUnknown_203F3C8 != NULL) + { + *gUnknown_203F3C8 = (struct UnkStruct_203F3C8){}; + Free(gUnknown_203F3C8); + gUnknown_203F3C8 = NULL; + } +} + +s32 sub_814571C(void) +{ + if (gUnknown_203F3C8 == NULL) + return -1; + switch(gUnknown_203F3C8->unk_0174) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + break; + case 1: + if (UpdatePaletteFade()) + return 0; + break; + case 2: + FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + decompress_and_copy_tile_data_to_vram(2, gUnknown_203F3C8->unk_0170->tiles, 0, 0x008, 0); + gUnknown_203F3C8->unk_0176[0] = AddWindow(&gUnknown_8467074[0]); + gUnknown_203F3C8->unk_0176[1] = AddWindow(&gUnknown_8467074[1]); + gUnknown_203F3C8->unk_0176[2] = AddWindow(&gUnknown_8467074[2]); + break; + case 3: + if (free_temp_tile_data_buffers_if_possible()) + return 0; + gPaletteFade.bufferTransferDisabled = TRUE; + LoadPalette(gUnknown_203F3C8->unk_0170->pal, 0x10, 0x20); + LZ77UnCompWram(gUnknown_203F3C8->unk_0170->map, gUnknown_203F3C8->buffer_045C); + CopyRectToBgTilemapBufferRect(2, gUnknown_203F3C8->buffer_045C, 0, 0, 30, 20, 0, 0, 30, 20, 1, 0x008, 0); + CopyBgTilemapBufferToVram(2); + break; + case 4: + sub_8145A98(); + break; + case 5: + sub_8145D18(0); + sub_8145D18(1); + sub_8145D18(2); + CopyBgTilemapBufferToVram(1); + break; + case 6: + sub_809707C(); + break; + case 7: + ShowBg(1); + ShowBg(2); + gPaletteFade.bufferTransferDisabled = FALSE; + sub_8146060(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + UpdatePaletteFade(); + break; + default: + if (UpdatePaletteFade()) + return 0; + gUnknown_203F3C8->unk_0174 = 0; + return 1; + } + ++gUnknown_203F3C8->unk_0174; + return 0; +} + +s32 sub_814593C(bool32 flag) +{ + if (gUnknown_203F3C8 == NULL) + return -1; + switch (gUnknown_203F3C8->unk_0174) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + break; + case 1: + if (UpdatePaletteFade()) + return 0; + break; + case 2: + FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + break; + case 3: + HideBg(1); + HideBg(2); + RemoveWindow(gUnknown_203F3C8->unk_0176[2]); + RemoveWindow(gUnknown_203F3C8->unk_0176[1]); + RemoveWindow(gUnknown_203F3C8->unk_0176[0]); + break; + case 4: + sub_81461D8(); + FreeMonIconPalettes(); + break; + case 5: + sub_8142344(gUnknown_203F3B8, flag); + break; + case 6: + CopyBgTilemapBufferToVram(0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + break; + default: + if (UpdatePaletteFade()) + return 0; + gUnknown_203F3C8->unk_0174 = 0; + return 1; + } + ++gUnknown_203F3C8->unk_0174; + return 0; +} + +void sub_8145A98(void) +{ + u16 i = 0; + u16 r6; + u16 sp0[3] = {0, 0, 0}; + + memcpy(gUnknown_203F3C8->unk_018B, gUnknown_203F3C8->unk_0000.unk_0A, 40); + gUnknown_203F3C8->unk_018B[40] = EOS; + memcpy(gUnknown_203F3C8->unk_01B4, gUnknown_203F3C8->unk_0000.unk_32, 40); + gUnknown_203F3C8->unk_01B4[40] = EOS; + if (gUnknown_203F3C8->unk_0000.unk_04 > 999999) + gUnknown_203F3C8->unk_0000.unk_04 = 999999; + ConvertIntToDecimalStringN(gUnknown_203F3C8->unk_01DD, gUnknown_203F3C8->unk_0000.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6); + for (i = 0; i < 4; i++) + { + memcpy(gUnknown_203F3C8->unk_01E4[i], gUnknown_203F3C8->unk_0000.unk_5A[i], 40); + gUnknown_203F3C8->unk_01E4[i][40] = EOS; + } + memcpy(gUnknown_203F3C8->unk_0288, gUnknown_203F3C8->unk_0000.unk_FA, 40); + gUnknown_203F3C8->unk_0288[40] = EOS; + switch (gUnknown_203F3C8->unk_0000.unk_08_0) + { + case 0: + memcpy(gUnknown_203F3C8->unk_02B1, gUnknown_203F3C8->unk_0000.unk_122, 40); + gUnknown_203F3C8->unk_02B1[40] = EOS; + break; + case 1: + gUnknown_203F3C8->unk_02B1[00] = EOS; + break; + case 2: + gUnknown_203F3C8->unk_02B1[00] = EOS; + sp0[0] = gUnknown_203F3C8->unk_014C.unk_00 < 999 ? gUnknown_203F3C8->unk_014C.unk_00 : 999; + sp0[1] = gUnknown_203F3C8->unk_014C.unk_02 < 999 ? gUnknown_203F3C8->unk_014C.unk_02 : 999; + sp0[2] = gUnknown_203F3C8->unk_014C.unk_04 < 999 ? gUnknown_203F3C8->unk_014C.unk_04 : 999; + for (i = 0; i < 8; i++) + { + memset(gUnknown_203F3C8->unk_02DC[i].unk_42, EOS, 4); + memset(gUnknown_203F3C8->unk_02DC[i].unk_01, EOS, 41); + } + for (i = 0, r6 = 0; i < 40; i++) + { + if (gUnknown_203F3C8->unk_0000.unk_122[i] != 0xF7) + { + gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_01[r6] = gUnknown_203F3C8->unk_0000.unk_122[i]; + r6++; + } + else + { + u8 r3 = gUnknown_203F3C8->unk_0000.unk_122[i + 1]; + if (r3 > 2) + { + i += 2; + } + else + { + ConvertIntToDecimalStringN(gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_42, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3); + gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_00 = gUnknown_203F3C8->unk_0000.unk_122[i + 2]; + gUnknown_203F3C8->unk_0175++; + if (gUnknown_203F3C8->unk_0175 > 7) + break; + r6 = 0; + i += 2; + } + } + } + } +} + +void sub_8145D18(u8 whichWindow) +{ + s8 sp0C = 0; + s32 windowId = gUnknown_203F3C8->unk_0176[whichWindow]; + PutWindowTilemap(windowId); + FillWindowPixelBuffer(windowId, 0); + switch (whichWindow) + { + case 0: + { + s32 x; + box_print(windowId, 3, 0, 1, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_018B); + x = 160 - GetStringWidth(3, gUnknown_203F3C8->unk_01B4, GetFontAttribute(3, 2)); + if (x < 0) + x = 0; + box_print(windowId, 3, x, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01B4); + if (gUnknown_203F3C8->unk_0000.unk_04 != 0) + { + box_print(windowId, 2, 166, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01DD); + } + break; + } + case 1: + for (; sp0C < 4; sp0C++) + { + box_print(windowId, 3, 0, 16 * sp0C + 2, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal2], 0, gUnknown_203F3C8->unk_01E4[sp0C]); + } + break; + case 2: + box_print(windowId, 3, 0, gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_0288); + if (gUnknown_203F3C8->unk_0000.unk_08_0 != 2) + { + box_print(windowId, 3, 0, 16 + gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02B1); + } + else + { + s32 x = 0; + s32 y = gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0] + 16; + s32 spacing = GetFontAttribute(3, 2); + for (; sp0C < gUnknown_203F3C8->unk_0175; sp0C++) + { + box_print(windowId, 3, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_01); + if (gUnknown_203F3C8->unk_02DC[sp0C].unk_42[0] != EOS) + { + x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_01, spacing); + box_print(windowId, 2, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_42); + x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_42, spacing) + gUnknown_203F3C8->unk_02DC[sp0C].unk_00; + } + } + } + break; + } + CopyWindowToVram(windowId, 3); +} + +void sub_8146060(void) +{ + u8 r7 = 0; + gUnknown_203F3C8->unk_017C = 0xFF; + if (gUnknown_203F3C8->unk_014C.unk_06 != SPECIES_NONE) + { + gUnknown_203F3C8->unk_017C = sub_8096ECC(sub_8096FD4(gUnknown_203F3C8->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE); + gSprites[gUnknown_203F3C8->unk_017C].oam.priority = 2; + } + if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1) + { + sub_800F034(&gUnknown_8467F58); + LoadSpritePalette(&gUnknown_8467F60[gUnknown_203F3C8->unk_0170->textPal4]); + for (; r7 < gUnknown_203F3C8->unk_0000.unk_09; r7++) + { + gUnknown_203F3C8->unk_017D[r7][0] = 0xFF; + gUnknown_203F3C8->unk_017D[r7][1] = 0xFF; + gUnknown_203F3C8->unk_017D[r7][0] = CreateSprite(&gUnknown_8467FA0, 0xd8 - 32 * r7, 0x90, 8); + if (gUnknown_203F3C8->unk_014C.unk_08[0][r7] != 0) + { + gUnknown_203F3C8->unk_017D[r7][1] = sub_8096ECC(sub_8096FD4(gUnknown_203F3C8->unk_014C.unk_08[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0); + gSprites[gUnknown_203F3C8->unk_017D[r7][1]].oam.priority = 2; + } + } + } +} + +void sub_81461D8(void) +{ + u8 r6 = 0; + if (gUnknown_203F3C8->unk_017C != 0xFF) + sub_8097070(&gSprites[gUnknown_203F3C8->unk_017C]); + if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1) + { + for (; r6 < gUnknown_203F3C8->unk_0000.unk_09; r6++) + { + if (gUnknown_203F3C8->unk_017D[r6][0] != 0xFF) + { + DestroySprite(&gSprites[gUnknown_203F3C8->unk_017D[r6][0]]); + // This might be a typo. Uncomment the next line, and comment the one that follows, to get the presumed intended behavior. + // if (gUnknown_203F3C8->unk_017D[r6][1] != 0xFF) + if (gUnknown_203F3C8->unk_017D[r6][0] != 0xFF) + { + sub_8097070(&gSprites[gUnknown_203F3C8->unk_017D[r6][1]]); + } + } + } + FreeSpriteTilesByTag(0x8000); + FreeSpritePaletteByTag(0x8000); + } +} + +struct UnkStruct_203F3CC +{ + /*0000*/ struct MEventBuffer_3120_Sub unk_0000; + /*01bc*/ const struct UnkStruct_8467FB8 * unk_01BC; + /*01c0*/ u8 unk_01C0_0:1; + u8 unk_01C0_1:7; + /*01c1*/ u8 unk_01C1; + /*01c2*/ u8 unk_01C2_0:1; + u8 unk_01C2_1:7; + /*01c3*/ u8 unk_01C3_0:1; + u8 unk_01C3_1:7; + /*01c4*/ u16 unk_01C4; + /*01c6*/ u16 unk_01C6; + /*01c8*/ u16 unk_01C8[2]; + /*01cc*/ u8 filler_01CC[2]; + /*01ce*/ u8 unk_01CE[41]; + /*01f7*/ u8 unk_01F7[10][41]; + /*0394*/ struct ScrollIndicatorArrowPairTemplate unk_0394; + /*03a4*/ u8 buffer_03A4[0x1000]; +}; + +EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL; + +void sub_8146980(void); +void sub_8146A30(void); +void sub_8146B58(void); + +const struct TextColor gUnknown_8468038[] = { + {0, 2, 3}, + {0, 1, 2} +}; +const struct WindowTemplate gUnknown_8468040[] = { + {0, 1, 0, 28, 3, 15, 0x000}, + {2, 1, 3, 28, 20, 15, 0x000} +}; +const struct ScrollIndicatorArrowPairTemplate gUnknown_8468050 = { + 0x02, 0xe8, 0x18, 0x03, 0xe8, 0x98, + 0x0000, 0x0002, 0x1000, 0x1000, 0x0, 0x000 +}; + +const u16 gUnknown_8468060[] = INCBIN_U16("data/graphics/mevent/pal_468060.gbapal"); +const u16 gUnknown_8468080[] = INCBIN_U16("data/graphics/mevent/pal_468080.gbapal"); +const u16 gUnknown_84680A0[] = INCBIN_U16("data/graphics/mevent/pal_4680A0.gbapal"); +const u8 gUnknown_84680C0[] = INCBIN_U8("data/graphics/mevent/gfx_4680C0.4bpp.lz"); +const u8 gUnknown_8468140[] = INCBIN_U8("data/graphics/mevent/tilemap_468140.bin.lz"); +const u8 gUnknown_846821C[] = INCBIN_U8("data/graphics/mevent/gfx_46821C.4bpp.lz"); +const u8 gUnknown_846824C[] = INCBIN_U8("data/graphics/mevent/tilemap_46824C.bin.lz"); +const u8 gUnknown_846830C[] = INCBIN_U8("data/graphics/mevent/gfx_46830C.4bpp.lz"); +const u8 gUnknown_846837C[] = INCBIN_U8("data/graphics/mevent/tilemap_46837C.bin.lz"); +const u8 gUnknown_8468448[] = INCBIN_U8("data/graphics/mevent/gfx_468448.4bpp.lz"); +const u8 gUnknown_84684D8[] = INCBIN_U8("data/graphics/mevent/tilemap_4684D8.bin.lz"); +const u8 gUnknown_84685B4[] = INCBIN_U8("data/graphics/mevent/gfx_4685B4.4bpp.lz"); +const u8 gUnknown_8468644[] = INCBIN_U8("data/graphics/mevent/tilemap_468644.bin.lz"); + +const struct UnkStruct_8467FB8 gUnknown_8468720[] = { + {1, 0, 0, 0, gUnknown_84680C0, gUnknown_8468140, gUnknown_8468060}, + {1, 0, 0, 0, gUnknown_846821C, gUnknown_846824C, gUnknown_84670AC}, + {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_84670CC}, + {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_84670EC}, + {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_846710C}, + {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_846712C}, + {1, 0, 0, 0, gUnknown_8468448, gUnknown_84684D8, gUnknown_8468080}, + {1, 0, 0, 0, gUnknown_84685B4, gUnknown_8468644, gUnknown_84680A0} +}; + +bool32 sub_8146288(const struct MEventBuffer_3120_Sub * a0) +{ + if (a0 == NULL) + return FALSE; + gUnknown_203F3CC = AllocZeroed(sizeof(struct UnkStruct_203F3CC)); + if (gUnknown_203F3CC == NULL) + return FALSE; + gUnknown_203F3CC->unk_0000 = *a0; + if (gUnknown_203F3CC->unk_0000.unk_03 >= NELEMS(gUnknown_8468720)) + gUnknown_203F3CC->unk_0000.unk_03 = 0; + gUnknown_203F3CC->unk_01BC = &gUnknown_8468720[gUnknown_203F3CC->unk_0000.unk_03]; + gUnknown_203F3CC->unk_01C1 = 0xFF; + return TRUE; +} + +void sub_81462EC(void) +{ + if (gUnknown_203F3CC != NULL) + { + *gUnknown_203F3CC = (struct UnkStruct_203F3CC){}; + Free(gUnknown_203F3CC); + gUnknown_203F3CC = NULL; + } +} + +s32 sub_8146318(void) +{ + if (gUnknown_203F3CC == NULL) + return -1; + + switch (gUnknown_203F3CC->unk_01C0_1) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + break; + case 1: + if (UpdatePaletteFade()) + return 0; + ChangeBgY(0, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgY(3, 0, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0xF0); + SetGpuReg(REG_OFFSET_WIN0V, 0x1A98); + SetGpuReg(REG_OFFSET_WININ, 0x1F); + SetGpuReg(REG_OFFSET_WINOUT, 0x1B); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + break; + case 2: + FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + decompress_and_copy_tile_data_to_vram(3, gUnknown_203F3CC->unk_01BC->tiles, 0, 8, 0); + gUnknown_203F3CC->unk_01C8[0] = AddWindow(&gUnknown_8468040[0]); + gUnknown_203F3CC->unk_01C8[1] = AddWindow(&gUnknown_8468040[1]); + break; + case 3: + if (free_temp_tile_data_buffers_if_possible()) + return 0; + gPaletteFade.bufferTransferDisabled = TRUE; + LoadPalette(gUnknown_203F3CC->unk_01BC->pal, 0x10, 0x20); + LZ77UnCompWram(gUnknown_203F3CC->unk_01BC->map, gUnknown_203F3CC->buffer_03A4); + CopyRectToBgTilemapBufferRect(1, gUnknown_203F3CC->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0); + CopyRectToBgTilemapBufferRect(3, gUnknown_203F3CC->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(3); + break; + case 4: + sub_8146980(); + break; + case 5: + sub_8146A30(); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(2); + break; + case 6: + ShowBg(1); + ShowBg(2); + ShowBg(3); + gPaletteFade.bufferTransferDisabled = FALSE; + gUnknown_203F3CC->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_203F3CC->unk_0394, &gUnknown_203F3CC->unk_01C6); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + UpdatePaletteFade(); + break; + default: + if (UpdatePaletteFade()) + return 0; + gUnknown_203F3CC->unk_01C0_1 = 0; + return 1; + } + + ++gUnknown_203F3CC->unk_01C0_1; + return 0; +} + +s32 sub_8146604(bool32 flag) +{ + if (gUnknown_203F3CC == NULL) + return -1; + switch (gUnknown_203F3CC->unk_01C0_1) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + break; + case 1: + if (UpdatePaletteFade()) + return 0; + ChangeBgY(2, 0, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + break; + case 2: + FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 24); + FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 24); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + break; + case 3: + HideBg(1); + HideBg(2); + RemoveWindow(gUnknown_203F3CC->unk_01C8[1]); + RemoveWindow(gUnknown_203F3CC->unk_01C8[0]); + break; + case 4: + ChangeBgY(2, 0, 0); + ChangeBgY(3, 0, 0); + if (gUnknown_203F3CC->unk_01C1 != 0xFF) + { + RemoveScrollIndicatorArrowPair(gUnknown_203F3CC->unk_01C1); + gUnknown_203F3CC->unk_01C1 = 0xFF; + } + break; + case 5: + sub_8142344(gUnknown_203F3B8, flag); + break; + case 6: + sub_8142420(); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(3); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + break; + default: + if (UpdatePaletteFade()) + return 0; + gUnknown_203F3CC->unk_01C0_1 = 0; + return 1; + } + ++gUnknown_203F3CC->unk_01C0_1; + return 0; +} + +void sub_81467EC(void) +{ + if (!gUnknown_203F3CC->unk_01C0_0 && gUnknown_203F3CC->unk_01C1 != 0xFF) + { + RemoveScrollIndicatorArrowPair(gUnknown_203F3CC->unk_01C1); + gUnknown_203F3CC->unk_01C1 = 0xFF; + gUnknown_203F3CC->unk_01C0_0 = TRUE; + } +} + + +void sub_8146834(void) +{ + if (gUnknown_203F3CC->unk_01C0_0) + { + gUnknown_203F3CC->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_203F3CC->unk_0394, &gUnknown_203F3CC->unk_01C6); + gUnknown_203F3CC->unk_01C0_0 = FALSE; + } +} + +u8 sub_8146884(u16 input) +{ + if (gUnknown_203F3CC->unk_01C2_0) + { + sub_8146B58(); + return 0xFF; + } + switch (input) + { + case A_BUTTON: + return 0; + case B_BUTTON: + return 1; + case DPAD_UP: + if (gUnknown_203F3CC->unk_01C6 == 0) + return 0xFF; + if (gUnknown_203F3CC->unk_01C0_0) + return 0xFF; + gUnknown_203F3CC->unk_01C3_0 = FALSE; + break; + case DPAD_DOWN: + if (gUnknown_203F3CC->unk_01C6 == gUnknown_203F3CC->unk_01C4) + return 0xFF; + if (gUnknown_203F3CC->unk_01C0_0) + return 0xFF; + gUnknown_203F3CC->unk_01C3_0 = TRUE; + break; + default: + return 0xFF; + } + gUnknown_203F3CC->unk_01C2_0 = TRUE; + gUnknown_203F3CC->unk_01C2_1 = 2; + gUnknown_203F3CC->unk_01C3_1 = 0; + if (gUnknown_203F3CC->unk_01C3_0 == FALSE) + return 2; + else + return 3; +} + +void sub_8146980(void) +{ + u8 i = 0; + memcpy(gUnknown_203F3CC->unk_01CE, gUnknown_203F3CC->unk_0000.unk_04, 40); + gUnknown_203F3CC->unk_01CE[40] = EOS; + for (; i < 10; ++i) + { + memcpy(gUnknown_203F3CC->unk_01F7[i], gUnknown_203F3CC->unk_0000.unk_2C[i], 40); + gUnknown_203F3CC->unk_01F7[i][40] = EOS; + if (i > 7 && gUnknown_203F3CC->unk_01F7[i][0] != EOS) + ++gUnknown_203F3CC->unk_01C4; + } + gUnknown_203F3CC->unk_0394 = gUnknown_8468050; + gUnknown_203F3CC->unk_0394.unk_08 = gUnknown_203F3CC->unk_01C4; +} + +void sub_8146A30(void) +{ + u8 i = 0; + s32 x; + PutWindowTilemap(gUnknown_203F3CC->unk_01C8[0]); + PutWindowTilemap(gUnknown_203F3CC->unk_01C8[1]); + FillWindowPixelBuffer(gUnknown_203F3CC->unk_01C8[0], 0); + FillWindowPixelBuffer(gUnknown_203F3CC->unk_01C8[1], 0); + x = (0xe0 - GetStringWidth(3, gUnknown_203F3CC->unk_01CE, GetFontAttribute(3, 2))) / 2; + if (x < 0) + x = 0; + box_print(gUnknown_203F3CC->unk_01C8[0], 3, x, 6, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal1], 0, gUnknown_203F3CC->unk_01CE); + for (; i < 10; ++i) + { + box_print(gUnknown_203F3CC->unk_01C8[1], 3, 0, 16 * i + 2, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal2], 0, gUnknown_203F3CC->unk_01F7[i]); + } + CopyWindowToVram(gUnknown_203F3CC->unk_01C8[0], 3); + CopyWindowToVram(gUnknown_203F3CC->unk_01C8[1], 3); +} + +void sub_8146B58(void) +{ + u16 r4 = gUnknown_203F3CC->unk_01C2_1; + r4 <<= 8; + if (gUnknown_203F3CC->unk_01C3_0) + { + ChangeBgY(2, r4, 1); + ChangeBgY(3, r4, 1); + } + else + { + ChangeBgY(2, r4, 2); + ChangeBgY(3, r4, 2); + } + gUnknown_203F3CC->unk_01C3_1 += gUnknown_203F3CC->unk_01C2_1; + if (gUnknown_203F3CC->unk_01C3_1 > 15) + { + if (gUnknown_203F3CC->unk_01C3_0) + ++gUnknown_203F3CC->unk_01C6; + else + --gUnknown_203F3CC->unk_01C6; + gUnknown_203F3CC->unk_01C2_0 = FALSE; + gUnknown_203F3CC->unk_01C3_1 = 0; + } +} diff --git a/src/mevent_server.c b/src/mevent_server.c new file mode 100644 index 000000000..5e384ae0b --- /dev/null +++ b/src/mevent_server.c @@ -0,0 +1,563 @@ +#include "global.h" +#include "malloc.h" +#include "decompress.h" +#include "util.h" +#include "link.h" +#include "link_rfu.h" +#include "overworld.h" +#include "script.h" +#include "battle_tower.h" +#include "mystery_event_script.h" +#include "mevent.h" +#include "mevent_server.h" + +EWRAM_DATA struct mevent_srv_ish * s_mevent_srv_ish_ptr = NULL; +EWRAM_DATA struct mevent_srv_common * s_mevent_srv_common_ptr = NULL; + +static void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32); +static u32 mevent_srv_ish_exec(struct mevent_srv_ish *); +static void mevent_srv_ish_free_resources(struct mevent_srv_ish *); +static void mevent_srv_init_common(struct mevent_srv_common *, const void *, u32, u32); +static void mevent_srv_free_resources(struct mevent_srv_common *); +static u32 mevent_srv_exec_common(struct mevent_srv_common *); + +extern const u8 gUnknown_84687E0[]; +extern const struct mevent_cmd gUnknown_8468B6C[]; +extern const struct mevent_cmd gUnknown_8468BCC[]; + +void mevent_srv_ish_do_init(void) +{ + s_mevent_srv_ish_ptr = AllocZeroed(sizeof(struct mevent_srv_ish)); + mevent_srv_ish_init(s_mevent_srv_ish_ptr, 1, 0); +} + +u32 mevent_srv_ish_do_exec(u16 * a0) +{ + u32 result; + if (s_mevent_srv_ish_ptr == NULL) + return 6; + result = mevent_srv_ish_exec(s_mevent_srv_ish_ptr); + if (result == 6) + { + *a0 = s_mevent_srv_ish_ptr->param; + mevent_srv_ish_free_resources(s_mevent_srv_ish_ptr); + Free(s_mevent_srv_ish_ptr); + s_mevent_srv_ish_ptr = NULL; + } + return result; +} + +void mevent_srv_ish_inc_flag(void) +{ + s_mevent_srv_ish_ptr->flag++; +} + +void * mevent_srv_ish_get_buffer(void) +{ + return s_mevent_srv_ish_ptr->buffer; +} + +void mevent_srv_ish_set_param(u32 a0) +{ + s_mevent_srv_ish_ptr->param = a0; +} + +static void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 sendPlayerNo, u32 recvPlayerNo) +{ + svr->unk_00 = 0; + svr->mainseqno = 0; + svr->flag = 0; + svr->sendBuffer = AllocZeroed(ME_SEND_BUF_SIZE); + svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE); + svr->cmdBuffer = AllocZeroed(ME_SEND_BUF_SIZE); + svr->buffer = AllocZeroed(0x40); + mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo); +} + +static void mevent_srv_ish_free_resources(struct mevent_srv_ish * svr) +{ + Free(svr->sendBuffer); + Free(svr->recvBuffer); + Free(svr->cmdBuffer); + Free(svr->buffer); +} + +static void mevent_srv_ish_jmp_buffer(struct mevent_srv_ish * svr) +{ + memcpy(svr->cmdBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE); + svr->cmdidx = 0; +} + +static void mevent_srv_ish_send_word(struct mevent_srv_ish * svr, u32 ident, u32 word) +{ + CpuFill32(0, svr->sendBuffer, ME_SEND_BUF_SIZE); + *(u32 *)svr->sendBuffer = word; + mevent_srv_sub_init_send(&svr->manager, ident, svr->sendBuffer, sizeof(u32)); +} + +static u32 ish_mainseq_0(struct mevent_srv_ish * svr) +{ + // init + memcpy(svr->cmdBuffer, gUnknown_84687E0, ME_SEND_BUF_SIZE); + svr->cmdidx = 0; + svr->mainseqno = 4; + svr->flag = 0; + return 0; +} + +static u32 ish_mainseq_1(struct mevent_srv_ish * svr) +{ + // done + return 6; +} + +static u32 ish_mainseq_2(struct mevent_srv_ish * svr) +{ + // do recv + if (mevent_srv_sub_recv(&svr->manager)) + { + svr->mainseqno = 4; + svr->flag = 0; + } + return 1; +} + +static u32 ish_mainseq_3(struct mevent_srv_ish * svr) +{ + // do send + if (mevent_srv_sub_send(&svr->manager)) + { + svr->mainseqno = 4; + svr->flag = 0; + } + return 1; +} + +static u32 ish_mainseq_4(struct mevent_srv_ish * svr) +{ + // process command + struct mevent_cmd_ish * cmd = &svr->cmdBuffer[svr->cmdidx]; + ++svr->cmdidx; + switch (cmd->instr) + { + case 0: + break; + case 1: + svr->param = cmd->parameter; + svr->mainseqno = 1; + svr->flag = 0; + break; + case 2: + mevent_srv_sub_init_recv(&svr->manager, cmd->parameter, svr->recvBuffer); + svr->mainseqno = 2; + svr->flag = 0; + break; + case 3: + svr->mainseqno = 3; + svr->flag = 0; + break; + case 20: + mevent_srv_sub_init_send(&svr->manager, 0x14, svr->sendBuffer, 0); + svr->mainseqno = 3; + svr->flag = 0; + break; + case 19: + mevent_srv_ish_send_word(svr, 0x12, GetGameStat(cmd->parameter)); + svr->mainseqno = 3; + svr->flag = 0; + break; + case 6: + if (svr->param == 0) + mevent_srv_ish_jmp_buffer(svr); + break; + case 7: + if (svr->param == 1) + mevent_srv_ish_jmp_buffer(svr); + break; + case 4: + mevent_srv_ish_jmp_buffer(svr); + break; + case 5: + memcpy(svr->buffer, svr->recvBuffer, 0x40); + svr->mainseqno = 5; + svr->flag = 0; + return 2; + case 11: + memcpy(svr->buffer, svr->recvBuffer, 0x40); + svr->mainseqno = 5; + svr->flag = 0; + return 3; + case 12: + memcpy(svr->buffer, svr->recvBuffer, 0x40); + svr->mainseqno = 5; + svr->flag = 0; + return 5; + case 13: + svr->mainseqno = 5; + svr->flag = 0; + return 4; + case 8: + sub_81442CC(svr->sendBuffer); + mevent_srv_sub_init_send(&svr->manager, 0x11, svr->sendBuffer, sizeof(struct MEventStruct_Unk1442CC)); + break; + case 14: + mevent_srv_ish_send_word(svr, 0x13, svr->param); + break; + case 10: + sub_8143F68(svr->recvBuffer); + break; + case 9: + if (!sub_8143EF4(svr->recvBuffer)) + { + sub_8143DC8(svr->recvBuffer); + mevent_srv_ish_send_word(svr, 0x13, 0); + } + else + mevent_srv_ish_send_word(svr, 0x13, 1); + break; + case 15: + svr->mainseqno = 6; + svr->flag = 0; + break; + case 16: + sub_8144254(svr->recvBuffer); + break; + case 17: + sub_8069EA4(svr->recvBuffer, 1000); + break; + case 18: + memcpy(gSaveBlock2Ptr->unk_4A0, svr->recvBuffer, 0xbc); + ValidateEReaderTrainer(); + break; + case 21: + memcpy(gDecompressionBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE); + svr->mainseqno = 7; + svr->flag = 0; + break; + } + + return 1; +} + +static u32 ish_mainseq_5(struct mevent_srv_ish * svr) +{ + // wait flag + if (svr->flag) + { + svr->mainseqno = 4; + svr->flag = 0; + } + return 1; +} + +static u32 ish_mainseq_6(struct mevent_srv_ish * svr) +{ + // ??? + switch (svr->flag) + { + case 0: + sub_80DA89C(svr->recvBuffer); + ++svr->flag; + break; + case 1: + if (!sub_80DA8B0(&svr->param)) + { + svr->mainseqno = 4; + svr->flag = 0; + } + break; + } + return 1; +} + +static u32 ish_mainseq_7(struct mevent_srv_ish * svr) +{ + // exec arbitrary code + u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer; + if (func(&svr->param, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1) + { + svr->mainseqno = 4; + svr->flag = 0; + } + return 1; +} + +static u32 mevent_srv_ish_exec(struct mevent_srv_ish * svr) +{ + u32 (*funcs[])(struct mevent_srv_ish *) = { + ish_mainseq_0, + ish_mainseq_1, + ish_mainseq_2, + ish_mainseq_3, + ish_mainseq_4, + ish_mainseq_5, + ish_mainseq_6, + ish_mainseq_7 + }; + return funcs[svr->mainseqno](svr); +} + +void mevent_srv_common_do_init_1(void) +{ + s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common)); + mevent_srv_init_common(s_mevent_srv_common_ptr, gUnknown_8468B6C, 0, 1); +} + +void mevent_srv_common_do_init_2(void) +{ + s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common)); + mevent_srv_init_common(s_mevent_srv_common_ptr, gUnknown_8468BCC, 0, 1); +} + +u32 mevent_srv_init_do_exec(u16 * a0) +{ + u32 result; + if (s_mevent_srv_common_ptr == NULL) + return 3; + result = mevent_srv_exec_common(s_mevent_srv_common_ptr); + if (result == 3) + { + *a0 = s_mevent_srv_common_ptr->param; + mevent_srv_free_resources(s_mevent_srv_common_ptr); + Free(s_mevent_srv_common_ptr); + s_mevent_srv_common_ptr = NULL; + } + return result; +} + +static void mevent_srv_init_common(struct mevent_srv_common * svr, const void * cmdBuffer, u32 sendPlayerNo, u32 recvPlayerNo) +{ + svr->unk_00 = 0; + svr->mainseqno = 0; + svr->mevent_32e0 = AllocZeroed(sizeof(struct MEventBuffer_32E0_Sub)); + svr->mevent_3120 = AllocZeroed(sizeof(struct MEventBuffer_3120_Sub)); + svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE); + svr->mevent_unk1442cc = AllocZeroed(sizeof(struct MEventStruct_Unk1442CC)); + svr->cmdBuffer = cmdBuffer; + svr->cmdidx = 0; + mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo); +} + +static void mevent_srv_free_resources(struct mevent_srv_common * svr) +{ + Free(svr->mevent_32e0); + Free(svr->mevent_3120); + Free(svr->recvBuffer); + Free(svr->mevent_unk1442cc); +} + +static void mevent_srv_common_init_send(struct mevent_srv_common * svr, u32 ident, const void * src, u32 size) +{ + AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257); + mevent_srv_sub_init_send(&svr->manager, ident, src, size); +} + +static void * mevent_first_if_not_null_else_second(void * a0, void * a1) +{ + if (a0 != NULL) + return a0; + else + return a1; +} + +static u32 mevent_compare_pointers(void * a0, void * a1) +{ + if (a1 < a0) + return 0; + else if (a1 == a0) + return 1; + else + return 2; +} + +static u32 common_mainseq_0(struct mevent_srv_common * svr) +{ + // start + svr->mainseqno = 4; + return 0; +} + +static u32 common_mainseq_1(struct mevent_srv_common * svr) +{ + // done + return 3; +} + +static u32 common_mainseq_2(struct mevent_srv_common * svr) +{ + // do recv + if (mevent_srv_sub_recv(&svr->manager)) + svr->mainseqno = 4; + return 1; +} + +static u32 common_mainseq_3(struct mevent_srv_common * svr) +{ + // do send + if (mevent_srv_sub_send(&svr->manager)) + svr->mainseqno = 4; + return 1; +} + +static u32 common_mainseq_4(struct mevent_srv_common * svr) +{ + // process command + const struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx]; + void * ptr; + svr->cmdidx++; + + switch (cmd->instr) + { + case 0: + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 354); + svr->mainseqno = 1; + svr->param = cmd->flag; + break; + case 1: + svr->mainseqno = 3; + break; + case 2: + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 364); + mevent_srv_sub_init_recv(&svr->manager, cmd->flag, svr->recvBuffer); + svr->mainseqno = 2; + break; + case 3: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 370); + svr->cmdidx = 0; + svr->cmdBuffer = cmd->parameter; + break; + case 5: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 376); + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 377); + memcpy(svr->mevent_unk1442cc, svr->recvBuffer, sizeof(struct MEventStruct_Unk1442CC)); + break; + case 6: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 382); + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 383); + svr->param = sub_81443D4(svr->mevent_unk1442cc); + break; + case 4: + if (svr->param == cmd->flag) + { + svr->cmdidx = 0; + svr->cmdBuffer = cmd->parameter; + } + break; + case 7: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 396); + ptr = mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_32e0); + svr->param = sub_8144418(ptr, svr->mevent_unk1442cc, ptr); + break; + case 8: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 402); + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 403); + svr->param = *(u32 *)svr->recvBuffer; + break; + case 9: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 408); + ptr = mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord); + svr->param = sub_8144434(ptr, svr->mevent_unk1442cc, ptr); + break; + case 10: + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 415); + svr->param = sub_81444B0(svr->mevent_unk1442cc, cmd->flag); + break; + case 11: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 420); + svr->param = sub_8144474(svr->mevent_unk1442cc, cmd->parameter); + break; + case 12: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 426); + svr->param = mevent_compare_pointers(cmd->parameter, *(void **)svr->recvBuffer); + break; + case 14: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 432); + mevent_srv_common_init_send(svr, 0x17, mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_3120), sizeof(struct MEventBuffer_3120_Sub)); + break; + case 13: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 438); + mevent_srv_common_init_send(svr, 0x16, mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_32e0), sizeof(struct MEventBuffer_32E0_Sub)); + break; + case 16: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 444); + mevent_srv_common_init_send(svr, 0x18, mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord), 4); + break; + case 15: + if (cmd->parameter == NULL) + mevent_srv_common_init_send(svr, 0x19, svr->sendBuffer1, svr->sendBuffer1Size); + else + mevent_srv_common_init_send(svr, 0x19, cmd->parameter, cmd->flag); + break; + case 18: + if (cmd->parameter == NULL) + mevent_srv_common_init_send(svr, 0x10, svr->sendBuffer2, svr->sendBuffer2Size); + else + mevent_srv_common_init_send(svr, 0x10, cmd->parameter, cmd->flag); + break; + case 19: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 466); + mevent_srv_common_init_send(svr, 0x1a, cmd->parameter, 188); + break; + case 20: + mevent_srv_common_init_send(svr, 0x15, cmd->parameter, cmd->flag); + break; + case 17: + mevent_srv_common_init_send(svr, 0x1c, cmd->parameter, cmd->flag); + break; + case 22: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 481); + memcpy(svr->mevent_32e0, cmd->parameter, 332); + break; + case 23: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 486); + memcpy(svr->mevent_3120, cmd->parameter, 444); + break; + case 21: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 491); + svr->sendWord = *(u32 *)cmd->parameter; + break; + case 24: + svr->sendBuffer1 = cmd->parameter; + svr->sendBuffer1Size = cmd->flag; + break; + case 25: + svr->sendBuffer2 = cmd->parameter; + svr->sendBuffer2Size = cmd->flag; + break; + case 26: + AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 506); + memcpy(svr->mevent_32e0, sav1_get_mevent_buffer_1(), 332); + sub_814410C(svr->mevent_32e0); + break; + case 27: + AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 512); + memcpy(svr->mevent_3120, sub_8143D58(), 444); + break; + case 28: + AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 517); + svr->sendBuffer1 = sub_8069E48(); + break; + case 29: + mevent_srv_common_init_send(svr, 0x1b, cmd->parameter, cmd->flag); + break; + } + + return 1; +} + +static u32 (*const func_tbl[])(struct mevent_srv_common *) = { + common_mainseq_0, + common_mainseq_1, + common_mainseq_2, + common_mainseq_3, + common_mainseq_4 +}; + +static u32 mevent_srv_exec_common(struct mevent_srv_common * svr) +{ + u32 response; + AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 546); + response = func_tbl[svr->mainseqno](svr); + AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 548); + return response; +} diff --git a/src/mevent_server_helpers.c b/src/mevent_server_helpers.c new file mode 100644 index 000000000..35efa68c8 --- /dev/null +++ b/src/mevent_server_helpers.c @@ -0,0 +1,211 @@ +#include "global.h" +#include "malloc.h" +#include "decompress.h" +#include "util.h" +#include "link.h" +#include "link_rfu.h" +#include "overworld.h" +#include "script.h" +#include "battle_tower.h" +#include "mystery_event_script.h" +#include "mevent.h" +#include "mevent_server.h" + +static u32 mevent_receive_func(struct mevent_srv_sub *); +static u32 mevent_send_func(struct mevent_srv_sub *); + +u32 mevent_srv_sub_recv(struct mevent_srv_sub * svr) +{ + return svr->recvFunc(svr); +} + +u32 mevent_srv_sub_send(struct mevent_srv_sub * svr) +{ + return svr->sendFunc(svr); +} + +void mevent_srv_sub_init(struct mevent_srv_sub * svr, u32 sendPlayerNo, u32 recvPlayerNo) +{ + svr->sendPlayerNo = sendPlayerNo; + svr->recvPlayerNo = recvPlayerNo; + svr->seqno = 0; + svr->sendCRC = 0; + svr->sendSize = 0; + svr->sendCounter = 0; + svr->recvCRC = 0; + svr->recvSize = 0; + svr->recvCounter = 0; + svr->sendBfr = NULL; + svr->recvBfr = NULL; + svr->sendFunc = mevent_send_func; + svr->recvFunc = mevent_receive_func; +} + +void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 ident, const void * src, u32 size) +{ + svr->seqno = 0; + svr->sendIdent = ident; + svr->sendCounter = 0; + svr->sendCRC = 0; + if (size != 0) + svr->sendSize = size; + else + svr->sendSize = ME_SEND_BUF_SIZE; + svr->sendBfr = src; +} + +void mevent_srv_sub_init_recv(struct mevent_srv_sub * svr, u32 ident, void * dest) +{ + svr->seqno = 0; + svr->recvIdent = ident; + svr->recvCounter = 0; + svr->recvCRC = 0; + svr->recvSize = 0; + svr->recvBfr = dest; +} + +static void mevent_recv_block(u32 recv_idx, void * dest, size_t size) +{ + memcpy(dest, gBlockRecvBuffer[recv_idx], size); +} + +static bool32 mevent_has_received(u32 recv_idx) +{ + if ((GetBlockReceivedStatus() >> recv_idx) & 1) + return TRUE; + else + return FALSE; +} + +static void mevent_reset_recv(u32 recv_idx) +{ + ResetBlockReceivedFlag(recv_idx); +} + +static bool32 mevent_receive_func(struct mevent_srv_sub * svr) +{ + struct send_recv_header header; + + switch (svr->seqno) + { + case 0: + if (mevent_has_received(svr->recvPlayerNo)) + { + mevent_recv_block(svr->recvPlayerNo, &header, sizeof(header)); + svr->recvSize = header.size; + svr->recvCRC = header.crc; + if (svr->recvSize > ME_SEND_BUF_SIZE) + { + sub_80FA190(); + return FALSE; + } + else if (svr->recvIdent != header.ident) + { + sub_80FA190(); + return FALSE; + } + else + { + svr->recvCounter = 0; + mevent_reset_recv(svr->recvPlayerNo); + ++svr->seqno; + } + } + break; + case 1: + if (mevent_has_received(svr->recvPlayerNo)) + { + size_t blocksiz = svr->recvCounter * 252; + if (svr->recvSize - blocksiz <= 252) + { + mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + blocksiz, svr->recvSize - blocksiz); + ++svr->recvCounter; + ++svr->seqno; + } + else + { + mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + blocksiz, 252); + ++svr->recvCounter; + } + mevent_reset_recv(svr->recvPlayerNo); + } + break; + case 2: + if (CalcCRC16WithTable(svr->recvBfr, svr->recvSize) != svr->recvCRC) + { + sub_80FA190(); + return FALSE; + } + else + { + svr->seqno = 0; + return TRUE; + } + break; + + } + + return FALSE; +} + +static bool32 mevent_send_func(struct mevent_srv_sub * svr) +{ + struct send_recv_header header; + + switch (svr->seqno) + { + case 0: + if (sub_800A4BC()) + { + header.ident = svr->sendIdent; + header.size = svr->sendSize; + header.crc = CalcCRC16WithTable(svr->sendBfr, svr->sendSize); + svr->sendCRC = header.crc; + svr->sendCounter = 0; + SendBlock(0, &header, sizeof(header)); + ++svr->seqno; + } + break; + case 1: + if (sub_800A4BC()) + { + if (mevent_has_received(svr->sendPlayerNo)) + { + size_t blocksiz; + mevent_reset_recv(svr->sendPlayerNo); + blocksiz = 252 * svr->sendCounter; + if (svr->sendSize - blocksiz <= 252) + { + SendBlock(0, svr->sendBfr + blocksiz, svr->sendSize - blocksiz); + ++svr->sendCounter; + ++svr->seqno; + } + else + { + SendBlock(0, svr->sendBfr + blocksiz, 252); + ++svr->sendCounter; + } + } + } + break; + case 2: + if (sub_800A4BC()) + { + if (CalcCRC16WithTable(svr->sendBfr, svr->sendSize) != svr->sendCRC) + sub_80FA190(); + else + ++svr->seqno; + } + break; + case 3: + if (mevent_has_received(svr->sendPlayerNo)) + { + mevent_reset_recv(svr->sendPlayerNo); + svr->seqno = 0; + return TRUE; + } + break; + } + + return FALSE; +} diff --git a/src/mystery_event_msg.c b/src/mystery_event_msg.c new file mode 100644 index 000000000..a21750b7a --- /dev/null +++ b/src/mystery_event_msg.c @@ -0,0 +1,13 @@ +#include "global.h" + +const u8 gText_MysteryGiftBerry[] = _("Obtained a {STR_VAR_2} BERRY!\nDad has it at PETALBURG GYM."); +const u8 gText_MysteryGiftBerryTransform[] = _("The {STR_VAR_1} BERRY transformed into\none {STR_VAR_2} BERRY."); +const u8 gText_MysteryGiftBerryObtained[] = _("The {STR_VAR_1} BERRY has already been\nobtained."); +const u8 gText_MysteryGiftSpecialRibbon[] = _("A special RIBBON was awarded to\nyour party POKéMON."); +const u8 gText_MysteryGiftNationalDex[] = _("The POKéDEX has been upgraded\nwith the NATIONAL MODE."); +const u8 gText_MysteryGiftRareWord[] = _("A rare word has been added."); +const u8 gText_MysteryGiftSentOver[] = _("{STR_VAR_1} was sent over!"); +const u8 gText_MysteryGiftFullParty[] = _("Your party is full.\n{STR_VAR_1} could not be sent over."); +const u8 gText_MysteryGiftNewTrainer[] = _("A new TRAINER has arrived in\nHOENN."); +const u8 gText_MysteryGiftNewAdversaryInBattleTower[] = _("バトルタワーに あらたな\nたいせんしゃが あらわれた!"); +const u8 gText_MysteryGiftCantBeUsed[] = _("This data can’t be used in\nthis version."); diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c new file mode 100644 index 000000000..c9dc6ae81 --- /dev/null +++ b/src/mystery_event_script.c @@ -0,0 +1,322 @@ +#include "global.h" +#include "berry.h" +#include "battle_tower.h" +#include "easy_chat.h" +#include "event_data.h" +#include "mail.h" +#include "mail_data.h" +#include "mystery_event_script.h" +#include "pokedex.h" +#include "pokemon.h" +#include "pokemon_size_record.h" +#include "script.h" +#include "constants/species.h" +#include "strings.h" +#include "string_util.h" +#include "text.h" +#include "util.h" +#include "mystery_event_msg.h" +#include "pokemon_storage_system.h" + +extern ScrCmdFunc gMysteryEventScriptCmdTable[]; +extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[]; + +#define LANGUAGE_MASK 0x1 +#define VERSION_MASK 0x1 + +EWRAM_DATA static struct ScriptContext sMysteryEventScriptContext = {0}; + +static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4) +{ + if (!(a1 & LANGUAGE_MASK)) + return FALSE; + + if (!(a2 & LANGUAGE_MASK)) + return FALSE; + + if (!(a3 & 0x1)) + return FALSE; + + if (!(a4 & VERSION_MASK)) + return FALSE; + + return TRUE; +} + +static void SetIncompatible(void) +{ + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftCantBeUsed); + SetMysteryEventScriptStatus(3); +} + +static void InitMysteryEventScript(struct ScriptContext *ctx, u8 *script) +{ + InitScriptContext(ctx, gMysteryEventScriptCmdTable, gMysteryEventScriptCmdTableEnd); + SetupBytecodeScript(ctx, script); + ctx->data[0] = (u32)script; + ctx->data[1] = 0; + ctx->data[2] = 0; + ctx->data[3] = 0; +} + +static bool32 RunMysteryEventScriptCommand(struct ScriptContext *ctx) +{ + if (RunScriptCommand(ctx) && ctx->data[3]) + return TRUE; + else + return FALSE; +} + +void sub_80DA89C(u8 *script) +{ + InitMysteryEventScript(&sMysteryEventScriptContext, script); +} + +bool32 sub_80DA8B0(u32 *a0) +{ + bool32 ret = RunMysteryEventScriptCommand(&sMysteryEventScriptContext); + *a0 = sMysteryEventScriptContext.data[2]; + + return ret; +} + +u32 RunMysteryEventScript(u8 *script) +{ + u32 ret; + sub_80DA89C(script); + while (sub_80DA8B0(&ret)); + + return ret; +} + +void SetMysteryEventScriptStatus(u32 val) +{ + sMysteryEventScriptContext.data[2] = val; +} + +bool8 MEScrCmd_end(struct ScriptContext *ctx) +{ + StopScript(ctx); + return TRUE; +} + +bool8 MEScrCmd_checkcompat(struct ScriptContext *ctx) +{ + u16 v1; + u32 v2; + u16 v3; + u32 v4; + + ctx->data[1] = ScriptReadWord(ctx); + v1 = ScriptReadHalfword(ctx); + v2 = ScriptReadWord(ctx); + v3 = ScriptReadHalfword(ctx); + v4 = ScriptReadWord(ctx); + + if (CheckCompatibility(v1, v2, v3, v4) == TRUE) + ctx->data[3] = 1; + else + SetIncompatible(); + + return TRUE; +} + +bool8 MEScrCmd_nop(struct ScriptContext *ctx) +{ + return FALSE; +} + +bool8 MEScrCmd_setstatus(struct ScriptContext *ctx) +{ + u8 value = ScriptReadByte(ctx); + ctx->data[2] = value; + return FALSE; +} + +bool8 MEScrCmd_setmsg(struct ScriptContext *ctx) +{ + u8 value = ScriptReadByte(ctx); + u8 *str = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (value == 0xFF || value == ctx->data[2]) + StringExpandPlaceholders(gStringVar4, str); + return FALSE; +} + +bool8 MEScrCmd_runscript(struct ScriptContext *ctx) +{ + u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + ScriptContext2_RunNewScript(script); + return FALSE; +} + +bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx) +{ + u8 *str; + const u8 *message; + bool32 haveBerry = IsEnigmaBerryValid(); + u8 *berry = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + StringCopyN(gStringVar1, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_LENGTH + 1); + SetEnigmaBerry(berry); + StringCopyN(gStringVar2, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_LENGTH + 1); + + if (!haveBerry) + { + str = gStringVar4; + message = gText_MysteryGiftBerry; + } + else if (StringCompare(gStringVar1, gStringVar2)) + { + str = gStringVar4; + message = gText_MysteryGiftBerryTransform; + } + else + { + str = gStringVar4; + message = gText_MysteryGiftBerryObtained; + } + + StringExpandPlaceholders(str, message); + + ctx->data[2] = 2; + + if (IsEnigmaBerryValid() == TRUE) + VarSet(VAR_ENIGMA_BERRY_AVAILABLE, 1); + else + ctx->data[2] = 1; + + return FALSE; +} + +bool8 MEScrCmd_giveribbon(struct ScriptContext *ctx) +{ + u8 index = ScriptReadByte(ctx); + u8 ribbonId = ScriptReadByte(ctx); + GiveGiftRibbonToParty(index, ribbonId); + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftSpecialRibbon); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_initramscript(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 objectId = ScriptReadByte(ctx); + u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *scriptEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + InitRamScript(script, scriptEnd - script, mapGroup, mapNum, objectId); + return FALSE; +} + +bool8 MEScrCmd_givenationaldex(struct ScriptContext *ctx) +{ + EnableNationalPokedex(); + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftNationalDex); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_addrareword(struct ScriptContext *ctx) +{ + EnableRareWord(ScriptReadByte(ctx)); + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftRareWord); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_setrecordmixinggift(struct ScriptContext *ctx) +{ + SetIncompatible(); + ctx->data[3] = 0; + return TRUE; +} + +bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) +{ + struct MailStruct mail; + struct Pokemon pokemon; + u16 species; + u16 heldItem; + u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]; + void *pokemonPtr = (void *)data; + void *mailPtr = (void *)(data + sizeof(struct Pokemon)); + + pokemon = *(struct Pokemon *)pokemonPtr; + species = GetMonData(&pokemon, MON_DATA_SPECIES2); + + if (species == SPECIES_EGG) + StringCopyN(gStringVar1, gText_EggNickname, POKEMON_NAME_LENGTH + 1); + else + StringCopyN(gStringVar1, gText_Pokemon, POKEMON_NAME_LENGTH + 1); + + if (gPlayerPartyCount == PARTY_SIZE) + { + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftFullParty); + ctx->data[2] = 3; + } + else + { + memcpy(&gPlayerParty[5], pokemonPtr, sizeof(struct Pokemon)); + memcpy(&mail, mailPtr, sizeof(struct MailStruct)); + + if (species != SPECIES_EGG) + { + u16 pokedexNum = SpeciesToNationalPokedexNum(species); + GetSetPokedexFlag(pokedexNum, FLAG_SET_SEEN); + GetSetPokedexFlag(pokedexNum, FLAG_SET_CAUGHT); + } + + heldItem = GetMonData(&gPlayerParty[5], MON_DATA_HELD_ITEM); + if (itemid_is_mail(heldItem)) + GiveMailToMon2(&gPlayerParty[5], &mail); + CompactPartySlots(); + CalculatePlayerPartyCount(); + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftSentOver); + ctx->data[2] = 2; + } + + return FALSE; +} + +bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx) +{ + u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]; + memcpy(gSaveBlock2Ptr->unk_4A0, (void *)data, 0xBC); + ValidateEReaderTrainer(); + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftNewTrainer); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_enableresetrtc(struct ScriptContext *ctx) +{ + SetIncompatible(); + ctx->data[3] = 0; + return TRUE; +} + +bool8 MEScrCmd_checksum(struct ScriptContext *ctx) +{ + int checksum = ScriptReadWord(ctx); + u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (checksum != CalcByteArraySum(data, dataEnd - data)) + { + ctx->data[3] = 0; + ctx->data[2] = 1; + } + return TRUE; +} + +bool8 MEScrCmd_crc(struct ScriptContext *ctx) +{ + int crc = ScriptReadWord(ctx); + u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (crc != CalcCRC16(data, dataEnd - data)) + { + ctx->data[3] = 0; + ctx->data[2] = 1; + } + return TRUE; +} diff --git a/src/quest_log.c b/src/quest_log.c index 546ff6e05..8e890af21 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -523,7 +523,7 @@ void sub_8110A3C(void) void sub_8110AB4(void) { - gUnknown_20370D0 = gUnknown_203ADFA; + gSpecialVar_Result = gUnknown_203ADFA; } u8 sub_8110AC8(void) @@ -2654,7 +2654,7 @@ bool16 sub_8113364(void) bool16 sub_811337C(struct Var4038Struct * a0) { - return (a0->unk_1 >> gUnknown_20370C0) & 1; + return (a0->unk_1 >> gSpecialVar_0x8004) & 1; } void sub_8113390(struct Var4038Struct * a0) @@ -2669,7 +2669,7 @@ void sub_81133A4(void) u8 r3 = 0; u8 r2 = 0; - switch (gUnknown_20370C0) + switch (gSpecialVar_0x8004) { case 0: r2 = 0; @@ -2770,7 +2770,7 @@ void sub_8113524(struct Var4038Struct * a0) u8 sub_8113530(void) { - return sub_8113114(VAR_0x4038_STRUCT, gUnknown_20370C0); + return sub_8113114(VAR_0x4038_STRUCT, gSpecialVar_0x8004); } static u16 * (*const sQuestLogStorageCBs[])(u16 *, const u16 *) = { diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 17a13ab01..4d42f270d 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -63,7 +63,7 @@ struct VsSeekerStruct u8 responseCode:5; }; -extern u16 gUnknown_20370D2; +extern u16 gSpecialVar_LastTalked; extern struct MapObject gMapObjects[MAP_OBJECTS_COUNT]; extern u8 gUnknown_3005074; @@ -588,7 +588,7 @@ void Task_VsSeeker_0(u8 taskId) } else if (respval == 2) { - sub_80A2294(4, 0, gUnknown_203AD30, 0xffff); + sub_80A2294(4, 0, gSpecialVar_ItemId, 0xffff); FieldEffectStart(FLDEFF_UNK_41); // TODO: name this enum gTasks[taskId].func = Task_VsSeeker_1; gTasks[taskId].data[0] = 15; @@ -1078,7 +1078,7 @@ static bool8 sub_810CD80(const VsSeekerData *vsSeekerData, u16 trainerBattleOppo return FALSE; if (rematchIdx >= 0 && rematchIdx < ARRAY_COUNT(sVsSeekerData)) { - if (IsThisTrainerRematchable(gUnknown_20370D2)) + if (IsThisTrainerRematchable(gSpecialVar_LastTalked)) return TRUE; } return FALSE; @@ -1097,7 +1097,7 @@ static bool8 HasRematchTrainerAlreadyBeenFought(const VsSeekerData *vsSeekerData void sub_810CDE8(void) { - gSaveBlock1Ptr->trainerRematches[gUnknown_20370D2] = 0; + gSaveBlock1Ptr->trainerRematches[gSpecialVar_LastTalked] = 0; sub_80803FC(); } @@ -1148,7 +1148,7 @@ static bool8 sub_810CED0(const VsSeekerData * a0, u16 a1) return FALSE; if ((u32)r1 >= ARRAY_COUNT(sVsSeekerData)) return FALSE; - if (!IsThisTrainerRematchable(gUnknown_20370D2)) + if (!IsThisTrainerRematchable(gSpecialVar_LastTalked)) return FALSE; return TRUE; } diff --git a/sym_common.txt b/sym_common.txt index af6d7ba4f..d71702d05 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -329,9 +329,9 @@ gUnknown_3005EA0: @ 3005EA0 gUnknown_3005ECC: @ 3005ECC .space 0x4 -gUnknown_3005ED0: @ 3005ED0 - .space 0x10 + .include "mevent.o" + .align 4 gUnknown_3005EE0: @ 3005EE0 .space 0x10 diff --git a/sym_ewram.txt b/sym_ewram.txt index 83fdcf763..d68a01f8f 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -49,51 +49,58 @@ gStringVar4: @ 2021D18 .include "src/string_util.o" -gUnknown_2022110: @ 2022110 + @ .include "src/link.o" +gLinkTestDebugValuesEnabled: @ 2022110 .space 0x1 gUnknown_2022111: @ 2022111 - .space 0x3 + .space 0x1 + .align 2 gUnknown_2022114: @ 2022114 .space 0x4 -gUnknown_2022118: @ 2022118 - .space 0x4 - -gUnknown_202211C: @ 202211C - .space 0x4FC +gBlockRecvBuffer: @ 2022118 + .space 0x500 -gUnknown_2022618: @ 2022618 +gBlockSendBuffer: @ 2022618 .space 0x100 -gUnknown_2022718: @ 2022718 - .space 0x2 +gLinkOpen: @ 2022718 + .space 0x1 -gUnknown_202271A: @ 202271A + .align 1 +gLinkType: @ 202271A .space 0x2 -gUnknown_202271C: @ 202271C - .space 0x4 +gLinkTimeOutCounter: @ 202271C + .space 0x2 -gUnknown_2022720: @ 2022720 + .align 2 +gLocalLinkPlayer: @ 2022720 .space 0x1C + .align 2 gLinkPlayers: @ 202273C .space 0x8C -gUnknown_20227C8: @ 20227C8 + .align 2 +gSavedLinkPlayers: @ 20227C8 .space 0x8C -gUnknown_2022854: @ 2022854 + .align 2 +sLinkErrorBuffer: @ 2022854 .space 0x8 + .align 1 gUnknown_202285C: @ 202285C - .space 0x4 + .space 0x2 + .align 2 gUnknown_2022860: @ 2022860 .space 0xC + @ .include "src/link_rfu.o" gUnknown_202286C: @ 202286C .space 0x1 @@ -649,49 +656,49 @@ gUnknown_20370B4: @ 20370B4 gUnknown_20370B6: @ 20370B6 .space 0x2 -gUnknown_20370B8: @ 20370B8 +gSpecialVar_0x8000: @ 20370B8 .space 0x2 -gUnknown_20370BA: @ 20370BA +gSpecialVar_0x8001: @ 20370BA .space 0x2 -gUnknown_20370BC: @ 20370BC +gSpecialVar_0x8002: @ 20370BC .space 0x2 -gUnknown_20370BE: @ 20370BE +gSpecialVar_0x8003: @ 20370BE .space 0x2 -gUnknown_20370C0: @ 20370C0 +gSpecialVar_0x8004: @ 20370C0 .space 0x2 gSpecialVar_0x8005: @ 20370C2 .space 0x2 -gUnknown_20370C4: @ 20370C4 +gSpecialVar_0x8006: @ 20370C4 .space 0x2 -gUnknown_20370C6: @ 20370C6 +gSpecialVar_0x8007: @ 20370C6 .space 0x2 -gUnknown_20370C8: @ 20370C8 +gSpecialVar_0x8008: @ 20370C8 .space 0x2 -gUnknown_20370CA: @ 20370CA +gSpecialVar_0x8009: @ 20370CA .space 0x2 -gUnknown_20370CC: @ 20370CC +gSpecialVar_0x800A: @ 20370CC .space 0x2 -gUnknown_20370CE: @ 20370CE +gSpecialVar_0x800B: @ 20370CE .space 0x2 -gUnknown_20370D0: @ 20370D0 +gSpecialVar_Result: @ 20370D0 .space 0x2 -gUnknown_20370D2: @ 20370D2 +gSpecialVar_LastTalked: @ 20370D2 .space 0x2 -gUnknown_20370D4: @ 20370D4 +gSpecialVar_Facing: @ 20370D4 .space 0x2 gSpecialVar_MonBoxId: @ 20370D6 @@ -1190,10 +1197,7 @@ gUnknown_2039A34: @ 2039A34 .space 0x4 .include "src/save.o" - - .align 2 -gUnknown_203AA3C: @ 203AA3C - .space 0x74 + .include "src/mystery_event_script.o" gUnknown_203AAB0: @ 203AAB0 .space 0x4 @@ -1393,7 +1397,7 @@ gUnknown_203AD28: @ 203AD28 gUnknown_203AD2C: @ 203AD2C .space 0x4 -gUnknown_203AD30: @ 203AD30 +gSpecialVar_ItemId: @ 203AD30 .space 0x4 gUnknown_203AD34: @ 203AD34 @@ -1699,20 +1703,10 @@ gUnknown_203F3B0: @ 203F3B0 gUnknown_203F3B8: @ 203F3B8 .space 0x4 -gUnknown_203F3BC: @ 203F3BC - .space 0x4 - -gUnknown_203F3C0: @ 203F3C0 - .space 0x4 - -gUnknown_203F3C4: @ 203F3C4 - .space 0x4 - -gUnknown_203F3C8: @ 203F3C8 - .space 0x4 - -gUnknown_203F3CC: @ 203F3CC - .space 0x4 + .include "src/mevent.o" + .include "src/mevent_server_helpers.o" + .include "src/mevent_server.o" + .include "src/mevent_8145654.o" gUnknown_203F3D0: @ 203F3D0 .space 0x4 |