From c33448ba0929a54252b02bdc848c9f30d2a544cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 20 May 2019 14:17:26 -0400 Subject: [PATCH 01/38] slot_machine: through sub_813FBC0 --- asm/slot_machine.s | 510 ----------------------------------------- include/quest_log.h | 1 + include/slot_machine.h | 2 +- include/songs.h | 468 ------------------------------------- ld_script.txt | 1 + src/slot_machine.c | 267 +++++++++++++++++++++ src/vs_seeker.c | 2 +- 7 files changed, 271 insertions(+), 980 deletions(-) delete mode 100644 include/songs.h create mode 100644 src/slot_machine.c diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 02e17cbb0..659b8901c 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,516 +5,6 @@ .text - thumb_func_start PlaySlotMachine -PlaySlotMachine: @ 813F804 - push {r4-r6,lr} - adds r6, r1, 0 - lsls r0, 16 - lsrs r5, r0, 16 - bl ResetTasks - ldr r4, _0813F828 @ =gUnknown_203F3A0 - movs r0, 0x54 - bl Alloc - str r0, [r4] - cmp r0, 0 - bne _0813F82C - adds r0, r6, 0 - bl SetMainCallback2 - b _0813F840 - .align 2, 0 -_0813F828: .4byte gUnknown_203F3A0 -_0813F82C: - cmp r5, 0x5 - bls _0813F832 - movs r5, 0 -_0813F832: - strh r5, [r0, 0x4] - str r6, [r0] - bl sub_813F84C - ldr r0, _0813F848 @ =sub_813F898 - bl SetMainCallback2 -_0813F840: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813F848: .4byte sub_813F898 - thumb_func_end PlaySlotMachine - - thumb_func_start sub_813F84C -sub_813F84C: @ 813F84C - push {r4-r6,lr} - movs r1, 0 - strh r1, [r0, 0x6] - strh r1, [r0, 0xE] - adds r0, 0x50 - strh r1, [r0] - movs r3, 0 - ldr r6, _0813F894 @ =gUnknown_203F3A0 - movs r4, 0 - movs r5, 0x15 -_0813F860: - ldr r2, [r6] - lsls r1, r3, 2 - adds r0, r2, 0 - adds r0, 0x14 - adds r0, r1 - str r4, [r0] - lsls r1, r3, 1 - adds r0, r2, 0 - adds r0, 0x20 - adds r0, r1 - strh r4, [r0] - adds r0, r2, 0 - adds r0, 0x26 - adds r0, r1 - strh r4, [r0] - adds r0, r2, 0 - adds r0, 0x2C - adds r0, r1 - strh r5, [r0] - adds r3, 0x1 - cmp r3, 0x2 - ble _0813F860 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813F894: .4byte gUnknown_203F3A0 - thumb_func_end sub_813F84C - - thumb_func_start sub_813F898 -sub_813F898: @ 813F898 - push {r4,lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - ldr r0, _0813F8BC @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - beq _0813F8C0 - cmp r0, 0x1 - beq _0813F8EC - b _0813F916 - .align 2, 0 -_0813F8BC: .4byte gMain -_0813F8C0: - bl sub_814104C - cmp r0, 0 - beq _0813F8DC - ldr r0, _0813F8D8 @ =gUnknown_203F3A0 - ldr r0, [r0] - ldr r0, [r0] - bl SetMainCallback2 - bl sub_813F92C - b _0813F916 - .align 2, 0 -_0813F8D8: .4byte gUnknown_203F3A0 -_0813F8DC: - movs r0, 0 - movs r1, 0 - bl sub_8141148 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0813F916 -_0813F8EC: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813F916 - ldr r0, _0813F91C @ =sub_813F964 - movs r1, 0 - bl CreateTask - ldr r4, _0813F920 @ =gUnknown_203F3A0 - ldr r1, [r4] - strb r0, [r1, 0x10] - ldr r0, _0813F924 @ =sub_8140060 - movs r1, 0x1 - bl CreateTask - ldr r1, [r4] - strb r0, [r1, 0x11] - ldr r0, _0813F928 @ =sub_813F94C - bl SetMainCallback2 -_0813F916: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813F91C: .4byte sub_813F964 -_0813F920: .4byte gUnknown_203F3A0 -_0813F924: .4byte sub_8140060 -_0813F928: .4byte sub_813F94C - thumb_func_end sub_813F898 - - thumb_func_start sub_813F92C -sub_813F92C: @ 813F92C - push {r4,lr} - bl sub_8141094 - ldr r4, _0813F948 @ =gUnknown_203F3A0 - ldr r0, [r4] - cmp r0, 0 - beq _0813F942 - bl Free - movs r0, 0 - str r0, [r4] -_0813F942: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813F948: .4byte gUnknown_203F3A0 - thumb_func_end sub_813F92C - - thumb_func_start sub_813F94C -sub_813F94C: @ 813F94C - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_813F94C - - thumb_func_start sub_813F964 -sub_813F964: @ 813F964 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0813F988 @ =gTasks+0x8 - adds r6, r1, r0 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x4 - bls _0813F97E - b _0813FBB8 -_0813F97E: - lsls r0, 2 - ldr r1, _0813F98C @ =_0813F990 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813F988: .4byte gTasks+0x8 -_0813F98C: .4byte _0813F990 - .align 2, 0 -_0813F990: - .4byte _0813F9A4 - .4byte _0813FAA8 - .4byte _0813FAE4 - .4byte _0813FB08 - .4byte _0813FB48 -_0813F9A4: - bl GetCoins - lsls r0, 16 - cmp r0, 0 - bne _0813F9BC - ldr r0, _0813F9B8 @ =sub_813FBC0 - bl sub_8140030 - b _0813FBB8 - .align 2, 0 -_0813F9B8: .4byte sub_813FBC0 -_0813F9BC: - ldr r1, _0813F9F4 @ =gMain - ldrh r2, [r1, 0x2E] - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _0813F9FC - ldr r0, _0813F9F8 @ =gUnknown_203F3A0 - ldr r1, [r0] - ldrh r0, [r1, 0xE] - adds r0, 0x1 - strh r0, [r1, 0xE] - movs r0, 0x1 - bl TakeCoins - movs r0, 0x58 - bl PlaySE - movs r0, 0x8 - movs r1, 0 - bl sub_8141148 - movs r0, 0x2 - movs r1, 0x1 - bl sub_8141148 - movs r0, 0x1 - b _0813FBB6 - .align 2, 0 -_0813F9F4: .4byte gMain -_0813F9F8: .4byte gUnknown_203F3A0 -_0813F9FC: - movs r0, 0x80 - lsls r0, 1 - ands r0, r2 - cmp r0, 0 - beq _0813FA5C - ldr r5, _0813FA2C @ =gUnknown_203F3A0 - ldr r0, [r5] - ldrh r0, [r0, 0xE] - movs r7, 0x3 - subs r4, r7, r0 - bl GetCoins - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - blt _0813FA30 - ldr r0, [r5] - strh r7, [r0, 0xE] - lsls r0, r4, 16 - lsrs r0, 16 - bl TakeCoins - b _0813FA42 - .align 2, 0 -_0813FA2C: .4byte gUnknown_203F3A0 -_0813FA30: - bl GetCoins - ldr r1, [r5] - ldrh r2, [r1, 0xE] - adds r0, r2 - strh r0, [r1, 0xE] - movs r0, 0 - bl SetCoins -_0813FA42: - movs r0, 0x58 - bl PlaySE - movs r0, 0x8 - movs r1, 0 - bl sub_8141148 - movs r0, 0x2 - movs r1, 0x1 - bl sub_8141148 - movs r0, 0x1 - b _0813FBB6 -_0813FA5C: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _0813FA78 - ldr r0, _0813FA74 @ =gUnknown_203F3A0 - ldr r0, [r0] - ldrh r0, [r0, 0xE] - cmp r0, 0 - beq _0813FA78 - movs r0, 0x2 - b _0813FBB6 - .align 2, 0 -_0813FA74: .4byte gUnknown_203F3A0 -_0813FA78: - ldrh r1, [r1, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0813FA90 - ldr r0, _0813FA8C @ =sub_813FCAC - bl sub_8140030 - b _0813FBB8 - .align 2, 0 -_0813FA8C: .4byte sub_813FCAC -_0813FA90: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0813FA9A - b _0813FBB8 -_0813FA9A: - ldr r0, _0813FAA4 @ =sub_813FC2C - bl sub_8140030 - b _0813FBB8 - .align 2, 0 -_0813FAA4: .4byte sub_813FC2C -_0813FAA8: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - beq _0813FAB4 - b _0813FBB8 -_0813FAB4: - movs r0, 0x1 - bl sub_8141180 - adds r4, r0, 0 - cmp r4, 0 - beq _0813FAC2 - b _0813FBB8 -_0813FAC2: - ldr r0, _0813FADC @ =gUnknown_203F3A0 - ldr r0, [r0] - ldrh r0, [r0, 0xE] - cmp r0, 0x3 - beq _0813FAD6 - bl GetCoins - lsls r0, 16 - cmp r0, 0 - bne _0813FAE0 -_0813FAD6: - movs r0, 0x2 - b _0813FBB6 - .align 2, 0 -_0813FADC: .4byte gUnknown_203F3A0 -_0813FAE0: - strh r4, [r6] - b _0813FBB8 -_0813FAE4: - bl sub_811539C - bl sub_81409B4 - bl sub_8140148 - ldr r0, _0813FB04 @ =gUnknown_203F3A0 - ldr r1, [r0] - movs r0, 0 - strh r0, [r1, 0x6] - movs r0, 0x3 - movs r1, 0 - bl sub_8141148 - b _0813FBB4 - .align 2, 0 -_0813FB04: .4byte gUnknown_203F3A0 -_0813FB08: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813FBB8 - ldr r0, _0813FB40 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813FBB8 - movs r0, 0x18 - bl PlaySE - ldr r4, _0813FB44 @ =gUnknown_203F3A0 - ldr r0, [r4] - ldrh r1, [r0, 0x6] - adds r0, r1, 0 - bl sub_814016C - ldr r0, [r4] - ldrb r0, [r0, 0x6] - movs r1, 0 - bl sub_8141C30 - movs r0, 0x4 - b _0813FBB6 - .align 2, 0 -_0813FB40: .4byte gMain -_0813FB44: .4byte gUnknown_203F3A0 -_0813FB48: - ldr r5, _0813FB90 @ =gUnknown_203F3A0 - ldr r0, [r5] - ldrh r0, [r0, 0x6] - bl sub_81401A0 - cmp r0, 0 - bne _0813FBB8 - movs r0, 0 - bl sub_8141180 - adds r4, r0, 0 - cmp r4, 0 - bne _0813FBB8 - ldr r1, [r5] - ldrh r0, [r1, 0x6] - adds r0, 0x1 - strh r0, [r1, 0x6] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bls _0813FBB4 - bl sub_8140A80 - ldr r1, [r5] - strh r0, [r1, 0xA] - strh r4, [r1, 0xE] - strh r4, [r1, 0x6] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _0813FB98 - ldr r0, _0813FB94 @ =sub_813FD84 - bl sub_8140030 - b _0813FBB8 - .align 2, 0 -_0813FB90: .4byte gUnknown_203F3A0 -_0813FB94: .4byte sub_813FD84 -_0813FB98: - cmp r0, 0x6 - bne _0813FBA2 - movs r0, 0x1C - bl IncrementGameStat -_0813FBA2: - bl sub_8140A70 - ldr r0, _0813FBB0 @ =sub_813FE1C - bl sub_8140030 - b _0813FBB8 - .align 2, 0 -_0813FBB0: .4byte sub_813FE1C -_0813FBB4: - movs r0, 0x3 -_0813FBB6: - strh r0, [r6] -_0813FBB8: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_813F964 - - thumb_func_start sub_813FBC0 -sub_813FBC0: @ 813FBC0 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0813FBE4 @ =gTasks+0x8 - adds r4, r1, r0 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0813FBF8 - cmp r0, 0x1 - bgt _0813FBE8 - cmp r0, 0 - beq _0813FBEE - b _0813FC1C - .align 2, 0 -_0813FBE4: .4byte gTasks+0x8 -_0813FBE8: - cmp r0, 0x2 - beq _0813FC0A - b _0813FC1C -_0813FBEE: - movs r0, 0x9 - movs r1, 0 - bl sub_8141148 - b _0813FC02 -_0813FBF8: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813FC1C -_0813FC02: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _0813FC1C -_0813FC0A: - ldr r0, _0813FC24 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0813FC1C - ldr r0, _0813FC28 @ =sub_813FFD8 - bl sub_8140030 -_0813FC1C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813FC24: .4byte gMain -_0813FC28: .4byte sub_813FFD8 - thumb_func_end sub_813FBC0 - thumb_func_start sub_813FC2C sub_813FC2C: @ 813FC2C push {r4,lr} diff --git a/include/quest_log.h b/include/quest_log.h index cdd28371f..aca3e5fe8 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -22,6 +22,7 @@ extern const u16 gUnknown_84566A8[]; void sub_8112720(u8); void sub_8113550(u16, const u16 *); +void sub_811539C(void); void sub_8115748(u16); u8 sub_8112CAC(void); bool8 sub_81119D4(void (*func)(void)); diff --git a/include/slot_machine.h b/include/slot_machine.h index 5c96384fa..37120f66b 100644 --- a/include/slot_machine.h +++ b/include/slot_machine.h @@ -3,6 +3,6 @@ #include "global.h" -void PlaySlotMachine(u8, void *); +void PlaySlotMachine(u16, void (*)(void)); #endif // GUARD_SLOT_MACHINE_H diff --git a/include/songs.h b/include/songs.h deleted file mode 100644 index f8d0fbf5b..000000000 --- a/include/songs.h +++ /dev/null @@ -1,468 +0,0 @@ -#ifndef GUARD_SONGS_H -#define GUARD_SONGS_H - -#include "global.h" - -enum -{ - /*0x00*/ SE_STOP, - /*0x01*/ SE_KAIFUKU, - /*0x02*/ SE_PC_LOGON, - /*0x03*/ SE_PC_OFF, - /*0x04*/ SE_PC_ON, - /*0x05*/ SE_SELECT, - /*0x06*/ SE_WIN_OPEN, - /*0x07*/ SE_WALL_HIT, - /*0x08*/ SE_DOOR, - /*0x09*/ SE_KAIDAN, - /*0x0A*/ SE_DANSA, - /*0x0B*/ SE_JITENSYA, - /*0x0C*/ SE_KOUKA_L, // Goggle told me Kouka means 'effectiveness' which makes sense, because - /*0x0D*/ SE_KOUKA_M, // those three sounds play whenever you use a move - /*0x0E*/ SE_KOUKA_H, - /*0x0F*/ SE_BOWA2, - /*0x10*/ SE_POKE_DEAD, - /*0x11*/ SE_NIGERU, - /*0x12*/ SE_JIDO_DOA, - /*0x13*/ SE_NAMINORI, - /*0x14*/ SE_BAN, - /*0x15*/ SE_PIN, - /*0x16*/ SE_BOO, - /*0x17*/ SE_BOWA, - /*0x18*/ SE_JYUNI, - /*0x19*/ SE_A, - /*0x1A*/ SE_I, - /*0x1B*/ SE_U, - /*0x1C*/ SE_E, - /*0x1D*/ SE_O, - /*0x1E*/ SE_N, - /*0x1F*/ SE_SEIKAI, - /*0x20*/ SE_HAZURE, - /*0x21*/ SE_EXP, - /*0x22*/ SE_JITE_PYOKO, - /*0x23*/ SE_MU_PACHI, - /*0x24*/ SE_TK_KASYA, - /*0x25*/ SE_FU_ZAKU, - /*0x26*/ SE_FU_ZAKU2, - /*0x27*/ SE_FU_ZUZUZU, - /*0x28*/ SE_RU_GASHIN, - /*0x29*/ SE_RU_GASYAN, - /*0x2A*/ SE_RU_BARI, - /*0x2B*/ SE_RU_HYUU, - /*0x2C*/ SE_KI_GASYAN, - /*0x2D*/ SE_TK_WARPIN, - /*0x2E*/ SE_TK_WARPOUT, - /*0x2F*/ SE_TU_SAA, - /*0x30*/ SE_HI_TURUN, - /*0x31*/ SE_TRACK_MOVE, - /*0x32*/ SE_TRACK_STOP, - /*0x33*/ SE_TRACK_HAIK, - /*0x34*/ SE_TRACK_DOOR, - /*0x35*/ SE_MOTER, - /*0x36*/ SE_CARD, - /*0x37*/ SE_SAVE, - /*0x38*/ SE_KON, - /*0x39*/ SE_KON2, - /*0x3A*/ SE_KON3, - /*0x3B*/ SE_KON4, - /*0x3C*/ SE_SUIKOMU, - /*0x3D*/ SE_NAGERU, - SE_TOY_C, - SE_TOY_D, - SE_TOY_E, - SE_TOY_F, - SE_TOY_G, - SE_TOY_A, - SE_TOY_B, - SE_TOY_C1, - SE_MIZU, - SE_HASHI, - SE_DAUGI, - SE_PINPON, - SE_FUUSEN1, - SE_FUUSEN2, - SE_FUUSEN3, - SE_TOY_KABE, - SE_TOY_DANGO, - SE_DOKU, - SE_ESUKA, - SE_T_AME, - SE_T_AME_E, - SE_T_OOAME, - SE_T_OOAME_E, - SE_T_KOAME, - SE_T_KOAME_E, - SE_T_KAMI, - SE_T_KAMI2, - SE_ELEBETA, - /*0x5A*/ SE_HINSI, - /*0x5B*/ SE_EXPMAX, - /*0x5C*/ SE_TAMAKORO, - /*0x5D*/ SE_TAMAKORO_E, - /*0x5E*/ SE_BASABASA, - /*0x5F*/ SE_REGI, - SE_C_GAJI, - SE_C_MAKU_U, - SE_C_MAKU_D, - SE_C_PASI, - SE_C_SYU, - SE_C_PIKON, - /*0x66*/ SE_REAPOKE, - /*0x67*/ SE_OP_BASYU, - /*0x68*/ SE_BT_START, - SE_DENDOU, - SE_JIHANKI, - SE_TAMA, - SE_Z_SCROLL, - /*0x6D*/ SE_Z_PAGE, - /*0x6E*/ SE_PN_ON, - /*0x6F*/ SE_PN_OFF, - /*0x70*/ SE_Z_SEARCH, - /*0x71*/ SE_TAMAGO, - /*0x72*/ SE_TB_START, - /*0x73*/ SE_TB_KON, - /*0x74*/ SE_TB_KARA, - /*0x75*/ SE_BIDORO, - /*0x76*/ SE_W085, - /*0x77*/ SE_W085B, - /*0x78*/ SE_W231, - /*0x79*/ SE_W171, - /*0x7A*/ SE_W233, - /*0x7B*/ SE_W233B, - /*0x7C*/ SE_W145, - /*0x7D*/ SE_W145B, - /*0x7E*/ SE_W145C, - /*0x7F*/ SE_W240, - /*0x80*/ SE_W015, - /*0x81*/ SE_W081, - /*0x82*/ SE_W081B, - /*0x83*/ SE_W088, - /*0x84*/ SE_W016, - /*0x85*/ SE_W016B, - /*0x86*/ SE_W003, - /*0x87*/ SE_W104, - /*0x88*/ SE_W013, - /*0x89*/ SE_W196, - /*0x8A*/ SE_W086, - /*0x8B*/ SE_W004, - /*0x8C*/ SE_W025, - /*0x8D*/ SE_W025B, - SE_W152, - SE_W026, - SE_W172, - SE_W172B, - SE_W053, - SE_W007, - SE_W092, - SE_W221, - SE_W221B, - SE_W052, - SE_W036, - SE_W059, - SE_W059B, - SE_W010, - SE_W011, - SE_W017, - SE_W019, - SE_W028, - SE_W013B, - SE_W044, - SE_W029, - SE_W057, - SE_W056, - SE_W250, - SE_W030, - SE_W039, - SE_W054, - SE_W077, - SE_W020, - SE_W082, - SE_W047, - SE_W195, - SE_W006, - SE_W091, - SE_W146, - SE_W120, - SE_W153, - SE_W071B, - SE_W071, - SE_W103, - /*0xB6*/ SE_W062, - /*0xB7*/ SE_W062B, - /*0xB8*/ SE_W048, - /*0xB9*/ SE_W187, - /*0xBA*/ SE_W118, - /*0xBB*/ SE_W155, - /*0xBC*/ SE_W122, - /*0xBD*/ SE_W060, - /*0xBE*/ SE_W185, - /*0xBF*/ SE_W014, - /*0xC0*/ SE_W043, - /*0xC1*/ SE_W207, - /*0xC2*/ SE_W207B, - /*0xC3*/ SE_W215, - /*0xC4*/ SE_W109, - /*0xC5*/ SE_W173, - /*0xC6*/ SE_W280, - /*0xC7*/ SE_W202, - /*0xC8*/ SE_W060B, - /*0xC9*/ SE_W076, - /*0xCA*/ SE_W080, - /*0xCB*/ SE_W100, - /*0xCC*/ SE_W107, - SE_W166, - SE_W129, - SE_W115, - SE_W112, - SE_W197, - SE_W199, - SE_W236, - SE_W204, - SE_W268, - SE_W070, - SE_W063, - SE_W127, - SE_W179, - SE_W151, - SE_W201, - SE_W161, - SE_W161B, - SE_W227, - SE_W227B, - SE_W226, - SE_W208, - SE_W213, - SE_W213B, - SE_W234, - SE_W260, - SE_W328, - SE_W320, - SE_W255, - SE_W291, - SE_W089, - SE_W239, - SE_W230, - SE_W281, - SE_W327, - SE_W287, - SE_W257, - SE_W253, - SE_W258, - SE_W322, - SE_W298, - SE_W287B, - SE_W114, - SE_W063B, - BGM_STOP = 349, - /*0x15E*/ BGM_TETSUJI, - /*0x15F*/ BGM_FIELD13, - /*0x160*/ BGM_KACHI22, - /*0x161*/ BGM_KACHI2, - /*0x162*/ BGM_KACHI3, - /*0x163*/ BGM_KACHI5, - /*0x164*/ BGM_PCC, - /*0x165*/ BGM_NIBI, - /*0x166*/ BGM_SUIKUN, - /*0x167*/ BGM_DOORO1, - /*0x168*/ BGM_DOORO_X1, - /*0x169*/ BGM_DOORO_X3, - /*0x16A*/ BGM_MACHI_S2, - /*0x16B*/ BGM_MACHI_S4, - /*0x16C*/ BGM_GIM, - /*0x16D*/ BGM_NAMINORI, - /*0x16E*/ BGM_DAN01, - /*0x16F*/ BGM_FANFA1, - /*0x170*/ BGM_ME_ASA, - /*0x171*/ BGM_ME_BACHI, - /*0x172*/ BGM_FANFA4, - /*0x173*/ BGM_FANFA5, - /*0x174*/ BGM_ME_WAZA, - /*0x175*/ BGM_BIJYUTU, - /*0x176*/ BGM_DOORO_X4, - /*0x177*/ BGM_FUNE_KAN, - /*0x178*/ BGM_ME_SHINKA, - /*0x179*/ BGM_SHINKA, - /*0x17A*/ BGM_ME_WASURE, - /*0x17B*/ BGM_SYOUJOEYE, - /*0x17C*/ BGM_BOYEYE, - /*0x17D*/ BGM_DAN02, - /*0x17E*/ BGM_MACHI_S3, - /*0x17F*/ BGM_ODAMAKI, - /*0x180*/ BGM_B_TOWER, - /*0x181*/ BGM_SWIMEYE, - /*0x182*/ BGM_DAN03, - /*0x183*/ BGM_ME_KINOMI, - /*0x184*/ BGM_ME_TAMA, - /*0x185*/ BGM_ME_B_BIG, - /*0x186*/ BGM_ME_B_SMALL, - /*0x187*/ BGM_ME_ZANNEN, - /*0x188*/ BGM_BD_TIME, - /*0x189*/ BGM_TEST1, - /*0x18A*/ BGM_TEST2, - /*0x18B*/ BGM_TEST3, - /*0x18C*/ BGM_TEST4, - /*0x18D*/ BGM_TEST, - /*0x18E*/ BGM_GOMACHI0, - /*0x18F*/ BGM_GOTOWN, - /*0x190*/ BGM_POKECEN, - /*0x191*/ BGM_NEXTROAD, - /*0x192*/ BGM_GRANROAD, - /*0x193*/ BGM_CYCLING, - /*0x194*/ BGM_FRIENDLY, - /*0x195*/ BGM_MISHIRO, - /*0x196*/ BGM_TOZAN, - /*0x197*/ BGM_GIRLEYE, - /*0x198*/ BGM_MINAMO, - /*0x199*/ BGM_ASHROAD, - /*0x19A*/ BGM_EVENT0, - /*0x19B*/ BGM_DEEPDEEP, - /*0x19C*/ BGM_KACHI1, - /*0x19D*/ BGM_TITLE3, - /*0x19E*/ BGM_DEMO1, - /*0x19F*/ BGM_GIRL_SUP, - /*0x1A0*/ BGM_HAGESHII, - /*0x1A1*/ BGM_KAKKOII, - /*0x1A2*/ BGM_KAZANBAI, - /*0x1A3*/ BGM_AQA_0, - /*0x1A4*/ BGM_TSURETEK, - /*0x1A5*/ BGM_BOY_SUP, - /*0x1A6*/ BGM_RAINBOW, - /*0x1A7*/ BGM_AYASII, - /*0x1A8*/ BGM_KACHI4, - /*0x1A9*/ BGM_ROPEWAY, - /*0x1AA*/ BGM_CASINO, - /*0x1AB*/ BGM_HIGHTOWN, - /*0x1AC*/ BGM_SAFARI, - BGM_C_ROAD, - BGM_AJITO, - BGM_M_BOAT, - BGM_M_DUNGON, - BGM_FINECITY, - BGM_MACHUPI, - BGM_P_SCHOOL, - BGM_DENDOU, - BGM_TONEKUSA, - BGM_MABOROSI, - BGM_CON_FAN, - BGM_CONTEST0, - BGM_MGM0, - BGM_T_BATTLE, - BGM_OOAME, - BGM_HIDERI, - BGM_RUNECITY, - BGM_CON_K, - BGM_EIKOU_R, - BGM_KARAKURI, - BGM_HUTAGO, - BGM_SITENNOU, - BGM_YAMA_EYE, - BGM_CONLOBBY, - BGM_INTER_V, - BGM_DAIGO, - BGM_THANKFOR, - BGM_END, - /*0x1C9*/ BGM_BATTLE_FRONTIER, // human-readable names start here because we don't know the actual filenames - BGM_BATTLE_ARENA, - BGM_ME_BATTLE_POINTS, // ME_ as in messagebox? Used for KINOMI (berries) and stuff above - BGM_ME_MATCH_CALL, - BGM_BATTLE_PYRAMID, - BGM_BATTLE_PYRAMID_SUMMIT, - BGM_BATTLE_PALACE, - BGM_FANFA_RAYQUAZA, - BGM_BATTLE_TOWER, - BGM_ME_BATTLE_SYMBOL, - BGM_BATTLE_DOME_TOURNAMENT, - BGM_BATTLE_PIKE, - BGM_BATTLE_FACTORY, - BGM_BATTLE_LEGENDARY, - BGM_BATTLE_FRONTIER_BRAIN, - BGM_BATTLE_MEW, - BGM_BATTLE_DOME, // end of the human-readable names - /*0x1DA*/ BGM_BATTLE27, // wild - BGM_BATTLE31, // aqua/magma grunt - BGM_BATTLE20, // trainer - BGM_BATTLE32, // gym leader - BGM_BATTLE33, // champion - BGM_BATTLE36, // regi - BGM_BATTLE34, // weather trio - BGM_BATTLE35, // rival - BGM_BATTLE38, // elite four - BGM_BATTLE30, // aqua/magma leader - /*0x1E4*/ BGM_FRLG_FOLLOW_ME, // FR/LG names not known, human-readable again! - BGM_FRLG_GAMECORNER, - BGM_FRLG_ROCKET_HIDEOUT, - BGM_FRLG_GYM, - BGM_FRLG_JIGGLYPUFF, - BGM_FRLG_OPENING, - BGM_FRLG_TITLE, - BGM_FRLG_CINNABAR_ISLAND, - BGM_FRLG_LAVENDER_TOWN, - BGM_FRLG_HEALING_TEST, - BGM_FRLG_BICYCLE, - BGM_FRLG_SUSPICIOUS_EYE, - BGM_FRLG_GIRL_EYE, - BGM_FRLG_BOY_EYE, - BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME, - BGM_FRLG_VIRIDIAN_FOREST, - BGM_FRLG_MT_MOON, - BGM_FRLG_POKEMON_MANSION, - BGM_FRLG_CREDITS, - BGM_FRLG_ROUTE_1, - BGM_FRLG_ROUTE_24, - BGM_FRLG_ROUTE_3, - BGM_FRLG_ROUTE_11, - BGM_FRLG_INDIGO_PLATEAU, - BGM_FRLG_BATTLE_LEADER, - BGM_FRLG_BATTLE_TRAINER, - BGM_FRLG_BATTLE_WILD_POKEMON, - BGM_FRLG_BATTLE_CHAMPION, - BGM_FRLG_PALLET_TOWN, - BGM_FRLG_OAK_LAB, - BGM_FRLG_PROF_OAK, - BGM_FRLG_POKEMON_CENTER, - BGM_FRLG_SS_ANNE, - BGM_FRLG_SURF, - BGM_FRLG_POKEMON_TOWER, - BGM_FRLG_SILPH, - BGM_FRLG_CERULEAN_CITY, - BGM_FRLG_CELADON_CITY, - BGM_FRLG_KACHI_TRAINER, // KACHI used in RS test - victory - BGM_FRLG_KACHI_WILD_POKEMON, - BGM_FRLG_KACHI_LEADER, - BGM_FRLG_VERMILION_CITY, - BGM_FRLG_VIRIDIAN_CITY, - BGM_FRLG_RIVAL, - BGM_FRLG_RIVAL_POSTBATTLE, - BGM_FRLG_ME_POKEDEX_EVAL, - BGM_FRLG_ME_KEYITEM, - BGM_FRLG_FANFA_POKEMON_CAUGHT, - BGM_FRLG_FANFA_TRAINERCARD_PHOTO, - BGM_FRLG_GAMEFREAK_LOGO, - BGM_FRLG_CAUGHT_POKEMON, - BGM_FRLG_GAME_EXPLANATION_START, - BGM_FRLG_GAME_EXPLANATION_MIDDLE, - BGM_FRLG_GAME_EXPLANATION_END, - BGM_FRLG_POKEMON_JUMP, - BGM_FRLG_UNION_ROOM, - BGM_FRLG_POKEMON_NETWORK_CENTER, - BGM_FRLG_MYSTERY_GIFT, - BGM_FRLG_DODRIO_BERRY_PICK, - BGM_FRLG_MT_EMBER, - BGM_FRLG_TEACHY_TV_EPISODE, - BGM_FRLG_SEVII_ISLANDS, - BGM_FRLG_TANOBY_RUINS, - BGM_FRLG_ISLAND_ONE, - BGM_FRLG_ISLAND_FOUR, - BGM_FRLG_ISLAND_SIX, - BGM_FRLG_FLUTE, - BGM_FRLG_BATTLE_DEOXYS, - BGM_FRLG_BATTLE_MEWTWO, - BGM_FRLG_BATTLE_LEGENDARY, - BGM_FRLG_LEADER_EYE, - BGM_FRLG_DEOXYS_EYE, - BGM_FRLG_TRAINER_TOWER, - BGM_FRLG_HALL_OF_FAME_PALLET_TOWN, - /*0x22E*/BGM_FRLG_TEACHY_TV, -}; - -#endif // GUARD_SONGS_H diff --git a/ld_script.txt b/ld_script.txt index 4b7fafa2e..ea0c43fd1 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -237,6 +237,7 @@ SECTIONS { asm/berry_pouch.o(.text); asm/itemfinder.o(.text); asm/buy_menu_helpers.o(.text); + src/slot_machine.o(.text); asm/slot_machine.o(.text); src/roamer.o(.text); src/mystery_gift_menu.o(.text); diff --git a/src/slot_machine.c b/src/slot_machine.c new file mode 100644 index 000000000..5a69512c5 --- /dev/null +++ b/src/slot_machine.c @@ -0,0 +1,267 @@ +#include "global.h" +#include "palette.h" +#include "task.h" +#include "main.h" +#include "malloc.h" +#include "sound.h" +#include "coins.h" +#include "quest_log.h" +#include "overworld.h" +#include "slot_machine.h" +#include "constants/songs.h" + +struct SlotMachineState +{ + MainCallback savedCallback; + u16 machineidx; + u16 field_06; + u8 filler_08[2]; + u16 field_0A; + u8 filler_0C[2]; + u16 bet; + u8 field_10; + u8 field_11; + TaskFunc field_14[3]; + u16 field_20[3]; + u16 field_26[3]; + u16 field_2C[3]; + u8 filler_32[0x1E]; + u16 field_50; +}; + +EWRAM_DATA struct SlotMachineState * gUnknown_203F3A0 = NULL; + +void sub_813F84C(struct SlotMachineState * ptr); +void sub_813F898(void); +void sub_813F92C(void); +void sub_813F94C(void); +void sub_813F964(u8 taskId); +void sub_813FBC0(u8 taskId); +void sub_813FC2C(u8 taskId); +void sub_813FCAC(u8 taskId); +void sub_813FD84(u8 taskId); +void sub_813FE1C(u8 taskId); +void sub_813FFD8(u8 taskId); +void sub_8140030(TaskFunc taskFunc); +void sub_8140060(u8 taskId); +void sub_8140148(void); +void sub_814016C(u16, u16); +bool32 sub_81401A0(u16); +void sub_81409B4(void); +void sub_8140A70(void); +u16 sub_8140A80(void); +bool32 sub_814104C(void); +void sub_8141094(void); +void sub_8141148(u16 a0, u8 a1); +bool32 sub_8141180(u8 a0); +void sub_8141C30(u8, u8); + +void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) +{ + ResetTasks(); + gUnknown_203F3A0 = Alloc(sizeof(*gUnknown_203F3A0)); + if (gUnknown_203F3A0 == NULL) + SetMainCallback2(savedCallback); + else + { + if (machineIdx > 5) + machineIdx = 0; + gUnknown_203F3A0->machineidx = machineIdx; + gUnknown_203F3A0->savedCallback = savedCallback; + sub_813F84C(gUnknown_203F3A0); + SetMainCallback2(sub_813F898); + } +} + +void sub_813F84C(struct SlotMachineState * ptr) +{ + s32 i; + + ptr->field_06 = 0; + ptr->bet = 0; + ptr->field_50 = 0; + // for whatever reason, the loop does not use the ptr param + for (i = 0; i < 3; i++) + { + gUnknown_203F3A0->field_14[i] = NULL; + gUnknown_203F3A0->field_20[i] = 0; + gUnknown_203F3A0->field_26[i] = 0; + gUnknown_203F3A0->field_2C[i] = 21; + } +} + +void sub_813F898(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + + switch (gMain.state) + { + case 0: + if (sub_814104C()) + { + SetMainCallback2(gUnknown_203F3A0->savedCallback); + sub_813F92C(); + } + else + { + sub_8141148(0, 0); + gMain.state++; + } + break; + case 1: + if (sub_8141180(0) == 0) + { + gUnknown_203F3A0->field_10 = CreateTask(sub_813F964, 0); + gUnknown_203F3A0->field_11 = CreateTask(sub_8140060, 1); + SetMainCallback2(sub_813F94C); + } + break; + } +} + +void sub_813F92C(void) +{ + sub_8141094(); + if (gUnknown_203F3A0 != NULL) + { + Free(gUnknown_203F3A0); + gUnknown_203F3A0 = NULL; + } +} + +void sub_813F94C(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_813F964(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + if (GetCoins() == 0) + { + sub_8140030(sub_813FBC0); + } + else if (JOY_NEW(DPAD_DOWN)) + { + gUnknown_203F3A0->bet++; + TakeCoins(1); + PlaySE(SE_T_KAMI2); + sub_8141148(8, 0); + sub_8141148(2, 1); + data[0] = 1; + } + else if (JOY_NEW(R_BUTTON)) + { + s32 toAdd = 3 - gUnknown_203F3A0->bet; + if (GetCoins() >= toAdd) + { + gUnknown_203F3A0->bet = 3; + TakeCoins(toAdd); + } + else + { + gUnknown_203F3A0->bet += GetCoins(); + SetCoins(0); + } + PlaySE(SE_T_KAMI2); + sub_8141148(8, 0); + sub_8141148(2, 1); + data[0] = 1; + } + else if (JOY_NEW(A_BUTTON) && gUnknown_203F3A0->bet != 0) + { + data[0] = 2; + } + else if (JOY_NEW(B_BUTTON)) + { + sub_8140030(sub_813FCAC); + } + else if (JOY_NEW(DPAD_RIGHT)) + { + sub_8140030(sub_813FC2C); + } + break; + case 1: + if (sub_8141180(0) == 0 && sub_8141180(1) == 0) + { + if (gUnknown_203F3A0->bet == 3 || GetCoins() == 0) + data[0] = 2; + else + data[0] = 0; + } + break; + case 2: + sub_811539C(); + sub_81409B4(); + sub_8140148(); + gUnknown_203F3A0->field_06 = 0; + sub_8141148(3, 0); + data[0] = 3; + break; + case 3: + if (sub_8141180(0) == 0) + { + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_JYUNI); + sub_814016C(gUnknown_203F3A0->field_06, gUnknown_203F3A0->field_06); + sub_8141C30(gUnknown_203F3A0->field_06, 0); + data[0] = 4; + } + } + break; + case 4: + if (sub_81401A0(gUnknown_203F3A0->field_06) == 0 && sub_8141180(0) == 0) + { + gUnknown_203F3A0->field_06++; + if (gUnknown_203F3A0->field_06 >= 3) + { + gUnknown_203F3A0->field_0A = sub_8140A80(); + gUnknown_203F3A0->bet = 0; + gUnknown_203F3A0->field_06 = 0; + if (gUnknown_203F3A0->field_0A == 0) + sub_8140030(sub_813FD84); + else + { + if (gUnknown_203F3A0->field_0A == 6) + IncrementGameStat(GAME_STAT_SLOT_JACKPOTS); + sub_8140A70(); + sub_8140030(sub_813FE1C); + } + } + else + data[0] = 3; + } + break; + } +} + +void sub_813FBC0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + sub_8141148(9, 0); + data[0]++; + break; + case 1: + if (sub_8141180(0) == 0) + data[0]++; + break; + case 2: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + sub_8140030(sub_813FFD8); + break; + } +} diff --git a/src/vs_seeker.c b/src/vs_seeker.c index bd5b9c7ea..6c6daf803 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -1,5 +1,5 @@ #include "global.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "task.h" #include "malloc.h" From 6d05c777d27e844969a74cfa533adbcfbeddf398 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 20 May 2019 19:06:23 -0400 Subject: [PATCH 02/38] slot_machine through sub_8140060 --- asm/slot_machine.s | 743 +++------------------------------------------ src/slot_machine.c | 350 +++++++++++++++++---- sym_ewram.txt | 4 +- 3 files changed, 334 insertions(+), 763 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 659b8901c..a543a18fe 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,672 +5,11 @@ .text - thumb_func_start sub_813FC2C -sub_813FC2C: @ 813FC2C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0813FC50 @ =gTasks+0x8 - adds r4, r1, r0 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0813FC62 - cmp r0, 0x1 - bgt _0813FC54 - cmp r0, 0 - beq _0813FC5E - b _0813FCA0 - .align 2, 0 -_0813FC50: .4byte gTasks+0x8 -_0813FC54: - cmp r0, 0x2 - beq _0813FC6E - cmp r0, 0x3 - beq _0813FC90 - b _0813FCA0 -_0813FC5E: - movs r0, 0xE - b _0813FC7C -_0813FC62: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813FCA0 - b _0813FC82 -_0813FC6E: - ldr r0, _0813FC8C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0813FCA0 - movs r0, 0xF -_0813FC7C: - movs r1, 0 - bl sub_8141148 -_0813FC82: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _0813FCA0 - .align 2, 0 -_0813FC8C: .4byte gMain -_0813FC90: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813FCA0 - ldr r0, _0813FCA8 @ =sub_813F964 - bl sub_8140030 -_0813FCA0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813FCA8: .4byte sub_813F964 - thumb_func_end sub_813FC2C - - thumb_func_start sub_813FCAC -sub_813FCAC: @ 813FCAC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0813FCD0 @ =gTasks+0x8 - adds r4, r1, r0 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bhi _0813FD78 - lsls r0, 2 - ldr r1, _0813FCD4 @ =_0813FCD8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813FCD0: .4byte gTasks+0x8 -_0813FCD4: .4byte _0813FCD8 - .align 2, 0 -_0813FCD8: - .4byte _0813FCEC - .4byte _0813FCF6 - .4byte _0813FD08 - .4byte _0813FD52 - .4byte _0813FD68 -_0813FCEC: - movs r0, 0xA - movs r1, 0 - bl sub_8141148 - b _0813FD00 -_0813FCF6: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813FD78 -_0813FD00: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _0813FD78 -_0813FD08: - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0813FD28 - cmp r1, 0 - bgt _0813FD22 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0813FD44 - b _0813FD78 -_0813FD22: - cmp r1, 0x1 - beq _0813FD44 - b _0813FD78 -_0813FD28: - ldr r0, _0813FD40 @ =gUnknown_203F3A0 - ldr r0, [r0] - ldrh r0, [r0, 0xE] - bl GiveCoins - movs r0, 0x8 - movs r1, 0 - bl sub_8141148 - movs r0, 0x3 - strh r0, [r4] - b _0813FD78 - .align 2, 0 -_0813FD40: .4byte gUnknown_203F3A0 -_0813FD44: - movs r0, 0xB - movs r1, 0 - bl sub_8141148 - movs r0, 0x4 - strh r0, [r4] - b _0813FD78 -_0813FD52: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813FD78 - ldr r0, _0813FD64 @ =sub_813FFD8 - bl sub_8140030 - b _0813FD78 - .align 2, 0 -_0813FD64: .4byte sub_813FFD8 -_0813FD68: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813FD78 - ldr r0, _0813FD80 @ =sub_813F964 - bl sub_8140030 -_0813FD78: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813FD80: .4byte sub_813F964 - thumb_func_end sub_813FCAC - - thumb_func_start sub_813FD84 -sub_813FD84: @ 813FD84 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0813FDA8 @ =gTasks+0x8 - adds r5, r1, r0 - movs r0, 0 - ldrsh r4, [r5, r0] - cmp r4, 0x1 - beq _0813FDBE - cmp r4, 0x1 - bgt _0813FDAC - cmp r4, 0 - beq _0813FDB2 - b _0813FE10 - .align 2, 0 -_0813FDA8: .4byte gTasks+0x8 -_0813FDAC: - cmp r4, 0x2 - beq _0813FDEC - b _0813FE10 -_0813FDB2: - movs r0, 0x6 - movs r1, 0 - bl sub_8141148 - strh r4, [r5, 0x2] - b _0813FDE4 -_0813FDBE: - ldrh r0, [r5, 0x2] - adds r0, 0x1 - strh r0, [r5, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _0813FE10 - movs r0, 0x7 - movs r1, 0 - bl sub_8141148 - movs r0, 0x2 - movs r1, 0x1 - bl sub_8141148 - movs r0, 0xD - movs r1, 0x2 - bl sub_8141148 -_0813FDE4: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - b _0813FE10 -_0813FDEC: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813FE10 - movs r0, 0x1 - bl sub_8141180 - cmp r0, 0 - bne _0813FE10 - movs r0, 0x2 - bl sub_8141180 - cmp r0, 0 - bne _0813FE10 - ldr r0, _0813FE18 @ =sub_813F964 - bl sub_8140030 -_0813FE10: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813FE18: .4byte sub_813F964 - thumb_func_end sub_813FD84 - - thumb_func_start sub_813FE1C -sub_813FE1C: @ 813FE1C - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0813FE40 @ =gTasks+0x8 - adds r5, r1, r0 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0x5 - bls _0813FE36 - b _0813FFCE -_0813FE36: - lsls r0, 2 - ldr r1, _0813FE44 @ =_0813FE48 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813FE40: .4byte gTasks+0x8 -_0813FE44: .4byte _0813FE48 - .align 2, 0 -_0813FE48: - .4byte _0813FE60 - .4byte _0813FEA0 - .4byte _0813FECC - .4byte _0813FF78 - .4byte _0813FF92 - .4byte _0813FFB4 -_0813FE60: - ldr r0, _0813FE7C @ =gUnknown_203F3A0 - ldr r0, [r0] - ldrh r0, [r0, 0xA] - subs r0, 0x5 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0813FE80 - movs r0, 0x86 - lsls r0, 1 - bl PlayFanfare - b _0813FE86 - .align 2, 0 -_0813FE7C: .4byte gUnknown_203F3A0 -_0813FE80: - ldr r0, _0813FE9C @ =0x0000010d - bl PlayFanfare -_0813FE86: - movs r0, 0x8 - movs r1, 0 - bl sub_8141148 - movs r0, 0x4 - movs r1, 0x1 - bl sub_8141148 - movs r0, 0x8 - strh r0, [r5, 0x2] - b _0813FFAC - .align 2, 0 -_0813FE9C: .4byte 0x0000010d -_0813FEA0: - ldrh r0, [r5, 0x2] - adds r0, 0x1 - strh r0, [r5, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x78 - bgt _0813FEB0 - b _0813FFCE -_0813FEB0: - movs r0, 0x8 - strh r0, [r5, 0x2] - ldr r0, _0813FEC8 @ =gMain - ldrh r1, [r0, 0x2C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813FFAC - movs r0, 0x2 - strh r0, [r5, 0x2] - b _0813FFAC - .align 2, 0 -_0813FEC8: .4byte gMain -_0813FECC: - movs r0, 0 - bl sub_8141180 - adds r6, r0, 0 - cmp r6, 0 - bne _0813FFCE - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _0813FF0C - ldr r0, _0813FF04 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0813FF0C - ldr r4, _0813FF08 @ =gUnknown_203F3A0 - ldr r0, [r4] - adds r0, 0x50 - ldrh r0, [r0] - bl GiveCoins - ldr r0, [r4] - adds r0, 0x50 - strh r6, [r0] - b _0813FF58 - .align 2, 0 -_0813FF04: .4byte gMain -_0813FF08: .4byte gUnknown_203F3A0 -_0813FF0C: - ldrh r0, [r5, 0x2] - subs r0, 0x1 - strh r0, [r5, 0x2] - lsls r0, 16 - cmp r0, 0 - bne _0813FF58 - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _0813FF28 - movs r0, 0x15 - bl PlaySE -_0813FF28: - ldr r4, _0813FF70 @ =gUnknown_203F3A0 - ldr r0, [r4] - adds r0, 0x50 - ldrh r0, [r0] - cmp r0, 0 - beq _0813FF44 - movs r0, 0x1 - bl GiveCoins - ldr r1, [r4] - adds r1, 0x50 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] -_0813FF44: - movs r0, 0x8 - strh r0, [r5, 0x2] - ldr r0, _0813FF74 @ =gMain - ldrh r1, [r0, 0x2C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813FF58 - movs r0, 0x2 - strh r0, [r5, 0x2] -_0813FF58: - movs r0, 0x8 - movs r1, 0 - bl sub_8141148 - ldr r0, _0813FF70 @ =gUnknown_203F3A0 - ldr r0, [r0] - adds r0, 0x50 - ldrh r0, [r0] - cmp r0, 0 - bne _0813FFCE - b _0813FFAC - .align 2, 0 -_0813FF70: .4byte gUnknown_203F3A0 -_0813FF74: .4byte gMain -_0813FF78: - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _0813FFCE - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813FFCE - movs r0, 0x5 - movs r1, 0 - b _0813FFA8 -_0813FF92: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813FFCE - movs r0, 0x2 - movs r1, 0 - bl sub_8141148 - movs r0, 0xD - movs r1, 0x1 -_0813FFA8: - bl sub_8141148 -_0813FFAC: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - b _0813FFCE -_0813FFB4: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _0813FFCE - movs r0, 0x1 - bl sub_8141180 - cmp r0, 0 - bne _0813FFCE - ldr r0, _0813FFD4 @ =sub_813F964 - bl sub_8140030 -_0813FFCE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813FFD4: .4byte sub_813F964 - thumb_func_end sub_813FE1C - - thumb_func_start sub_813FFD8 -sub_813FFD8: @ 813FFD8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0813FFF8 @ =gTasks+0x8 - adds r4, r1, r0 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0813FFFC - cmp r0, 0x1 - beq _0814000C - b _08140024 - .align 2, 0 -_0813FFF8: .4byte gTasks+0x8 -_0813FFFC: - movs r0, 0x1 - movs r1, 0 - bl sub_8141148 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _08140024 -_0814000C: - movs r0, 0 - bl sub_8141180 - cmp r0, 0 - bne _08140024 - ldr r0, _0814002C @ =gUnknown_203F3A0 - ldr r0, [r0] - ldr r0, [r0] - bl SetMainCallback2 - bl sub_813F92C -_08140024: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0814002C: .4byte gUnknown_203F3A0 - thumb_func_end sub_813FFD8 - - thumb_func_start sub_8140030 -sub_8140030: @ 8140030 - push {r4,lr} - ldr r4, _08140058 @ =gTasks - ldr r1, _0814005C @ =gUnknown_203F3A0 - ldr r3, [r1] - ldrb r2, [r3, 0x10] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r4 - str r0, [r1] - ldrb r1, [r3, 0x10] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - movs r1, 0 - strh r1, [r0, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08140058: .4byte gTasks -_0814005C: .4byte gUnknown_203F3A0 - thumb_func_end sub_8140030 - - thumb_func_start sub_8140060 -sub_8140060: @ 8140060 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - mov r12, r0 - ldr r1, _08140144 @ =gUnknown_203F3A0 - mov r10, r1 - mov r8, r10 - mov r9, r0 - movs r6, 0 - movs r7, 0 -_0814007A: - mov r2, r8 - ldr r3, [r2] - adds r0, r3, 0 - adds r0, 0x14 - adds r0, r7 - ldr r0, [r0] - mov r1, r12 - lsls r4, r1, 1 - cmp r0, 0 - bne _0814009C - adds r0, r3, 0 - adds r0, 0x26 - adds r0, r6 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - beq _0814011A -_0814009C: - adds r0, r3, 0 - adds r0, 0x26 - adds r2, r0, r6 - ldrh r5, [r2] - movs r1, 0 - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _081400C4 - adds r1, r3, 0 - adds r1, 0x20 - adds r1, r4 - adds r0, r3, 0 - adds r0, 0x2C - adds r0, r4 - movs r4, 0 - ldrsh r1, [r1, r4] - movs r4, 0 - ldrsh r0, [r0, r4] - cmp r1, r0 - beq _08140104 -_081400C4: - adds r0, r5, 0x1 - movs r1, 0 - strh r0, [r2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _081400EA - strh r1, [r2] - adds r0, r3, 0 - adds r0, 0x20 - adds r1, r0, r6 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bge _081400EA - movs r0, 0x14 - strh r0, [r1] -_081400EA: - mov r1, r8 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x20 - adds r1, r6 - adds r0, 0x2C - adds r0, r6 - movs r2, 0 - ldrsh r1, [r1, r2] - movs r4, 0 - ldrsh r0, [r0, r4] - cmp r1, r0 - bne _0814011A -_08140104: - mov r1, r8 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x2C - adds r1, r6 - movs r2, 0x15 - strh r2, [r1] - adds r0, 0x14 - adds r0, r7 - mov r2, r9 - str r2, [r0] -_0814011A: - adds r6, 0x2 - adds r7, 0x4 - movs r4, 0x1 - add r12, r4 - mov r0, r12 - cmp r0, 0x2 - ble _0814007A - mov r2, r10 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x20 - adds r1, 0x26 - bl sub_8140D7C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08140144: .4byte gUnknown_203F3A0 - thumb_func_end sub_8140060 - thumb_func_start sub_8140148 sub_8140148: @ 8140148 push {r4,lr} movs r2, 0 - ldr r4, _08140168 @ =gUnknown_203F3A0 + ldr r4, _08140168 @ =sSlotMachineState movs r3, 0x1 _08140150: ldr r0, [r4] @@ -685,7 +24,7 @@ _08140150: pop {r0} bx r0 .align 2, 0 -_08140168: .4byte gUnknown_203F3A0 +_08140168: .4byte sSlotMachineState thumb_func_end sub_8140148 thumb_func_start sub_814016C @@ -723,7 +62,7 @@ _0814019C: thumb_func_start sub_81401A0 sub_81401A0: @ 81401A0 lsls r0, 16 - ldr r1, _081401B0 @ =gUnknown_203F3A0 + ldr r1, _081401B0 @ =sSlotMachineState ldr r1, [r1] lsrs r0, 14 adds r1, 0x14 @@ -731,14 +70,14 @@ sub_81401A0: @ 81401A0 ldr r0, [r1] bx lr .align 2, 0 -_081401B0: .4byte gUnknown_203F3A0 +_081401B0: .4byte sSlotMachineState thumb_func_end sub_81401A0 thumb_func_start sub_81401B4 sub_81401B4: @ 81401B4 push {lr} lsls r0, 16 - ldr r1, _081401E8 @ =gUnknown_203F3A0 + ldr r1, _081401E8 @ =sSlotMachineState ldr r2, [r1] lsrs r0, 15 adds r1, r2, 0 @@ -764,7 +103,7 @@ _081401E0: pop {r1} bx r1 .align 2, 0 -_081401E8: .4byte gUnknown_203F3A0 +_081401E8: .4byte sSlotMachineState _081401EC: .4byte 0xffff0000 thumb_func_end sub_81401B4 @@ -784,7 +123,7 @@ sub_81401F0: @ 81401F0 lsrs r1, r0, 16 movs r0, 0 mov r8, r0 - ldr r0, _0814023C @ =gUnknown_203F3A0 + ldr r0, _0814023C @ =sSlotMachineState ldr r0, [r0] ldrh r0, [r0, 0x8] cmp r0, 0 @@ -809,7 +148,7 @@ _0814022A: adds r5, r7, 0x1 b _08140248 .align 2, 0 -_0814023C: .4byte gUnknown_203F3A0 +_0814023C: .4byte sSlotMachineState _08140240: adds r6, 0x1 adds r0, r4, 0x1 @@ -858,7 +197,7 @@ _08140288: mov r8, r0 b _081402FE _08140294: - ldr r0, _08140364 @ =gUnknown_203F3A0 + ldr r0, _08140364 @ =sSlotMachineState ldr r0, [r0] ldrh r0, [r0, 0x8] cmp r0, 0x1 @@ -896,7 +235,7 @@ _081402D0: ble _081402DA movs r2, 0 _081402DA: - ldr r0, _08140364 @ =gUnknown_203F3A0 + ldr r0, _08140364 @ =sSlotMachineState ldr r0, [r0] ldrh r0, [r0, 0x8] lsls r1, r2, 16 @@ -929,7 +268,7 @@ _08140310: bge _08140318 movs r2, 0x14 _08140318: - ldr r0, _08140364 @ =gUnknown_203F3A0 + ldr r0, _08140364 @ =sSlotMachineState ldr r0, [r0] ldrh r0, [r0, 0x8] lsls r1, r2, 16 @@ -966,7 +305,7 @@ _08140348: lsrs r2, r0, 16 b _0814037E .align 2, 0 -_08140364: .4byte gUnknown_203F3A0 +_08140364: .4byte sSlotMachineState _08140368: .4byte gUnknown_8464926 _0814036C: bl Random @@ -991,7 +330,7 @@ _0814037E: lsls r0, 16 lsrs r2, r0, 16 _08140398: - ldr r0, _081403B8 @ =gUnknown_203F3A0 + ldr r0, _081403B8 @ =sSlotMachineState ldr r0, [r0] mov r1, r9 strh r1, [r0, 0x32] @@ -1008,7 +347,7 @@ _08140398: pop {r0} bx r0 .align 2, 0 -_081403B8: .4byte gUnknown_203F3A0 +_081403B8: .4byte sSlotMachineState thumb_func_end sub_81401F0 thumb_func_start sub_81403BC @@ -1022,7 +361,7 @@ sub_81403BC: @ 81403BC lsls r0, 16 lsrs r0, 16 mov r8, r0 - ldr r0, _08140470 @ =gUnknown_203F3A0 + ldr r0, _08140470 @ =sSlotMachineState ldr r0, [r0] ldrh r1, [r0, 0x32] lsls r7, r1, 16 @@ -1062,7 +401,7 @@ _08140404: _08140416: lsls r0, r2, 16 asrs r4, r0, 16 - ldr r7, _08140470 @ =gUnknown_203F3A0 + ldr r7, _08140470 @ =sSlotMachineState ldr r0, [r7] ldrh r0, [r0, 0x8] str r0, [sp] @@ -1106,7 +445,7 @@ _0814044C: movs r2, 0x4 b _08140480 .align 2, 0 -_08140470: .4byte gUnknown_203F3A0 +_08140470: .4byte sSlotMachineState _08140474: ldr r0, [r7] movs r1, 0x1 @@ -1164,7 +503,7 @@ sub_81404B8: @ 81404B8 movs r6, 0 movs r5, 0 _081404D8: - ldr r7, _0814051C @ =gUnknown_203F3A0 + ldr r7, _0814051C @ =sSlotMachineState ldr r0, [r7] ldrh r2, [r0, 0x8] mov r0, r8 @@ -1199,7 +538,7 @@ _081404FA: movs r2, 0x4 b _08140526 .align 2, 0 -_0814051C: .4byte gUnknown_203F3A0 +_0814051C: .4byte sSlotMachineState _08140520: mov r0, sp ldrb r2, [r0] @@ -1464,7 +803,7 @@ sub_81406E8: @ 81406E8 adds r7, r0, 0 adds r5, r1, 0 mov r8, r2 - ldr r0, _081407C8 @ =gUnknown_203F3A0 + ldr r0, _081407C8 @ =sSlotMachineState ldr r2, [r0] movs r1, 0x32 ldrsh r0, [r2, r1] @@ -1575,7 +914,7 @@ _081407AE: beq _081407D8 b _081408A0 .align 2, 0 -_081407C8: .4byte gUnknown_203F3A0 +_081407C8: .4byte sSlotMachineState _081407CC: .4byte gUnknown_8464926 _081407D0: mov r6, r8 @@ -1851,7 +1190,7 @@ sub_81409B4: @ 81409B4 bl Random lsls r0, 16 lsrs r2, r0, 18 - ldr r0, _08140A60 @ =gUnknown_203F3A0 + ldr r0, _08140A60 @ =sSlotMachineState ldr r0, [r0] ldrh r1, [r0, 0x4] lsls r0, r1, 3 @@ -1873,7 +1212,7 @@ _081409D8: cmp r2, r1 bcs _081409D8 _081409E6: - ldr r6, _08140A60 @ =gUnknown_203F3A0 + ldr r6, _08140A60 @ =sSlotMachineState ldr r1, [r6] ldrh r0, [r1, 0x8] cmp r0, 0x4 @@ -1898,7 +1237,7 @@ _081409E6: _08140A16: strh r0, [r4, 0xC] _08140A18: - ldr r0, _08140A60 @ =gUnknown_203F3A0 + ldr r0, _08140A60 @ =sSlotMachineState ldr r1, [r0] ldrh r1, [r1, 0xC] cmp r1, 0 @@ -1912,7 +1251,7 @@ _08140A22: ldr r0, _08140A6C @ =0x00002ccb cmp r1, r0 bhi _08140A4A - ldr r0, _08140A60 @ =gUnknown_203F3A0 + ldr r0, _08140A60 @ =sSlotMachineState ldr r4, [r0] bl Random movs r1, 0x1 @@ -1924,7 +1263,7 @@ _08140A22: _08140A48: strh r0, [r4, 0xC] _08140A4A: - ldr r2, _08140A60 @ =gUnknown_203F3A0 + ldr r2, _08140A60 @ =sSlotMachineState ldr r1, [r2] ldrh r0, [r1, 0xC] subs r0, 0x1 @@ -1938,7 +1277,7 @@ _08140A5A: pop {r0} bx r0 .align 2, 0 -_08140A60: .4byte gUnknown_203F3A0 +_08140A60: .4byte sSlotMachineState _08140A64: .4byte gUnknown_84648D2 _08140A68: .4byte 0x00003fff _08140A6C: .4byte 0x00002ccb @@ -1946,13 +1285,13 @@ _08140A6C: .4byte 0x00002ccb thumb_func_start sub_8140A70 sub_8140A70: @ 8140A70 - ldr r0, _08140A7C @ =gUnknown_203F3A0 + ldr r0, _08140A7C @ =sSlotMachineState ldr r1, [r0] movs r0, 0 strh r0, [r1, 0x8] bx lr .align 2, 0 -_08140A7C: .4byte gUnknown_203F3A0 +_08140A7C: .4byte sSlotMachineState thumb_func_end sub_8140A70 thumb_func_start sub_8140A80 @@ -1967,7 +1306,7 @@ sub_8140A80: @ 8140A80 movs r2, 0x9 bl memset movs r5, 0 - ldr r2, _08140B58 @ =gUnknown_203F3A0 + ldr r2, _08140B58 @ =sSlotMachineState movs r3, 0 adds r4, r2, 0 _08140A9C: @@ -2028,7 +1367,7 @@ _08140AE8: subs r5, 0x1 cmp r5, 0 bge _08140AD0 - ldr r0, _08140B58 @ =gUnknown_203F3A0 + ldr r0, _08140B58 @ =sSlotMachineState ldr r0, [r0] adds r0, 0x50 movs r1, 0 @@ -2038,7 +1377,7 @@ _08140AE8: movs r6, 0 movs r5, 0x4 _08140B18: - ldr r0, _08140B58 @ =gUnknown_203F3A0 + ldr r0, _08140B58 @ =sSlotMachineState ldr r1, [r0] mov r0, r8 adds r0, 0x3 @@ -2069,7 +1408,7 @@ _08140B18: movs r3, 0x2 b _08140B92 .align 2, 0 -_08140B58: .4byte gUnknown_203F3A0 +_08140B58: .4byte sSlotMachineState _08140B5C: .4byte gUnknown_8464926 _08140B60: .4byte gUnknown_84648BD _08140B64: @@ -2098,7 +1437,7 @@ _08140B8E: cmp r3, 0 beq _08140BB0 _08140B92: - ldr r0, _08140BD4 @ =gUnknown_203F3A0 + ldr r0, _08140BD4 @ =sSlotMachineState ldr r2, [r0] adds r0, r2, 0 adds r0, 0x3C @@ -2134,34 +1473,34 @@ _08140BB6: pop {r1} bx r1 .align 2, 0 -_08140BD4: .4byte gUnknown_203F3A0 +_08140BD4: .4byte sSlotMachineState _08140BD8: .4byte gUnknown_8464966 thumb_func_end sub_8140A80 thumb_func_start sub_8140BDC sub_8140BDC: @ 8140BDC - ldr r0, _08140BE8 @ =gUnknown_203F3A0 + ldr r0, _08140BE8 @ =sSlotMachineState ldr r0, [r0] adds r0, 0x50 ldrh r0, [r0] bx lr .align 2, 0 -_08140BE8: .4byte gUnknown_203F3A0 +_08140BE8: .4byte sSlotMachineState thumb_func_end sub_8140BDC thumb_func_start sub_8140BEC sub_8140BEC: @ 8140BEC - ldr r0, _08140BF4 @ =gUnknown_203F3A0 + ldr r0, _08140BF4 @ =sSlotMachineState ldr r0, [r0] ldrb r0, [r0, 0xE] bx lr .align 2, 0 -_08140BF4: .4byte gUnknown_203F3A0 +_08140BF4: .4byte sSlotMachineState thumb_func_end sub_8140BEC thumb_func_start sub_8140BF8 sub_8140BF8: @ 8140BF8 - ldr r1, _08140C08 @ =gUnknown_203F3A0 + ldr r1, _08140C08 @ =sSlotMachineState ldr r1, [r1] lsls r0, 2 adds r1, 0x3C @@ -2169,7 +1508,7 @@ sub_8140BF8: @ 8140BF8 ldr r0, [r1] bx lr .align 2, 0 -_08140C08: .4byte gUnknown_203F3A0 +_08140C08: .4byte sSlotMachineState thumb_func_end sub_8140BF8 thumb_func_start sub_8140C0C diff --git a/src/slot_machine.c b/src/slot_machine.c index 5a69512c5..d4d0ab90d 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -8,6 +8,7 @@ #include "quest_log.h" #include "overworld.h" #include "slot_machine.h" +#include "menu.h" #include "constants/songs.h" struct SlotMachineState @@ -16,33 +17,33 @@ struct SlotMachineState u16 machineidx; u16 field_06; u8 filler_08[2]; - u16 field_0A; + u16 slotRewardClass; u8 filler_0C[2]; u16 bet; u8 field_10; u8 field_11; TaskFunc field_14[3]; - u16 field_20[3]; - u16 field_26[3]; - u16 field_2C[3]; + s16 field_20[3]; + s16 field_26[3]; + s16 field_2C[3]; u8 filler_32[0x1E]; - u16 field_50; + u16 payout; }; -EWRAM_DATA struct SlotMachineState * gUnknown_203F3A0 = NULL; +EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL; void sub_813F84C(struct SlotMachineState * ptr); void sub_813F898(void); void sub_813F92C(void); void sub_813F94C(void); -void sub_813F964(u8 taskId); -void sub_813FBC0(u8 taskId); -void sub_813FC2C(u8 taskId); -void sub_813FCAC(u8 taskId); -void sub_813FD84(u8 taskId); -void sub_813FE1C(u8 taskId); -void sub_813FFD8(u8 taskId); -void sub_8140030(TaskFunc taskFunc); +void MainTask_SlotsGameLoop(u8 taskId); +void MainTask_NoCoinsGameOver(u8 taskId); +void MainTask_ShowHelp(u8 taskId); +void MainTask_ConfirmExitGame(u8 taskId); +void MainTask_DarnNoPayout(u8 taskId); +void MainTask_WinHandlePayout(u8 taskId); +void MainTask_ExitSlots(u8 taskId); +static void SetMainTask(TaskFunc taskFunc); void sub_8140060(u8 taskId); void sub_8140148(void); void sub_814016C(u16, u16); @@ -50,6 +51,7 @@ bool32 sub_81401A0(u16); void sub_81409B4(void); void sub_8140A70(void); u16 sub_8140A80(void); +void sub_8140D7C(s16 *, s16 *); bool32 sub_814104C(void); void sub_8141094(void); void sub_8141148(u16 a0, u8 a1); @@ -59,16 +61,16 @@ void sub_8141C30(u8, u8); void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) { ResetTasks(); - gUnknown_203F3A0 = Alloc(sizeof(*gUnknown_203F3A0)); - if (gUnknown_203F3A0 == NULL) + sSlotMachineState = Alloc(sizeof(*sSlotMachineState)); + if (sSlotMachineState == NULL) SetMainCallback2(savedCallback); else { if (machineIdx > 5) machineIdx = 0; - gUnknown_203F3A0->machineidx = machineIdx; - gUnknown_203F3A0->savedCallback = savedCallback; - sub_813F84C(gUnknown_203F3A0); + sSlotMachineState->machineidx = machineIdx; + sSlotMachineState->savedCallback = savedCallback; + sub_813F84C(sSlotMachineState); SetMainCallback2(sub_813F898); } } @@ -79,14 +81,14 @@ void sub_813F84C(struct SlotMachineState * ptr) ptr->field_06 = 0; ptr->bet = 0; - ptr->field_50 = 0; + ptr->payout = 0; // for whatever reason, the loop does not use the ptr param for (i = 0; i < 3; i++) { - gUnknown_203F3A0->field_14[i] = NULL; - gUnknown_203F3A0->field_20[i] = 0; - gUnknown_203F3A0->field_26[i] = 0; - gUnknown_203F3A0->field_2C[i] = 21; + sSlotMachineState->field_14[i] = NULL; + sSlotMachineState->field_20[i] = 0; + sSlotMachineState->field_26[i] = 0; + sSlotMachineState->field_2C[i] = 21; } } @@ -101,7 +103,7 @@ void sub_813F898(void) case 0: if (sub_814104C()) { - SetMainCallback2(gUnknown_203F3A0->savedCallback); + SetMainCallback2(sSlotMachineState->savedCallback); sub_813F92C(); } else @@ -111,10 +113,10 @@ void sub_813F898(void) } break; case 1: - if (sub_8141180(0) == 0) + if (!sub_8141180(0)) { - gUnknown_203F3A0->field_10 = CreateTask(sub_813F964, 0); - gUnknown_203F3A0->field_11 = CreateTask(sub_8140060, 1); + sSlotMachineState->field_10 = CreateTask(MainTask_SlotsGameLoop, 0); + sSlotMachineState->field_11 = CreateTask(sub_8140060, 1); SetMainCallback2(sub_813F94C); } break; @@ -124,10 +126,10 @@ void sub_813F898(void) void sub_813F92C(void) { sub_8141094(); - if (gUnknown_203F3A0 != NULL) + if (sSlotMachineState != NULL) { - Free(gUnknown_203F3A0); - gUnknown_203F3A0 = NULL; + Free(sSlotMachineState); + sSlotMachineState = NULL; } } @@ -139,7 +141,7 @@ void sub_813F94C(void) UpdatePaletteFade(); } -void sub_813F964(u8 taskId) +void MainTask_SlotsGameLoop(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -148,11 +150,11 @@ void sub_813F964(u8 taskId) case 0: if (GetCoins() == 0) { - sub_8140030(sub_813FBC0); + SetMainTask(MainTask_NoCoinsGameOver); } else if (JOY_NEW(DPAD_DOWN)) { - gUnknown_203F3A0->bet++; + sSlotMachineState->bet++; TakeCoins(1); PlaySE(SE_T_KAMI2); sub_8141148(8, 0); @@ -161,15 +163,15 @@ void sub_813F964(u8 taskId) } else if (JOY_NEW(R_BUTTON)) { - s32 toAdd = 3 - gUnknown_203F3A0->bet; + s32 toAdd = 3 - sSlotMachineState->bet; if (GetCoins() >= toAdd) { - gUnknown_203F3A0->bet = 3; + sSlotMachineState->bet = 3; TakeCoins(toAdd); } else { - gUnknown_203F3A0->bet += GetCoins(); + sSlotMachineState->bet += GetCoins(); SetCoins(0); } PlaySE(SE_T_KAMI2); @@ -177,23 +179,23 @@ void sub_813F964(u8 taskId) sub_8141148(2, 1); data[0] = 1; } - else if (JOY_NEW(A_BUTTON) && gUnknown_203F3A0->bet != 0) + else if (JOY_NEW(A_BUTTON) && sSlotMachineState->bet != 0) { data[0] = 2; } else if (JOY_NEW(B_BUTTON)) { - sub_8140030(sub_813FCAC); + SetMainTask(MainTask_ConfirmExitGame); } else if (JOY_NEW(DPAD_RIGHT)) { - sub_8140030(sub_813FC2C); + SetMainTask(MainTask_ShowHelp); } break; case 1: - if (sub_8141180(0) == 0 && sub_8141180(1) == 0) + if (!sub_8141180(0) && !sub_8141180(1)) { - if (gUnknown_203F3A0->bet == 3 || GetCoins() == 0) + if (sSlotMachineState->bet == 3 || GetCoins() == 0) data[0] = 2; else data[0] = 0; @@ -203,39 +205,39 @@ void sub_813F964(u8 taskId) sub_811539C(); sub_81409B4(); sub_8140148(); - gUnknown_203F3A0->field_06 = 0; + sSlotMachineState->field_06 = 0; sub_8141148(3, 0); data[0] = 3; break; case 3: - if (sub_8141180(0) == 0) + if (!sub_8141180(0)) { if (JOY_NEW(A_BUTTON)) { PlaySE(SE_JYUNI); - sub_814016C(gUnknown_203F3A0->field_06, gUnknown_203F3A0->field_06); - sub_8141C30(gUnknown_203F3A0->field_06, 0); + sub_814016C(sSlotMachineState->field_06, sSlotMachineState->field_06); + sub_8141C30(sSlotMachineState->field_06, 0); data[0] = 4; } } break; case 4: - if (sub_81401A0(gUnknown_203F3A0->field_06) == 0 && sub_8141180(0) == 0) + if (sub_81401A0(sSlotMachineState->field_06) == 0 && !sub_8141180(0)) { - gUnknown_203F3A0->field_06++; - if (gUnknown_203F3A0->field_06 >= 3) + sSlotMachineState->field_06++; + if (sSlotMachineState->field_06 >= 3) { - gUnknown_203F3A0->field_0A = sub_8140A80(); - gUnknown_203F3A0->bet = 0; - gUnknown_203F3A0->field_06 = 0; - if (gUnknown_203F3A0->field_0A == 0) - sub_8140030(sub_813FD84); + sSlotMachineState->slotRewardClass = sub_8140A80(); + sSlotMachineState->bet = 0; + sSlotMachineState->field_06 = 0; + if (sSlotMachineState->slotRewardClass == 0) + SetMainTask(MainTask_DarnNoPayout); else { - if (gUnknown_203F3A0->field_0A == 6) + if (sSlotMachineState->slotRewardClass == 6) IncrementGameStat(GAME_STAT_SLOT_JACKPOTS); sub_8140A70(); - sub_8140030(sub_813FE1C); + SetMainTask(MainTask_WinHandlePayout); } } else @@ -245,7 +247,7 @@ void sub_813F964(u8 taskId) } } -void sub_813FBC0(u8 taskId) +void MainTask_NoCoinsGameOver(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -256,12 +258,242 @@ void sub_813FBC0(u8 taskId) data[0]++; break; case 1: - if (sub_8141180(0) == 0) + if (!sub_8141180(0)) data[0]++; break; case 2: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) - sub_8140030(sub_813FFD8); + SetMainTask(MainTask_ExitSlots); break; } } + +void MainTask_ShowHelp(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + sub_8141148(14, 0); + data[0]++; + break; + case 1: + if (!sub_8141180(0)) + data[0]++; + break; + case 2: + if (JOY_NEW(DPAD_LEFT)) + { + sub_8141148(15, 0); + data[0]++; + } + break; + case 3: + if (!sub_8141180(0)) + SetMainTask(MainTask_SlotsGameLoop); + break; + } +} + +void MainTask_ConfirmExitGame(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + sub_8141148(10, 0); + data[0]++; + break; + case 1: + if (!sub_8141180(0)) + data[0]++; + break; + case 2: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + GiveCoins(sSlotMachineState->bet); + sub_8141148(8, 0); + data[0] = 3; + break; + case 1: + case -1: + sub_8141148(11, 0); + data[0] = 4; + break; + } + break; + case 3: + if (!sub_8141180(0)) + SetMainTask(MainTask_ExitSlots); + break; + case 4: + if (!sub_8141180(0)) + SetMainTask(MainTask_SlotsGameLoop); + break; + } +} + +void MainTask_DarnNoPayout(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + sub_8141148(6, 0); + data[1] = 0; + data[0]++; + break; + case 1: + data[1]++; + if (data[1] > 60) + { + sub_8141148(7, 0); + sub_8141148(2, 1); + sub_8141148(13, 2); + data[0]++; + } + break; + case 2: + if (!sub_8141180(0) && !sub_8141180(1) && !sub_8141180(2)) + SetMainTask(MainTask_SlotsGameLoop); + break; + } +} + +void MainTask_WinHandlePayout(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + if (sSlotMachineState->slotRewardClass == 5 || sSlotMachineState->slotRewardClass == 6) + PlayFanfare(MUS_ME_B_BIG); + else + PlayFanfare(MUS_ME_B_SMALL); + sub_8141148(8, 0); + sub_8141148(4, 1); + data[1] = 8; + data[0]++; + break; + case 1: + data[1]++; + if (data[1] > 120) + { + data[1] = 8; + if (JOY_HELD(A_BUTTON)) + data[1] = 2; + data[0]++; + } + break; + case 2: + if (!sub_8141180(0)) + { + if (IsFanfareTaskInactive() && JOY_NEW(START_BUTTON)) + { + GiveCoins(sSlotMachineState->payout); + sSlotMachineState->payout = 0; + } + else + { + data[1]--; + if (data[1] == 0) + { + if (IsFanfareTaskInactive()) + PlaySE(SE_PIN); + if (sSlotMachineState->payout != 0) + { + GiveCoins(1); + sSlotMachineState->payout--; + } + data[1] = 8; + if (JOY_HELD(A_BUTTON)) + data[1] = 2; + } + } + sub_8141148(8, 0); + if (sSlotMachineState->payout == 0) + data[0]++; + } + break; + case 3: + if (IsFanfareTaskInactive() && !sub_8141180(0)) + { + sub_8141148(5, 0); + data[0]++; + } + break; + case 4: + if (!sub_8141180(0)) + { + sub_8141148(2, 0); + sub_8141148(13, 1); + data[0]++; + } + break; + case 5: + if (!sub_8141180(0) && !sub_8141180(1)) + SetMainTask(MainTask_SlotsGameLoop); + break; + } +} + +void MainTask_ExitSlots(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + sub_8141148(1, 0); + data[0]++; + break; + case 1: + if (!sub_8141180(0)) + { + SetMainCallback2(sSlotMachineState->savedCallback); + sub_813F92C(); + } + break; + } +} + +static void SetMainTask(TaskFunc taskFunc) +{ + gTasks[sSlotMachineState->field_10].func = taskFunc; + gTasks[sSlotMachineState->field_10].data[0] = 0; +} + +void sub_8140060(u8 taskId) +{ + // taskId is never used + + s32 i; + + for (i = 0; i < 3; i++) + { + if (sSlotMachineState->field_14[i] != NULL || sSlotMachineState->field_26[i] != 0) + { + if (sSlotMachineState->field_26[i] != 0 || sSlotMachineState->field_20[i] != sSlotMachineState->field_2C[i]) + { + sSlotMachineState->field_26[i]++; + if (sSlotMachineState->field_26[i] > 2) + { + sSlotMachineState->field_26[i] = 0; + sSlotMachineState->field_20[i]--; + if (sSlotMachineState->field_20[i] < 0) + sSlotMachineState->field_20[i] = 20; + } + if (sSlotMachineState->field_20[i] != sSlotMachineState->field_2C[i]) + continue; + } + sSlotMachineState->field_2C[i] = 21; + sSlotMachineState->field_14[i] = NULL; + } + } + sub_8140D7C(sSlotMachineState->field_20, sSlotMachineState->field_26); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index a5151ebc0..fa2499ace 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1589,8 +1589,8 @@ gUnknown_203F38C: @ 203F38C gUnknown_203F39C: @ 203F39C .space 0x4 -gUnknown_203F3A0: @ 203F3A0 - .space 0x4 + .align 2 + .include "src/slot_machine.o" gUnknown_203F3A4: @ 203F3A4 .space 0x4 From ce20a69eec5d61ea0e1ef8f5add21147bbce5b81 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 21 May 2019 08:45:03 -0400 Subject: [PATCH 03/38] slot_machine through sub_81401B4 --- asm/slot_machine.s | 102 --------------------------------------------- src/slot_machine.c | 62 +++++++++++++++++++++++---- 2 files changed, 54 insertions(+), 110 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index a543a18fe..0a6d0cf10 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,108 +5,6 @@ .text - thumb_func_start sub_8140148 -sub_8140148: @ 8140148 - push {r4,lr} - movs r2, 0 - ldr r4, _08140168 @ =sSlotMachineState - movs r3, 0x1 -_08140150: - ldr r0, [r4] - lsls r1, r2, 2 - adds r0, 0x14 - adds r0, r1 - str r3, [r0] - adds r2, 0x1 - cmp r2, 0x2 - ble _08140150 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08140168: .4byte sSlotMachineState - thumb_func_end sub_8140148 - - thumb_func_start sub_814016C -sub_814016C: @ 814016C - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - adds r2, r1, 0 - cmp r1, 0x1 - beq _08140192 - cmp r1, 0x1 - bgt _08140186 - cmp r1, 0 - beq _0814018C - b _0814019C -_08140186: - cmp r2, 0x2 - beq _08140198 - b _0814019C -_0814018C: - bl sub_81401F0 - b _0814019C -_08140192: - bl sub_81403BC - b _0814019C -_08140198: - bl sub_81404B8 -_0814019C: - pop {r0} - bx r0 - thumb_func_end sub_814016C - - thumb_func_start sub_81401A0 -sub_81401A0: @ 81401A0 - lsls r0, 16 - ldr r1, _081401B0 @ =sSlotMachineState - ldr r1, [r1] - lsrs r0, 14 - adds r1, 0x14 - adds r1, r0 - ldr r0, [r1] - bx lr - .align 2, 0 -_081401B0: .4byte sSlotMachineState - thumb_func_end sub_81401A0 - - thumb_func_start sub_81401B4 -sub_81401B4: @ 81401B4 - push {lr} - lsls r0, 16 - ldr r1, _081401E8 @ =sSlotMachineState - ldr r2, [r1] - lsrs r0, 15 - adds r1, r2, 0 - adds r1, 0x20 - adds r1, r0 - ldrh r1, [r1] - adds r2, 0x26 - adds r2, r0 - movs r3, 0 - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _081401E0 - lsls r0, r1, 16 - ldr r1, _081401EC @ =0xffff0000 - adds r0, r1 - lsrs r1, r0, 16 - cmp r0, 0 - bge _081401E0 - movs r1, 0x14 -_081401E0: - lsls r0, r1, 16 - asrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_081401E8: .4byte sSlotMachineState -_081401EC: .4byte 0xffff0000 - thumb_func_end sub_81401B4 - thumb_func_start sub_81401F0 sub_81401F0: @ 81401F0 push {r4-r7,lr} diff --git a/src/slot_machine.c b/src/slot_machine.c index d4d0ab90d..7293b6444 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -22,7 +22,7 @@ struct SlotMachineState u16 bet; u8 field_10; u8 field_11; - TaskFunc field_14[3]; + bool32 field_14[3]; s16 field_20[3]; s16 field_26[3]; s16 field_2C[3]; @@ -46,7 +46,10 @@ void MainTask_ExitSlots(u8 taskId); static void SetMainTask(TaskFunc taskFunc); void sub_8140060(u8 taskId); void sub_8140148(void); -void sub_814016C(u16, u16); +void sub_814016C(u16 whichPosition, u16 whichReel); +void sub_81401F0(u16 whichPosition); +void sub_81403BC(u16 whichPosition); +void sub_81404B8(u16 whichPosition); bool32 sub_81401A0(u16); void sub_81409B4(void); void sub_8140A70(void); @@ -85,10 +88,10 @@ void sub_813F84C(struct SlotMachineState * ptr) // for whatever reason, the loop does not use the ptr param for (i = 0; i < 3; i++) { - sSlotMachineState->field_14[i] = NULL; - sSlotMachineState->field_20[i] = 0; - sSlotMachineState->field_26[i] = 0; - sSlotMachineState->field_2C[i] = 21; + sSlotMachineState->field_14[i] = FALSE; + sSlotMachineState->field_20[i] = 0; + sSlotMachineState->field_26[i] = 0; + sSlotMachineState->field_2C[i] = 21; } } @@ -476,7 +479,7 @@ void sub_8140060(u8 taskId) for (i = 0; i < 3; i++) { - if (sSlotMachineState->field_14[i] != NULL || sSlotMachineState->field_26[i] != 0) + if (sSlotMachineState->field_14[i] || sSlotMachineState->field_26[i] != 0) { if (sSlotMachineState->field_26[i] != 0 || sSlotMachineState->field_20[i] != sSlotMachineState->field_2C[i]) { @@ -492,8 +495,51 @@ void sub_8140060(u8 taskId) continue; } sSlotMachineState->field_2C[i] = 21; - sSlotMachineState->field_14[i] = NULL; + sSlotMachineState->field_14[i] = FALSE; } } sub_8140D7C(sSlotMachineState->field_20, sSlotMachineState->field_26); } + +void sub_8140148(void) +{ + s32 i; + + for (i = 0; i < 3; i++) + { + sSlotMachineState->field_14[i] = TRUE; + } +} + +void sub_814016C(u16 whichPosition, u16 whichReel) +{ + switch (whichReel) + { + case 0: + sub_81401F0(whichPosition); + break; + case 1: + sub_81403BC(whichPosition); + break; + case 2: + sub_81404B8(whichPosition); + break; + } +} + +bool32 sub_81401A0(u16 whichReel) +{ + return sSlotMachineState->field_14[whichReel]; +} + +s16 sub_81401B4(u16 whichReel) +{ + s16 position = sSlotMachineState->field_20[whichReel]; + if (sSlotMachineState->field_26[whichReel] != 0) + { + position--; + if (position < 0) + position = 20; + } + return position; +} From aafeac8fcf4162d83d8fa2d9f8738c602ef2aa03 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 21 May 2019 12:31:54 -0400 Subject: [PATCH 04/38] Dump slot machine data --- data/slot_machine.s | 358 +++++++++++++++++++++++--- graphics/slot_machine/unk_8464974.pal | 19 ++ graphics/slot_machine/unk_8464994.pal | 19 ++ graphics/slot_machine/unk_84649b4.pal | 19 ++ graphics/slot_machine/unk_84649d4.pal | 19 ++ graphics/slot_machine/unk_84649f4.pal | 19 ++ graphics/slot_machine/unk_8464a14.png | Bin 0 -> 1234 bytes graphics/slot_machine/unk_846504c.pal | 19 ++ graphics/slot_machine/unk_846506c.png | Bin 0 -> 909 bytes graphics/slot_machine/unk_8465524.pal | 19 ++ graphics/slot_machine/unk_8465544.png | Bin 0 -> 215 bytes graphics/slot_machine/unk_8465930.pal | 19 ++ graphics/slot_machine/unk_8465950.pal | 19 ++ graphics/slot_machine/unk_8465970.pal | 19 ++ graphics/slot_machine/unk_8465990.pal | 19 ++ graphics/slot_machine/unk_84659b0.pal | 19 ++ graphics/slot_machine/unk_84659d0.png | Bin 0 -> 1736 bytes graphics/slot_machine/unk_84661d4.bin | Bin 0 -> 1280 bytes graphics/slot_machine/unk_84664bc.pal | 19 ++ graphics/slot_machine/unk_84664dc.pal | 19 ++ graphics/slot_machine/unk_84664fc.pal | 19 ++ graphics/slot_machine/unk_846651c.pal | 19 ++ graphics/slot_machine/unk_846653c.png | Bin 0 -> 229 bytes graphics/slot_machine/unk_84665c0.pal | 19 ++ graphics/slot_machine/unk_84665e0.pal | 19 ++ graphics/slot_machine/unk_8466600.pal | 19 ++ graphics/slot_machine/unk_8466620.png | Bin 0 -> 772 bytes graphics/slot_machine/unk_8466998.bin | Bin 0 -> 1280 bytes graphics_file_rules.mk | 7 + src/slot_machine.c | 67 ++++- 30 files changed, 752 insertions(+), 41 deletions(-) create mode 100644 graphics/slot_machine/unk_8464974.pal create mode 100644 graphics/slot_machine/unk_8464994.pal create mode 100644 graphics/slot_machine/unk_84649b4.pal create mode 100644 graphics/slot_machine/unk_84649d4.pal create mode 100644 graphics/slot_machine/unk_84649f4.pal create mode 100644 graphics/slot_machine/unk_8464a14.png create mode 100644 graphics/slot_machine/unk_846504c.pal create mode 100644 graphics/slot_machine/unk_846506c.png create mode 100644 graphics/slot_machine/unk_8465524.pal create mode 100644 graphics/slot_machine/unk_8465544.png create mode 100644 graphics/slot_machine/unk_8465930.pal create mode 100644 graphics/slot_machine/unk_8465950.pal create mode 100644 graphics/slot_machine/unk_8465970.pal create mode 100644 graphics/slot_machine/unk_8465990.pal create mode 100644 graphics/slot_machine/unk_84659b0.pal create mode 100644 graphics/slot_machine/unk_84659d0.png create mode 100644 graphics/slot_machine/unk_84661d4.bin create mode 100644 graphics/slot_machine/unk_84664bc.pal create mode 100644 graphics/slot_machine/unk_84664dc.pal create mode 100644 graphics/slot_machine/unk_84664fc.pal create mode 100644 graphics/slot_machine/unk_846651c.pal create mode 100644 graphics/slot_machine/unk_846653c.png create mode 100644 graphics/slot_machine/unk_84665c0.pal create mode 100644 graphics/slot_machine/unk_84665e0.pal create mode 100644 graphics/slot_machine/unk_8466600.pal create mode 100644 graphics/slot_machine/unk_8466620.png create mode 100644 graphics/slot_machine/unk_8466998.bin diff --git a/data/slot_machine.s b/data/slot_machine.s index dac396602..a85e26b75 100644 --- a/data/slot_machine.s +++ b/data/slot_machine.s @@ -1,94 +1,390 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .section .rodata .align 2 gUnknown_8464890:: @ 8464890 - .incbin "baserom.gba", 0x464890, 0x1E + .byte 0x00, 0x03 + .byte 0x00, 0x06 + .byte 0x03, 0x06 + .byte 0x01, 0x04 + .byte 0x01, 0x07 + .byte 0x04, 0x07 + .byte 0x02, 0x05 + .byte 0x02, 0x08 + .byte 0x05, 0x08 + .byte 0x00, 0x04 + .byte 0x00, 0x08 + .byte 0x04, 0x08 + .byte 0x02, 0x04 + .byte 0x02, 0x06 + .byte 0x04, 0x06 gUnknown_84648AE:: @ 84648AE - .incbin "baserom.gba", 0x4648AE, 0xF + .byte 0x00, 0x03, 0x06 + .byte 0x01, 0x04, 0x07 + .byte 0x02, 0x05, 0x08 + .byte 0x00, 0x04, 0x08 + .byte 0x02, 0x04, 0x06 gUnknown_84648BD:: @ 84648BD - .incbin "baserom.gba", 0x4648BD, 0x15 + .byte 0x00, 0x04, 0x08, 0x03 + .byte 0x00, 0x03, 0x06, 0x02 + .byte 0x01, 0x04, 0x07, 0x01 + .byte 0x02, 0x05, 0x08, 0x02 + .byte 0x02, 0x04, 0x06, 0x03 + .align 1 gUnknown_84648D2:: @ 84648D2 - .incbin "baserom.gba", 0x4648D2, 0x54 + .2byte 0x1fa1, 0x2eab, 0x3630, 0x39f3, 0x3bd4, 0x3bfc, 0x0049 + .2byte 0x1f97, 0x2ea2, 0x3627, 0x39e9, 0x3bca, 0x3bf8, 0x0049 + .2byte 0x1f91, 0x2e9b, 0x3620, 0x39e3, 0x3bc4, 0x3bf4, 0x0049 + .2byte 0x1f87, 0x2e92, 0x3617, 0x39d9, 0x3bba, 0x3bef, 0x0050 + .2byte 0x1f7f, 0x2e89, 0x360e, 0x39d1, 0x3bb2, 0x3bea, 0x0050 + .2byte 0x1fc9, 0x2efc, 0x3696, 0x3a63, 0x3c49, 0x3c8b, 0x0073 gUnknown_8464926:: @ 8464926 - .incbin "baserom.gba", 0x464926, 0x40 + .byte 0x00, 0x03, 0x04, 0x01, 0x02, 0x06, 0x02, 0x05, 0x00, 0x06, 0x03, 0x01, 0x04, 0x02, 0x06, 0x00, 0x05, 0x02, 0x01, 0x06, 0x02 + .byte 0x00, 0x05, 0x04, 0x03, 0x01, 0x05, 0x04, 0x03, 0x02, 0x05, 0x04, 0x03, 0x00, 0x05, 0x04, 0x01, 0x03, 0x06, 0x05, 0x03, 0x04 + .byte 0x00, 0x03, 0x06, 0x05, 0x02, 0x03, 0x06, 0x05, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x01 + .align 1 gUnknown_8464966:: @ 8464966 - .incbin "baserom.gba", 0x464966, 0xC4A + .2byte 0 + .2byte 2 + .2byte 6 + .2byte 8 + .2byte 15 + .2byte 100 + .2byte 300 + +gUnknown_8464974:: + .incbin "graphics/slot_machine/unk_8464974.gbapal" + +gUnknown_8464994:: + .incbin "graphics/slot_machine/unk_8464994.gbapal" + +gUnknown_84649B4:: + .incbin "graphics/slot_machine/unk_84649b4.gbapal" + +gUnknown_84649D4:: + .incbin "graphics/slot_machine/unk_84649d4.gbapal" + +gUnknown_84649F4:: + .incbin "graphics/slot_machine/unk_84649f4.gbapal" + +gUnknown_8464A14:: + .incbin "graphics/slot_machine/unk_8464a14.4bpp.lz" + +gUnknown_846504C:: + .incbin "graphics/slot_machine/unk_846504c.gbapal" + +gUnknown_846506C:: + .incbin "graphics/slot_machine/unk_846506c.4bpp.lz" + +gUnknown_8465524:: + .incbin "graphics/slot_machine/unk_8465524.gbapal" + +gUnknown_8465544:: + .incbin "graphics/slot_machine/unk_8465544.4bpp.lz" gUnknown_84655B0:: @ 84655B0 - .incbin "baserom.gba", 0x4655B0, 0x18 + obj_tiles gUnknown_8464A14, 0x0e00, 0 + obj_tiles gUnknown_846506C, 0x0c00, 1 + obj_tiles gUnknown_8465544, 0x0280, 2 gUnknown_84655C8:: @ 84655C8 - .incbin "baserom.gba", 0x4655C8, 0x40 + obj_pal gUnknown_8464974, 0 + obj_pal gUnknown_8464994, 1 + obj_pal gUnknown_84649B4, 2 + obj_pal gUnknown_84649D4, 3 + obj_pal gUnknown_84649F4, 4 + obj_pal gUnknown_846504C, 5 + obj_pal gUnknown_8465524, 6 + null_obj_pal gUnknown_8465608:: @ 8465608 - .incbin "baserom.gba", 0x465608, 0xE + .2byte 0x0002, 0x0002, 0x0000, 0x0000, 0x0002, 0x0004, 0x0003 gUnknown_8465616:: @ 8465616 - .incbin "baserom.gba", 0x465616, 0xC0 + .2byte 0x0120, 0x011f, 0x011e, 0x011d, 0x011c, 0x011b, 0x011a, 0x0119, 0x0118, 0x0117, 0x0116, 0x0115, 0x0114, 0x0113, 0x0112, 0x0111 + .2byte 0x0110, 0x010f, 0x010e, 0x010d, 0x010c, 0x010b, 0x010a, 0x0109, 0x0108, 0x0107, 0x0106, 0x0105, 0x0104, 0x0103, 0x0102, 0x0101 + .2byte 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100 + .2byte 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100 + .2byte 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, 0x0109, 0x010a, 0x010b, 0x010c, 0x010d, 0x010e, 0x010f, 0x0110 + .2byte 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, 0x0119, 0x011a, 0x011b, 0x011c, 0x011d, 0x011e, 0x011f, 0x0120 gUnknown_84656D6:: @ 84656D6 - .incbin "baserom.gba", 0x4656D6, 0x10E + .byte 0x10, 0x10, 0x10, 0x10, 0x0f, 0x0e, 0x0d, 0x0d, 0x0c, 0x0b, 0x0a, 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0b, 0x0c, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f + + .align 2 +gUnknown_8465738:: + .4byte 0x80000100, 0x00000c00 + +gUnknown_8465740:: + obj_image_anim_frame 0x00, 4 + obj_image_anim_end + +gUnknown_8465748:: + obj_image_anim_frame 0x10, 4 + obj_image_anim_end + +gUnknown_8465750:: + obj_image_anim_frame 0x20, 4 + obj_image_anim_end + +gUnknown_8465758:: + obj_image_anim_frame 0x30, 4 + obj_image_anim_end + +gUnknown_8465760:: + obj_image_anim_frame 0x40, 4 + obj_image_anim_end + +gUnknown_8465768:: + obj_image_anim_frame 0x50, 4 + obj_image_anim_end + +gUnknown_8465770:: + obj_image_anim_frame 0x60, 4 + obj_image_anim_end + +gUnknown_8465778:: + obj_image_anim_frame 0x20, 4 + obj_image_anim_end + +gUnknown_8465780:: + obj_image_anim_frame 0x30, 4 + obj_image_anim_end + +gUnknown_8465788:: + obj_image_anim_frame 0x40, 4 + obj_image_anim_end + +gUnknown_8465790:: + obj_image_anim_frame 0x50, 4 + obj_image_anim_end + +gUnknown_8465798:: + obj_image_anim_frame 0x60, 4 + obj_image_anim_end + +gUnknown_84657A0:: + .4byte gUnknown_8465740 + .4byte gUnknown_8465748 + .4byte gUnknown_8465750 + .4byte gUnknown_8465758 + .4byte gUnknown_8465760 + .4byte gUnknown_8465768 + .4byte gUnknown_8465770 + .4byte gUnknown_8465778 + .4byte gUnknown_8465780 + .4byte gUnknown_8465788 + .4byte gUnknown_8465790 + .4byte gUnknown_8465798 + +gUnknown_84657D0:: + obj_rot_scal_anim_frame 0x100, 0x100, 0, 1 + obj_rot_scal_anim_end + +gUnknown_84657E0:: @ unused + .4byte gUnknown_84657D0 gUnknown_84657E4:: @ 84657E4 - .incbin "baserom.gba", 0x4657E4, 0x98 + spr_template 0, 0, gUnknown_8465738, gUnknown_84657A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + +gUnknown_84657FC:: + .4byte 0x00008000, 0x00000400 + +gUnknown_8465804:: + obj_image_anim_frame 0x00, 4 + obj_image_anim_end + +gUnknown_846580C:: + obj_image_anim_frame 0x02, 4 + obj_image_anim_end + +gUnknown_8465814:: + obj_image_anim_frame 0x04, 4 + obj_image_anim_end + +gUnknown_846581C:: + obj_image_anim_frame 0x06, 4 + obj_image_anim_end + +gUnknown_8465824:: + obj_image_anim_frame 0x08, 4 + obj_image_anim_end + +gUnknown_846582C:: + obj_image_anim_frame 0x0a, 4 + obj_image_anim_end + +gUnknown_8465834:: + obj_image_anim_frame 0x0c, 4 + obj_image_anim_end + +gUnknown_846583C:: + obj_image_anim_frame 0x0e, 4 + obj_image_anim_end + +gUnknown_8465844:: + obj_image_anim_frame 0x10, 4 + obj_image_anim_end + +gUnknown_846584C:: + obj_image_anim_frame 0x12, 4 + obj_image_anim_end + +gUnknown_8465854:: + .4byte gUnknown_8465804 + .4byte gUnknown_846580C + .4byte gUnknown_8465814 + .4byte gUnknown_846581C + .4byte gUnknown_8465824 + .4byte gUnknown_846582C + .4byte gUnknown_8465834 + .4byte gUnknown_846583C + .4byte gUnknown_8465844 + .4byte gUnknown_846584C gUnknown_846587C:: @ 846587C - .incbin "baserom.gba", 0x46587C, 0x5C + spr_template 2, 6, gUnknown_84657FC, gUnknown_8465854, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + +gUnknown_8465894:: + .4byte 0x80000000, 0x00000400 + +gUnknown_846589C:: + obj_image_anim_frame 0, 4 + obj_image_anim_end + +gUnknown_84658A4:: + obj_image_anim_frame 0, 24 + obj_image_anim_frame 16, 24 + obj_image_anim_jump 0 + +gUnknown_84658B0:: + obj_image_anim_frame 32, 28 + obj_image_anim_frame 48, 28 + obj_image_anim_jump 0 + +gUnknown_84658BC:: + obj_image_anim_frame 64, 12 + obj_image_anim_frame 80, 12 + obj_image_anim_jump 0 + +gUnknown_84658C8:: + .4byte gUnknown_846589C + .4byte gUnknown_84658A4 + .4byte gUnknown_84658B0 + .4byte gUnknown_84658BC gUnknown_84658D8:: @ 84658D8 - .incbin "baserom.gba", 0x4658D8, 0x18 + spr_template 1, 5, gUnknown_8465894, gUnknown_84658C8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_84658F0:: @ 84658F0 - .incbin "baserom.gba", 0x4658F0, 0x40 + .4byte sub_8141198 + .4byte sub_8141460 + .4byte sub_81414AC + .4byte sub_81414EC + .4byte sub_81414FC + .4byte sub_8141518 + .4byte sub_8141558 + .4byte sub_8141568 + .4byte sub_8141578 + .4byte sub_8141584 + .4byte sub_81415C8 + .4byte sub_8141610 + .4byte sub_8141650 + .4byte sub_8141690 + .4byte sub_81416C8 + .4byte sub_8141764 gUnknown_8465930:: @ 8465930 - .incbin "baserom.gba", 0x465930, 0x20 + .incbin "graphics/slot_machine/unk_8465930.gbapal" gUnknown_8465950:: @ 8465950 - .incbin "baserom.gba", 0x465950, 0x80 + .incbin "graphics/slot_machine/unk_8465950.gbapal" + .incbin "graphics/slot_machine/unk_8465970.gbapal" + .incbin "graphics/slot_machine/unk_8465990.gbapal" + .incbin "graphics/slot_machine/unk_84659b0.gbapal" gUnknown_84659D0:: @ 84659D0 - .incbin "baserom.gba", 0x4659D0, 0x804 + .incbin "graphics/slot_machine/unk_84659d0.4bpp.lz" gUnknown_84661D4:: @ 84661D4 - .incbin "baserom.gba", 0x4661D4, 0x2E8 + .incbin "graphics/slot_machine/unk_84661d4.bin.lz" gUnknown_84664BC:: @ 84664BC - .incbin "baserom.gba", 0x4664BC, 0x20 + .incbin "graphics/slot_machine/unk_84664bc.gbapal" gUnknown_84664DC:: @ 84664DC - .incbin "baserom.gba", 0x4664DC, 0x60 + .incbin "graphics/slot_machine/unk_84664dc.gbapal" + .incbin "graphics/slot_machine/unk_84664fc.gbapal" + .incbin "graphics/slot_machine/unk_846651c.gbapal" gUnknown_846653C:: @ 846653C - .incbin "baserom.gba", 0x46653C, 0x84 + .incbin "graphics/slot_machine/unk_846653c.4bpp.lz" gUnknown_84665C0:: @ 84665C0 - .incbin "baserom.gba", 0x4665C0, 0x60 + .incbin "graphics/slot_machine/unk_84665c0.gbapal" + .incbin "graphics/slot_machine/unk_84665e0.gbapal" + .incbin "graphics/slot_machine/unk_8466600.gbapal" gUnknown_8466620:: @ 8466620 - .incbin "baserom.gba", 0x466620, 0x378 + .incbin "graphics/slot_machine/unk_8466620.4bpp.lz" gUnknown_8466998:: @ 8466998 - .incbin "baserom.gba", 0x466998, 0x178 + .incbin "graphics/slot_machine/unk_8466998.bin.lz" + .align 2 @ bg templates gUnknown_8466B10:: @ 8466B10 - .incbin "baserom.gba", 0x466B10, 0x10 + .4byte 0x000001d0 + .4byte 0x000031ff + .4byte 0x000021ea + .4byte 0x000001c5 gUnknown_8466B20:: @ 8466B20 - .incbin "baserom.gba", 0x466B20, 0xEC + window_template 0x00, 0x05, 0x0f, 0x14, 0x04, 0x0f, 0x004f + window_template 0x00, 0x00, 0x00, 0x1e, 0x02, 0x0e, 0x0013 + window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 +gUnknown_8466B38:: + .2byte 0x00a4, 0x00a5, 0x00a6, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00e7, 0x012c, 0x014c, 0x0191, 0x01b1, 0x01f6, 0x0216, 0x0217, 0x0218 + .2byte 0x0219, 0x0237, 0x0238, 0x0239 + +gUnknown_8466B60:: + .2byte 0x00e4, 0x00e5, 0x00e6, 0x00f7, 0x00f8, 0x00f9, 0x0104, 0x0105, 0x0106, 0x0107, 0x010c, 0x0111, 0x0116, 0x0117, 0x0118, 0x0119 + .2byte 0x0124, 0x0125, 0x0126, 0x0137, 0x0138, 0x0139 + +gUnknown_8466B8C:: + .2byte 0x0144, 0x0145, 0x0146, 0x0157, 0x0158, 0x0159, 0x0164, 0x0165, 0x0166, 0x0167, 0x016c, 0x0171, 0x0176, 0x0177, 0x0178, 0x0179 + .2byte 0x0184, 0x0185, 0x0186, 0x0197, 0x0198, 0x0199 + +gUnknown_8466BB8:: + .2byte 0x01a4, 0x01a5, 0x01a6, 0x01b7, 0x01b8, 0x01b9, 0x01c4, 0x01c5, 0x01c6, 0x01c7, 0x01cc, 0x01d1, 0x01d6, 0x01d7, 0x01d8, 0x01d9 + .2byte 0x01e4, 0x01e5, 0x01e6, 0x01f7, 0x01f8, 0x01f9 + +gUnknown_8466BE4:: + .2byte 0x0204, 0x0205, 0x0206, 0x0224, 0x0225, 0x0226, 0x01e7, 0x0207, 0x018c, 0x01ac, 0x0131, 0x0151, 0x00d6, 0x00f6, 0x00b7, 0x00b8 + .2byte 0x00b9, 0x00d7, 0x00d8, 0x00d9 + + .align 2 gUnknown_8466C0C:: @ 8466C0C - .incbin "baserom.gba", 0x466C0C, 0x28 + .4byte gUnknown_8466B38, 0x14 + .4byte gUnknown_8466B60, 0x16 + .4byte gUnknown_8466B8C, 0x16 + .4byte gUnknown_8466BB8, 0x16 + .4byte gUnknown_8466BE4, 0x14 gUnknown_8466C34:: @ 8466C34 - .incbin "baserom.gba", 0x466C34, 0x4 + .byte 0x02, 0x04 + .align 2 gUnknown_8466C38:: @ 8466C38 - .incbin "baserom.gba", 0x466C38, 0x8 + window_template 0x00, 0x13, 0x09, 0x06, 0x04, 0x0f, 0x009f gUnknown_8466C40:: @ 8466C40 - .incbin "baserom.gba", 0x466C40, 0x18 + .2byte 0x0229, 0x022a, 0x0249, 0x024a, 0x022e, 0x022f, 0x024e, 0x024f, 0x0233, 0x0234, 0x0253, 0x0254 diff --git a/graphics/slot_machine/unk_8464974.pal b/graphics/slot_machine/unk_8464974.pal new file mode 100644 index 000000000..6bc8bed9a --- /dev/null +++ b/graphics/slot_machine/unk_8464974.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +65 65 65 +255 246 0 +255 172 0 +246 246 255 +255 246 213 +246 213 156 +238 222 0 +98 98 98 +131 98 41 +255 106 0 +222 57 0 +213 180 0 +222 222 230 +0 0 0 +0 0 0 diff --git a/graphics/slot_machine/unk_8464994.pal b/graphics/slot_machine/unk_8464994.pal new file mode 100644 index 000000000..8dee9dd3e --- /dev/null +++ b/graphics/slot_machine/unk_8464994.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +123 255 255 +65 65 65 +246 246 255 +246 74 0 +205 65 0 +255 205 189 +222 222 230 +0 0 0 +255 238 238 +164 32 0 +205 123 24 +255 222 115 +123 82 0 +255 246 0 +230 205 0 +164 123 41 diff --git a/graphics/slot_machine/unk_84649b4.pal b/graphics/slot_machine/unk_84649b4.pal new file mode 100644 index 000000000..d54cfc65f --- /dev/null +++ b/graphics/slot_machine/unk_84649b4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 255 139 +65 65 65 +255 0 0 +255 255 255 +255 131 0 +255 205 0 +0 0 255 +0 131 255 +0 205 255 +156 238 74 +205 205 230 +222 0 0 +0 156 0 +131 131 148 +164 164 189 +180 0 0 diff --git a/graphics/slot_machine/unk_84649d4.pal b/graphics/slot_machine/unk_84649d4.pal new file mode 100644 index 000000000..d06616c5d --- /dev/null +++ b/graphics/slot_machine/unk_84649d4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 156 230 +57 65 65 +255 246 213 +246 213 123 +255 205 172 +255 172 115 +172 156 90 +246 246 255 +213 98 41 +222 222 230 +148 148 156 +238 172 255 +246 131 180 +197 74 106 +148 74 197 +205 131 255 diff --git a/graphics/slot_machine/unk_84649f4.pal b/graphics/slot_machine/unk_84649f4.pal new file mode 100644 index 000000000..ef5e9a7ae --- /dev/null +++ b/graphics/slot_machine/unk_84649f4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 230 115 +57 65 65 +106 115 115 +197 205 205 +230 238 238 +246 246 255 +164 172 172 +255 90 65 +65 90 255 +189 213 255 +255 213 189 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/slot_machine/unk_8464a14.png b/graphics/slot_machine/unk_8464a14.png new file mode 100644 index 0000000000000000000000000000000000000000..be8dfb6e8a1bc49ee6722937da9654a7e0a08fff GIT binary patch literal 1234 zcmV;@1TFiCP))obKKLVq#*0Vk!S>0NyzO)wBTK-sS)R000006aZld00001 zbW%=J06^y0W&i*LP)S5VR7i>4mrY0)ot@pVPho4<%VabyLJ!eL zL%|+O*o7W#+#x-76BvXPDmi3Nr7NK_#2mIg)q=3z(m|(6ArV$k2$VEPyQdTkyX;xm z?VEWYGiy_CE!4j{y!Ye1|L6NsQT`1<05H%*wrv3uoi8s0uiMiJMm^9eU(6j zHwOZU==l(23lRXMa3y~O|6>u6NTBoR89}O|SDA!WqQ91^yG-t=NDnJ#>5fAuIL{j?vpq%Yq+q9_mXMz0K7Nm^IXV^xV^`5kAE|trr(rWB0N|lSnQY{h9w;}jE5zFO8 z3Ko*VE|Ov?87?v%XJ;TG=sa8{XUOTZ5j@XJ667_Tp2t&g2nR}PjgIhYQGe*tY*$I` zc{MN@I3$GtOb^VT6{f_%euJ1h&1Q}3GqxZD*THP=ah=&T2`<6)=H40~g2tzCHv^d_ zH=?{8pT&)|AE+trhk;mg3Hj{$mvBb$|OM9V39an4o|9_0YT^oNeUpm6{ckaF=B1$=8FtY4!$+tI`! zgg&ESm;%1p>4TP!u-TN9hIPAKbQ}#E5g65SZ-L`1Xb6u8fTk}y! z5x@fLTptf-%fLIEK0%@1?RQna^_6r3`u?^bbb;T|S-hzsn){b-5Dw(z4z+lPk$e1?*4w_BP0eQ39jRSx>S*B{T*uK+&upU;!u wyJ=ticcQ>^LJrmBp2;-#2iFVwkKd+$0SBLhz~t=x*#H0l07*qoM6N<$f|(3NQ2+n{ literal 0 HcmV?d00001 diff --git a/graphics/slot_machine/unk_846504c.pal b/graphics/slot_machine/unk_846504c.pal new file mode 100644 index 000000000..9a5bab429 --- /dev/null +++ b/graphics/slot_machine/unk_846504c.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +238 172 0 +156 115 115 +246 205 205 +123 90 90 +222 164 164 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +222 123 32 +255 205 32 +205 90 0 diff --git a/graphics/slot_machine/unk_846506c.png b/graphics/slot_machine/unk_846506c.png new file mode 100644 index 0000000000000000000000000000000000000000..1fe951e504b122523ec543116447ef3856bd868a GIT binary patch literal 909 zcmV;819JR{P)6ds4mceeLFc60O3LvgIFqmT$$pa4nILBNJocqj)az#AD zM(r{3&R~y8kh)uGSF3G(N%LiFQ|9vzFE9VmNRnhX&F)N}iGXQx_ld>|W_M543V{6# zFkJuwP;Cu}(5qHJhq^8hD*-71tqJ5003Se_m$U*+v1#ssCBVa$9wcRlML~;HHcYVu zx{82QC`6iM5oOyBftLWRB0$u%i-5^=ewWGwFclu?`xdzK0-TG$1@K<;_x{!W@Vm@6 zQ~)g=;u;sOE-;TbIcw?fR5j~ekK>Q}`M1X>{O~#?>A%*Y@H*%Zb)eoZI!JGSuS1ey z7>#sJ{5XH!k9X`5YkZA<+^`zQ4i680)Byc2{V?o@`3`<0J4yn0R z_XADnzUjRmwUMJPenh2?J$IoVM5#=n?duZT(8^TxUYNQSrKH&+3{ck!P2GbeR`j~4 zA1nAOXx~sVU1|^dTmZK8vsSTUDn`~})OMR6R{RKR*LL+|wB?B9e&Yvx6F*=XF+YHA z>xgSyw41n4AI1fQzND?!L5D`Axe7PgG#=QX108KYMe;)c=SMi}VVAN4q)P({gC!jb zy{5yOANBz(WAxWCnWO)%jsZ+pe_iy?1mFXt7T_F#9>?BRhX5!*bgTL@R3x+G02z-M z7oFw;59MI&sskC4@~Mm9i};b5O@1`l=KZ5F?d!}1lET|ILM+yffYB3)Dut@T%kJwneIq{sw%{fV}}f|8UzfKWVEOmBrb-L zr9vGaIA*b9eM7mhmu!0#^5gBe09sY@Q7K_==cE{ypC`C*!8 zKeD8G_9M&8{@IUgciQ-I-EaLkZTuh|p8Uw#1N(7N>)Ef^k1n456n$?oh7z{?C{Ph3 zouZ$+wpvr0>v;*80-O)lm^}L79~Oi70mG6O^foE2T!O9OUIqYN5GMF>8%3Dl#|=~v j=E)BhX6r}u2|s=UN^;)z2$V4B00000NkvXXu0mjf!&#T8 literal 0 HcmV?d00001 diff --git a/graphics/slot_machine/unk_8465524.pal b/graphics/slot_machine/unk_8465524.pal new file mode 100644 index 000000000..b8cf64bae --- /dev/null +++ b/graphics/slot_machine/unk_8465524.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +98 98 90 +255 255 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 255 0 diff --git a/graphics/slot_machine/unk_8465544.png b/graphics/slot_machine/unk_8465544.png new file mode 100644 index 0000000000000000000000000000000000000000..0e3154f61bb46d4393bfa7a39b34f16cabb0c7f1 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^96-E)g&9a5&NHwEQU(D&A+A6=DJkmze;`c+_|Nb< zR_q;6A!A99UoeBivm0qZPN=7gV~EDYpoGE8!sKjt?!=fYmZ~Spv_Pbz~d)l8zKKfIBieJ_ZDUmOH a$jT-G@yGywn#{yW0} literal 0 HcmV?d00001 diff --git a/graphics/slot_machine/unk_8465930.pal b/graphics/slot_machine/unk_8465930.pal new file mode 100644 index 000000000..f2c377a3f --- /dev/null +++ b/graphics/slot_machine/unk_8465930.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +57 57 49 +230 230 230 +255 255 255 +238 172 0 +197 74 24 +205 90 0 +255 205 32 +222 123 32 +255 164 41 +57 148 255 +164 222 255 +0 49 123 +139 0 0 +98 98 90 +0 0 0 diff --git a/graphics/slot_machine/unk_8465950.pal b/graphics/slot_machine/unk_8465950.pal new file mode 100644 index 000000000..634aa770d --- /dev/null +++ b/graphics/slot_machine/unk_8465950.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 222 222 +255 255 255 +238 172 0 +255 90 0 +222 41 0 +255 90 0 +222 41 0 +255 90 0 +222 41 0 +255 90 0 +222 41 0 +255 90 0 +222 41 0 +255 205 32 +156 0 0 +0 0 0 diff --git a/graphics/slot_machine/unk_8465970.pal b/graphics/slot_machine/unk_8465970.pal new file mode 100644 index 000000000..1d932206e --- /dev/null +++ b/graphics/slot_machine/unk_8465970.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +74 74 213 +115 172 255 +115 164 74 +156 238 74 +255 90 0 +255 164 41 +255 238 32 +222 41 0 +189 189 189 +156 156 156 +123 123 123 +90 90 90 +65 65 65 +0 0 0 diff --git a/graphics/slot_machine/unk_8465990.pal b/graphics/slot_machine/unk_8465990.pal new file mode 100644 index 000000000..2c2b3d843 --- /dev/null +++ b/graphics/slot_machine/unk_8465990.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +238 172 0 +172 106 106 +222 156 156 +148 82 82 +197 131 131 +8 123 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +222 123 32 +255 205 32 +205 90 0 diff --git a/graphics/slot_machine/unk_84659b0.pal b/graphics/slot_machine/unk_84659b0.pal new file mode 100644 index 000000000..742063525 --- /dev/null +++ b/graphics/slot_machine/unk_84659b0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +222 222 222 +213 57 0 +205 90 0 +255 255 255 +238 172 0 +0 0 197 +180 65 0 +180 65 0 +0 106 0 +0 106 0 +82 123 255 +246 156 0 +246 156 0 +41 180 82 +41 180 82 +0 0 0 diff --git a/graphics/slot_machine/unk_84659d0.png b/graphics/slot_machine/unk_84659d0.png new file mode 100644 index 0000000000000000000000000000000000000000..5223d0d3fd183aa4beb285503bd718d5590b913f GIT binary patch literal 1736 zcmV;(1~>VMP)Ht_7{>W8+#f&~;GPyJi=vHuiZBGN5`-gE708GHGvrbR;KQH8@JsjLhcNs?so8o3B-ReJ0L&f0NHc(J z$q#B-0bN>B0U%>ePXVyzBnbcsOVE7;wF88#!~!tt^+sXXLxb{kyXRrpMKk06&E_8U zr_m|FB>+k}lTp8a7KVHMK0O``4#M#2V8HoDt^?;E4TlfH@Y--Vld(48vCMxQ;Hi}V zI>3unz<&<#N*-w)PVvtpqoRJZfA$Rk&HgMJ#DjyY0K_a|2@nn2!w1&@Xb)#cda9?> zDHK3JbhfwG2LR11dUpT*vx6{3vkG{5eEjl3*hXUjHBx|jL}zCPa7KV<_hSe^vj*_; zxD5el77D1IltRCpLKw%@6v!}6A#Arz3h-bG1zZc5$biiz>LFsu#Gwg0jU8Z98TGJ@ zD3|fbmC?4btE;;|TE2g8=M4kt*FEsyRK(V(J$R^2i$F&@W{y;18PM~ z`F=dn^Rc$g3ZO-Ijigxugxs|N%=KJP^u#u+0EPa|W*JbkNn8@prv7&%c~AhTYgh}{ z0!|;Z=0_hN6QJ=3Df|cl(zE4!@9J9IS3KyAKxlNc`RH*pL)+p6ns;0oS6r_u=#58D z8eNsm(SAVNVgc}=X+x+~WjYlus(_ol@uaKHAALldqisp(p9aA)Ag8??ze1!dCf@8# zy5}7^Lz|y>q84Rf0b1ivs(ht$A$BgTf|Yr2^GVW?a)$Op2UYkQo%R`^!w`g2_&m4~ zpv0P)$g8p_BP=-F{}X`yFbF<*2LLR<$l7^u2|(P`V*ozGR$&1~fglC-Wk72MfDGcp zruN8)Aec0TwZJKm@lwdOfEZPl~u6twMjHz&N zfnQ39wGF_F`qr&CMGBaNu`qy?HK;8q)D56sqyPX_(^Os|37QI6I-&FCJeBP z*f%R7-3X{l3#czn0k2NcIVq+ah1(UVunCr6Y~61pon-z8;&;SvKOqhey}Jn6X&6AG zV~S%5P^4D?!{^VR|BCqKJH+m;0o;=(4#2N>w4+!J^jV>9qk_7TfZi5>wP`E60$8UY zNietta0&#lX)FO68x$nT33lluZXjV=Aq2>o;42tT$wH`=$kL)7=eGhX=n5|8S zvbj=rlI(3o!9xV~y_c9U03m3HUIobH3P~s{I6OSKe*L@Swcm zoAqfF2$5$<6=1w%l>}fD6gvfgBee&{LV?dc6wM2q*eIG*}@p0v<3KP;uC<9(DucF-5|M|skv7& zJM~Mca;ADQDZEXgYz1h1PBk|Z!@RQT+`ckx29#=$@=4X9)ezgdCS+a#W7UVd*MAE)4kTEdx44r|1&R zX0urcMNkYS;B$#67Db{^?RP;Zba+Xfzo_p&*?=3I#DWJCb#%3Ve+S_vC-W^fRA;*W zBu?Qp&fslMa_(>zH;8(uhXzQ4t5oLRr?>|M7SotMc0t zzMf12$^qdslzU&*b)=_U`)$f^PxuD>@*D%|;2SX1d3+stDb=l?Y*&6co`~Uy{yEP0) zy(G>?G5kNPaIae7{}N5hDgT$;`_Eul-Oa#|loSP2eAQ$_Hjpatba4#fnCaTPm$$`$ zr}e(hzIjYx8z$^tt&_@-k}9CCYkiNw)7jCLqpM`ktI7A|Lz=yVTG`%t$;Lz#2eRZX zHSy!P?-bI2?fuYY@k+9gC+)@#gNPcxV)kymn{U`A XoUm?8Z<(VGw41@x)z4*}Q$iB}NJ&)7 literal 0 HcmV?d00001 diff --git a/graphics/slot_machine/unk_84665c0.pal b/graphics/slot_machine/unk_84665c0.pal new file mode 100644 index 000000000..362860109 --- /dev/null +++ b/graphics/slot_machine/unk_84665c0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +230 189 230 +65 65 65 +255 255 255 +139 238 255 +172 255 255 +106 205 222 +246 222 123 +255 230 180 +213 189 90 +222 49 0 +255 238 0 +246 205 115 +213 156 41 +246 49 0 +222 255 205 +255 230 230 diff --git a/graphics/slot_machine/unk_84665e0.pal b/graphics/slot_machine/unk_84665e0.pal new file mode 100644 index 000000000..758d58497 --- /dev/null +++ b/graphics/slot_machine/unk_84665e0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +197 255 255 +65 65 65 +246 246 246 +255 82 82 +49 180 255 +65 213 255 +255 156 82 +0 156 0 +156 238 74 +164 164 189 +255 238 0 +255 246 164 +197 164 57 +238 222 0 +222 255 205 +255 230 230 diff --git a/graphics/slot_machine/unk_8466600.pal b/graphics/slot_machine/unk_8466600.pal new file mode 100644 index 000000000..bf0a84def --- /dev/null +++ b/graphics/slot_machine/unk_8466600.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +197 255 255 +65 65 65 +246 246 246 +123 131 131 +197 205 205 +255 139 115 +90 123 255 +213 131 255 +148 74 197 +189 90 65 +255 180 172 +246 230 106 +246 74 0 +197 255 255 +222 255 205 +255 230 230 diff --git a/graphics/slot_machine/unk_8466620.png b/graphics/slot_machine/unk_8466620.png new file mode 100644 index 0000000000000000000000000000000000000000..73b5d10463c26b8cff3f7477f54be99188dddec0 GIT binary patch literal 772 zcmV+f1N;1mP)_u7tK-%_*i4Zd-5e>vaz4i%|NA z&yS+BI$*1+ZZK5>f*Ak+9Xdvif4BpJoi$$TQG?#x2#9yUf$B&6U*LY^DxorqB&nJ% zI>7yq*B~@kxUV?M2?nw|U=WI8+b8Qj_QBbfF9kQeU~Pwk6l}SjH;QHg77C4FRGrE3 zmW^8At|)GH3~K#RpD0@_fm*ZLJsy9@@hkCKS)A$d_wk9cQ-lVT)quK^O|G~ut{DjQ zi(3;3RRf?o{A545z*!-M34VPmZ+8}|L9kDj)~8+2!1%KG`I(=`U{aP}f=)#HNkDRf zpJD;=Nm-UatpnOt)>w6c6#PiVAw4b2ua1$C{ig!jWLqFsrzke3sT0JiLvk}z6*wH| zT6GD}_4rr{6owFn)ExP3xhx`_YkeGX11>_)iE57g4rm*1A3s|Zh3kV0J@*#m!_f!u z{|b^xbt>aJ<$j^}n$I|z=7;b7Ou4OE5E3CV+hiMgGhqUW@o~7Udg25*0>36Cf`FO) z1yt3>x|Po2;9HZ^iox8^GG~K&V5f?{ylCDG0{;Lv91=(2ZnDS#0000n literal 0 HcmV?d00001 diff --git a/graphics/slot_machine/unk_8466998.bin b/graphics/slot_machine/unk_8466998.bin new file mode 100644 index 0000000000000000000000000000000000000000..d7dc278da3e76852ba260dd18278c934ab15c8f5 GIT binary patch literal 1280 zcmcJP$8N(g5JZ)pC{5`~x8rmxz0m2-AI-rB9dwwZkNo7Aloo~0z^-t1fR!)-H^Y5LP&(A&%2FzjU{#1Sg IhVXv;02X~gS^xk5 literal 0 HcmV?d00001 diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 145dc0810..27931e87e 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -23,6 +23,7 @@ PSSGFXDIR := graphics/pokemon_storage EVENTOBJGFXDIR := graphics/event_objects MISCGFXDIR := graphics/misc TEXTWINDOWGFXDIR := graphics/text_window +SLOTMACHINEGFXDIR := graphics/slot_machine types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark contest_types := cool beauty cute smart tough @@ -483,3 +484,9 @@ $(MISCGFXDIR)/unk_846B008.4bpp: %.4bpp: %.png $(TEXTWINDOWGFXDIR)/unk_8470B0C.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 19 + +$(SLOTMACHINEGFXDIR)/unk_8466620.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 66 + +$(SLOTMACHINEGFXDIR)/unk_84659d0.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 138 diff --git a/src/slot_machine.c b/src/slot_machine.c index 7293b6444..3a19fdbd5 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -16,7 +16,7 @@ struct SlotMachineState MainCallback savedCallback; u16 machineidx; u16 field_06; - u8 filler_08[2]; + u16 field_08; u16 slotRewardClass; u8 filler_0C[2]; u16 bet; @@ -46,11 +46,12 @@ void MainTask_ExitSlots(u8 taskId); static void SetMainTask(TaskFunc taskFunc); void sub_8140060(u8 taskId); void sub_8140148(void); -void sub_814016C(u16 whichPosition, u16 whichReel); -void sub_81401F0(u16 whichPosition); -void sub_81403BC(u16 whichPosition); -void sub_81404B8(u16 whichPosition); +void sub_814016C(u16 whichReel, u16 whichReel2); bool32 sub_81401A0(u16); +void sub_81401F0(u16 whichReel); +void sub_81403BC(u16 whichReel); +void sub_81404B8(u16 whichReel); +bool32 sub_81408F4(u32 a0, u32 a1); void sub_81409B4(void); void sub_8140A70(void); u16 sub_8140A80(void); @@ -61,6 +62,8 @@ void sub_8141148(u16 a0, u8 a1); bool32 sub_8141180(u8 a0); void sub_8141C30(u8, u8); +extern const u8 gUnknown_8464926[][21]; + void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) { ResetTasks(); @@ -511,18 +514,18 @@ void sub_8140148(void) } } -void sub_814016C(u16 whichPosition, u16 whichReel) +void sub_814016C(u16 whichReel, u16 whichReel2) { - switch (whichReel) + switch (whichReel2) { case 0: - sub_81401F0(whichPosition); + sub_81401F0(whichReel); break; case 1: - sub_81403BC(whichPosition); + sub_81403BC(whichReel); break; case 2: - sub_81404B8(whichPosition); + sub_81404B8(whichReel); break; } } @@ -543,3 +546,47 @@ s16 sub_81401B4(u16 whichReel) } return position; } + +/* +void sub_81401F0(u16 whichReel) +{ + s32 i; + s16 r2; + s16 r6; + s16 sp0C = sub_81401B4(whichReel); + u32 r8 = 0; + u32 sp08; + u32 r10; + u8 sp0[5]; + + if (sSlotMachineState->field_08 == 0 && whichReel == 0) + { + sp08 = 0; + r10 = 0; + for (i = 0; i < 5; i++) + { + r6 = 0; + r2 = sp0C - i + 1; + for (; r6 < 3; r6++) + { + if (r2 >= 21) + r2 = 0; + if (sub_81408F4(1, gUnknown_8464926[r10][r2])) + break; + } + if (r6 == 3) + { + sp0[r8] = i; + r8++; + } + } + } + else if (sSlotMachineState->field_08 != 1 || whichReel == 0) + { + for (i = 0, r2 = whichReel + 1; i < 3; i++) + { + if (sub_81408F4(sSlotMachineState->field_08, gUnknown_8464926[])) + } + } +} +*/ From ce6f4764081b7bc8da6851f68e3111e6ce928b9d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 21 May 2019 15:00:44 -0400 Subject: [PATCH 05/38] slot_machine sub_81401F0 --- asm/slot_machine.s | 243 --------------------------------------------- src/slot_machine.c | 59 +++++++---- 2 files changed, 41 insertions(+), 261 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 0a6d0cf10..b3634a4b5 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,249 +5,6 @@ .text - thumb_func_start sub_81401F0 -sub_81401F0: @ 81401F0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - bl sub_81401B4 - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0 - mov r8, r0 - ldr r0, _0814023C @ =sSlotMachineState - ldr r0, [r0] - ldrh r0, [r0, 0x8] - cmp r0, 0 - bne _08140294 - mov r2, r9 - cmp r2, 0 - bne _08140294 - movs r7, 0 - lsls r1, 16 - str r1, [sp, 0xC] - movs r0, 0 - str r0, [sp, 0x8] - mov r10, r0 -_0814022A: - movs r6, 0 - ldr r1, [sp, 0xC] - asrs r0, r1, 16 - subs r0, r7 - adds r0, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - adds r5, r7, 0x1 - b _08140248 - .align 2, 0 -_0814023C: .4byte sSlotMachineState -_08140240: - adds r6, 0x1 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 -_08140248: - cmp r6, 0x2 - bgt _0814026E - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _08140256 - movs r2, 0 -_08140256: - lsls r0, r2, 16 - asrs r4, r0, 16 - mov r2, r10 - adds r0, r4, r2 - ldr r1, _08140284 @ =gUnknown_8464926 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - bl sub_81408F4 - cmp r0, 0 - beq _08140240 -_0814026E: - cmp r6, 0x3 - bne _0814027C - mov r0, sp - add r0, r8 - strb r7, [r0] - movs r2, 0x1 - add r8, r2 -_0814027C: - adds r7, r5, 0 - cmp r7, 0x4 - ble _0814022A - b _08140348 - .align 2, 0 -_08140284: .4byte gUnknown_8464926 -_08140288: - mov r1, sp - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - mov r8, r0 - b _081402FE -_08140294: - ldr r0, _08140364 @ =sSlotMachineState - ldr r0, [r0] - ldrh r0, [r0, 0x8] - cmp r0, 0x1 - bne _081402AE - lsls r2, r1, 16 - str r2, [sp, 0xC] - mov r0, r9 - lsls r0, 1 - str r0, [sp, 0x8] - mov r2, r9 - cmp r2, 0 - bne _08140348 -_081402AE: - movs r7, 0 - lsls r1, 16 - movs r2, 0x80 - lsls r2, 9 - adds r0, r1, r2 - lsrs r2, r0, 16 - str r1, [sp, 0xC] - mov r0, r9 - lsls r6, r0, 2 - lsls r0, 1 - str r0, [sp, 0x8] - ldr r1, _08140368 @ =gUnknown_8464926 - mov r10, r1 - mov r1, r9 - adds r0, r6, r1 - lsls r0, 2 - adds r5, r0, r1 -_081402D0: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _081402DA - movs r2, 0 -_081402DA: - ldr r0, _08140364 @ =sSlotMachineState - ldr r0, [r0] - ldrh r0, [r0, 0x8] - lsls r1, r2, 16 - asrs r4, r1, 16 - adds r1, r4, r5 - add r1, r10 - ldrb r1, [r1] - bl sub_81408F4 - cmp r0, 0 - bne _08140288 - adds r7, 0x1 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r7, 0x2 - ble _081402D0 -_081402FE: - movs r7, 0 - ldr r0, [sp, 0xC] - lsrs r2, r0, 16 - ldr r1, _08140368 @ =gUnknown_8464926 - mov r10, r1 - mov r1, r9 - adds r0, r6, r1 - lsls r0, 2 - adds r6, r0, r1 -_08140310: - lsls r0, r2, 16 - cmp r0, 0 - bge _08140318 - movs r2, 0x14 -_08140318: - ldr r0, _08140364 @ =sSlotMachineState - ldr r0, [r0] - ldrh r0, [r0, 0x8] - lsls r1, r2, 16 - asrs r4, r1, 16 - adds r1, r4, r6 - add r1, r10 - ldrb r1, [r1] - bl sub_81408F4 - adds r5, r7, 0x1 - cmp r0, 0 - beq _0814033C - mov r0, sp - add r0, r8 - strb r5, [r0] - movs r2, 0x1 - add r8, r2 -_0814033C: - adds r7, r5, 0 - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r7, 0x3 - ble _08140310 -_08140348: - mov r0, r8 - cmp r0, 0 - bne _0814036C - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - bl __umodsi3 - lsls r0, 16 - lsrs r2, r0, 16 - b _0814037E - .align 2, 0 -_08140364: .4byte sSlotMachineState -_08140368: .4byte gUnknown_8464926 -_0814036C: - bl Random - lsls r0, 16 - lsrs r0, 16 - mov r1, r8 - bl __modsi3 - add r0, sp - ldrb r2, [r0] -_0814037E: - ldr r0, [sp, 0xC] - asrs r1, r0, 16 - lsls r0, r2, 16 - asrs r0, 16 - subs r1, r0 - lsls r1, 16 - lsrs r2, r1, 16 - asrs r0, r1, 16 - cmp r0, 0 - bge _08140398 - adds r0, 0x15 - lsls r0, 16 - lsrs r2, r0, 16 -_08140398: - ldr r0, _081403B8 @ =sSlotMachineState - ldr r0, [r0] - mov r1, r9 - strh r1, [r0, 0x32] - adds r0, 0x2C - ldr r1, [sp, 0x8] - adds r0, r1 - strh r2, [r0] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081403B8: .4byte sSlotMachineState - thumb_func_end sub_81401F0 - thumb_func_start sub_81403BC sub_81403BC: @ 81403BC push {r4-r7,lr} diff --git a/src/slot_machine.c b/src/slot_machine.c index 3a19fdbd5..af80f1bfc 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -9,6 +9,7 @@ #include "overworld.h" #include "slot_machine.h" #include "menu.h" +#include "random.h" #include "constants/songs.h" struct SlotMachineState @@ -26,7 +27,8 @@ struct SlotMachineState s16 field_20[3]; s16 field_26[3]; s16 field_2C[3]; - u8 filler_32[0x1E]; + u16 field_32; + u8 filler_34[0x1C]; u16 payout; }; @@ -547,34 +549,26 @@ s16 sub_81401B4(u16 whichReel) return position; } -/* void sub_81401F0(u16 whichReel) { - s32 i; + s32 i, j; s16 r2; - s16 r6; - s16 sp0C = sub_81401B4(whichReel); - u32 r8 = 0; - u32 sp08; - u32 r10; u8 sp0[5]; + s16 sp0C = sub_81401B4(whichReel); + s32 r8 = 0; if (sSlotMachineState->field_08 == 0 && whichReel == 0) { - sp08 = 0; - r10 = 0; for (i = 0; i < 5; i++) { - r6 = 0; - r2 = sp0C - i + 1; - for (; r6 < 3; r6++) + for (j = 0, r2 = sp0C - i + 1; j < 3; j++, r2++) { if (r2 >= 21) r2 = 0; - if (sub_81408F4(1, gUnknown_8464926[r10][r2])) + if (sub_81408F4(1, gUnknown_8464926[whichReel][r2])) break; } - if (r6 == 3) + if (j == 3) { sp0[r8] = i; r8++; @@ -583,10 +577,39 @@ void sub_81401F0(u16 whichReel) } else if (sSlotMachineState->field_08 != 1 || whichReel == 0) { - for (i = 0, r2 = whichReel + 1; i < 3; i++) + for (i = 0, r2 = sp0C + 1; i < 3; i++, r2++) { - if (sub_81408F4(sSlotMachineState->field_08, gUnknown_8464926[])) + if (r2 >= 21) + r2 = 0; + if (sub_81408F4(sSlotMachineState->field_08, gUnknown_8464926[whichReel][r2])) + { + sp0[0] = 0; + r8 = 1; + break; + } + } + for (i = 0, r2 = sp0C; i < 4; i++, r2--) + { + if (r2 < 0) + r2 = 20; + if (sub_81408F4(sSlotMachineState->field_08, gUnknown_8464926[whichReel][r2])) + { + sp0[r8] = i + 1; + r8++; + } } } + if (r8 == 0) + { + r2 = Random() % 5; + } + else + { + r2 = sp0[Random() % r8]; + } + r2 = sp0C - r2; + if (r2 < 0) + r2 += 21; + sSlotMachineState->field_32 = whichReel; + sSlotMachineState->field_2C[whichReel] = r2; } -*/ From d7832f2182f3f6673aded56d73b3e53c5931ba92 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 21 May 2019 15:39:20 -0400 Subject: [PATCH 06/38] slot_machine through sub_81404B8 --- asm/slot_machine.s | 215 --------------------------------------------- src/slot_machine.c | 94 +++++++++++++++++++- 2 files changed, 91 insertions(+), 218 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index b3634a4b5..a69c3ada1 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,221 +5,6 @@ .text - thumb_func_start sub_81403BC -sub_81403BC: @ 81403BC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _08140470 @ =sSlotMachineState - ldr r0, [r0] - ldrh r1, [r0, 0x32] - lsls r7, r1, 16 - asrs r1, r7, 15 - adds r0, 0x20 - adds r0, r1 - ldrh r0, [r0] - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _081403EC - movs r4, 0 -_081403EC: - mov r0, r8 - bl sub_81401B4 - lsls r1, r0, 16 - movs r2, 0x80 - lsls r2, 9 - adds r0, r1, r2 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _08140404 - movs r2, 0 -_08140404: - movs r6, 0 - movs r5, 0 - mov r10, r7 - lsls r4, 16 - mov r9, r4 - str r1, [sp, 0x10] - mov r0, r8 - lsls r0, 1 - str r0, [sp, 0xC] -_08140416: - lsls r0, r2, 16 - asrs r4, r0, 16 - ldr r7, _08140470 @ =sSlotMachineState - ldr r0, [r7] - ldrh r0, [r0, 0x8] - str r0, [sp] - mov r1, r10 - asrs r0, r1, 16 - mov r2, r9 - asrs r1, r2, 16 - mov r2, r8 - adds r3, r4, 0 - bl sub_814054C - cmp r0, 0 - beq _08140440 - mov r0, sp - adds r0, r6 - adds r0, 0x4 - strb r5, [r0] - adds r6, 0x1 -_08140440: - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r0, 0 - bge _0814044C - movs r2, 0x14 -_0814044C: - adds r5, 0x1 - cmp r5, 0x4 - ble _08140416 - cmp r6, 0 - bne _08140474 - ldr r0, [r7] - str r6, [r0, 0x38] - ldrh r0, [r0, 0x8] - subs r0, 0x5 - lsls r0, 16 - lsrs r0, 16 - movs r2, 0 - adds r3, r7, 0 - cmp r0, 0x1 - bhi _08140480 - movs r2, 0x4 - b _08140480 - .align 2, 0 -_08140470: .4byte sSlotMachineState -_08140474: - ldr r0, [r7] - movs r1, 0x1 - str r1, [r0, 0x38] - add r0, sp, 0x4 - ldrb r2, [r0] - adds r3, r7, 0 -_08140480: - ldr r0, [sp, 0x10] - asrs r1, r0, 16 - lsls r0, r2, 16 - asrs r0, 16 - subs r1, r0 - lsls r1, 16 - lsrs r2, r1, 16 - asrs r0, r1, 16 - cmp r0, 0 - bge _0814049A - adds r0, 0x15 - lsls r0, 16 - lsrs r2, r0, 16 -_0814049A: - ldr r0, [r3] - mov r1, r8 - strh r1, [r0, 0x34] - adds r0, 0x2C - ldr r1, [sp, 0xC] - adds r0, r1 - strh r2, [r0] - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81403BC - - thumb_func_start sub_81404B8 -sub_81404B8: @ 81404B8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - bl sub_81401B4 - lsls r0, 16 - asrs r0, 16 - mov r9, r0 - mov r4, r9 - movs r6, 0 - movs r5, 0 -_081404D8: - ldr r7, _0814051C @ =sSlotMachineState - ldr r0, [r7] - ldrh r2, [r0, 0x8] - mov r0, r8 - adds r1, r4, 0 - bl sub_81406E8 - cmp r0, 0 - beq _081404F2 - mov r1, sp - adds r0, r1, r6 - strb r5, [r0] - adds r6, 0x1 -_081404F2: - subs r4, 0x1 - cmp r4, 0 - bge _081404FA - movs r4, 0x14 -_081404FA: - adds r5, 0x1 - cmp r5, 0x4 - ble _081404D8 - cmp r6, 0 - bne _08140520 - ldr r0, [r7] - ldrh r0, [r0, 0x8] - subs r0, 0x5 - lsls r0, 16 - lsrs r0, 16 - movs r2, 0 - adds r1, r7, 0 - cmp r0, 0x1 - bhi _08140526 - movs r2, 0x4 - b _08140526 - .align 2, 0 -_0814051C: .4byte sSlotMachineState -_08140520: - mov r0, sp - ldrb r2, [r0] - adds r1, r7, 0 -_08140526: - mov r3, r9 - subs r2, r3, r2 - cmp r2, 0 - bge _08140530 - adds r2, 0x15 -_08140530: - ldr r0, [r1] - mov r3, r8 - lsls r1, r3, 1 - adds r0, 0x2C - adds r0, r1 - strh r2, [r0] - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81404B8 - thumb_func_start sub_814054C sub_814054C: @ 814054C push {r4-r7,lr} diff --git a/src/slot_machine.c b/src/slot_machine.c index af80f1bfc..f1f16d848 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -27,8 +27,9 @@ struct SlotMachineState s16 field_20[3]; s16 field_26[3]; s16 field_2C[3]; - u16 field_32; - u8 filler_34[0x1C]; + s16 field_32[3]; + u32 field_38; + u8 filler_3C[0x14]; u16 payout; }; @@ -54,6 +55,8 @@ void sub_81401F0(u16 whichReel); void sub_81403BC(u16 whichReel); void sub_81404B8(u16 whichReel); bool32 sub_81408F4(u32 a0, u32 a1); +bool32 sub_814054C(u32, u32, u32, u32, u32); +bool32 sub_81406E8(u32, u32, u32); void sub_81409B4(void); void sub_8140A70(void); u16 sub_8140A80(void); @@ -610,6 +613,91 @@ void sub_81401F0(u16 whichReel) r2 = sp0C - r2; if (r2 < 0) r2 += 21; - sSlotMachineState->field_32 = whichReel; + sSlotMachineState->field_32[0] = whichReel; + sSlotMachineState->field_2C[whichReel] = r2; +} + +void sub_81403BC(u16 whichReel) +{ + s16 r2, r4, r7, sp10; + s32 i; + u32 r6; + u8 sp4[5]; + + r7 = sSlotMachineState->field_32[0]; + r4 = sSlotMachineState->field_20[r7] + 1; + if (r4 >= 21) + r4 = 0; + sp10 = sub_81401B4(whichReel); + r2 = sp10 + 1; + if (r2 >= 21) + r2 = 0; + r6 = 0; + for (i = 0; i < 5; i++) + { + if (sub_814054C(r7, r4, whichReel, r2, sSlotMachineState->field_08)) + { + sp4[r6] = i; + r6++; + } + r2--; + if (r2 < 0) + r2 = 20; + } + if (r6 == 0) + { + sSlotMachineState->field_38 = 0; + if (sSlotMachineState->field_08 == 5 || sSlotMachineState->field_08 == 6) + r2 = 4; + else + r2 = 0; + } + else + { + sSlotMachineState->field_38 = 1; + r2 = sp4[0]; + } + r2 = sp10 - r2; + if (r2 < 0) + r2 += 21; + sSlotMachineState->field_32[1] = whichReel; + sSlotMachineState->field_2C[whichReel] = r2; +} + +void sub_81404B8(u16 whichReel) +{ + s32 i; + u32 r6; + s32 r9; + s32 r4; + s32 r2; + u8 sp0[5]; + + r9 = sub_81401B4(whichReel); + r4 = r9; + r6 = 0; + for (i = 0; i < 5; i++) + { + if (sub_81406E8(whichReel, r4, sSlotMachineState->field_08)) + { + sp0[r6] = i; + r6++; + } + r4--; + if (r4 < 0) + r4 = 20; + } + if (r6 == 0) + { + if (sSlotMachineState->field_08 == 5 || sSlotMachineState->field_08 == 6) + r2 = 4; + else + r2 = 0; + } + else + r2 = sp0[0]; + r2 = r9 - r2; + if (r2 < 0) + r2 += 21; sSlotMachineState->field_2C[whichReel] = r2; } From 3ce8764b195ab3137b5ee96da7b3c1bede5a0c51 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 21 May 2019 16:40:30 -0400 Subject: [PATCH 07/38] slot_machine sub_814054C --- asm/slot_machine.s | 227 --------------------------------------------- src/slot_machine.c | 85 ++++++++++++++++- 2 files changed, 80 insertions(+), 232 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index a69c3ada1..62ff4a784 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,233 +5,6 @@ .text - thumb_func_start sub_814054C -sub_814054C: @ 814054C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - adds r7, r0, 0 - adds r6, r1, 0 - mov r8, r2 - adds r5, r3, 0 - ldr r0, [sp, 0x34] - mov r9, r0 - mov r0, sp - movs r1, 0 - movs r2, 0x9 - bl memset - movs r1, 0x7 - add r0, sp, 0x8 -_08140572: - strb r1, [r0] - subs r0, 0x1 - cmp r0, sp - bge _08140572 - movs r4, 0 - lsls r2, r7, 1 - lsls r0, r7, 2 - mov r1, r8 - lsls r1, 1 - str r1, [sp, 0x10] - mov r3, r8 - lsls r1, r3, 2 - ldr r3, _081405E8 @ =gUnknown_8464926 - mov r12, r3 - adds r0, r7 - lsls r0, 2 - adds r0, r7 - mov r10, r0 - adds r2, r7 - add r2, sp - ldr r3, [sp, 0x10] - add r3, r8 - add r1, r8 - lsls r1, 2 - add r1, r8 - str r1, [sp, 0xC] - add r3, sp -_081405A8: - mov r1, r10 - adds r0, r6, r1 - add r0, r12 - ldrb r0, [r0] - strb r0, [r2] - ldr r1, [sp, 0xC] - adds r0, r5, r1 - add r0, r12 - ldrb r0, [r0] - strb r0, [r3] - adds r6, 0x1 - cmp r6, 0x14 - ble _081405C4 - movs r6, 0 -_081405C4: - adds r5, 0x1 - cmp r5, 0x14 - ble _081405CC - movs r5, 0 -_081405CC: - adds r2, 0x1 - adds r3, 0x1 - adds r4, 0x1 - cmp r4, 0x2 - ble _081405A8 - mov r3, r9 - cmp r3, 0x1 - beq _08140630 - cmp r3, 0x1 - bgt _081405EC - cmp r3, 0 - beq _081405F4 - b _081406A8 - .align 2, 0 -_081405E8: .4byte gUnknown_8464926 -_081405EC: - mov r5, r9 - cmp r5, 0x2 - beq _08140680 - b _081406A8 -_081405F4: - movs r4, 0 -_081405F6: - mov r1, sp - adds r0, r1, r4 - ldrb r1, [r0] - movs r0, 0x1 - bl sub_81408F4 - cmp r0, 0 - bne _081406D2 - adds r4, 0x1 - cmp r4, 0x2 - ble _081405F6 - movs r4, 0 - ldr r3, _0814062C @ =gUnknown_8464890 -_08140610: - ldrb r0, [r3] - mov r5, sp - adds r2, r5, r0 - ldrb r0, [r3, 0x1] - adds r1, r5, r0 - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - beq _081406A4 - adds r3, 0x2 - adds r4, 0x1 - cmp r4, 0xE - ble _08140610 - b _081406D2 - .align 2, 0 -_0814062C: .4byte gUnknown_8464890 -_08140630: - cmp r7, 0 - beq _0814063A - mov r0, r8 - cmp r0, 0 - bne _081406A4 -_0814063A: - cmp r7, 0x1 - beq _08140644 - mov r1, r8 - cmp r1, 0x1 - bne _08140662 -_08140644: - movs r4, 0 - ldr r3, _0814067C @ =gUnknown_8464890 -_08140648: - ldrb r0, [r3] - mov r5, sp - adds r2, r5, r0 - ldrb r0, [r3, 0x1] - adds r1, r5, r0 - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - beq _081406D2 - adds r3, 0x6 - adds r4, 0x3 - cmp r4, 0xE - ble _08140648 -_08140662: - movs r4, 0 -_08140664: - mov r1, sp - adds r0, r1, r4 - ldrb r1, [r0] - mov r0, r9 - bl sub_81408F4 - cmp r0, 0 - bne _081406A4 - adds r4, 0x1 - cmp r4, 0x2 - ble _08140664 - b _081406D2 - .align 2, 0 -_0814067C: .4byte gUnknown_8464890 -_08140680: - cmp r7, 0x2 - beq _0814068A - mov r3, r8 - cmp r3, 0x2 - bne _081406A8 -_0814068A: - movs r4, 0 -_0814068C: - mov r5, sp - adds r0, r5, r4 - ldrb r1, [r0] - mov r0, r9 - bl sub_81408F4 - cmp r0, 0 - bne _081406A4 - adds r4, 0x1 - cmp r4, 0x8 - ble _0814068C - b _081406D2 -_081406A4: - movs r0, 0x1 - b _081406D4 -_081406A8: - movs r4, 0 - ldr r5, _081406E4 @ =gUnknown_8464890 -_081406AC: - ldrb r0, [r5] - mov r1, sp - adds r2, r1, r0 - ldrb r0, [r5, 0x1] - adds r1, r0 - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bne _081406CA - adds r1, r0, 0 - mov r0, r9 - bl sub_81408F4 - cmp r0, 0 - bne _081406A4 -_081406CA: - adds r5, 0x2 - adds r4, 0x1 - cmp r4, 0xE - ble _081406AC -_081406D2: - movs r0, 0 -_081406D4: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081406E4: .4byte gUnknown_8464890 - thumb_func_end sub_814054C - thumb_func_start sub_81406E8 sub_81406E8: @ 81406E8 push {r4-r7,lr} diff --git a/src/slot_machine.c b/src/slot_machine.c index f1f16d848..41271b425 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -54,9 +54,9 @@ bool32 sub_81401A0(u16); void sub_81401F0(u16 whichReel); void sub_81403BC(u16 whichReel); void sub_81404B8(u16 whichReel); -bool32 sub_81408F4(u32 a0, u32 a1); -bool32 sub_814054C(u32, u32, u32, u32, u32); -bool32 sub_81406E8(u32, u32, u32); +bool32 sub_814054C(s32, s32, s32, s32, s32); +bool32 sub_81406E8(s32, s32, s32); +bool32 sub_81408F4(s32, s32); void sub_81409B4(void); void sub_8140A70(void); u16 sub_8140A80(void); @@ -67,6 +67,7 @@ void sub_8141148(u16 a0, u8 a1); bool32 sub_8141180(u8 a0); void sub_8141C30(u8, u8); +extern const u8 gUnknown_8464890[][2]; extern const u8 gUnknown_8464926[][21]; void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) @@ -621,7 +622,7 @@ void sub_81403BC(u16 whichReel) { s16 r2, r4, r7, sp10; s32 i; - u32 r6; + s32 r6; u8 sp4[5]; r7 = sSlotMachineState->field_32[0]; @@ -667,7 +668,7 @@ void sub_81403BC(u16 whichReel) void sub_81404B8(u16 whichReel) { s32 i; - u32 r6; + s32 r6; s32 r9; s32 r4; s32 r2; @@ -701,3 +702,77 @@ void sub_81404B8(u16 whichReel) r2 += 21; sSlotMachineState->field_2C[whichReel] = r2; } + +bool32 sub_814054C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4) +{ + s32 i; + s32 r5; + u8 sp0[9] = {}; + + for (i = 0; i < 9; i++) + sp0[i] = 7; + + for (i = 0; i < 3; i++) + { + sp0[3 * a0 + i] = gUnknown_8464926[a0][a1]; + sp0[3 * a2 + i] = gUnknown_8464926[a2][a3]; + a1++; + if (a1 >= 21) + a1 = 0; + a3++; + if (a3 >= 21) + a3 = 0; + } + + switch (a4) + { + case 0: + for (i = 0; i < 3; i++) + { + if (sub_81408F4(1, sp0[i])) + return FALSE; + } + for (i = 0; i < 15; i++) + { + if (sp0[gUnknown_8464890[i][0]] == sp0[gUnknown_8464890[i][1]]) + return TRUE; + } + return FALSE; + case 1: + if (a0 == 0 || a2 == 0) + { + if (a0 == 1 || a2 == 1) + { + for (i = 0; i < 15; i += 3) + { + if (sp0[gUnknown_8464890[i][0]] == sp0[gUnknown_8464890[i][1]]) + return FALSE; + } + } + for (i = 0; i < 3; i++) + { + if (sub_81408F4(a4, sp0[i])) + return TRUE; + } + return FALSE; + } + else + return TRUE; + case 2: + if (a0 == 2 || a2 == 2) + { + for (i = 0; i < 9; i++) + { + if (sub_81408F4(a4, sp0[i])) + return TRUE; + } + return FALSE; // wrong level + } + } + for (i = 0; i < 15; i++) + { + if (sp0[gUnknown_8464890[i][0]] == sp0[gUnknown_8464890[i][1]] && sub_81408F4(a4, sp0[gUnknown_8464890[i][0]])) + return TRUE; + } + return FALSE; +} From 5a03fca0374e2c9e13360ac184acb321096fb527 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 22 May 2019 12:19:01 -0400 Subject: [PATCH 08/38] slot_machine nonmatching sub_81406E8 Register allocation differences --- asm/slot_machine.s | 284 ----------------------------- data/slot_machine.s | 55 ------ ld_script.txt | 1 + src/slot_machine.c | 423 +++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 422 insertions(+), 341 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 62ff4a784..df42b5d5c 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,290 +5,6 @@ .text - thumb_func_start sub_81406E8 -sub_81406E8: @ 81406E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r7, r0, 0 - adds r5, r1, 0 - mov r8, r2 - ldr r0, _081407C8 @ =sSlotMachineState - ldr r2, [r0] - movs r1, 0x32 - ldrsh r0, [r2, r1] - lsls r0, 1 - adds r1, r2, 0 - adds r1, 0x20 - adds r0, r1, r0 - movs r3, 0 - ldrsh r0, [r0, r3] - adds r6, r0, 0x1 - movs r3, 0x34 - ldrsh r0, [r2, r3] - lsls r0, 1 - adds r1, r0 - movs r3, 0 - ldrsh r0, [r1, r3] - adds r3, r0, 0x1 - adds r5, 0x1 - cmp r6, 0x14 - ble _08140726 - movs r6, 0 -_08140726: - cmp r3, 0x14 - ble _0814072C - movs r3, 0 -_0814072C: - cmp r5, 0x14 - ble _08140732 - movs r5, 0 -_08140732: - movs r4, 0 - lsls r1, r7, 1 - lsls r0, r7, 2 - mov r9, r2 - ldr r2, _081407CC @ =gUnknown_8464926 - mov r10, r2 - adds r1, r7 - add r1, sp - mov r12, r1 - adds r0, r7 - lsls r0, 2 - adds r0, r7 - str r0, [sp, 0xC] -_0814074C: - mov r7, r9 - movs r0, 0x32 - ldrsh r1, [r7, r0] - lsls r0, r1, 1 - adds r0, r1 - adds r0, r4 - mov r7, sp - adds r2, r7, r0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r1 - adds r0, r6, r0 - add r0, r10 - ldrb r0, [r0] - strb r0, [r2] - mov r0, r9 - movs r2, 0x34 - ldrsh r1, [r0, r2] - lsls r0, r1, 1 - adds r0, r1 - adds r0, r4 - adds r2, r7, r0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r1 - adds r0, r3, r0 - add r0, r10 - ldrb r0, [r0] - strb r0, [r2] - ldr r7, [sp, 0xC] - adds r0, r5, r7 - add r0, r10 - ldrb r0, [r0] - mov r1, r12 - strb r0, [r1] - adds r6, 0x1 - cmp r6, 0x14 - ble _0814079E - movs r6, 0 -_0814079E: - adds r3, 0x1 - cmp r3, 0x14 - ble _081407A6 - movs r3, 0 -_081407A6: - adds r5, 0x1 - cmp r5, 0x14 - ble _081407AE - movs r5, 0 -_081407AE: - movs r2, 0x1 - add r12, r2 - adds r4, 0x1 - cmp r4, 0x2 - ble _0814074C - mov r3, r8 - cmp r3, 0x1 - beq _08140828 - cmp r3, 0x1 - bgt _081407D0 - cmp r3, 0 - beq _081407D8 - b _081408A0 - .align 2, 0 -_081407C8: .4byte sSlotMachineState -_081407CC: .4byte gUnknown_8464926 -_081407D0: - mov r6, r8 - cmp r6, 0x2 - beq _08140870 - b _081408A0 -_081407D8: - movs r4, 0 -_081407DA: - mov r7, sp - adds r0, r7, r4 - ldrb r1, [r0] - movs r0, 0x1 - bl sub_81408F4 - cmp r0, 0 - bne _081408DC - adds r4, 0x1 - cmp r4, 0x2 - ble _081407DA - movs r4, 0 - ldr r2, _08140824 @ =gUnknown_84648AE - movs r3, 0 - adds r5, r2, 0x2 -_081407F8: - ldrb r0, [r2] - mov r6, sp - adds r1, r6, r0 - ldrb r0, [r2, 0x1] - add r0, sp - ldrb r1, [r1] - ldrb r0, [r0] - cmp r1, r0 - bne _08140816 - adds r0, r3, r5 - ldrb r0, [r0] - add r0, sp - ldrb r0, [r0] - cmp r1, r0 - beq _081408DC -_08140816: - adds r2, 0x3 - adds r3, 0x3 - adds r4, 0x1 - cmp r4, 0x4 - ble _081407F8 -_08140820: - movs r0, 0x1 - b _081408DE - .align 2, 0 -_08140824: .4byte gUnknown_84648AE -_08140828: - movs r4, 0 - ldr r5, _0814086C @ =gUnknown_84648AE -_0814082C: - ldrb r0, [r5] - mov r7, sp - adds r2, r7, r0 - ldrb r0, [r5, 0x1] - adds r1, r7, r0 - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bne _0814084A - adds r1, r0, 0 - mov r0, r8 - bl sub_81408F4 - cmp r0, 0 - bne _081408DC -_0814084A: - adds r5, 0x3 - adds r4, 0x1 - cmp r4, 0x4 - ble _0814082C - movs r4, 0 -_08140854: - mov r1, sp - adds r0, r1, r4 - ldrb r1, [r0] - mov r0, r8 - bl sub_81408F4 - cmp r0, 0 - bne _08140820 - adds r4, 0x1 - cmp r4, 0x2 - ble _08140854 - b _081408DC - .align 2, 0 -_0814086C: .4byte gUnknown_84648AE -_08140870: - movs r4, 0 - ldr r5, _0814089C @ =gUnknown_84648AE -_08140874: - ldrb r0, [r5] - mov r3, sp - adds r2, r3, r0 - ldrb r0, [r5, 0x1] - adds r1, r3, r0 - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bne _08140892 - adds r1, r0, 0 - mov r0, r8 - bl sub_81408F4 - cmp r0, 0 - bne _08140820 -_08140892: - adds r5, 0x3 - adds r4, 0x1 - cmp r4, 0x4 - ble _08140874 - b _081408DC - .align 2, 0 -_0814089C: .4byte gUnknown_84648AE -_081408A0: - movs r4, 0 - ldr r5, _081408F0 @ =gUnknown_84648AE - adds r7, r5, 0 - movs r6, 0 -_081408A8: - ldrb r0, [r5] - mov r1, sp - adds r2, r1, r0 - adds r0, r7, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - add r0, sp - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - bne _081408D2 - ldrb r0, [r5, 0x2] - add r0, sp - ldrb r0, [r0] - cmp r1, r0 - bne _081408D2 - mov r0, r8 - bl sub_81408F4 - cmp r0, 0 - bne _08140820 -_081408D2: - adds r5, 0x3 - adds r6, 0x3 - adds r4, 0x1 - cmp r4, 0x4 - ble _081408A8 -_081408DC: - movs r0, 0 -_081408DE: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081408F0: .4byte gUnknown_84648AE - thumb_func_end sub_81406E8 - thumb_func_start sub_81408F4 sub_81408F4: @ 81408F4 push {lr} diff --git a/data/slot_machine.s b/data/slot_machine.s index a85e26b75..5c2093bd0 100644 --- a/data/slot_machine.s +++ b/data/slot_machine.s @@ -3,61 +3,6 @@ .section .rodata .align 2 -gUnknown_8464890:: @ 8464890 - .byte 0x00, 0x03 - .byte 0x00, 0x06 - .byte 0x03, 0x06 - .byte 0x01, 0x04 - .byte 0x01, 0x07 - .byte 0x04, 0x07 - .byte 0x02, 0x05 - .byte 0x02, 0x08 - .byte 0x05, 0x08 - .byte 0x00, 0x04 - .byte 0x00, 0x08 - .byte 0x04, 0x08 - .byte 0x02, 0x04 - .byte 0x02, 0x06 - .byte 0x04, 0x06 - -gUnknown_84648AE:: @ 84648AE - .byte 0x00, 0x03, 0x06 - .byte 0x01, 0x04, 0x07 - .byte 0x02, 0x05, 0x08 - .byte 0x00, 0x04, 0x08 - .byte 0x02, 0x04, 0x06 - -gUnknown_84648BD:: @ 84648BD - .byte 0x00, 0x04, 0x08, 0x03 - .byte 0x00, 0x03, 0x06, 0x02 - .byte 0x01, 0x04, 0x07, 0x01 - .byte 0x02, 0x05, 0x08, 0x02 - .byte 0x02, 0x04, 0x06, 0x03 - - .align 1 -gUnknown_84648D2:: @ 84648D2 - .2byte 0x1fa1, 0x2eab, 0x3630, 0x39f3, 0x3bd4, 0x3bfc, 0x0049 - .2byte 0x1f97, 0x2ea2, 0x3627, 0x39e9, 0x3bca, 0x3bf8, 0x0049 - .2byte 0x1f91, 0x2e9b, 0x3620, 0x39e3, 0x3bc4, 0x3bf4, 0x0049 - .2byte 0x1f87, 0x2e92, 0x3617, 0x39d9, 0x3bba, 0x3bef, 0x0050 - .2byte 0x1f7f, 0x2e89, 0x360e, 0x39d1, 0x3bb2, 0x3bea, 0x0050 - .2byte 0x1fc9, 0x2efc, 0x3696, 0x3a63, 0x3c49, 0x3c8b, 0x0073 - -gUnknown_8464926:: @ 8464926 - .byte 0x00, 0x03, 0x04, 0x01, 0x02, 0x06, 0x02, 0x05, 0x00, 0x06, 0x03, 0x01, 0x04, 0x02, 0x06, 0x00, 0x05, 0x02, 0x01, 0x06, 0x02 - .byte 0x00, 0x05, 0x04, 0x03, 0x01, 0x05, 0x04, 0x03, 0x02, 0x05, 0x04, 0x03, 0x00, 0x05, 0x04, 0x01, 0x03, 0x06, 0x05, 0x03, 0x04 - .byte 0x00, 0x03, 0x06, 0x05, 0x02, 0x03, 0x06, 0x05, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x01 - - .align 1 -gUnknown_8464966:: @ 8464966 - .2byte 0 - .2byte 2 - .2byte 6 - .2byte 8 - .2byte 15 - .2byte 100 - .2byte 300 - gUnknown_8464974:: .incbin "graphics/slot_machine/unk_8464974.gbapal" diff --git a/ld_script.txt b/ld_script.txt index ea0c43fd1..3057ccdb7 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -416,6 +416,7 @@ SECTIONS { data/berry_pouch.o(.rodata); data/itemfinder.o(.rodata); data/buy_menu_helpers.o(.rodata); + src/slot_machine.o(.rodata); data/slot_machine.o(.rodata); src/roamer.o(.rodata); src/mystery_gift_menu.o(.rodata); diff --git a/src/slot_machine.c b/src/slot_machine.c index 41271b425..064105bba 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -67,8 +67,68 @@ void sub_8141148(u16 a0, u8 a1); bool32 sub_8141180(u8 a0); void sub_8141C30(u8, u8); -extern const u8 gUnknown_8464890[][2]; -extern const u8 gUnknown_8464926[][21]; +const u8 gUnknown_8464890[][2] = { + {0x00, 0x03}, + {0x00, 0x06}, + {0x03, 0x06}, + + {0x01, 0x04}, + {0x01, 0x07}, + {0x04, 0x07}, + + {0x02, 0x05}, + {0x02, 0x08}, + {0x05, 0x08}, + + {0x00, 0x04}, + {0x00, 0x08}, + {0x04, 0x08}, + + {0x02, 0x04}, + {0x02, 0x06}, + {0x04, 0x06} +}; + +const u8 gUnknown_84648AE[][3] = { + {0x00, 0x03, 0x06}, // top row + {0x01, 0x04, 0x07}, // middle row + {0x02, 0x05, 0x08}, // bottom row + {0x00, 0x04, 0x08}, // tl-br + {0x02, 0x04, 0x06} // bl-tr +}; + +const u8 gUnknown_84648BD[][4] = { + {0x00, 0x04, 0x08, 0x03}, + {0x00, 0x03, 0x06, 0x02}, + {0x01, 0x04, 0x07, 0x01}, + {0x02, 0x05, 0x08, 0x02}, + {0x02, 0x04, 0x06, 0x03} +}; + +const u16 gUnknown_84648D2[][7] = { + {0x1fa1, 0x2eab, 0x3630, 0x39f3, 0x3bd4, 0x3bfc, 0x0049}, + {0x1f97, 0x2ea2, 0x3627, 0x39e9, 0x3bca, 0x3bf8, 0x0049}, + {0x1f91, 0x2e9b, 0x3620, 0x39e3, 0x3bc4, 0x3bf4, 0x0049}, + {0x1f87, 0x2e92, 0x3617, 0x39d9, 0x3bba, 0x3bef, 0x0050}, + {0x1f7f, 0x2e89, 0x360e, 0x39d1, 0x3bb2, 0x3bea, 0x0050}, + {0x1fc9, 0x2efc, 0x3696, 0x3a63, 0x3c49, 0x3c8b, 0x0073}, +}; + +const u8 gUnknown_8464926[][21] = { + {0x00, 0x03, 0x04, 0x01, 0x02, 0x06, 0x02, 0x05, 0x00, 0x06, 0x03, 0x01, 0x04, 0x02, 0x06, 0x00, 0x05, 0x02, 0x01, 0x06, 0x02}, + {0x00, 0x05, 0x04, 0x03, 0x01, 0x05, 0x04, 0x03, 0x02, 0x05, 0x04, 0x03, 0x00, 0x05, 0x04, 0x01, 0x03, 0x06, 0x05, 0x03, 0x04}, + {0x00, 0x03, 0x06, 0x05, 0x02, 0x03, 0x06, 0x05, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x01}, +}; + +const u16 gUnknown_8464966[] = { + 0, + 2, + 6, + 8, + 15, + 100, + 300 +}; void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) { @@ -776,3 +836,362 @@ bool32 sub_814054C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4) } return FALSE; } + +#ifdef NONMATCHING +bool32 sub_81406E8(s32 a0, s32 a1, s32 a2) +{ + u8 sp0[9]; + s32 r3, r6; + s32 i; + + r6 = sSlotMachineState->field_20[sSlotMachineState->field_32[0]] + 1; + r3 = sSlotMachineState->field_20[sSlotMachineState->field_32[1]] + 1; + a1++; + if (r6 >= 21) + r6 = 0; + if (r3 >= 21) + r3 = 0; + if (a1 >= 21) + a1 = 0; + for (i = 0; i < 3; i++) + { + sp0[sSlotMachineState->field_32[0] * 3 + i] = gUnknown_8464926[sSlotMachineState->field_32[0]][r6]; + sp0[sSlotMachineState->field_32[1] * 3 + i] = gUnknown_8464926[sSlotMachineState->field_32[1]][r3]; + sp0[a0 * 3 + i] = gUnknown_8464926[a0][a1]; + r6++; + if (r6 >= 21) + r6 = 0; + r3++; + if (r3 >= 21) + r3 = 0; + a1++; + if (a1 >= 21) + a1++; + } + switch (a2) + { + case 0: + for (i = 0; i < 3; i++) + { + if (sub_81408F4(1, sp0[i])) + return FALSE; + } + for (i = 0; i < 5; i++) + { + if (sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][1]] && sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][2]]) + return FALSE; + } + return TRUE; + case 1: + for (i = 0; i < 5; i++) + { + if (sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][1]] && sub_81408F4(a2, sp0[gUnknown_84648AE[i][0]])) + return FALSE; + } + for (i = 0; i < 3; i++) + { + if (sub_81408F4(a2, sp0[i])) + return TRUE; + } + return FALSE; + case 2: + for (i = 0; i < 5; i++) + { + if (sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][1]] && sub_81408F4(a2, sp0[gUnknown_84648AE[i][0]])) + return TRUE; + } + return FALSE; + } + for (i = 0; i < 5; i++) + { + if (sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][1]] && sp0[gUnknown_84648AE[i][0]] == sp0[gUnknown_84648AE[i][2]] && sub_81408F4(a2, sp0[gUnknown_84648AE[i][0]])) + return TRUE; + } + return FALSE; +} +#else +NAKED +bool32 sub_81406E8(s32 a0, s32 a1, s32 a2) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x10\n" + "\tadds r7, r0, 0\n" + "\tadds r5, r1, 0\n" + "\tmov r8, r2\n" + "\tldr r0, _081407C8 @ =sSlotMachineState\n" + "\tldr r2, [r0]\n" + "\tmovs r1, 0x32\n" + "\tldrsh r0, [r2, r1]\n" + "\tlsls r0, 1\n" + "\tadds r1, r2, 0\n" + "\tadds r1, 0x20\n" + "\tadds r0, r1, r0\n" + "\tmovs r3, 0\n" + "\tldrsh r0, [r0, r3]\n" + "\tadds r6, r0, 0x1\n" + "\tmovs r3, 0x34\n" + "\tldrsh r0, [r2, r3]\n" + "\tlsls r0, 1\n" + "\tadds r1, r0\n" + "\tmovs r3, 0\n" + "\tldrsh r0, [r1, r3]\n" + "\tadds r3, r0, 0x1\n" + "\tadds r5, 0x1\n" + "\tcmp r6, 0x14\n" + "\tble _08140726\n" + "\tmovs r6, 0\n" + "_08140726:\n" + "\tcmp r3, 0x14\n" + "\tble _0814072C\n" + "\tmovs r3, 0\n" + "_0814072C:\n" + "\tcmp r5, 0x14\n" + "\tble _08140732\n" + "\tmovs r5, 0\n" + "_08140732:\n" + "\tmovs r4, 0\n" + "\tlsls r1, r7, 1\n" + "\tlsls r0, r7, 2\n" + "\tmov r9, r2\n" + "\tldr r2, _081407CC @ =gUnknown_8464926\n" + "\tmov r10, r2\n" + "\tadds r1, r7\n" + "\tadd r1, sp\n" + "\tmov r12, r1\n" + "\tadds r0, r7\n" + "\tlsls r0, 2\n" + "\tadds r0, r7\n" + "\tstr r0, [sp, 0xC]\n" + "_0814074C:\n" + "\tmov r7, r9\n" + "\tmovs r0, 0x32\n" + "\tldrsh r1, [r7, r0]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tadds r0, r4\n" + "\tmov r7, sp\n" + "\tadds r2, r7, r0\n" + "\tlsls r0, r1, 2\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r1\n" + "\tadds r0, r6, r0\n" + "\tadd r0, r10\n" + "\tldrb r0, [r0]\n" + "\tstrb r0, [r2]\n" + "\tmov r0, r9\n" + "\tmovs r2, 0x34\n" + "\tldrsh r1, [r0, r2]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tadds r0, r4\n" + "\tadds r2, r7, r0\n" + "\tlsls r0, r1, 2\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r1\n" + "\tadds r0, r3, r0\n" + "\tadd r0, r10\n" + "\tldrb r0, [r0]\n" + "\tstrb r0, [r2]\n" + "\tldr r7, [sp, 0xC]\n" + "\tadds r0, r5, r7\n" + "\tadd r0, r10\n" + "\tldrb r0, [r0]\n" + "\tmov r1, r12\n" + "\tstrb r0, [r1]\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x14\n" + "\tble _0814079E\n" + "\tmovs r6, 0\n" + "_0814079E:\n" + "\tadds r3, 0x1\n" + "\tcmp r3, 0x14\n" + "\tble _081407A6\n" + "\tmovs r3, 0\n" + "_081407A6:\n" + "\tadds r5, 0x1\n" + "\tcmp r5, 0x14\n" + "\tble _081407AE\n" + "\tmovs r5, 0\n" + "_081407AE:\n" + "\tmovs r2, 0x1\n" + "\tadd r12, r2\n" + "\tadds r4, 0x1\n" + "\tcmp r4, 0x2\n" + "\tble _0814074C\n" + "\tmov r3, r8\n" + "\tcmp r3, 0x1\n" + "\tbeq _08140828\n" + "\tcmp r3, 0x1\n" + "\tbgt _081407D0\n" + "\tcmp r3, 0\n" + "\tbeq _081407D8\n" + "\tb _081408A0\n" + "\t.align 2, 0\n" + "_081407C8: .4byte sSlotMachineState\n" + "_081407CC: .4byte gUnknown_8464926\n" + "_081407D0:\n" + "\tmov r6, r8\n" + "\tcmp r6, 0x2\n" + "\tbeq _08140870\n" + "\tb _081408A0\n" + "_081407D8:\n" + "\tmovs r4, 0\n" + "_081407DA:\n" + "\tmov r7, sp\n" + "\tadds r0, r7, r4\n" + "\tldrb r1, [r0]\n" + "\tmovs r0, 0x1\n" + "\tbl sub_81408F4\n" + "\tcmp r0, 0\n" + "\tbne _081408DC_return_false\n" + "\tadds r4, 0x1\n" + "\tcmp r4, 0x2\n" + "\tble _081407DA\n" + "\tmovs r4, 0\n" + "\tldr r2, _08140824 @ =gUnknown_84648AE\n" + "\tmovs r3, 0\n" + "\tadds r5, r2, 0x2\n" + "_081407F8:\n" + "\tldrb r0, [r2]\n" + "\tmov r6, sp\n" + "\tadds r1, r6, r0\n" + "\tldrb r0, [r2, 0x1]\n" + "\tadd r0, sp\n" + "\tldrb r1, [r1]\n" + "\tldrb r0, [r0]\n" + "\tcmp r1, r0\n" + "\tbne _08140816\n" + "\tadds r0, r3, r5\n" + "\tldrb r0, [r0]\n" + "\tadd r0, sp\n" + "\tldrb r0, [r0]\n" + "\tcmp r1, r0\n" + "\tbeq _081408DC_return_false\n" + "_08140816:\n" + "\tadds r2, 0x3\n" + "\tadds r3, 0x3\n" + "\tadds r4, 0x1\n" + "\tcmp r4, 0x4\n" + "\tble _081407F8\n" + "_08140820_return_true:\n" + "\tmovs r0, 0x1\n" + "\tb _081408DE\n" + "\t.align 2, 0\n" + "_08140824: .4byte gUnknown_84648AE\n" + "_08140828:\n" + "\tmovs r4, 0\n" + "\tldr r5, _0814086C @ =gUnknown_84648AE\n" + "_0814082C:\n" + "\tldrb r0, [r5]\n" + "\tmov r7, sp\n" + "\tadds r2, r7, r0\n" + "\tldrb r0, [r5, 0x1]\n" + "\tadds r1, r7, r0\n" + "\tldrb r0, [r2]\n" + "\tldrb r1, [r1]\n" + "\tcmp r0, r1\n" + "\tbne _0814084A\n" + "\tadds r1, r0, 0\n" + "\tmov r0, r8\n" + "\tbl sub_81408F4\n" + "\tcmp r0, 0\n" + "\tbne _081408DC_return_false\n" + "_0814084A:\n" + "\tadds r5, 0x3\n" + "\tadds r4, 0x1\n" + "\tcmp r4, 0x4\n" + "\tble _0814082C\n" + "\tmovs r4, 0\n" + "_08140854:\n" + "\tmov r1, sp\n" + "\tadds r0, r1, r4\n" + "\tldrb r1, [r0]\n" + "\tmov r0, r8\n" + "\tbl sub_81408F4\n" + "\tcmp r0, 0\n" + "\tbne _08140820_return_true\n" + "\tadds r4, 0x1\n" + "\tcmp r4, 0x2\n" + "\tble _08140854\n" + "\tb _081408DC_return_false\n" + "\t.align 2, 0\n" + "_0814086C: .4byte gUnknown_84648AE\n" + "_08140870:\n" + "\tmovs r4, 0\n" + "\tldr r5, _0814089C @ =gUnknown_84648AE\n" + "_08140874:\n" + "\tldrb r0, [r5]\n" + "\tmov r3, sp\n" + "\tadds r2, r3, r0\n" + "\tldrb r0, [r5, 0x1]\n" + "\tadds r1, r3, r0\n" + "\tldrb r0, [r2]\n" + "\tldrb r1, [r1]\n" + "\tcmp r0, r1\n" + "\tbne _08140892\n" + "\tadds r1, r0, 0\n" + "\tmov r0, r8\n" + "\tbl sub_81408F4\n" + "\tcmp r0, 0\n" + "\tbne _08140820_return_true\n" + "_08140892:\n" + "\tadds r5, 0x3\n" + "\tadds r4, 0x1\n" + "\tcmp r4, 0x4\n" + "\tble _08140874\n" + "\tb _081408DC_return_false\n" + "\t.align 2, 0\n" + "_0814089C: .4byte gUnknown_84648AE\n" + "_081408A0:\n" + "\tmovs r4, 0\n" + "\tldr r5, _081408F0 @ =gUnknown_84648AE\n" + "\tadds r7, r5, 0\n" + "\tmovs r6, 0\n" + "_081408A8:\n" + "\tldrb r0, [r5]\n" + "\tmov r1, sp\n" + "\tadds r2, r1, r0\n" + "\tadds r0, r7, 0x1\n" + "\tadds r0, r6, r0\n" + "\tldrb r0, [r0]\n" + "\tadd r0, sp\n" + "\tldrb r1, [r2]\n" + "\tldrb r0, [r0]\n" + "\tcmp r1, r0\n" + "\tbne _081408D2\n" + "\tldrb r0, [r5, 0x2]\n" + "\tadd r0, sp\n" + "\tldrb r0, [r0]\n" + "\tcmp r1, r0\n" + "\tbne _081408D2\n" + "\tmov r0, r8\n" + "\tbl sub_81408F4\n" + "\tcmp r0, 0\n" + "\tbne _08140820_return_true\n" + "_081408D2:\n" + "\tadds r5, 0x3\n" + "\tadds r6, 0x3\n" + "\tadds r4, 0x1\n" + "\tcmp r4, 0x4\n" + "\tble _081408A8\n" + "_081408DC_return_false:\n" + "\tmovs r0, 0\n" + "_081408DE:\n" + "\tadd sp, 0x10\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" + "_081408F0: .4byte gUnknown_84648AE"); +} +#endif //NONMATCHING From 88bd9d4d062e7e750f470149f6454efa4d817f36 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 22 May 2019 14:00:37 -0400 Subject: [PATCH 09/38] slot_machine through sub_8140A80 --- asm/slot_machine.s | 401 --------------------------------------------- src/slot_machine.c | 141 +++++++++++++++- 2 files changed, 134 insertions(+), 408 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index df42b5d5c..0e3a7d8a7 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,407 +5,6 @@ .text - thumb_func_start sub_81408F4 -sub_81408F4: @ 81408F4 - push {lr} - adds r2, r1, 0 - cmp r0, 0x6 - bhi _08140966 - lsls r0, 2 - ldr r1, _08140908 @ =_0814090C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08140908: .4byte _0814090C - .align 2, 0 -_0814090C: - .4byte _08140928 - .4byte _08140934 - .4byte _08140934 - .4byte _0814093E - .4byte _08140944 - .4byte _08140952 - .4byte _0814095C -_08140928: - movs r1, 0x4 - eors r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - b _08140968 -_08140934: - movs r0, 0 - cmp r2, 0x4 - bne _08140968 - movs r0, 0x1 - b _08140968 -_0814093E: - movs r1, 0 - subs r0, r2, 0x5 - b _08140948 -_08140944: - movs r1, 0 - subs r0, r2, 0x2 -_08140948: - cmp r0, 0x1 - bhi _0814094E - movs r1, 0x1 -_0814094E: - adds r0, r1, 0 - b _08140968 -_08140952: - movs r0, 0 - cmp r2, 0x1 - bne _08140968 - movs r0, 0x1 - b _08140968 -_0814095C: - movs r0, 0 - cmp r2, 0 - bne _08140968 - movs r0, 0x1 - b _08140968 -_08140966: - movs r0, 0 -_08140968: - pop {r1} - bx r1 - thumb_func_end sub_81408F4 - - thumb_func_start sub_814096C -sub_814096C: @ 814096C - push {lr} - cmp r0, 0x6 - bhi _0814099C - lsls r0, 2 - ldr r1, _0814097C @ =_08140980 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0814097C: .4byte _08140980 - .align 2, 0 -_08140980: - .4byte _081409AC - .4byte _081409A8 - .4byte _081409A4 - .4byte _081409A4 - .4byte _0814099C - .4byte _081409A0 - .4byte _081409A0 -_0814099C: - movs r0, 0x1 - b _081409AE -_081409A0: - movs r0, 0x3 - b _081409AE -_081409A4: - movs r0, 0x4 - b _081409AE -_081409A8: - movs r0, 0x5 - b _081409AE -_081409AC: - movs r0, 0x6 -_081409AE: - pop {r1} - bx r1 - thumb_func_end sub_814096C - - thumb_func_start sub_81409B4 -sub_81409B4: @ 81409B4 - push {r4-r6,lr} - bl Random - lsls r0, 16 - lsrs r2, r0, 18 - ldr r0, _08140A60 @ =sSlotMachineState - ldr r0, [r0] - ldrh r1, [r0, 0x4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 1 - ldr r1, _08140A64 @ =gUnknown_84648D2 - adds r4, r0, r1 - movs r5, 0 - ldrh r0, [r4] - cmp r2, r0 - bcc _081409E6 - adds r0, r4, 0 -_081409D8: - adds r0, 0x2 - adds r5, 0x1 - cmp r5, 0x5 - bgt _081409E6 - ldrh r1, [r0] - cmp r2, r1 - bcs _081409D8 -_081409E6: - ldr r6, _08140A60 @ =sSlotMachineState - ldr r1, [r6] - ldrh r0, [r1, 0x8] - cmp r0, 0x4 - bhi _08140A5A - ldrh r0, [r1, 0xC] - cmp r0, 0 - bne _08140A22 - bl Random - ldr r1, _08140A68 @ =0x00003fff - ands r1, r0 - ldrh r4, [r4, 0xC] - cmp r1, r4 - bcs _08140A18 - ldr r4, [r6] - bl Random - movs r1, 0x1 - ands r1, r0 - movs r0, 0x3C - cmp r1, 0 - beq _08140A16 - movs r0, 0x5 -_08140A16: - strh r0, [r4, 0xC] -_08140A18: - ldr r0, _08140A60 @ =sSlotMachineState - ldr r1, [r0] - ldrh r1, [r1, 0xC] - cmp r1, 0 - beq _08140A56 -_08140A22: - cmp r5, 0 - bne _08140A4A - bl Random - ldr r1, _08140A68 @ =0x00003fff - ands r1, r0 - ldr r0, _08140A6C @ =0x00002ccb - cmp r1, r0 - bhi _08140A4A - ldr r0, _08140A60 @ =sSlotMachineState - ldr r4, [r0] - bl Random - movs r1, 0x1 - ands r1, r0 - movs r0, 0x3C - cmp r1, 0 - beq _08140A48 - movs r0, 0x5 -_08140A48: - strh r0, [r4, 0xC] -_08140A4A: - ldr r2, _08140A60 @ =sSlotMachineState - ldr r1, [r2] - ldrh r0, [r1, 0xC] - subs r0, 0x1 - strh r0, [r1, 0xC] - adds r0, r2, 0 -_08140A56: - ldr r0, [r0] - strh r5, [r0, 0x8] -_08140A5A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08140A60: .4byte sSlotMachineState -_08140A64: .4byte gUnknown_84648D2 -_08140A68: .4byte 0x00003fff -_08140A6C: .4byte 0x00002ccb - thumb_func_end sub_81409B4 - - thumb_func_start sub_8140A70 -sub_8140A70: @ 8140A70 - ldr r0, _08140A7C @ =sSlotMachineState - ldr r1, [r0] - movs r0, 0 - strh r0, [r1, 0x8] - bx lr - .align 2, 0 -_08140A7C: .4byte sSlotMachineState - thumb_func_end sub_8140A70 - - thumb_func_start sub_8140A80 -sub_8140A80: @ 8140A80 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - mov r0, sp - movs r1, 0 - movs r2, 0x9 - bl memset - movs r5, 0 - ldr r2, _08140B58 @ =sSlotMachineState - movs r3, 0 - adds r4, r2, 0 -_08140A9C: - ldr r0, [r2] - lsls r1, r5, 2 - adds r0, 0x3C - adds r0, r1 - str r3, [r0] - adds r5, 0x1 - cmp r5, 0x4 - ble _08140A9C - movs r0, 0 - mov r9, r0 - ldr r0, [r4] - movs r1, 0x20 - ldrsh r4, [r0, r1] - movs r7, 0x22 - ldrsh r3, [r0, r7] - movs r1, 0x24 - ldrsh r2, [r0, r1] - ldr r6, _08140B5C @ =gUnknown_8464926 - movs r7, 0x2A - adds r7, r6 - mov r8, r7 - mov r1, sp - movs r0, 0x15 - adds r0, r6 - mov r12, r0 - movs r5, 0x2 -_08140AD0: - adds r4, 0x1 - cmp r4, 0x14 - ble _08140AD8 - movs r4, 0 -_08140AD8: - adds r3, 0x1 - cmp r3, 0x14 - ble _08140AE0 - movs r3, 0 -_08140AE0: - adds r2, 0x1 - cmp r2, 0x14 - ble _08140AE8 - movs r2, 0 -_08140AE8: - adds r0, r4, r6 - ldrb r0, [r0] - strb r0, [r1] - mov r7, r12 - adds r0, r3, r7 - ldrb r0, [r0] - strb r0, [r1, 0x3] - mov r7, r8 - adds r0, r2, r7 - ldrb r0, [r0] - strb r0, [r1, 0x6] - adds r1, 0x1 - subs r5, 0x1 - cmp r5, 0 - bge _08140AD0 - ldr r0, _08140B58 @ =sSlotMachineState - ldr r0, [r0] - adds r0, 0x50 - movs r1, 0 - strh r1, [r0] - ldr r7, _08140B60 @ =gUnknown_84648BD - mov r8, r7 - movs r6, 0 - movs r5, 0x4 -_08140B18: - ldr r0, _08140B58 @ =sSlotMachineState - ldr r1, [r0] - mov r0, r8 - adds r0, 0x3 - adds r0, r6, r0 - ldrh r1, [r1, 0xE] - ldrb r0, [r0] - cmp r1, r0 - bcc _08140BB6 - ldrb r0, [r7] - mov r1, sp - adds r4, r1, r0 - ldrb r1, [r4] - movs r0, 0x1 - bl sub_81408F4 - cmp r0, 0 - beq _08140B64 - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - add r0, sp - ldrb r1, [r0] - movs r0, 0x2 - bl sub_81408F4 - movs r3, 0x1 - cmp r0, 0 - beq _08140B8E - movs r3, 0x2 - b _08140B92 - .align 2, 0 -_08140B58: .4byte sSlotMachineState -_08140B5C: .4byte gUnknown_8464926 -_08140B60: .4byte gUnknown_84648BD -_08140B64: - mov r0, r8 - adds r0, 0x1 - adds r0, r6, r0 - ldrb r0, [r0] - add r0, sp - ldrb r1, [r4] - ldrb r0, [r0] - cmp r1, r0 - bne _08140B8C - ldrb r0, [r7, 0x2] - add r0, sp - ldrb r0, [r0] - cmp r1, r0 - bne _08140B8C - adds r0, r1, 0 - bl sub_814096C - lsls r0, 24 - lsrs r3, r0, 24 - b _08140B8E -_08140B8C: - movs r3, 0 -_08140B8E: - cmp r3, 0 - beq _08140BB0 -_08140B92: - ldr r0, _08140BD4 @ =sSlotMachineState - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x3C - adds r0, r6 - movs r1, 0x1 - str r1, [r0] - adds r2, 0x50 - ldr r1, _08140BD8 @ =gUnknown_8464966 - lsls r0, r3, 1 - adds r0, r1 - ldrh r0, [r0] - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] -_08140BB0: - cmp r3, r9 - ble _08140BB6 - mov r9, r3 -_08140BB6: - adds r7, 0x4 - adds r6, 0x4 - subs r5, 0x1 - cmp r5, 0 - bge _08140B18 - mov r7, r9 - lsls r0, r7, 16 - lsrs r0, 16 - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08140BD4: .4byte sSlotMachineState -_08140BD8: .4byte gUnknown_8464966 - thumb_func_end sub_8140A80 - thumb_func_start sub_8140BDC sub_8140BDC: @ 8140BDC ldr r0, _08140BE8 @ =sSlotMachineState diff --git a/src/slot_machine.c b/src/slot_machine.c index 064105bba..172a4014a 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -19,7 +19,7 @@ struct SlotMachineState u16 field_06; u16 field_08; u16 slotRewardClass; - u8 filler_0C[2]; + u16 field_0C; u16 bet; u8 field_10; u8 field_11; @@ -29,7 +29,7 @@ struct SlotMachineState s16 field_2C[3]; s16 field_32[3]; u32 field_38; - u8 filler_3C[0x14]; + u32 field_3C[5]; u16 payout; }; @@ -98,11 +98,11 @@ const u8 gUnknown_84648AE[][3] = { }; const u8 gUnknown_84648BD[][4] = { - {0x00, 0x04, 0x08, 0x03}, - {0x00, 0x03, 0x06, 0x02}, - {0x01, 0x04, 0x07, 0x01}, - {0x02, 0x05, 0x08, 0x02}, - {0x02, 0x04, 0x06, 0x03} + {0x00, 0x04, 0x08, 0x03}, // tl-br + {0x00, 0x03, 0x06, 0x02}, // top row + {0x01, 0x04, 0x07, 0x01}, // middle row + {0x02, 0x05, 0x08, 0x02}, // bottom row + {0x02, 0x04, 0x06, 0x03} // bl-tr }; const u16 gUnknown_84648D2[][7] = { @@ -1195,3 +1195,130 @@ bool32 sub_81406E8(s32 a0, s32 a1, s32 a2) "_081408F0: .4byte gUnknown_84648AE"); } #endif //NONMATCHING + +bool32 sub_81408F4(s32 a0, s32 a1) +{ + switch (a0) + { + case 0: + return a1 ^ 4 ? TRUE : FALSE; + case 1: + case 2: + return a1 == 4 ? TRUE : FALSE; + case 3: + return a1 == 5 || a1 == 6 ? TRUE : FALSE; + case 4: + return a1 == 2 || a1 == 3 ? TRUE : FALSE; + case 5: + return a1 == 1 ? TRUE : FALSE; + case 6: + return a1 == 0 ? TRUE : FALSE; + default: + return FALSE; + } +} + +u8 sub_814096C(s32 a0) +{ + switch (a0) + { + default: + case 4: + return 1; + case 5: + case 6: + return 3; + case 2: + case 3: + return 4; + case 1: + return 5; + case 0: + return 6; + } +} + +void sub_81409B4(void) +{ + u16 r2 = Random() / 4; + s32 i; + const u16 * r4 = gUnknown_84648D2[sSlotMachineState->machineidx]; + for (i = 0; i < 6; i++) + { + if (r2 < r4[i]) + break; + } + if (sSlotMachineState->field_08 < 5) + { + if (sSlotMachineState->field_0C == 0) + { + if ((Random() & 0x3FFF) < r4[6]) + sSlotMachineState->field_0C = (Random() & 1) ? 5 : 60; + } + if (sSlotMachineState->field_0C != 0) + { + if (i == 0 && (Random() & 0x3FFF) < 0x2CCC) + sSlotMachineState->field_0C = (Random() & 1) ? 5 : 60; + sSlotMachineState->field_0C--; + } + sSlotMachineState->field_08 = i; + } +} + +void sub_8140A70(void) +{ + sSlotMachineState->field_08 = 0; +} + +u16 sub_8140A80(void) +{ + u8 sp0[9] = {}; + s32 i; + s32 r4, r3, r2; + s32 r9; + + for (i = 0; i < 5; i++) + sSlotMachineState->field_3C[i] = 0; + + r9 = 0; + r4 = sSlotMachineState->field_20[0]; + r3 = sSlotMachineState->field_20[1]; + r2 = sSlotMachineState->field_20[2]; + + for (i = 0; i < 3; i++) + { + r4++; + if (r4 >= 21) + r4 = 0; + r3++; + if (r3 >= 21) + r3 = 0; + r2++; + if (r2 >= 21) + r2 = 0; + sp0[0 * 3 + i] = gUnknown_8464926[0][r4]; + sp0[1 * 3 + i] = gUnknown_8464926[1][r3]; + sp0[2 * 3 + i] = gUnknown_8464926[2][r2]; + } + sSlotMachineState->payout = 0; + for (i = 0; i < 5; i++) + { + if (sSlotMachineState->bet >= gUnknown_84648BD[i][3]) + { + if (sub_81408F4(1, sp0[gUnknown_84648BD[i][0]])) + r3 = sub_81408F4(2, sp0[gUnknown_84648BD[i][1]]) ? 2 : 1; + else if (sp0[gUnknown_84648BD[i][0]] == sp0[gUnknown_84648BD[i][1]] && sp0[gUnknown_84648BD[i][0]] == sp0[gUnknown_84648BD[i][2]]) + r3 = sub_814096C(sp0[gUnknown_84648BD[i][0]]); + else + r3 = 0; + if (r3 != 0) + { + sSlotMachineState->field_3C[i] = 1; + sSlotMachineState->payout += gUnknown_8464966[r3]; + } + if (r3 > r9) + r9 = r3; + } + } + return r9; +} From 8d6eac996f0e69666b47aefb3dadb37eb1f40e74 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 22 May 2019 16:09:19 -0400 Subject: [PATCH 10/38] slot_machine through sub_8140C6C --- asm/slot_machine.s | 119 -------------------------------------------- data/slot_machine.s | 47 +---------------- src/slot_machine.c | 90 +++++++++++++++++++++++++++++++++ sym_ewram.txt | 3 -- 4 files changed, 91 insertions(+), 168 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 0e3a7d8a7..9229072da 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,125 +5,6 @@ .text - thumb_func_start sub_8140BDC -sub_8140BDC: @ 8140BDC - ldr r0, _08140BE8 @ =sSlotMachineState - ldr r0, [r0] - adds r0, 0x50 - ldrh r0, [r0] - bx lr - .align 2, 0 -_08140BE8: .4byte sSlotMachineState - thumb_func_end sub_8140BDC - - thumb_func_start sub_8140BEC -sub_8140BEC: @ 8140BEC - ldr r0, _08140BF4 @ =sSlotMachineState - ldr r0, [r0] - ldrb r0, [r0, 0xE] - bx lr - .align 2, 0 -_08140BF4: .4byte sSlotMachineState - thumb_func_end sub_8140BEC - - thumb_func_start sub_8140BF8 -sub_8140BF8: @ 8140BF8 - ldr r1, _08140C08 @ =sSlotMachineState - ldr r1, [r1] - lsls r0, 2 - adds r1, 0x3C - adds r1, r0 - ldr r0, [r1] - bx lr - .align 2, 0 -_08140C08: .4byte sSlotMachineState - thumb_func_end sub_8140BF8 - - thumb_func_start sub_8140C0C -sub_8140C0C: @ 8140C0C - push {r4,r5,lr} - movs r5, 0 - ldr r4, _08140C3C @ =gUnknown_84655B0 -_08140C12: - adds r0, r4, 0 - bl LoadCompressedObjectPic - adds r4, 0x8 - adds r5, 0x1 - cmp r5, 0x2 - bls _08140C12 - ldr r0, _08140C40 @ =gUnknown_84655C8 - bl LoadSpritePalettes - ldr r4, _08140C44 @ =gUnknown_203F3A4 - movs r0, 0x74 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _08140C48 - bl sub_8140C6C - movs r0, 0x1 - b _08140C4A - .align 2, 0 -_08140C3C: .4byte gUnknown_84655B0 -_08140C40: .4byte gUnknown_84655C8 -_08140C44: .4byte gUnknown_203F3A4 -_08140C48: - movs r0, 0 -_08140C4A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8140C0C - - thumb_func_start sub_8140C50 -sub_8140C50: @ 8140C50 - push {r4,lr} - ldr r4, _08140C68 @ =gUnknown_203F3A4 - ldr r0, [r4] - cmp r0, 0 - beq _08140C62 - bl Free - movs r0, 0 - str r0, [r4] -_08140C62: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08140C68: .4byte gUnknown_203F3A4 - thumb_func_end sub_8140C50 - - thumb_func_start sub_8140C6C -sub_8140C6C: @ 8140C6C - push {r4-r6,lr} - adds r4, r0, 0 - movs r2, 0 - movs r5, 0 - adds r6, r4, 0 - adds r6, 0xC -_08140C78: - lsls r0, r2, 2 - adds r1, r4, r0 - str r5, [r1] - adds r3, r2, 0x1 - adds r0, r2 - lsls r0, 2 - movs r1, 0x4 - adds r0, r6 - adds r0, 0x10 -_08140C8A: - str r5, [r0] - subs r0, 0x4 - subs r1, 0x1 - cmp r1, 0 - bge _08140C8A - adds r2, r3, 0 - cmp r2, 0x2 - ble _08140C78 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8140C6C - thumb_func_start sub_8140CA0 sub_8140CA0: @ 8140CA0 push {r4-r7,lr} diff --git a/data/slot_machine.s b/data/slot_machine.s index 5c2093bd0..6a53f4426 100644 --- a/data/slot_machine.s +++ b/data/slot_machine.s @@ -2,52 +2,7 @@ .include "constants/constants.inc" .section .rodata - .align 2 -gUnknown_8464974:: - .incbin "graphics/slot_machine/unk_8464974.gbapal" - -gUnknown_8464994:: - .incbin "graphics/slot_machine/unk_8464994.gbapal" - -gUnknown_84649B4:: - .incbin "graphics/slot_machine/unk_84649b4.gbapal" - -gUnknown_84649D4:: - .incbin "graphics/slot_machine/unk_84649d4.gbapal" - -gUnknown_84649F4:: - .incbin "graphics/slot_machine/unk_84649f4.gbapal" - -gUnknown_8464A14:: - .incbin "graphics/slot_machine/unk_8464a14.4bpp.lz" - -gUnknown_846504C:: - .incbin "graphics/slot_machine/unk_846504c.gbapal" - -gUnknown_846506C:: - .incbin "graphics/slot_machine/unk_846506c.4bpp.lz" - -gUnknown_8465524:: - .incbin "graphics/slot_machine/unk_8465524.gbapal" - -gUnknown_8465544:: - .incbin "graphics/slot_machine/unk_8465544.4bpp.lz" - -gUnknown_84655B0:: @ 84655B0 - obj_tiles gUnknown_8464A14, 0x0e00, 0 - obj_tiles gUnknown_846506C, 0x0c00, 1 - obj_tiles gUnknown_8465544, 0x0280, 2 - -gUnknown_84655C8:: @ 84655C8 - obj_pal gUnknown_8464974, 0 - obj_pal gUnknown_8464994, 1 - obj_pal gUnknown_84649B4, 2 - obj_pal gUnknown_84649D4, 3 - obj_pal gUnknown_84649F4, 4 - obj_pal gUnknown_846504C, 5 - obj_pal gUnknown_8465524, 6 - null_obj_pal - + .align 1 gUnknown_8465608:: @ 8465608 .2byte 0x0002, 0x0002, 0x0000, 0x0000, 0x0002, 0x0004, 0x0003 diff --git a/src/slot_machine.c b/src/slot_machine.c index 172a4014a..129d9b79a 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1,5 +1,6 @@ #include "global.h" #include "palette.h" +#include "decompress.h" #include "task.h" #include "main.h" #include "malloc.h" @@ -33,7 +34,15 @@ struct SlotMachineState u16 payout; }; +struct SlotMachineGfxManager +{ + u32 field_00[3]; + u32 field_0C[3][5]; + u8 filler_4C[0x2C]; +}; + EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL; +EWRAM_DATA struct SlotMachineGfxManager * gUnknown_203F3A4 = NULL; void sub_813F84C(struct SlotMachineState * ptr); void sub_813F898(void); @@ -60,6 +69,7 @@ bool32 sub_81408F4(s32, s32); void sub_81409B4(void); void sub_8140A70(void); u16 sub_8140A80(void); +void sub_8140C6C(struct SlotMachineGfxManager * manager); void sub_8140D7C(s16 *, s16 *); bool32 sub_814104C(void); void sub_8141094(void); @@ -130,6 +140,34 @@ const u16 gUnknown_8464966[] = { 300 }; +const u16 gUnknown_8464974[] = INCBIN_U16("graphics/slot_machine/unk_8464974.gbapal"); +const u16 gUnknown_8464994[] = INCBIN_U16("graphics/slot_machine/unk_8464994.gbapal"); +const u16 gUnknown_84649B4[] = INCBIN_U16("graphics/slot_machine/unk_84649b4.gbapal"); +const u16 gUnknown_84649D4[] = INCBIN_U16("graphics/slot_machine/unk_84649d4.gbapal"); +const u16 gUnknown_84649F4[] = INCBIN_U16("graphics/slot_machine/unk_84649f4.gbapal"); +const u32 gUnknown_8464A14[] = INCBIN_U32("graphics/slot_machine/unk_8464a14.4bpp.lz"); +const u16 gUnknown_846504C[] = INCBIN_U16("graphics/slot_machine/unk_846504c.gbapal"); +const u32 gUnknown_846506C[] = INCBIN_U32("graphics/slot_machine/unk_846506c.4bpp.lz"); +const u16 gUnknown_8465524[] = INCBIN_U16("graphics/slot_machine/unk_8465524.gbapal"); +const u32 gUnknown_8465544[] = INCBIN_U32("graphics/slot_machine/unk_8465544.4bpp.lz"); + +const struct CompressedSpriteSheet gUnknown_84655B0[] = { + {(const void *)gUnknown_8464A14, 0xe00, 0}, + {(const void *)gUnknown_846506C, 0xc00, 1}, + {(const void *)gUnknown_8465544, 0x280, 2}, +}; + +const struct SpritePalette gUnknown_84655C8[] = { + {gUnknown_8464974, 0}, + {gUnknown_8464994, 1}, + {gUnknown_84649B4, 2}, + {gUnknown_84649D4, 3}, + {gUnknown_84649F4, 4}, + {gUnknown_846504C, 5}, + {gUnknown_8465524, 6}, + {NULL} +}; + void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) { ResetTasks(); @@ -1322,3 +1360,55 @@ u16 sub_8140A80(void) } return r9; } + +u16 sub_8140BDC(void) +{ + return sSlotMachineState->payout; +} + +u8 sub_8140BEC(void) +{ + return sSlotMachineState->bet; +} + +bool32 sub_8140BF8(s32 a0) +{ + return sSlotMachineState->field_3C[a0]; +} + +bool32 sub_8140C0C(void) +{ + s32 i; + + for (i = 0; i < NELEMS(gUnknown_84655B0); i++) + LoadCompressedObjectPic(&gUnknown_84655B0[i]); + LoadSpritePalettes(gUnknown_84655C8); + gUnknown_203F3A4 = Alloc(sizeof(*gUnknown_203F3A4)); + if (gUnknown_203F3A4 == NULL) + return FALSE; + sub_8140C6C(gUnknown_203F3A4); + return TRUE; +} + +void sub_8140C50(void) +{ + if (gUnknown_203F3A4 != NULL) + { + Free(gUnknown_203F3A4); + gUnknown_203F3A4 = NULL; + } +} + +void sub_8140C6C(struct SlotMachineGfxManager * manager) +{ + s32 i, j; + + for (i = 0; i < 3; i++) + { + manager->field_00[i] = 0; + for (j = 0; j < 5; j++) + { + manager->field_0C[i][j] = 0; + } + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index fa2499ace..18f6433c4 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1592,9 +1592,6 @@ gUnknown_203F39C: @ 203F39C .align 2 .include "src/slot_machine.o" -gUnknown_203F3A4: @ 203F3A4 - .space 0x4 - sLocationHistory: @ 203F3A8 .space 0x6 From d3aa5a0b97e08c7824eea6b38b2904e443267eab Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 22 May 2019 17:48:56 -0400 Subject: [PATCH 11/38] slot_machine sub_8140CA0 --- asm/slot_machine.s | 108 -------------------------------------------- data/slot_machine.s | 17 ------- src/slot_machine.c | 60 ++++++++++++++++++++++-- 3 files changed, 57 insertions(+), 128 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 9229072da..f79f658ae 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,114 +5,6 @@ .text - thumb_func_start sub_8140CA0 -sub_8140CA0: @ 8140CA0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r7, 0 -_08140CAE: - movs r6, 0 - lsls r0, r7, 2 - adds r1, r7, 0x1 - str r1, [sp] - adds r0, r7 - mov r10, r0 - mov r2, r10 - lsls r2, 2 - mov r8, r2 - movs r3, 0xB0 - lsls r3, 14 - mov r9, r3 -_08140CC6: - mov r0, r10 - lsls r1, r0, 19 - movs r2, 0xA0 - lsls r2, 15 - adds r1, r2 - mov r3, r9 - asrs r2, r3, 16 - ldr r0, _08140D64 @ =gUnknown_84657E4 - asrs r1, 16 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08140D68 @ =gUnknown_8464926 - mov r3, r8 - adds r1, r3, r7 - adds r1, r6, r1 - adds r1, r2 - ldrb r4, [r1] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r0, _08140D6C @ =gSprites - adds r5, r0 - adds r0, r5, 0 - adds r1, r4, 0 - bl StartSpriteAnim - ldr r0, _08140D70 @ =gUnknown_8465608 - lsls r4, 1 - adds r4, r0 - ldrh r0, [r4] - bl IndexOfSpritePaletteTag - lsls r0, 4 - ldrb r2, [r5, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] - movs r0, 0 - strh r7, [r5, 0x2E] - strh r6, [r5, 0x30] - strh r6, [r5, 0x32] - strh r0, [r5, 0x34] - ldrb r0, [r5, 0x3] - movs r2, 0x3F - negs r2, r2 - adds r1, r2, 0 - ands r0, r1 - strb r0, [r5, 0x3] - ldr r0, _08140D74 @ =gUnknown_203F3A4 - ldr r2, [r0] - lsls r1, r6, 2 - add r1, r8 - adds r0, r2, 0 - adds r0, 0xC - adds r0, r1 - str r5, [r0] - ldr r0, _08140D78 @ =0x07000006 - str r0, [r2, 0x70] - movs r3, 0xC0 - lsls r3, 13 - add r9, r3 - adds r6, 0x1 - cmp r6, 0x4 - ble _08140CC6 - ldr r7, [sp] - cmp r7, 0x2 - ble _08140CAE - 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 -_08140D64: .4byte gUnknown_84657E4 -_08140D68: .4byte gUnknown_8464926 -_08140D6C: .4byte gSprites -_08140D70: .4byte gUnknown_8465608 -_08140D74: .4byte gUnknown_203F3A4 -_08140D78: .4byte 0x07000006 - thumb_func_end sub_8140CA0 - thumb_func_start sub_8140D7C sub_8140D7C: @ 8140D7C push {r4-r7,lr} diff --git a/data/slot_machine.s b/data/slot_machine.s index 6a53f4426..25b5a6817 100644 --- a/data/slot_machine.s +++ b/data/slot_machine.s @@ -2,23 +2,6 @@ .include "constants/constants.inc" .section .rodata - .align 1 -gUnknown_8465608:: @ 8465608 - .2byte 0x0002, 0x0002, 0x0000, 0x0000, 0x0002, 0x0004, 0x0003 - -gUnknown_8465616:: @ 8465616 - .2byte 0x0120, 0x011f, 0x011e, 0x011d, 0x011c, 0x011b, 0x011a, 0x0119, 0x0118, 0x0117, 0x0116, 0x0115, 0x0114, 0x0113, 0x0112, 0x0111 - .2byte 0x0110, 0x010f, 0x010e, 0x010d, 0x010c, 0x010b, 0x010a, 0x0109, 0x0108, 0x0107, 0x0106, 0x0105, 0x0104, 0x0103, 0x0102, 0x0101 - .2byte 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100 - .2byte 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100 - .2byte 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, 0x0109, 0x010a, 0x010b, 0x010c, 0x010d, 0x010e, 0x010f, 0x0110 - .2byte 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, 0x0119, 0x011a, 0x011b, 0x011c, 0x011d, 0x011e, 0x011f, 0x0120 - -gUnknown_84656D6:: @ 84656D6 - .byte 0x10, 0x10, 0x10, 0x10, 0x0f, 0x0e, 0x0d, 0x0d, 0x0c, 0x0b, 0x0a, 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0b, 0x0c, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f - .align 2 gUnknown_8465738:: .4byte 0x80000100, 0x00000c00 diff --git a/src/slot_machine.c b/src/slot_machine.c index 129d9b79a..7010bd969 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -37,8 +37,9 @@ struct SlotMachineState struct SlotMachineGfxManager { u32 field_00[3]; - u32 field_0C[3][5]; - u8 filler_4C[0x2C]; + struct Sprite * field_0C[3][5]; + u8 filler_4C[0x28]; + u32 field_70; }; EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL; @@ -168,6 +169,33 @@ const struct SpritePalette gUnknown_84655C8[] = { {NULL} }; +const u16 gUnknown_8465608[] = { + 2, + 2, + 0, + 0, + 2, + 4, + 3 +}; + +const u16 gUnknown_8465616[] = { + 0x0120, 0x011f, 0x011e, 0x011d, 0x011c, 0x011b, 0x011a, 0x0119, 0x0118, 0x0117, 0x0116, 0x0115, 0x0114, 0x0113, 0x0112, 0x0111, + 0x0110, 0x010f, 0x010e, 0x010d, 0x010c, 0x010b, 0x010a, 0x0109, 0x0108, 0x0107, 0x0106, 0x0105, 0x0104, 0x0103, 0x0102, 0x0101, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, 0x0109, 0x010a, 0x010b, 0x010c, 0x010d, 0x010e, 0x010f, 0x0110, + 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, 0x0119, 0x011a, 0x011b, 0x011c, 0x011d, 0x011e, 0x011f, 0x0120 +}; + +const u8 gUnknown_84656D6[] = { + 0x10, 0x10, 0x10, 0x10, 0x0f, 0x0e, 0x0d, 0x0d, 0x0c, 0x0b, 0x0a, 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0b, 0x0c, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f +}; + +extern const struct SpriteTemplate gUnknown_84657E4; + void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) { ResetTasks(); @@ -1408,7 +1436,33 @@ void sub_8140C6C(struct SlotMachineGfxManager * manager) manager->field_00[i] = 0; for (j = 0; j < 5; j++) { - manager->field_0C[i][j] = 0; + manager->field_0C[i][j] = NULL; + } + } +} + +void sub_8140CA0(void) +{ + struct Sprite * sprite; + s32 i, j; + s32 spriteId; + s32 animId; + for (i = 0; i < 3; i++) + { + for (j = 0; j < 5; j++) + { + spriteId = CreateSprite(&gUnknown_84657E4, 80 + 40 * i, 44 + 24 * j, 2); + animId = gUnknown_8464926[i][j]; + sprite = &gSprites[spriteId]; + StartSpriteAnim(sprite, animId); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_8465608[animId]); + sprite->data[0] = i; + sprite->data[1] = j; + sprite->data[2] = j; + sprite->data[3] = 0; + sprite->oam.matrixNum = 0; + gUnknown_203F3A4->field_0C[i][j] = sprite; + gUnknown_203F3A4->field_70 = 0x07000006; } } } From bd9e6dbccf00009236f46722c7e898a055b43b7b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 23 May 2019 08:46:38 -0400 Subject: [PATCH 12/38] slot_machine through sub_8141020 --- asm/slot_machine.s | 363 --------------------------------------------- src/slot_machine.c | 129 ++++++++++++++-- 2 files changed, 117 insertions(+), 375 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index f79f658ae..e234387a0 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,369 +5,6 @@ .text - thumb_func_start sub_8140D7C -sub_8140D7C: @ 8140D7C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - adds r3, r0, 0 - movs r2, 0 - ldr r0, _08140E34 @ =gUnknown_203F3A4 - mov r8, r0 -_08140D90: - movs r4, 0 - ldrsh r6, [r3, r4] - movs r4, 0 - ldrsh r0, [r1, r4] - lsls r0, 3 - mov r10, r0 - lsls r0, r2, 2 - adds r3, 0x2 - str r3, [sp] - adds r1, 0x2 - str r1, [sp, 0x4] - adds r1, r2, 0x1 - str r1, [sp, 0x8] - adds r0, r2 - lsls r0, 2 - adds r2, r0 - mov r9, r2 - adds r5, r0, 0 - movs r7, 0x4 -_08140DB6: - mov r2, r8 - ldr r1, [r2] - adds r1, 0xC - adds r1, r5 - ldr r0, [r1] - mov r3, r10 - strh r3, [r0, 0x26] - ldr r2, _08140E38 @ =gUnknown_8464926 - mov r4, r9 - adds r0, r6, r4 - adds r0, r2 - ldrb r4, [r0] - ldr r0, [r1] - adds r1, r4, 0 - bl StartSpriteAnim - mov r1, r8 - ldr r0, [r1] - adds r0, 0xC - adds r0, r5 - ldr r0, [r0] - adds r1, r4, 0 - bl StartSpriteAnim - ldr r0, _08140E3C @ =gUnknown_8465608 - lsls r4, 1 - adds r4, r0 - ldrh r0, [r4] - bl IndexOfSpritePaletteTag - mov r2, r8 - ldr r1, [r2] - adds r1, 0xC - adds r1, r5 - ldr r3, [r1] - lsls r0, 4 - ldrb r2, [r3, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x5] - adds r6, 0x1 - cmp r6, 0x14 - ble _08140E10 - movs r6, 0 -_08140E10: - adds r5, 0x4 - subs r7, 0x1 - cmp r7, 0 - bge _08140DB6 - ldr r3, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - cmp r2, 0x2 - ble _08140D90 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08140E34: .4byte gUnknown_203F3A4 -_08140E38: .4byte gUnknown_8464926 -_08140E3C: .4byte gUnknown_8465608 - thumb_func_end sub_8140D7C - - thumb_func_start sub_8140E40 -sub_8140E40: @ 8140E40 - push {lr} - ldr r0, _08140E68 @ =0x04000006 - ldrh r0, [r0] - adds r3, r0, 0 - subs r3, 0x2B - cmp r3, 0x53 - bhi _08140E7C - ldr r0, _08140E6C @ =gUnknown_203F3A4 - ldr r0, [r0] - ldr r2, [r0, 0x70] - ldr r1, _08140E70 @ =gUnknown_8465616 - lsls r0, r3, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - ldr r1, _08140E74 @ =0x04000054 - ldr r0, _08140E78 @ =gUnknown_84656D6 - adds r0, r3, r0 - ldrb r0, [r0] - b _08140E8E - .align 2, 0 -_08140E68: .4byte 0x04000006 -_08140E6C: .4byte gUnknown_203F3A4 -_08140E70: .4byte gUnknown_8465616 -_08140E74: .4byte 0x04000054 -_08140E78: .4byte gUnknown_84656D6 -_08140E7C: - ldr r0, _08140E94 @ =gUnknown_203F3A4 - ldr r0, [r0] - ldr r1, [r0, 0x70] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _08140E98 @ =0x04000054 - movs r0, 0 -_08140E8E: - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08140E94: .4byte gUnknown_203F3A4 -_08140E98: .4byte 0x04000054 - thumb_func_end sub_8140E40 - - thumb_func_start sub_8140E9C -sub_8140E9C: @ 8140E9C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r5, 0 - ldr r0, _08140F20 @ =gUnknown_846587C - mov r10, r0 - ldr r0, _08140F24 @ =gUnknown_203F3A4 - mov r9, r0 - ldr r0, _08140F28 @ =gSprites - mov r8, r0 - movs r7, 0x85 - lsls r7, 16 - movs r6, 0xAA - lsls r6, 15 -_08140EBC: - asrs r1, r6, 16 - mov r0, r10 - movs r2, 0x1E - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - mov r0, r9 - ldr r1, [r0] - lsls r4, r5, 2 - adds r1, 0x48 - adds r1, r4 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - add r0, r8 - str r0, [r1] - asrs r1, r7, 16 - mov r0, r10 - movs r2, 0x1E - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - mov r0, r9 - ldr r1, [r0] - adds r1, 0x58 - adds r1, r4 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - add r0, r8 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 11 - adds r7, r0 - adds r6, r0 - adds r5, 0x1 - cmp r5, 0x3 - ble _08140EBC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08140F20: .4byte gUnknown_846587C -_08140F24: .4byte gUnknown_203F3A4 -_08140F28: .4byte gSprites - thumb_func_end sub_8140E9C - - thumb_func_start sub_8140F2C -sub_8140F2C: @ 8140F2C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - bl GetCoins - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - bl sub_8140BDC - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - movs r6, 0xFA - lsls r6, 2 - movs r7, 0 - ldr r0, _08140FC0 @ =gUnknown_203F3A4 - mov r10, r0 -_08140F54: - mov r0, r9 - adds r1, r6, 0 - bl __divsi3 - adds r4, r0, 0 - mov r1, r10 - ldr r0, [r1] - lsls r5, r7, 2 - adds r0, 0x48 - adds r0, r5 - ldr r0, [r0] - lsls r1, r4, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r0, r4, 0 - muls r0, r6 - mov r1, r9 - subs r1, r0 - mov r9, r1 - mov r0, r8 - adds r1, r6, 0 - bl __divsi3 - adds r4, r0, 0 - mov r1, r10 - ldr r0, [r1] - adds r0, 0x58 - adds r0, r5 - ldr r0, [r0] - lsls r1, r4, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r0, r4, 0 - muls r0, r6 - mov r1, r8 - subs r1, r0 - mov r8, r1 - adds r0, r6, 0 - movs r1, 0xA - bl __divsi3 - adds r6, r0, 0 - adds r7, 0x1 - cmp r7, 0x3 - ble _08140F54 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08140FC0: .4byte gUnknown_203F3A4 - thumb_func_end sub_8140F2C - - thumb_func_start sub_8140FC4 -sub_8140FC4: @ 8140FC4 - push {r4-r6,lr} - ldr r6, _08141014 @ =gUnknown_84658D8 - adds r0, r6, 0 - movs r1, 0x10 - movs r2, 0x88 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - ldr r5, _08141018 @ =gUnknown_203F3A4 - ldr r1, [r5] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r4, _0814101C @ =gSprites - adds r0, r4 - str r0, [r1, 0x68] - adds r0, r6, 0 - movs r1, 0xE0 - movs r2, 0x88 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, [r5] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - str r0, [r1, 0x6C] - adds r0, 0x3F - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08141014: .4byte gUnknown_84658D8 -_08141018: .4byte gUnknown_203F3A4 -_0814101C: .4byte gSprites - thumb_func_end sub_8140FC4 - - thumb_func_start sub_8141020 -sub_8141020: @ 8141020 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r6, _08141048 @ =gUnknown_203F3A4 -_0814102A: - ldr r0, [r6] - lsls r1, r4, 2 - adds r0, 0x68 - adds r0, r1 - ldr r0, [r0] - adds r1, r5, 0 - bl StartSpriteAnim - adds r4, 0x1 - cmp r4, 0x1 - ble _0814102A - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08141048: .4byte gUnknown_203F3A4 - thumb_func_end sub_8141020 - thumb_func_start sub_814104C sub_814104C: @ 814104C push {r4,lr} diff --git a/src/slot_machine.c b/src/slot_machine.c index 7010bd969..f8f67eb23 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -38,12 +38,14 @@ struct SlotMachineGfxManager { u32 field_00[3]; struct Sprite * field_0C[3][5]; - u8 filler_4C[0x28]; - u32 field_70; + struct Sprite * field_48[4]; + struct Sprite * field_58[4]; + struct Sprite * field_68[2]; + vu16 * field_70; }; EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL; -EWRAM_DATA struct SlotMachineGfxManager * gUnknown_203F3A4 = NULL; +EWRAM_DATA struct SlotMachineGfxManager * sSlotMachineGfxManager = NULL; void sub_813F84C(struct SlotMachineState * ptr); void sub_813F898(void); @@ -71,7 +73,7 @@ void sub_81409B4(void); void sub_8140A70(void); u16 sub_8140A80(void); void sub_8140C6C(struct SlotMachineGfxManager * manager); -void sub_8140D7C(s16 *, s16 *); +void sub_8140D7C(const s16 *, const s16 *); bool32 sub_814104C(void); void sub_8141094(void); void sub_8141148(u16 a0, u8 a1); @@ -195,6 +197,8 @@ const u8 gUnknown_84656D6[] = { }; extern const struct SpriteTemplate gUnknown_84657E4; +extern const struct SpriteTemplate gUnknown_846587C; +extern const struct SpriteTemplate gUnknown_84658D8; void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) { @@ -1411,19 +1415,19 @@ bool32 sub_8140C0C(void) for (i = 0; i < NELEMS(gUnknown_84655B0); i++) LoadCompressedObjectPic(&gUnknown_84655B0[i]); LoadSpritePalettes(gUnknown_84655C8); - gUnknown_203F3A4 = Alloc(sizeof(*gUnknown_203F3A4)); - if (gUnknown_203F3A4 == NULL) + sSlotMachineGfxManager = Alloc(sizeof(*sSlotMachineGfxManager)); + if (sSlotMachineGfxManager == NULL) return FALSE; - sub_8140C6C(gUnknown_203F3A4); + sub_8140C6C(sSlotMachineGfxManager); return TRUE; } void sub_8140C50(void) { - if (gUnknown_203F3A4 != NULL) + if (sSlotMachineGfxManager != NULL) { - Free(gUnknown_203F3A4); - gUnknown_203F3A4 = NULL; + Free(sSlotMachineGfxManager); + sSlotMachineGfxManager = NULL; } } @@ -1461,8 +1465,109 @@ void sub_8140CA0(void) sprite->data[2] = j; sprite->data[3] = 0; sprite->oam.matrixNum = 0; - gUnknown_203F3A4->field_0C[i][j] = sprite; - gUnknown_203F3A4->field_70 = 0x07000006; + sSlotMachineGfxManager->field_0C[i][j] = sprite; + sSlotMachineGfxManager->field_70 = (vu16 *)(OAM + 0 * sizeof(struct OamData) + offsetof(struct OamData, affineParam)); } } } + +void sub_8140D7C(const s16 * a0, const s16 * a1) +{ + s32 i, j; + s32 r6, r10; + + for (i = 0; i < 3; i++) + { + r6 = *a0; + r10 = *a1 * 8; + for (j = 0; j < 5; j++) + { + sSlotMachineGfxManager->field_0C[i][j]->pos2.y = r10; + { + s32 r4 = gUnknown_8464926[i][r6]; + struct Sprite * sprite = sSlotMachineGfxManager->field_0C[i][j]; + StartSpriteAnim(sprite, r4); + } + { + s32 r4 = gUnknown_8464926[i][r6]; + struct Sprite * sprite = sSlotMachineGfxManager->field_0C[i][j]; + StartSpriteAnim(sprite, r4); + } + sSlotMachineGfxManager->field_0C[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_8465608[gUnknown_8464926[i][r6]]); + r6++; + if (r6 >= 21) + r6 = 0; + } + a0++; + a1++; + } +} + +void sub_8140E40(void) +{ + s32 vcount = REG_VCOUNT - 0x2B; + if (vcount >= 0 && vcount < 0x54) + { + *sSlotMachineGfxManager->field_70 = gUnknown_8465616[vcount]; + REG_BLDY = gUnknown_84656D6[vcount]; + } + else + { + *sSlotMachineGfxManager->field_70 = 0x100; + REG_BLDY = 0; + } +} + +void sub_8140E9C(void) +{ + s32 i; + s32 spriteId; + + for (i = 0; i < 4; i++) + { + spriteId = CreateSprite(&gUnknown_846587C, 0x55 + 7 * i, 30, 0); + sSlotMachineGfxManager->field_48[i] = &gSprites[spriteId]; + spriteId = CreateSprite(&gUnknown_846587C, 0x85 + 7 * i, 30, 0); + sSlotMachineGfxManager->field_58[i] = &gSprites[spriteId]; + } +} + +void sub_8140F2C(void) +{ + s32 coins = GetCoins(); + s32 payout = sub_8140BDC(); + s32 i; + s32 divisor = 1000; + s32 quotient; + + for (i = 0; i < 4; i++) + { + quotient = coins / divisor; + StartSpriteAnim(sSlotMachineGfxManager->field_48[i], quotient); + coins -= quotient * divisor; + quotient = payout / divisor; + StartSpriteAnim(sSlotMachineGfxManager->field_58[i], quotient); + payout -= quotient * divisor; + divisor /= 10; + } +} + +void sub_8140FC4(void) +{ + s32 spriteId; + + spriteId = CreateSprite(&gUnknown_84658D8, 0x10, 0x88, 1); + sSlotMachineGfxManager->field_68[0] = &gSprites[spriteId]; + spriteId = CreateSprite(&gUnknown_84658D8, 0xE0, 0x88, 1); + sSlotMachineGfxManager->field_68[1] = &gSprites[spriteId]; + sSlotMachineGfxManager->field_68[1]->hFlip = TRUE; +} + +void sub_8141020(u8 a0) +{ + s32 i; + for (i = 0; i < 2; i++) + { + StartSpriteAnim(sSlotMachineGfxManager->field_68[i], a0); + } +} From dcdabbf6f2feeebece89114aa9e537a78ec14601 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 23 May 2019 12:14:43 -0400 Subject: [PATCH 13/38] slot_machine sprite templates --- data/slot_machine.s | 163 ------------------------------ src/slot_machine.c | 239 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 236 insertions(+), 166 deletions(-) diff --git a/data/slot_machine.s b/data/slot_machine.s index 25b5a6817..b6212ba71 100644 --- a/data/slot_machine.s +++ b/data/slot_machine.s @@ -3,169 +3,6 @@ .section .rodata .align 2 -gUnknown_8465738:: - .4byte 0x80000100, 0x00000c00 - -gUnknown_8465740:: - obj_image_anim_frame 0x00, 4 - obj_image_anim_end - -gUnknown_8465748:: - obj_image_anim_frame 0x10, 4 - obj_image_anim_end - -gUnknown_8465750:: - obj_image_anim_frame 0x20, 4 - obj_image_anim_end - -gUnknown_8465758:: - obj_image_anim_frame 0x30, 4 - obj_image_anim_end - -gUnknown_8465760:: - obj_image_anim_frame 0x40, 4 - obj_image_anim_end - -gUnknown_8465768:: - obj_image_anim_frame 0x50, 4 - obj_image_anim_end - -gUnknown_8465770:: - obj_image_anim_frame 0x60, 4 - obj_image_anim_end - -gUnknown_8465778:: - obj_image_anim_frame 0x20, 4 - obj_image_anim_end - -gUnknown_8465780:: - obj_image_anim_frame 0x30, 4 - obj_image_anim_end - -gUnknown_8465788:: - obj_image_anim_frame 0x40, 4 - obj_image_anim_end - -gUnknown_8465790:: - obj_image_anim_frame 0x50, 4 - obj_image_anim_end - -gUnknown_8465798:: - obj_image_anim_frame 0x60, 4 - obj_image_anim_end - -gUnknown_84657A0:: - .4byte gUnknown_8465740 - .4byte gUnknown_8465748 - .4byte gUnknown_8465750 - .4byte gUnknown_8465758 - .4byte gUnknown_8465760 - .4byte gUnknown_8465768 - .4byte gUnknown_8465770 - .4byte gUnknown_8465778 - .4byte gUnknown_8465780 - .4byte gUnknown_8465788 - .4byte gUnknown_8465790 - .4byte gUnknown_8465798 - -gUnknown_84657D0:: - obj_rot_scal_anim_frame 0x100, 0x100, 0, 1 - obj_rot_scal_anim_end - -gUnknown_84657E0:: @ unused - .4byte gUnknown_84657D0 - -gUnknown_84657E4:: @ 84657E4 - spr_template 0, 0, gUnknown_8465738, gUnknown_84657A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_84657FC:: - .4byte 0x00008000, 0x00000400 - -gUnknown_8465804:: - obj_image_anim_frame 0x00, 4 - obj_image_anim_end - -gUnknown_846580C:: - obj_image_anim_frame 0x02, 4 - obj_image_anim_end - -gUnknown_8465814:: - obj_image_anim_frame 0x04, 4 - obj_image_anim_end - -gUnknown_846581C:: - obj_image_anim_frame 0x06, 4 - obj_image_anim_end - -gUnknown_8465824:: - obj_image_anim_frame 0x08, 4 - obj_image_anim_end - -gUnknown_846582C:: - obj_image_anim_frame 0x0a, 4 - obj_image_anim_end - -gUnknown_8465834:: - obj_image_anim_frame 0x0c, 4 - obj_image_anim_end - -gUnknown_846583C:: - obj_image_anim_frame 0x0e, 4 - obj_image_anim_end - -gUnknown_8465844:: - obj_image_anim_frame 0x10, 4 - obj_image_anim_end - -gUnknown_846584C:: - obj_image_anim_frame 0x12, 4 - obj_image_anim_end - -gUnknown_8465854:: - .4byte gUnknown_8465804 - .4byte gUnknown_846580C - .4byte gUnknown_8465814 - .4byte gUnknown_846581C - .4byte gUnknown_8465824 - .4byte gUnknown_846582C - .4byte gUnknown_8465834 - .4byte gUnknown_846583C - .4byte gUnknown_8465844 - .4byte gUnknown_846584C - -gUnknown_846587C:: @ 846587C - spr_template 2, 6, gUnknown_84657FC, gUnknown_8465854, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_8465894:: - .4byte 0x80000000, 0x00000400 - -gUnknown_846589C:: - obj_image_anim_frame 0, 4 - obj_image_anim_end - -gUnknown_84658A4:: - obj_image_anim_frame 0, 24 - obj_image_anim_frame 16, 24 - obj_image_anim_jump 0 - -gUnknown_84658B0:: - obj_image_anim_frame 32, 28 - obj_image_anim_frame 48, 28 - obj_image_anim_jump 0 - -gUnknown_84658BC:: - obj_image_anim_frame 64, 12 - obj_image_anim_frame 80, 12 - obj_image_anim_jump 0 - -gUnknown_84658C8:: - .4byte gUnknown_846589C - .4byte gUnknown_84658A4 - .4byte gUnknown_84658B0 - .4byte gUnknown_84658BC - -gUnknown_84658D8:: @ 84658D8 - spr_template 1, 5, gUnknown_8465894, gUnknown_84658C8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_84658F0:: @ 84658F0 .4byte sub_8141198 diff --git a/src/slot_machine.c b/src/slot_machine.c index f8f67eb23..acac324e2 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -196,9 +196,242 @@ const u8 gUnknown_84656D6[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0b, 0x0c, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f }; -extern const struct SpriteTemplate gUnknown_84657E4; -extern const struct SpriteTemplate gUnknown_846587C; -extern const struct SpriteTemplate gUnknown_84658D8; +const struct OamData gUnknown_8465738 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = ST_OAM_SIZE_2, + .tileNum = 0, + .priority = 3, + .paletteNum = 0, + .affineParam = 0 +}; + +const union AnimCmd gUnknown_8465740[] = { + ANIMCMD_FRAME(0x00, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465748[] = { + ANIMCMD_FRAME(0x10, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465750[] = { + ANIMCMD_FRAME(0x20, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465758[] = { + ANIMCMD_FRAME(0x30, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465760[] = { + ANIMCMD_FRAME(0x40, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465768[] = { + ANIMCMD_FRAME(0x50, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465770[] = { + ANIMCMD_FRAME(0x60, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465778[] = { + ANIMCMD_FRAME(0x20, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465780[] = { + ANIMCMD_FRAME(0x30, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465788[] = { + ANIMCMD_FRAME(0x40, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465790[] = { + ANIMCMD_FRAME(0x50, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465798[] = { + ANIMCMD_FRAME(0x60, 4), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_84657A0[] = { + gUnknown_8465740, + gUnknown_8465748, + gUnknown_8465750, + gUnknown_8465758, + gUnknown_8465760, + gUnknown_8465768, + gUnknown_8465770, + gUnknown_8465778, + gUnknown_8465780, + gUnknown_8465788, + gUnknown_8465790, + gUnknown_8465798 +}; + +const union AffineAnimCmd gUnknown_84657D0[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 1), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gUnknown_84657E0[] = { + gUnknown_84657D0 +}; + +const struct SpriteTemplate gUnknown_84657E4 = { + 0, 0, &gUnknown_8465738, gUnknown_84657A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct OamData gUnknown_84657FC = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_V_RECTANGLE, + .x = 0, + .matrixNum = 0, + .size = ST_OAM_SIZE_0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0 +}; + +const union AnimCmd gUnknown_8465804[] = { + ANIMCMD_FRAME(0x00, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_846580C[] = { + ANIMCMD_FRAME(0x02, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465814[] = { + ANIMCMD_FRAME(0x04, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_846581C[] = { + ANIMCMD_FRAME(0x06, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465824[] = { + ANIMCMD_FRAME(0x08, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_846582C[] = { + ANIMCMD_FRAME(0x0a, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465834[] = { + ANIMCMD_FRAME(0x0c, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_846583C[] = { + ANIMCMD_FRAME(0x0e, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8465844[] = { + ANIMCMD_FRAME(0x10, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_846584C[] = { + ANIMCMD_FRAME(0x12, 4), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_8465854[] = { + gUnknown_8465804, + gUnknown_846580C, + gUnknown_8465814, + gUnknown_846581C, + gUnknown_8465824, + gUnknown_846582C, + gUnknown_8465834, + gUnknown_846583C, + gUnknown_8465844, + gUnknown_846584C +}; + +const struct SpriteTemplate gUnknown_846587C = { + 2, 6, &gUnknown_84657FC, gUnknown_8465854, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct OamData gUnknown_8465894 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = ST_OAM_SIZE_2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0 +}; + +const union AnimCmd gUnknown_846589C[] = { + ANIMCMD_FRAME(0, 4), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_84658A4[] = { + ANIMCMD_FRAME( 0, 24), + ANIMCMD_FRAME(16, 24), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gUnknown_84658B0[] = { + ANIMCMD_FRAME(32, 28), + ANIMCMD_FRAME(48, 28), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gUnknown_84658BC[] = { + ANIMCMD_FRAME(64, 12), + ANIMCMD_FRAME(80, 12), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd *const gUnknown_84658C8[] = { + gUnknown_846589C, + gUnknown_84658A4, + gUnknown_84658B0, + gUnknown_84658BC +}; + +const struct SpriteTemplate gUnknown_84658D8 = { + 1, 5, &gUnknown_8465894, gUnknown_84658C8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) { From f111acf92a56bed70b15df882857d8081a092889 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 23 May 2019 17:16:32 -0400 Subject: [PATCH 14/38] slot_machine through sub_8141180 --- asm/slot_machine.s | 175 -------------------------------------------- data/slot_machine.s | 18 ----- src/slot_machine.c | 114 +++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+), 193 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index e234387a0..3d675083b 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,181 +5,6 @@ .text - thumb_func_start sub_814104C -sub_814104C: @ 814104C - push {r4,lr} - ldr r0, _0814108C @ =0x0000285c - bl Alloc - adds r4, r0, 0 - cmp r4, 0 - beq _08141082 - ldr r2, _08141090 @ =sub_81410CC - movs r1, 0 - adds r0, r4, 0 - adds r0, 0x1C -_08141062: - strb r1, [r0, 0x3] - subs r0, 0x4 - cmp r0, r4 - bge _08141062 - movs r0, 0 - str r0, [r4, 0x28] - adds r0, r2, 0 - movs r1, 0x2 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - adds r2, r4, 0 - bl SetWordTaskArg -_08141082: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0814108C: .4byte 0x0000285c -_08141090: .4byte sub_81410CC - thumb_func_end sub_814104C - - thumb_func_start sub_8141094 -sub_8141094: @ 8141094 - push {r4,lr} - ldr r4, _081410C8 @ =sub_81410CC - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _081410BA - bl sub_814112C - bl Free - adds r0, r4, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_081410BA: - bl sub_8140C50 - bl FreeAllWindowBuffers - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081410C8: .4byte sub_81410CC - thumb_func_end sub_8141094 - - thumb_func_start sub_81410CC -sub_81410CC: @ 81410CC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl GetWordTaskArg - adds r6, r0, 0 - ldr r0, _08141114 @ =gUnknown_84658F0 - mov r8, r0 - adds r4, r6, 0x2 - adds r5, r6, 0 - movs r7, 0x7 -_081410E8: - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _08141100 - ldrh r0, [r5] - lsls r0, 2 - add r0, r8 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r6, 0 - bl _call_via_r2 - strb r0, [r4, 0x1] -_08141100: - adds r4, 0x4 - adds r5, 0x4 - subs r7, 0x1 - cmp r7, 0 - bge _081410E8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08141114: .4byte gUnknown_84658F0 - thumb_func_end sub_81410CC - - thumb_func_start sub_8141118 -sub_8141118: @ 8141118 - push {lr} - bl TransferPlttBuffer - bl LoadOam - bl ProcessSpriteCopyRequests - pop {r0} - bx r0 - thumb_func_end sub_8141118 - - thumb_func_start sub_814112C -sub_814112C: @ 814112C - push {lr} - ldr r0, _08141144 @ =sub_81410CC - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl GetWordTaskArg - pop {r1} - bx r1 - .align 2, 0 -_08141144: .4byte sub_81410CC - thumb_func_end sub_814112C - - thumb_func_start sub_8141148 -sub_8141148: @ 8141148 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - bl sub_814112C - adds r1, r0, 0 - lsls r5, 2 - adds r5, r1, r5 - movs r0, 0 - strh r4, [r5] - strb r0, [r5, 0x2] - ldr r0, _0814117C @ =gUnknown_84658F0 - lsls r4, 2 - adds r4, r0 - adds r0, r5, 0x2 - ldr r2, [r4] - bl _call_via_r2 - strb r0, [r5, 0x3] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0814117C: .4byte gUnknown_84658F0 - thumb_func_end sub_8141148 - - thumb_func_start sub_8141180 -sub_8141180: @ 8141180 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_814112C - lsls r4, 2 - adds r0, r4 - ldrb r0, [r0, 0x3] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8141180 - thumb_func_start sub_8141198 sub_8141198: @ 8141198 push {r4-r7,lr} diff --git a/data/slot_machine.s b/data/slot_machine.s index b6212ba71..c2854d6e4 100644 --- a/data/slot_machine.s +++ b/data/slot_machine.s @@ -4,24 +4,6 @@ .section .rodata .align 2 -gUnknown_84658F0:: @ 84658F0 - .4byte sub_8141198 - .4byte sub_8141460 - .4byte sub_81414AC - .4byte sub_81414EC - .4byte sub_81414FC - .4byte sub_8141518 - .4byte sub_8141558 - .4byte sub_8141568 - .4byte sub_8141578 - .4byte sub_8141584 - .4byte sub_81415C8 - .4byte sub_8141610 - .4byte sub_8141650 - .4byte sub_8141690 - .4byte sub_81416C8 - .4byte sub_8141764 - gUnknown_8465930:: @ 8465930 .incbin "graphics/slot_machine/unk_8465930.gbapal" diff --git a/src/slot_machine.c b/src/slot_machine.c index acac324e2..1b1bff7e8 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -44,6 +44,21 @@ struct SlotMachineGfxManager vu16 * field_70; }; +struct SlotMachineReelActionTaskDataSub_0000 +{ + u16 unk0; + u8 unk2; + u8 unk3; +}; + +struct SlotMachineReelActionTaskData +{ + struct SlotMachineReelActionTaskDataSub_0000 field_0000[8]; + u8 filler_0020[8]; + u32 field_0028; + u8 filler_002C[0x2830]; +}; + EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL; EWRAM_DATA struct SlotMachineGfxManager * sSlotMachineGfxManager = NULL; @@ -76,6 +91,24 @@ void sub_8140C6C(struct SlotMachineGfxManager * manager); void sub_8140D7C(const s16 *, const s16 *); bool32 sub_814104C(void); void sub_8141094(void); +struct SlotMachineReelActionTaskData * sub_814112C(void); +void sub_81410CC(u8 taskId); +bool8 sub_8141198(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_8141460(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_81414AC(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_81414EC(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_81414FC(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_8141518(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_8141558(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_8141568(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_8141578(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_8141584(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_81415C8(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_8141610(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_8141650(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_8141690(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_81416C8(u8 *, struct SlotMachineReelActionTaskData *); +bool8 sub_8141764(u8 *, struct SlotMachineReelActionTaskData *); void sub_8141148(u16 a0, u8 a1); bool32 sub_8141180(u8 a0); void sub_8141C30(u8, u8); @@ -433,6 +466,25 @@ const struct SpriteTemplate gUnknown_84658D8 = { 1, 5, &gUnknown_8465894, gUnknown_84658C8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; +bool8 (*const gUnknown_84658F0[])(u8 *, struct SlotMachineReelActionTaskData *) = { + sub_8141198, + sub_8141460, + sub_81414AC, + sub_81414EC, + sub_81414FC, + sub_8141518, + sub_8141558, + sub_8141568, + sub_8141578, + sub_8141584, + sub_81415C8, + sub_8141610, + sub_8141650, + sub_8141690, + sub_81416C8, + sub_8141764 +}; + void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) { ResetTasks(); @@ -1804,3 +1856,65 @@ void sub_8141020(u8 a0) StartSpriteAnim(sSlotMachineGfxManager->field_68[i], a0); } } + +bool32 sub_814104C(void) +{ + s32 i; + + struct SlotMachineReelActionTaskData * ptr = Alloc(sizeof(struct SlotMachineReelActionTaskData)); + if (ptr == NULL) + return FALSE; + for (i = 0; i < 8; i++) + ptr->field_0000[i].unk3 = 0; + ptr->field_0028 = 0; + SetWordTaskArg(CreateTask(sub_81410CC, 2), 0, (uintptr_t)ptr); + return FALSE; +} + +void sub_8141094(void) +{ + if (FuncIsActiveTask(sub_81410CC)) + { + Free(sub_814112C()); + DestroyTask(FindTaskIdByFunc(sub_81410CC)); + } + sub_8140C50(); + FreeAllWindowBuffers(); +} + +void sub_81410CC(u8 taskId) +{ + struct SlotMachineReelActionTaskData * ptr = (void *)GetWordTaskArg(taskId, 0); + s32 i; + + for (i = 0; i < 8; i++) + { + if (ptr->field_0000[i].unk3) + ptr->field_0000[i].unk3 = gUnknown_84658F0[ptr->field_0000[i].unk0](&ptr->field_0000[i].unk2, ptr); + } +} + +void sub_8141118(void) +{ + TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); +} + +struct SlotMachineReelActionTaskData * sub_814112C(void) +{ + return (void *)GetWordTaskArg(FindTaskIdByFunc(sub_81410CC), 0); +} + +void sub_8141148(u16 a0, u8 a1) +{ + struct SlotMachineReelActionTaskData * ptr = sub_814112C(); + ptr->field_0000[a1].unk0 = a0; + ptr->field_0000[a1].unk2 = 0; + ptr->field_0000[a1].unk3 = gUnknown_84658F0[a0](&ptr->field_0000[a1].unk2, ptr); +} + +bool32 sub_8141180(u8 a0) +{ + return sub_814112C()->field_0000[a0].unk3; +} From 36fc72f25e178d53342acff66870e518ed7a144a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 24 May 2019 18:57:01 -0400 Subject: [PATCH 15/38] slot_machine nonmatching sub_8141198 --- asm/slot_machine.s | 291 -------------------- data/slot_machine.s | 51 ---- include/new_menu_helpers.h | 1 + src/slot_machine.c | 530 +++++++++++++++++++++++++++++++++++-- 4 files changed, 504 insertions(+), 369 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 3d675083b..3240a8045 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,297 +5,6 @@ .text - thumb_func_start sub_8141198 -sub_8141198: @ 8141198 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r7, r0, 0 - mov r8, r1 - ldrb r6, [r7] - cmp r6, 0x1 - beq _081411D0 - cmp r6, 0x1 - bgt _081411B4 - cmp r6, 0 - beq _081411C2 - b _08141450 -_081411B4: - cmp r6, 0x2 - bne _081411BA - b _081413E4 -_081411BA: - cmp r6, 0x3 - bne _081411C0 - b _08141436 -_081411C0: - b _08141450 -_081411C2: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - b _0814142E -_081411D0: - movs r0, 0 - bl SetVBlankCallback - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r1, 0xE0 - lsls r1, 19 - movs r2, 0x80 - lsls r2, 3 - movs r0, 0 - movs r3, 0x1 - bl RequestDma3Fill - movs r1, 0xC0 - lsls r1, 19 - movs r0, 0 - movs r2, 0x20 - movs r3, 0x1 - bl RequestDma3Fill - ldr r1, _0814139C @ =0x0600c000 - movs r0, 0 - movs r2, 0x20 - movs r3, 0x1 - bl RequestDma3Fill - movs r0, 0 - movs r1, 0 - bl SetGpuReg - bl sub_80F6C14 - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _081413A0 @ =gUnknown_8466B10 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - ldr r0, _081413A4 @ =gUnknown_8466B20 - bl InitWindows - ldr r1, _081413A8 @ =0x0000205c - add r1, r8 - movs r0, 0x3 - bl SetBgTilemapBuffer - movs r4, 0x20 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - bl reset_temp_tile_data_buffers - ldr r1, _081413AC @ =gUnknown_84659D0 - movs r5, 0 - str r5, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram - ldr r1, _081413B0 @ =gUnknown_846653C - str r5, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0xC0 - bl decompress_and_copy_tile_data_to_vram - ldr r1, _081413B4 @ =0x0000185c - add r1, r8 - movs r0, 0x2 - bl SetBgTilemapBuffer - ldr r1, _081413B8 @ =gUnknown_84661D4 - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - ldr r0, _081413BC @ =gUnknown_8465930 - movs r1, 0 - movs r2, 0xA0 - bl LoadPalette - ldr r0, _081413C0 @ =gUnknown_84664BC - movs r1, 0x50 - movs r2, 0x20 - bl LoadPalette - ldr r0, _081413C4 @ =gUnknown_84665C0 - movs r1, 0x70 - movs r2, 0x60 - bl LoadPalette - ldr r1, _081413C8 @ =0x00007fde - add r0, sp, 0xC - strh r1, [r0] - movs r1, 0 - movs r2, 0x2 - bl LoadPalette - movs r0, 0 - movs r1, 0xA - movs r2, 0xD0 - bl LoadUserWindowBorderGfx - movs r0, 0 - movs r1, 0x1 - movs r2, 0xF0 - bl sub_814FDA0 - ldr r1, _081413CC @ =0x0000085c - add r1, r8 - movs r0, 0 - bl SetBgTilemapBuffer - str r4, [sp] - movs r0, 0x1E - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, _081413D0 @ =gUnknown_8466620 - str r5, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram - ldr r1, _081413D4 @ =gUnknown_8466998 - str r6, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl stdpal_get - movs r1, 0xE0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0x1 - movs r1, 0xFF - bl FillWindowPixelBuffer - movs r0, 0x1 - bl PutWindowTilemap - ldr r4, _081413D8 @ =gUnknown_841B779 - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - movs r2, 0xEC - subs r2, r0 - add r1, sp, 0x10 - movs r0, 0xF - strb r0, [r1] - strb r6, [r1, 0x1] - movs r0, 0x2 - strb r0, [r1, 0x2] - lsls r2, 24 - lsrs r2, 24 - str r1, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r3, 0 - bl box_print - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r1, 0x83 - lsls r1, 5 - movs r0, 0 - bl SetGpuRegBits - movs r0, 0x50 - movs r1, 0xF8 - bl SetGpuReg - bl sub_8140C0C - bl sub_8140CA0 - bl sub_8140E9C - bl sub_8140FC4 - bl sub_8140F2C - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - ldr r0, _081413DC @ =sub_8141118 - bl SetVBlankCallback - ldr r0, _081413E0 @ =sub_8140E40 - bl SetHBlankCallback - b _0814142E - .align 2, 0 -_0814139C: .4byte 0x0600c000 -_081413A0: .4byte gUnknown_8466B10 -_081413A4: .4byte gUnknown_8466B20 -_081413A8: .4byte 0x0000205c -_081413AC: .4byte gUnknown_84659D0 -_081413B0: .4byte gUnknown_846653C -_081413B4: .4byte 0x0000185c -_081413B8: .4byte gUnknown_84661D4 -_081413BC: .4byte gUnknown_8465930 -_081413C0: .4byte gUnknown_84664BC -_081413C4: .4byte gUnknown_84665C0 -_081413C8: .4byte 0x00007fde -_081413CC: .4byte 0x0000085c -_081413D0: .4byte gUnknown_8466620 -_081413D4: .4byte gUnknown_8466998 -_081413D8: .4byte gUnknown_841B779 -_081413DC: .4byte sub_8141118 -_081413E0: .4byte sub_8140E40 -_081413E4: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08141450 - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x1 - bl HideBg - bl sub_8141B34 - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - str r5, [sp] - adds r0, r4, 0 - adds r1, r4, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x3 - bl EnableInterrupts -_0814142E: - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - b _08141450 -_08141436: - bl UpdatePaletteFade - ldr r0, _0814144C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08141450 - movs r0, 0 - b _08141452 - .align 2, 0 -_0814144C: .4byte gPaletteFade -_08141450: - movs r0, 0x1 -_08141452: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8141198 - thumb_func_start sub_8141460 sub_8141460: @ 8141460 push {r4,lr} diff --git a/data/slot_machine.s b/data/slot_machine.s index c2854d6e4..5c95ae7bf 100644 --- a/data/slot_machine.s +++ b/data/slot_machine.s @@ -2,57 +2,6 @@ .include "constants/constants.inc" .section .rodata - .align 2 - -gUnknown_8465930:: @ 8465930 - .incbin "graphics/slot_machine/unk_8465930.gbapal" - -gUnknown_8465950:: @ 8465950 - .incbin "graphics/slot_machine/unk_8465950.gbapal" - .incbin "graphics/slot_machine/unk_8465970.gbapal" - .incbin "graphics/slot_machine/unk_8465990.gbapal" - .incbin "graphics/slot_machine/unk_84659b0.gbapal" - -gUnknown_84659D0:: @ 84659D0 - .incbin "graphics/slot_machine/unk_84659d0.4bpp.lz" - -gUnknown_84661D4:: @ 84661D4 - .incbin "graphics/slot_machine/unk_84661d4.bin.lz" - -gUnknown_84664BC:: @ 84664BC - .incbin "graphics/slot_machine/unk_84664bc.gbapal" - -gUnknown_84664DC:: @ 84664DC - .incbin "graphics/slot_machine/unk_84664dc.gbapal" - .incbin "graphics/slot_machine/unk_84664fc.gbapal" - .incbin "graphics/slot_machine/unk_846651c.gbapal" - -gUnknown_846653C:: @ 846653C - .incbin "graphics/slot_machine/unk_846653c.4bpp.lz" - -gUnknown_84665C0:: @ 84665C0 - .incbin "graphics/slot_machine/unk_84665c0.gbapal" - .incbin "graphics/slot_machine/unk_84665e0.gbapal" - .incbin "graphics/slot_machine/unk_8466600.gbapal" - -gUnknown_8466620:: @ 8466620 - .incbin "graphics/slot_machine/unk_8466620.4bpp.lz" - -gUnknown_8466998:: @ 8466998 - .incbin "graphics/slot_machine/unk_8466998.bin.lz" - - .align 2 @ bg templates -gUnknown_8466B10:: @ 8466B10 - .4byte 0x000001d0 - .4byte 0x000031ff - .4byte 0x000021ea - .4byte 0x000001c5 - -gUnknown_8466B20:: @ 8466B20 - window_template 0x00, 0x05, 0x0f, 0x14, 0x04, 0x0f, 0x004f - window_template 0x00, 0x00, 0x00, 0x1e, 0x02, 0x0e, 0x0013 - window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 - gUnknown_8466B38:: .2byte 0x00a4, 0x00a5, 0x00a6, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00e7, 0x012c, 0x014c, 0x0191, 0x01b1, 0x01f6, 0x0216, 0x0217, 0x0218 .2byte 0x0219, 0x0237, 0x0238, 0x0239 diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index b3daf43c6..8fb3bba78 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -32,5 +32,6 @@ u16 sub_80F796C(void); void sub_80F6B08(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void * gfx, u32 size, u16 a3, u8 a4); void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow); +void sub_80F6C14(void); #endif // GUARD_NEW_MENU_HELPERS_H diff --git a/src/slot_machine.c b/src/slot_machine.c index 1b1bff7e8..bf0cb8020 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1,4 +1,7 @@ #include "global.h" +#include "gpu_regs.h" +#include "dma3.h" +#include "bg.h" #include "palette.h" #include "decompress.h" #include "task.h" @@ -10,9 +13,13 @@ #include "overworld.h" #include "slot_machine.h" #include "menu.h" +#include "new_menu_helpers.h" +#include "text_window.h" #include "random.h" #include "constants/songs.h" +extern const u8 gUnknown_841B779[]; + struct SlotMachineState { MainCallback savedCallback; @@ -44,20 +51,24 @@ struct SlotMachineGfxManager vu16 * field_70; }; -struct SlotMachineReelActionTaskDataSub_0000 +struct SlotMachineSetupTaskDataSub_0000 { u16 unk0; u8 unk2; u8 unk3; }; -struct SlotMachineReelActionTaskData +struct SlotMachineSetupTaskData { - struct SlotMachineReelActionTaskDataSub_0000 field_0000[8]; + struct SlotMachineSetupTaskDataSub_0000 field_0000[8]; u8 filler_0020[8]; u32 field_0028; - u8 filler_002C[0x2830]; -}; + u8 filler_002C[0x830]; + u8 field_085C[0x800]; + u8 field_105C[0x800]; + u8 field_185C[0x800]; + u8 field_205C[0x800]; +}; // size: 285C EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL; EWRAM_DATA struct SlotMachineGfxManager * sSlotMachineGfxManager = NULL; @@ -91,26 +102,27 @@ void sub_8140C6C(struct SlotMachineGfxManager * manager); void sub_8140D7C(const s16 *, const s16 *); bool32 sub_814104C(void); void sub_8141094(void); -struct SlotMachineReelActionTaskData * sub_814112C(void); +struct SlotMachineSetupTaskData * sub_814112C(void); void sub_81410CC(u8 taskId); -bool8 sub_8141198(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_8141460(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_81414AC(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_81414EC(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_81414FC(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_8141518(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_8141558(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_8141568(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_8141578(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_8141584(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_81415C8(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_8141610(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_8141650(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_8141690(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_81416C8(u8 *, struct SlotMachineReelActionTaskData *); -bool8 sub_8141764(u8 *, struct SlotMachineReelActionTaskData *); void sub_8141148(u16 a0, u8 a1); bool32 sub_8141180(u8 a0); +bool8 sub_8141198(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_8141460(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_81414AC(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_81414EC(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_81414FC(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_8141518(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_8141558(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_8141568(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_8141578(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_8141584(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_81415C8(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_8141610(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_8141650(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_8141690(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_81416C8(u8 *, struct SlotMachineSetupTaskData *); +bool8 sub_8141764(u8 *, struct SlotMachineSetupTaskData *); +void sub_8141B34(void); void sub_8141C30(u8, u8); const u8 gUnknown_8464890[][2] = { @@ -466,7 +478,7 @@ const struct SpriteTemplate gUnknown_84658D8 = { 1, 5, &gUnknown_8465894, gUnknown_84658C8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -bool8 (*const gUnknown_84658F0[])(u8 *, struct SlotMachineReelActionTaskData *) = { +bool8 (*const gUnknown_84658F0[])(u8 *, struct SlotMachineSetupTaskData *) = { sub_8141198, sub_8141460, sub_81414AC, @@ -485,6 +497,81 @@ bool8 (*const gUnknown_84658F0[])(u8 *, struct SlotMachineReelActionTaskData *) sub_8141764 }; +const u16 gUnknown_8465930[] = INCBIN_U16("graphics/slot_machine/unk_8465930.gbapal"); +const u16 gUnknown_8465950[] = INCBIN_U16("graphics/slot_machine/unk_8465950.gbapal"); +const u16 gUnknown_8465970[] = INCBIN_U16("graphics/slot_machine/unk_8465970.gbapal"); +const u16 gUnknown_8465990[] = INCBIN_U16("graphics/slot_machine/unk_8465990.gbapal"); +const u16 gUnknown_84659B0[] = INCBIN_U16("graphics/slot_machine/unk_84659b0.gbapal"); +const u32 gUnknown_84659D0[] = INCBIN_U32("graphics/slot_machine/unk_84659d0.4bpp.lz"); +const u32 gUnknown_84661D4[] = INCBIN_U32("graphics/slot_machine/unk_84661d4.bin.lz"); +const u16 gUnknown_84664BC[] = INCBIN_U16("graphics/slot_machine/unk_84664bc.gbapal"); +const u16 gUnknown_84664DC[] = INCBIN_U16("graphics/slot_machine/unk_84664dc.gbapal"); +const u16 gUnknown_84664FC[] = INCBIN_U16("graphics/slot_machine/unk_84664fc.gbapal"); +const u16 gUnknown_846651C[] = INCBIN_U16("graphics/slot_machine/unk_846651c.gbapal"); +const u32 gUnknown_846653C[] = INCBIN_U32("graphics/slot_machine/unk_846653c.4bpp.lz"); +const u16 gUnknown_84665C0[] = INCBIN_U16("graphics/slot_machine/unk_84665c0.gbapal"); +const u16 gUnknown_84665E0[] = INCBIN_U16("graphics/slot_machine/unk_84665e0.gbapal"); +const u16 gUnknown_8466600[] = INCBIN_U16("graphics/slot_machine/unk_8466600.gbapal"); +const u32 gUnknown_8466620[] = INCBIN_U32("graphics/slot_machine/unk_8466620.4bpp.lz"); +const u32 gUnknown_8466998[] = INCBIN_U32("graphics/slot_machine/unk_8466998.bin.lz"); + +const struct BgTemplate gUnknown_8466B10[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 3, + .charBaseIndex = 3, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 28, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + } +}; + +const struct WindowTemplate gUnknown_8466B20[] = { + { + .bg = 0, + .tilemapLeft = 5, + .tilemapTop = 15, + .width = 20, + .height = 4, + .paletteNum = 0x0f, + .baseBlock = 0x04f + }, { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 2, + .paletteNum = 0x0e, + .baseBlock = 0x013 + }, + DUMMY_WIN_TEMPLATE +}; + void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) { ResetTasks(); @@ -1861,7 +1948,7 @@ bool32 sub_814104C(void) { s32 i; - struct SlotMachineReelActionTaskData * ptr = Alloc(sizeof(struct SlotMachineReelActionTaskData)); + struct SlotMachineSetupTaskData * ptr = Alloc(sizeof(struct SlotMachineSetupTaskData)); if (ptr == NULL) return FALSE; for (i = 0; i < 8; i++) @@ -1884,7 +1971,7 @@ void sub_8141094(void) void sub_81410CC(u8 taskId) { - struct SlotMachineReelActionTaskData * ptr = (void *)GetWordTaskArg(taskId, 0); + struct SlotMachineSetupTaskData * ptr = (void *)GetWordTaskArg(taskId, 0); s32 i; for (i = 0; i < 8; i++) @@ -1901,14 +1988,14 @@ void sub_8141118(void) ProcessSpriteCopyRequests(); } -struct SlotMachineReelActionTaskData * sub_814112C(void) +struct SlotMachineSetupTaskData * sub_814112C(void) { return (void *)GetWordTaskArg(FindTaskIdByFunc(sub_81410CC), 0); } void sub_8141148(u16 a0, u8 a1) { - struct SlotMachineReelActionTaskData * ptr = sub_814112C(); + struct SlotMachineSetupTaskData * ptr = sub_814112C(); ptr->field_0000[a1].unk0 = a0; ptr->field_0000[a1].unk2 = 0; ptr->field_0000[a1].unk3 = gUnknown_84658F0[a0](&ptr->field_0000[a1].unk2, ptr); @@ -1918,3 +2005,392 @@ bool32 sub_8141180(u8 a0) { return sub_814112C()->field_0000[a0].unk3; } + +#ifdef NONMATCHING +bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + u16 pal; + struct TextColor textColor; + u32 x; + + switch (*state) + { + case 0: + BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + (*state)++; + break; + case 1: + SetVBlankCallback(NULL); + ResetSpriteData(); + FreeAllSpritePalettes(); + RequestDma3Fill(0, (void *)OAM, OAM_SIZE, 1); + RequestDma3Fill(0, (void *)VRAM, 0x20, 1); + RequestDma3Fill(0, (void *)(VRAM + 0xC000), 0x20, 1); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + sub_80F6C14(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_8466B10, NELEMS(gUnknown_8466B10)); + InitWindows(gUnknown_8466B20); + + SetBgTilemapBuffer(3, ptr->field_205C); + FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 32, 32); + CopyBgTilemapBufferToVram(3); + + reset_temp_tile_data_buffers(); + decompress_and_copy_tile_data_to_vram(2, gUnknown_84659D0, 0, 0x00, 0); + decompress_and_copy_tile_data_to_vram(2, gUnknown_846653C, 0, 0xC0, 0); + SetBgTilemapBuffer(2, ptr->field_185C); + CopyToBgTilemapBuffer(2, gUnknown_84661D4, 0, 0x00); + CopyBgTilemapBufferToVram(2); + LoadPalette(gUnknown_8465930, 0x00, 0xA0); + LoadPalette(gUnknown_84664BC, 0x50, 0x20); + LoadPalette(gUnknown_84665C0, 0x70, 0x60); + pal = RGB(30, 30, 31); + LoadPalette(&pal, 0x00, 0x02); + LoadUserWindowBorderGfx(0, 0x00A, 0xD0); + sub_814FDA0(0, 0x001, 0xF0); + + SetBgTilemapBuffer(0, ptr->field_085C); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 32, 30); + decompress_and_copy_tile_data_to_vram(1, gUnknown_8466620, 0, 0, 0); + decompress_and_copy_tile_data_to_vram(1, gUnknown_8466998, 0, 0, 1); + CopyBgTilemapBufferToVram(1); + + LoadPalette(stdpal_get(2), 0xE0, 0x20); + FillWindowPixelBuffer(1, 0xFF); + PutWindowTilemap(1); + + x = 0xEC - GetStringWidth(0, gUnknown_841B779, 0); + textColor.fgColor = 15; + textColor.bgColor = 1; + textColor.shadowColor = 2; + box_print(1, 0, x, 0, &textColor, 0, gUnknown_841B779); + CopyBgTilemapBufferToVram(0); + + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | 0x20 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN); + sub_8140C0C(); + sub_8140CA0(); + sub_8140E9C(); + sub_8140FC4(); + sub_8140F2C(); + BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + SetVBlankCallback(sub_8141118); + SetHBlankCallback(sub_8140E40); + (*state)++; + break; + case 2: + if (!free_temp_tile_data_buffers_if_possible()) + { + ShowBg(0); + ShowBg(3); + ShowBg(2); + HideBg(1); + sub_8141B34(); + BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK); + EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); + (*state)++; + } + break; + case 3: + UpdatePaletteFade(); + if (!gPaletteFade.active) + return FALSE; + break; + } + return TRUE; +} +#else +NAKED +bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tsub sp, 0x14\n" + "\tadds r7, r0, 0\n" + "\tmov r8, r1\n" + "\tldrb r6, [r7]\n" + "\tcmp r6, 0x1\n" + "\tbeq _081411D0\n" + "\tcmp r6, 0x1\n" + "\tbgt _081411B4\n" + "\tcmp r6, 0\n" + "\tbeq _081411C2\n" + "\tb _08141450\n" + "_081411B4:\n" + "\tcmp r6, 0x2\n" + "\tbne _081411BA\n" + "\tb _081413E4\n" + "_081411BA:\n" + "\tcmp r6, 0x3\n" + "\tbne _081411C0\n" + "\tb _08141436\n" + "_081411C0:\n" + "\tb _08141450\n" + "_081411C2:\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tmovs r1, 0x10\n" + "\tmovs r2, 0\n" + "\tbl BlendPalettes\n" + "\tb _0814142E\n" + "_081411D0:\n" + "\tmovs r0, 0\n" + "\tbl SetVBlankCallback\n" + "\tbl ResetSpriteData\n" + "\tbl FreeAllSpritePalettes\n" + "\tmovs r1, 0xE0\n" + "\tlsls r1, 19\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 3\n" + "\tmovs r0, 0\n" + "\tmovs r3, 0x1\n" + "\tbl RequestDma3Fill\n" + "\tmovs r1, 0xC0\n" + "\tlsls r1, 19\n" + "\tmovs r0, 0\n" + "\tmovs r2, 0x20\n" + "\tmovs r3, 0x1\n" + "\tbl RequestDma3Fill\n" + "\tldr r1, _0814139C @ =0x0600c000\n" + "\tmovs r0, 0\n" + "\tmovs r2, 0x20\n" + "\tmovs r3, 0x1\n" + "\tbl RequestDma3Fill\n" + "\tmovs r0, 0\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tbl sub_80F6C14\n" + "\tmovs r0, 0\n" + "\tbl ResetBgsAndClearDma3BusyFlags\n" + "\tldr r1, _081413A0 @ =gUnknown_8466B10\n" + "\tmovs r0, 0\n" + "\tmovs r2, 0x4\n" + "\tbl InitBgsFromTemplates\n" + "\tldr r0, _081413A4 @ =gUnknown_8466B20\n" + "\tbl InitWindows\n" + "\tldr r1, _081413A8 @ =0x0000205c\n" + "\tadd r1, r8\n" + "\tmovs r0, 0x3\n" + "\tbl SetBgTilemapBuffer\n" + "\tmovs r4, 0x20\n" + "\tstr r4, [sp]\n" + "\tstr r4, [sp, 0x4]\n" + "\tmovs r0, 0x3\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl FillBgTilemapBufferRect_Palette0\n" + "\tmovs r0, 0x3\n" + "\tbl CopyBgTilemapBufferToVram\n" + "\tbl reset_temp_tile_data_buffers\n" + "\tldr r1, _081413AC @ =gUnknown_84659D0\n" + "\tmovs r5, 0\n" + "\tstr r5, [sp]\n" + "\tmovs r0, 0x2\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl decompress_and_copy_tile_data_to_vram\n" + "\tldr r1, _081413B0 @ =gUnknown_846653C\n" + "\tstr r5, [sp]\n" + "\tmovs r0, 0x2\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0xC0\n" + "\tbl decompress_and_copy_tile_data_to_vram\n" + "\tldr r1, _081413B4 @ =0x0000185c\n" + "\tadd r1, r8\n" + "\tmovs r0, 0x2\n" + "\tbl SetBgTilemapBuffer\n" + "\tldr r1, _081413B8 @ =gUnknown_84661D4\n" + "\tmovs r0, 0x2\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl CopyToBgTilemapBuffer\n" + "\tmovs r0, 0x2\n" + "\tbl CopyBgTilemapBufferToVram\n" + "\tldr r0, _081413BC @ =gUnknown_8465930\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0xA0\n" + "\tbl LoadPalette\n" + "\tldr r0, _081413C0 @ =gUnknown_84664BC\n" + "\tmovs r1, 0x50\n" + "\tmovs r2, 0x20\n" + "\tbl LoadPalette\n" + "\tldr r0, _081413C4 @ =gUnknown_84665C0\n" + "\tmovs r1, 0x70\n" + "\tmovs r2, 0x60\n" + "\tbl LoadPalette\n" + "\tldr r1, _081413C8 @ =0x00007fde\n" + "\tadd r0, sp, 0xC\n" + "\tstrh r1, [r0]\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0x2\n" + "\tbl LoadPalette\n" + "\tmovs r0, 0\n" + "\tmovs r1, 0xA\n" + "\tmovs r2, 0xD0\n" + "\tbl LoadUserWindowBorderGfx\n" + "\tmovs r0, 0\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0xF0\n" + "\tbl sub_814FDA0\n" + "\tldr r1, _081413CC @ =0x0000085c\n" + "\tadd r1, r8\n" + "\tmovs r0, 0\n" + "\tbl SetBgTilemapBuffer\n" + "\tstr r4, [sp]\n" + "\tmovs r0, 0x1E\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r0, 0\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x2\n" + "\tbl FillBgTilemapBufferRect_Palette0\n" + "\tldr r1, _081413D0 @ =gUnknown_8466620\n" + "\tstr r5, [sp]\n" + "\tmovs r0, 0x1\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl decompress_and_copy_tile_data_to_vram\n" + "\tldr r1, _081413D4 @ =gUnknown_8466998\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl decompress_and_copy_tile_data_to_vram\n" + "\tmovs r0, 0x1\n" + "\tbl CopyBgTilemapBufferToVram\n" + "\tmovs r0, 0x2\n" + "\tbl stdpal_get\n" + "\tmovs r1, 0xE0\n" + "\tmovs r2, 0x20\n" + "\tbl LoadPalette\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0xFF\n" + "\tbl FillWindowPixelBuffer\n" + "\tmovs r0, 0x1\n" + "\tbl PutWindowTilemap\n" + "\tldr r4, _081413D8 @ =gUnknown_841B779\n" + "\tmovs r0, 0\n" + "\tadds r1, r4, 0\n" + "\tmovs r2, 0\n" + "\tbl GetStringWidth\n" + "\tmovs r2, 0xEC\n" + "\tsubs r2, r0\n" + "\tadd r1, sp, 0x10\n" + "\tmovs r0, 0xF\n" + "\tstrb r0, [r1]\n" + "\tstrb r6, [r1, 0x1]\n" + "\tmovs r0, 0x2\n" + "\tstrb r0, [r1, 0x2]\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tstr r1, [sp]\n" + "\tstr r5, [sp, 0x4]\n" + "\tstr r4, [sp, 0x8]\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0\n" + "\tmovs r3, 0\n" + "\tbl box_print\n" + "\tmovs r0, 0\n" + "\tbl CopyBgTilemapBufferToVram\n" + "\tmovs r1, 0x83\n" + "\tlsls r1, 5\n" + "\tmovs r0, 0\n" + "\tbl SetGpuRegBits\n" + "\tmovs r0, 0x50\n" + "\tmovs r1, 0xF8\n" + "\tbl SetGpuReg\n" + "\tbl sub_8140C0C\n" + "\tbl sub_8140CA0\n" + "\tbl sub_8140E9C\n" + "\tbl sub_8140FC4\n" + "\tbl sub_8140F2C\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tmovs r1, 0x10\n" + "\tmovs r2, 0\n" + "\tbl BlendPalettes\n" + "\tldr r0, _081413DC @ =sub_8141118\n" + "\tbl SetVBlankCallback\n" + "\tldr r0, _081413E0 @ =sub_8140E40\n" + "\tbl SetHBlankCallback\n" + "\tb _0814142E\n" + "\t.align 2, 0\n" + "_0814139C: .4byte 0x0600c000\n" + "_081413A0: .4byte gUnknown_8466B10\n" + "_081413A4: .4byte gUnknown_8466B20\n" + "_081413A8: .4byte 0x0000205c\n" + "_081413AC: .4byte gUnknown_84659D0\n" + "_081413B0: .4byte gUnknown_846653C\n" + "_081413B4: .4byte 0x0000185c\n" + "_081413B8: .4byte gUnknown_84661D4\n" + "_081413BC: .4byte gUnknown_8465930\n" + "_081413C0: .4byte gUnknown_84664BC\n" + "_081413C4: .4byte gUnknown_84665C0\n" + "_081413C8: .4byte 0x00007fde\n" + "_081413CC: .4byte 0x0000085c\n" + "_081413D0: .4byte gUnknown_8466620\n" + "_081413D4: .4byte gUnknown_8466998\n" + "_081413D8: .4byte gUnknown_841B779\n" + "_081413DC: .4byte sub_8141118\n" + "_081413E0: .4byte sub_8140E40\n" + "_081413E4:\n" + "\tbl free_temp_tile_data_buffers_if_possible\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tcmp r5, 0\n" + "\tbne _08141450\n" + "\tmovs r0, 0\n" + "\tbl ShowBg\n" + "\tmovs r0, 0x3\n" + "\tbl ShowBg\n" + "\tmovs r0, 0x2\n" + "\tbl ShowBg\n" + "\tmovs r0, 0x1\n" + "\tbl HideBg\n" + "\tbl sub_8141B34\n" + "\tmovs r4, 0x1\n" + "\tnegs r4, r4\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x10\n" + "\tmovs r2, 0\n" + "\tbl BlendPalettes\n" + "\tstr r5, [sp]\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r4, 0\n" + "\tmovs r2, 0x10\n" + "\tmovs r3, 0\n" + "\tbl BeginNormalPaletteFade\n" + "\tmovs r0, 0x3\n" + "\tbl EnableInterrupts\n" + "_0814142E:\n" + "\tldrb r0, [r7]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r7]\n" + "\tb _08141450\n" + "_08141436:\n" + "\tbl UpdatePaletteFade\n" + "\tldr r0, _0814144C @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _08141450\n" + "\tmovs r0, 0\n" + "\tb _08141452\n" + "\t.align 2, 0\n" + "_0814144C: .4byte gPaletteFade\n" + "_08141450:\n" + "\tmovs r0, 0x1\n" + "_08141452:\n" + "\tadd sp, 0x14\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif //NONMATCHING From c37b93e8a6973e0f2cecbbc3eef628a1709b298a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 26 May 2019 11:34:02 -0400 Subject: [PATCH 16/38] slot_machine through sub_8141764 --- asm/slot_machine.s | 498 --------------------------------------------- src/slot_machine.c | 245 +++++++++++++++++++++- 2 files changed, 244 insertions(+), 499 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 3240a8045..5dbf01acc 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,504 +5,6 @@ .text - thumb_func_start sub_8141460 -sub_8141460: @ 8141460 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _08141472 - cmp r0, 0x1 - beq _0814148A - b _081414A0 -_08141472: - movs r1, 0x1 - negs r1, r1 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _081414A0 -_0814148A: - ldr r0, _0814149C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081414A0 - movs r0, 0 - b _081414A2 - .align 2, 0 -_0814149C: .4byte gPaletteFade -_081414A0: - movs r0, 0x1 -_081414A2: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8141460 - - thumb_func_start sub_81414AC -sub_81414AC: @ 81414AC - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _081414BC - cmp r0, 0x1 - beq _081414D4 - b _081414E2 -_081414BC: - movs r0, 0x2 - bl GetBgTilemapBuffer - bl sub_8141834 - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _081414E2 -_081414D4: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _081414E2 - movs r0, 0 - b _081414E4 -_081414E2: - movs r0, 0x1 -_081414E4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81414AC - - thumb_func_start sub_81414EC -sub_81414EC: @ 81414EC - push {lr} - movs r0, 0x1 - bl sub_8141020 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_81414EC - - thumb_func_start sub_81414FC -sub_81414FC: @ 81414FC - push {lr} - movs r0, 0x2 - bl sub_8141020 - ldr r0, _08141514 @ =sub_814191C - movs r1, 0x3 - bl CreateTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_08141514: .4byte sub_814191C - thumb_func_end sub_81414FC - - thumb_func_start sub_8141518 -sub_8141518: @ 8141518 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _08141528 - cmp r0, 0x1 - beq _08141534 - b _08141550 -_08141528: - bl sub_8141AB0 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08141550 -_08141534: - ldr r0, _0814154C @ =sub_814191C - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08141550 - movs r0, 0 - bl sub_8141020 - movs r0, 0 - b _08141552 - .align 2, 0 -_0814154C: .4byte sub_814191C -_08141550: - movs r0, 0x1 -_08141552: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8141518 - - thumb_func_start sub_8141558 -sub_8141558: @ 8141558 - push {lr} - movs r0, 0x3 - bl sub_8141020 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_8141558 - - thumb_func_start sub_8141568 -sub_8141568: @ 8141568 - push {lr} - movs r0, 0 - bl sub_8141020 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_8141568 - - thumb_func_start sub_8141578 -sub_8141578: @ 8141578 - push {lr} - bl sub_8140F2C - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_8141578 - - thumb_func_start sub_8141584 -sub_8141584: @ 8141584 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _08141594 - cmp r0, 0x1 - beq _081415B0 - b _081415BE -_08141594: - ldr r0, _081415AC @ =gUnknown_841B747 - bl sub_81417E4 - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _081415BE - .align 2, 0 -_081415AC: .4byte gUnknown_841B747 -_081415B0: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _081415BE - movs r0, 0 - b _081415C0 -_081415BE: - movs r0, 0x1 -_081415C0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8141584 - - thumb_func_start sub_81415C8 -sub_81415C8: @ 81415C8 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _081415D8 - cmp r0, 0x1 - beq _081415F8 - b _08141606 -_081415D8: - ldr r0, _081415F4 @ =gUnknown_841B76B - bl sub_81417E4 - movs r0, 0 - bl sub_8141AD8 - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08141606 - .align 2, 0 -_081415F4: .4byte gUnknown_841B76B -_081415F8: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08141606 - movs r0, 0 - b _08141608 -_08141606: - movs r0, 0x1 -_08141608: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81415C8 - - thumb_func_start sub_8141610 -sub_8141610: @ 8141610 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _08141620 - cmp r0, 0x1 - beq _08141638 - b _08141646 -_08141620: - bl sub_8141828 - bl sub_8141B18 - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08141646 -_08141638: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08141646 - movs r0, 0 - b _08141648 -_08141646: - movs r0, 0x1 -_08141648: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8141610 - - thumb_func_start sub_8141650 -sub_8141650: @ 8141650 - push {r4,lr} - adds r4, r0, 0 - ldrb r2, [r4] - cmp r2, 0 - beq _08141660 - cmp r2, 0x1 - beq _08141678 - b _08141686 -_08141660: - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - bl sub_8141BA0 - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08141686 -_08141678: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08141686 - movs r0, 0 - b _08141688 -_08141686: - movs r0, 0x1 -_08141688: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8141650 - - thumb_func_start sub_8141690 -sub_8141690: @ 8141690 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _081416A0 - cmp r0, 0x1 - beq _081416B2 - b _081416C0 -_081416A0: - bl sub_8141BE4 - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _081416C0 -_081416B2: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _081416C0 - movs r0, 0 - b _081416C2 -_081416C0: - movs r0, 0x1 -_081416C2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8141690 - - thumb_func_start sub_81416C8 -sub_81416C8: @ 81416C8 - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - ldrb r4, [r6] - cmp r4, 0x1 - beq _08141724 - cmp r4, 0x1 - bgt _081416DE - cmp r4, 0 - beq _081416E4 - b _0814175A -_081416DE: - cmp r4, 0x2 - beq _08141756 - b _0814175A -_081416E4: - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl SetGpuRegBits - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x3D - bl SetGpuReg - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x42 - movs r1, 0xA0 - bl SetGpuReg - movs r0, 0x1 - bl ShowBg - movs r0, 0x6 - bl PlaySE - str r4, [r5, 0x24] - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - b _0814175A -_08141724: - ldr r0, [r5, 0x24] - adds r0, 0x10 - str r0, [r5, 0x24] - cmp r0, 0xFF - ble _0814173A - movs r0, 0x80 - lsls r0, 1 - str r0, [r5, 0x24] - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] -_0814173A: - ldr r0, [r5, 0x24] - movs r1, 0x80 - lsls r1, 1 - subs r1, r0 - lsls r1, 8 - movs r0, 0x1 - movs r2, 0 - bl ChangeBgX - ldrh r1, [r5, 0x24] - movs r0, 0x40 - bl SetGpuReg - b _0814175A -_08141756: - movs r0, 0 - b _0814175C -_0814175A: - movs r0, 0x1 -_0814175C: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81416C8 - - thumb_func_start sub_8141764 -sub_8141764: @ 8141764 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4] - cmp r0, 0x1 - beq _08141790 - cmp r0, 0x1 - bgt _0814177A - cmp r0, 0 - beq _08141784 - b _081417DC -_0814177A: - cmp r0, 0x2 - beq _081417C0 - cmp r0, 0x3 - beq _081417D8 - b _081417DC -_08141784: - movs r0, 0x6 - bl PlaySE - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] -_08141790: - ldr r0, [r5, 0x24] - subs r0, 0x10 - str r0, [r5, 0x24] - cmp r0, 0 - bgt _081417A4 - movs r0, 0 - str r0, [r5, 0x24] - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] -_081417A4: - ldr r0, [r5, 0x24] - movs r1, 0x80 - lsls r1, 1 - subs r1, r0 - lsls r1, 8 - movs r0, 0x1 - movs r2, 0 - bl ChangeBgX - ldrh r1, [r5, 0x24] - movs r0, 0x40 - bl SetGpuReg - b _081417DC -_081417C0: - movs r0, 0x1 - bl HideBg - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl ClearGpuRegBits - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _081417DC -_081417D8: - movs r0, 0 - b _081417DE -_081417DC: - movs r0, 0x1 -_081417DE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8141764 - thumb_func_start sub_81417E4 sub_81417E4: @ 81417E4 push {r4,lr} diff --git a/src/slot_machine.c b/src/slot_machine.c index bf0cb8020..93714311c 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -18,6 +18,8 @@ #include "random.h" #include "constants/songs.h" +extern const u8 gUnknown_841B747[]; +extern const u8 gUnknown_841B76B[]; extern const u8 gUnknown_841B779[]; struct SlotMachineState @@ -61,7 +63,9 @@ struct SlotMachineSetupTaskDataSub_0000 struct SlotMachineSetupTaskData { struct SlotMachineSetupTaskDataSub_0000 field_0000[8]; - u8 filler_0020[8]; + u8 field_0020; + // align 2 + s32 field_0024; u32 field_0028; u8 filler_002C[0x830]; u8 field_085C[0x800]; @@ -122,7 +126,16 @@ bool8 sub_8141650(u8 *, struct SlotMachineSetupTaskData *); bool8 sub_8141690(u8 *, struct SlotMachineSetupTaskData *); bool8 sub_81416C8(u8 *, struct SlotMachineSetupTaskData *); bool8 sub_8141764(u8 *, struct SlotMachineSetupTaskData *); +void sub_81417E4(const u8 * str); +void sub_8141828(void); +void sub_8141834(u16 * bgTilemapBuffer); +void sub_814191C(u8 taskId); +void sub_8141AB0(void); +void sub_8141AD8(u8 a0); +void sub_8141B18(void); void sub_8141B34(void); +void sub_8141BA0(u8 a0); +void sub_8141BE4(void); void sub_8141C30(u8, u8); const u8 gUnknown_8464890[][2] = { @@ -2394,3 +2407,233 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) "\tbx r1"); } #endif //NONMATCHING + +bool8 sub_8141460(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, 0); + (*state)++; + break; + case 1: + if (!gPaletteFade.active) + return FALSE; + break; + } + return TRUE; +} + +bool8 sub_81414AC(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + sub_8141834(GetBgTilemapBuffer(2)); + CopyBgTilemapBufferToVram(2); + (*state)++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + return FALSE; + break; + } + return TRUE; +} + +bool8 sub_81414EC(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + sub_8141020(1); + return FALSE; +} + +bool8 sub_81414FC(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + sub_8141020(2); + CreateTask(sub_814191C, 3); + return FALSE; +} + +bool8 sub_8141518(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + sub_8141AB0(); + (*state)++; + break; + case 1: + if (!FuncIsActiveTask(sub_814191C)) + { + sub_8141020(0); + return FALSE; + } + break; + } + return TRUE; +} + +bool8 sub_8141558(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + sub_8141020(3); + return FALSE; +} + +bool8 sub_8141568(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + sub_8141020(FALSE); + return FALSE; +} + +bool8 sub_8141578(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + sub_8140F2C(); + return FALSE; +} + +bool8 sub_8141584(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + sub_81417E4(gUnknown_841B747); + CopyWindowToVram(0, 3); + (*state)++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + return FALSE; + break; + } + return TRUE; +} + +bool8 sub_81415C8(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + sub_81417E4(gUnknown_841B76B); + sub_8141AD8(0); + CopyWindowToVram(0, 3); + (*state)++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + return FALSE; + break; + } + return TRUE; +} + +bool8 sub_8141610(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + sub_8141828(); + sub_8141B18(); + CopyWindowToVram(0, 3); + (*state)++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + return FALSE; + break; + } + return TRUE; +} + +bool8 sub_8141650(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + sub_8141BA0(ptr->field_0020); + CopyBgTilemapBufferToVram(2); + (*state)++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + return FALSE; + break; + } + return TRUE; +} + +bool8 sub_8141690(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + sub_8141BE4(); + CopyBgTilemapBufferToVram(2); + (*state)++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + return FALSE; + break; + } + return TRUE; +} + +bool8 sub_81416C8(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + SetGpuReg(REG_OFFSET_WININ, 0x3F); + SetGpuReg(REG_OFFSET_WINOUT, 0x3D); + SetGpuReg(REG_OFFSET_WIN0H, 0x00); + SetGpuReg(REG_OFFSET_WIN1H, 0xA0); + ShowBg(1); + PlaySE(SE_WIN_OPEN); + ptr->field_0024 = 0; + (*state)++; + break; + case 1: + ptr->field_0024 += 16; + if (ptr->field_0024 >= 256) + { + ptr->field_0024 = 256; + (*state)++; + } + ChangeBgX(1, 256 * (256 - ptr->field_0024), 0); + SetGpuReg(REG_OFFSET_WIN0H, ptr->field_0024); + break; + case 2: + return FALSE; + } + return TRUE; +} + +bool8 sub_8141764(u8 * state, struct SlotMachineSetupTaskData * ptr) +{ + switch (*state) + { + case 0: + PlaySE(SE_WIN_OPEN); + (*state)++; + // fallthrough + case 1: + ptr->field_0024 -= 16; + if (ptr->field_0024 <= 0) + { + ptr->field_0024 = 0; + (*state)++; + } + ChangeBgX(1, 256 * (256 - ptr->field_0024), 0); + SetGpuReg(REG_OFFSET_WIN0H, ptr->field_0024); + break; + case 2: + HideBg(1); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + (*state)++; + break; + case 3: + return FALSE; + } + return TRUE; +} From a20ac0d7b0705d508e21fdd9cc8dfaaa4d569577 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 21 Jul 2019 12:36:23 +0800 Subject: [PATCH 17/38] hot fix --- src/diploma.c | 8 ++++---- src/pokemon.c | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/diploma.c b/src/diploma.c index 517ee8aa0..e89bdc7d7 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -35,7 +35,7 @@ static void DiplomaBgInit(void); static void DiplomaPrintText(void); static u8 DiplomaLoadGfx(void); static void DiplomaVblankHandler(void); -static void CB2_DiplomaInit(void); +static void CB2_Diploma(void); static void Task_WaitForExit(u8); static void Task_DiplomaInit(u8); static void Task_DiplomaReturnToOverworld(u8); @@ -101,10 +101,10 @@ void CB2_ShowDiploma(void) gDiploma->callbackStep = 0; DiplomaBgInit(); CreateTask(Task_DiplomaInit, 0); - SetMainCallback2(CB2_DiplomaInit); + SetMainCallback2(CB2_Diploma); } -static void CB2_DiplomaInit(void) +static void CB2_Diploma(void) { RunTasks(); AnimateSprites(); @@ -134,7 +134,7 @@ static void Task_DiplomaInit(u8 taskId) case 4: if (HasAllKantoMons()) { - SetGpuReg(REG_OFFSET_BG1HOFS, 0x80 << 1); + SetGpuReg(REG_OFFSET_BG1HOFS, 0x100); } else { diff --git a/src/pokemon.c b/src/pokemon.c index b948e4033..6f1df249f 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1621,7 +1621,7 @@ const u16 gLinkPlayerFacilityClasses[] = FACILITY_CLASS_BEAUTY_2, FACILITY_CLASS_AQUA_LEADER, }; -const static struct OamData sOakSpeechNidoranFDummyOamData = +static const struct OamData sOakSpeechNidoranFDummyOamData = { .y = 0, .affineMode = 0, @@ -1637,7 +1637,7 @@ const static struct OamData sOakSpeechNidoranFDummyOamData = .paletteNum = 0, }; -const struct SpriteTemplate sOakSpeechNidoranFDummyTemplate = +static const struct SpriteTemplate sOakSpeechNidoranFDummyTemplate = { .tileTag = SPRITE_INVALID_TAG, .paletteTag = SPRITE_INVALID_TAG, From e37e10854230c3b0f2b96dfe4e8626a1352ac1c9 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 23 Jul 2019 09:16:59 +0800 Subject: [PATCH 18/38] document battle transition symbols --- asm/battle_setup.s | 4 +- asm/battle_tower.s | 6 +- asm/battle_transition.s | 1580 +++++++++++++++++------------------ asm/overworld.s | 6 +- data/data_83F5738.s | 74 +- include/battle_transition.h | 4 +- src/teachy_tv.c | 4 +- src/trainer_tower.c | 4 +- sym_ewram.txt | 2 +- 9 files changed, 842 insertions(+), 842 deletions(-) diff --git a/asm/battle_setup.s b/asm/battle_setup.s index 99e4c3468..787b0fb8e 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -30,13 +30,13 @@ _0807F644: bne _0807F686 bl sub_812B478 ldrb r0, [r4, 0x2] - bl sub_80D08B8 + bl BT_StartOnField ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0807F686 _0807F65E: - bl sub_80D08F8 + bl BT_IsDone lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 13a75573a..ee6856130 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -2025,7 +2025,7 @@ sub_80E68C4: @ 80E68C4 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - bl sub_80D08F8 + bl BT_IsDone lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -2114,7 +2114,7 @@ _080E6970: bl sub_8080060 lsls r0, 24 lsrs r0, 24 - bl sub_80D08B8 + bl BT_StartOnField b _080E69E6 .align 2, 0 _080E698C: .4byte gSaveBlock1Ptr @@ -2154,7 +2154,7 @@ _080E69A0: bl sub_8080060 lsls r0, 24 lsrs r0, 24 - bl sub_80D08B8 + bl BT_StartOnField _080E69E6: add sp, 0x4 pop {r4-r6} diff --git a/asm/battle_transition.s b/asm/battle_transition.s index 48a5836ed..83f03553d 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -5,44 +5,44 @@ .text - thumb_func_start sub_80D08B8 -sub_80D08B8: @ 80D08B8 + thumb_func_start BT_StartOnField +BT_StartOnField: @ 80D08B8 push {r4,r5,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r5, _080D08DC @ =gUnknown_2039A2C + ldr r5, _080D08DC @ =sTransitionStructPtr movs r0, 0x3C bl AllocZeroed str r0, [r5] ldr r1, _080D08E0 @ =gMain - ldr r0, _080D08E4 @ =sub_80565A8 + ldr r0, _080D08E4 @ =CB2_OverworldBasic str r0, [r1, 0x4] adds r0, r4, 0 - bl LaunchBattleTransitionTask + bl BT_LaunchTask pop {r4,r5} pop {r0} bx r0 .align 2, 0 -_080D08DC: .4byte gUnknown_2039A2C +_080D08DC: .4byte sTransitionStructPtr _080D08E0: .4byte gMain -_080D08E4: .4byte sub_80565A8 - thumb_func_end sub_80D08B8 +_080D08E4: .4byte CB2_OverworldBasic + thumb_func_end BT_StartOnField - thumb_func_start sub_80D08E8 -sub_80D08E8: @ 80D08E8 + thumb_func_start BT_StartWithoutAlloc +BT_StartWithoutAlloc: @ 80D08E8 push {lr} lsls r0, 24 lsrs r0, 24 - bl LaunchBattleTransitionTask + bl BT_LaunchTask pop {r0} bx r0 - thumb_func_end sub_80D08E8 + thumb_func_end BT_StartWithoutAlloc - thumb_func_start sub_80D08F8 -sub_80D08F8: @ 80D08F8 + thumb_func_start BT_IsDone +BT_IsDone: @ 80D08F8 push {r4,r5,lr} - ldr r0, _080D091C @ =sub_80D0978 + ldr r0, _080D091C @ =BT_TaskMain bl FindTaskIdByFunc lsls r0, 24 lsrs r5, r0, 24 @@ -58,11 +58,11 @@ sub_80D08F8: @ 80D08F8 movs r0, 0 b _080D093C .align 2, 0 -_080D091C: .4byte sub_80D0978 +_080D091C: .4byte BT_TaskMain _080D0920: .4byte gTasks _080D0924: - bl sub_80D3DD0 - ldr r4, _080D0944 @ =gUnknown_2039A2C + bl BT_InitCtrlBlk + ldr r4, _080D0944 @ =sTransitionStructPtr ldr r0, [r4] bl Free movs r0, 0 @@ -75,16 +75,16 @@ _080D093C: pop {r1} bx r1 .align 2, 0 -_080D0944: .4byte gUnknown_2039A2C - thumb_func_end sub_80D08F8 +_080D0944: .4byte sTransitionStructPtr + thumb_func_end BT_IsDone - thumb_func_start LaunchBattleTransitionTask -LaunchBattleTransitionTask: @ 80D0948 + thumb_func_start BT_LaunchTask +BT_LaunchTask: @ 80D0948 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _080D0970 @ =sub_80D0978 + ldr r0, _080D0970 @ =BT_TaskMain movs r1, 0x2 bl CreateTask lsls r0, 24 @@ -99,16 +99,16 @@ LaunchBattleTransitionTask: @ 80D0948 pop {r0} bx r0 .align 2, 0 -_080D0970: .4byte sub_80D0978 +_080D0970: .4byte BT_TaskMain _080D0974: .4byte gTasks - thumb_func_end LaunchBattleTransitionTask + thumb_func_end BT_LaunchTask - thumb_func_start sub_80D0978 -sub_80D0978: @ 80D0978 + thumb_func_start BT_TaskMain +BT_TaskMain: @ 80D0978 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D09A8 @ =gUnknown_83FA3B0 + ldr r5, _080D09A8 @ =sBT_MainPhases ldr r2, _080D09AC @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -129,12 +129,12 @@ _080D098A: pop {r0} bx r0 .align 2, 0 -_080D09A8: .4byte gUnknown_83FA3B0 +_080D09A8: .4byte sBT_MainPhases _080D09AC: .4byte gTasks - thumb_func_end sub_80D0978 + thumb_func_end BT_TaskMain - thumb_func_start Transition_Phase1 -Transition_Phase1: @ 80D09B0 + thumb_func_start BT_Phase1Blink +BT_Phase1Blink: @ 80D09B0 push {r4,lr} adds r4, r0, 0 bl SetWeatherScreenFadeOut @@ -142,7 +142,7 @@ Transition_Phase1: @ 80D09B0 ldr r1, _080D09E0 @ =gPlttBufferUnfaded ldr r2, _080D09E4 @ =0x04000100 bl CpuSet - ldr r1, _080D09E8 @ =gUnknown_83FA320 + ldr r1, _080D09E8 @ =sBT_Phase1Tasks movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -158,7 +158,7 @@ Transition_Phase1: @ 80D09B0 _080D09DC: .4byte gPlttBufferFaded _080D09E0: .4byte gPlttBufferUnfaded _080D09E4: .4byte 0x04000100 -_080D09E8: .4byte gUnknown_83FA320 +_080D09E8: .4byte sBT_Phase1Tasks _080D09EC: movs r1, 0x4 bl CreateTask @@ -170,13 +170,13 @@ _080D09FA: pop {r4} pop {r1} bx r1 - thumb_func_end Transition_Phase1 + thumb_func_end BT_Phase1Blink - thumb_func_start Transition_WaitForPhase1 -Transition_WaitForPhase1: @ 80D0A00 + thumb_func_start BT_WaitForPhase1 +BT_WaitForPhase1: @ 80D0A00 push {r4,lr} adds r4, r0, 0 - ldr r1, _080D0A20 @ =gUnknown_83FA320 + ldr r1, _080D0A20 @ =sBT_Phase1Tasks movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -190,7 +190,7 @@ Transition_WaitForPhase1: @ 80D0A00 movs r0, 0 b _080D0A2C .align 2, 0 -_080D0A20: .4byte gUnknown_83FA320 +_080D0A20: .4byte sBT_Phase1Tasks _080D0A24: ldrh r0, [r4, 0x8] adds r0, 0x1 @@ -200,13 +200,13 @@ _080D0A2C: pop {r4} pop {r1} bx r1 - thumb_func_end Transition_WaitForPhase1 + thumb_func_end BT_WaitForPhase1 - thumb_func_start Transition_Phase2 -Transition_Phase2: @ 80D0A34 + thumb_func_start BT_Phase2LaunchAnimTask +BT_Phase2LaunchAnimTask: @ 80D0A34 push {r4,lr} adds r4, r0, 0 - ldr r1, _080D0A58 @ =gUnknown_83FA368 + ldr r1, _080D0A58 @ =sBT_Phase2Tasks movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -222,16 +222,16 @@ Transition_Phase2: @ 80D0A34 pop {r1} bx r1 .align 2, 0 -_080D0A58: .4byte gUnknown_83FA368 - thumb_func_end Transition_Phase2 +_080D0A58: .4byte sBT_Phase2Tasks + thumb_func_end BT_Phase2LaunchAnimTask - thumb_func_start Transition_WaitForPhase2 -Transition_WaitForPhase2: @ 80D0A5C + thumb_func_start BT_WaitForPhase2 +BT_WaitForPhase2: @ 80D0A5C push {r4,lr} adds r4, r0, 0 movs r0, 0 strh r0, [r4, 0x26] - ldr r1, _080D0A88 @ =gUnknown_83FA368 + ldr r1, _080D0A88 @ =sBT_Phase2Tasks movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -250,11 +250,11 @@ _080D0A80: pop {r1} bx r1 .align 2, 0 -_080D0A88: .4byte gUnknown_83FA368 - thumb_func_end Transition_WaitForPhase2 +_080D0A88: .4byte sBT_Phase2Tasks + thumb_func_end BT_WaitForPhase2 - thumb_func_start Phase1Task_TransitionAll -Phase1Task_TransitionAll: @ 80D0A8C + thumb_func_start BT_Phase1Task +BT_Phase1Task: @ 80D0A8C push {r4,lr} sub sp, 0x4 lsls r0, 24 @@ -278,12 +278,12 @@ Phase1Task_TransitionAll: @ 80D0A8C movs r1, 0 movs r2, 0x2 movs r3, 0x2 - bl CreatePhase1Task + bl BT_CreatePhase1SubTask b _080D0AD4 .align 2, 0 _080D0AC0: .4byte gTasks _080D0AC4: - bl sub_80D3CA4 + bl BT_IsPhase1Done lsls r0, 24 cmp r0, 0 beq _080D0AD4 @@ -294,14 +294,14 @@ _080D0AD4: pop {r4} pop {r0} bx r0 - thumb_func_end Phase1Task_TransitionAll + thumb_func_end BT_Phase1Task - thumb_func_start sub_80D0ADC -sub_80D0ADC: @ 80D0ADC + thumb_func_start BT_Phase2Blur +BT_Phase2Blur: @ 80D0ADC push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D0B0C @ =gUnknown_83FA3C0 + ldr r5, _080D0B0C @ =sBT_Phase2BlurFuncs ldr r2, _080D0B10 @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -322,12 +322,12 @@ _080D0AEE: pop {r0} bx r0 .align 2, 0 -_080D0B0C: .4byte gUnknown_83FA3C0 +_080D0B0C: .4byte sBT_Phase2BlurFuncs _080D0B10: .4byte gTasks - thumb_func_end sub_80D0ADC + thumb_func_end BT_Phase2Blur - thumb_func_start sub_80D0B14 -sub_80D0B14: @ 80D0B14 + thumb_func_start BT_Phase2Blur_InitBgMosaic +BT_Phase2Blur_InitBgMosaic: @ 80D0B14 push {r4,lr} adds r4, r0, 0 movs r0, 0x4C @@ -349,10 +349,10 @@ sub_80D0B14: @ 80D0B14 pop {r4} pop {r1} bx r1 - thumb_func_end sub_80D0B14 + thumb_func_end BT_Phase2Blur_InitBgMosaic - thumb_func_start sub_80D0B48 -sub_80D0B48: @ 80D0B48 + thumb_func_start BT_Phase2Blur_Anim +BT_Phase2Blur_Anim: @ 80D0B48 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 @@ -402,10 +402,10 @@ _080D0B9E: pop {r4} pop {r1} bx r1 - thumb_func_end sub_80D0B48 + thumb_func_end BT_Phase2Blur_Anim - thumb_func_start sub_80D0BA8 -sub_80D0BA8: @ 80D0BA8 + thumb_func_start BT_Phase2Blur_IsDone +BT_Phase2Blur_IsDone: @ 80D0BA8 push {lr} ldr r0, _080D0BCC @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -413,7 +413,7 @@ sub_80D0BA8: @ 80D0BA8 ands r0, r1 cmp r0, 0 bne _080D0BC4 - ldr r0, _080D0BD0 @ =sub_80D0ADC + ldr r0, _080D0BD0 @ =BT_Phase2Blur bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -424,15 +424,15 @@ _080D0BC4: bx r1 .align 2, 0 _080D0BCC: .4byte gPaletteFade -_080D0BD0: .4byte sub_80D0ADC - thumb_func_end sub_80D0BA8 +_080D0BD0: .4byte BT_Phase2Blur + thumb_func_end BT_Phase2Blur_IsDone - thumb_func_start sub_80D0BD4 -sub_80D0BD4: @ 80D0BD4 + thumb_func_start BT_Phase2DistortedWave +BT_Phase2DistortedWave: @ 80D0BD4 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D0C04 @ =gUnknown_83FA3CC + ldr r5, _080D0C04 @ =sBT_Phase2DistortedWaveFuncs ldr r2, _080D0C08 @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -453,16 +453,16 @@ _080D0BE6: pop {r0} bx r0 .align 2, 0 -_080D0C04: .4byte gUnknown_83FA3CC +_080D0C04: .4byte sBT_Phase2DistortedWaveFuncs _080D0C08: .4byte gTasks - thumb_func_end sub_80D0BD4 + thumb_func_end BT_Phase2DistortedWave - thumb_func_start sub_80D0C0C -sub_80D0C0C: @ 80D0C0C + thumb_func_start BT_Phase2DistortedWave_InitWave +BT_Phase2DistortedWave_InitWave: @ 80D0C0C push {r4,r5,lr} sub sp, 0x8 adds r5, r0, 0 - bl sub_80D3DD0 + bl BT_InitCtrlBlk bl ScanlineEffect_Clear movs r0, 0x1 negs r0, r0 @@ -473,7 +473,7 @@ sub_80D0C0C: @ 80D0C0C movs r3, 0x10 bl BeginNormalPaletteFade ldr r0, _080D0C68 @ =gScanlineEffectRegBuffers + 0x780 - ldr r1, _080D0C6C @ =gUnknown_2039A2C + ldr r1, _080D0C6C @ =sTransitionStructPtr ldr r1, [r1] movs r2, 0x14 ldrsh r1, [r1, r2] @@ -482,10 +482,10 @@ sub_80D0C0C: @ 80D0C0C str r2, [sp, 0x4] movs r2, 0 movs r3, 0x2 - bl sub_80D3E74 - ldr r0, _080D0C70 @ =sub_80D0CF0 + bl BT_LoadWaveIntoBuffer + ldr r0, _080D0C70 @ =VBCB_BT_Phase2DistortedWave bl SetVBlankCallback - ldr r0, _080D0C74 @ =sub_80D0D28 + ldr r0, _080D0C74 @ =HBCB_BT_Phase2DistortedWave bl SetHBlankCallback movs r0, 0x3 bl EnableInterrupts @@ -499,16 +499,16 @@ sub_80D0C0C: @ 80D0C0C bx r1 .align 2, 0 _080D0C68: .4byte gScanlineEffectRegBuffers + 0x780 -_080D0C6C: .4byte gUnknown_2039A2C -_080D0C70: .4byte sub_80D0CF0 -_080D0C74: .4byte sub_80D0D28 - thumb_func_end sub_80D0C0C +_080D0C6C: .4byte sTransitionStructPtr +_080D0C70: .4byte VBCB_BT_Phase2DistortedWave +_080D0C74: .4byte HBCB_BT_Phase2DistortedWave + thumb_func_end BT_Phase2DistortedWave_InitWave - thumb_func_start sub_80D0C78 -sub_80D0C78: @ 80D0C78 + thumb_func_start BT_Phase2DistortedWave_UpdateWave +BT_Phase2DistortedWave_UpdateWave: @ 80D0C78 push {r4,r5,lr} sub sp, 0x8 - ldr r4, _080D0CE0 @ =gUnknown_2039A2C + ldr r4, _080D0CE0 @ =sTransitionStructPtr ldr r2, [r4] ldrb r1, [r2] movs r1, 0 @@ -532,14 +532,14 @@ sub_80D0C78: @ 80D0C78 str r0, [sp, 0x4] adds r0, r3, 0 movs r3, 0x2 - bl sub_80D3E74 + bl BT_LoadWaveIntoBuffer ldr r0, _080D0CE8 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _080D0CCA - ldr r0, _080D0CEC @ =sub_80D0BD4 + ldr r0, _080D0CEC @ =BT_Phase2DistortedWave bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -556,17 +556,17 @@ _080D0CCA: pop {r1} bx r1 .align 2, 0 -_080D0CE0: .4byte gUnknown_2039A2C +_080D0CE0: .4byte sTransitionStructPtr _080D0CE4: .4byte gScanlineEffectRegBuffers _080D0CE8: .4byte gPaletteFade -_080D0CEC: .4byte sub_80D0BD4 - thumb_func_end sub_80D0C78 +_080D0CEC: .4byte BT_Phase2DistortedWave + thumb_func_end BT_Phase2DistortedWave_UpdateWave - thumb_func_start sub_80D0CF0 -sub_80D0CF0: @ 80D0CF0 + thumb_func_start VBCB_BT_Phase2DistortedWave +VBCB_BT_Phase2DistortedWave: @ 80D0CF0 push {lr} - bl sub_80D3DF4 - ldr r0, _080D0D18 @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r0, _080D0D18 @ =sTransitionStructPtr ldr r0, [r0] ldrb r0, [r0] cmp r0, 0 @@ -585,14 +585,14 @@ _080D0D14: pop {r0} bx r0 .align 2, 0 -_080D0D18: .4byte gUnknown_2039A2C +_080D0D18: .4byte sTransitionStructPtr _080D0D1C: .4byte 0x040000d4 _080D0D20: .4byte gScanlineEffectRegBuffers _080D0D24: .4byte 0x800000a0 - thumb_func_end sub_80D0CF0 + thumb_func_end VBCB_BT_Phase2DistortedWave - thumb_func_start sub_80D0D28 -sub_80D0D28: @ 80D0D28 + thumb_func_start HBCB_BT_Phase2DistortedWave +HBCB_BT_Phase2DistortedWave: @ 80D0D28 ldr r1, _080D0D48 @ =gScanlineEffectRegBuffers ldr r0, _080D0D4C @ =0x04000006 ldrh r0, [r0] @@ -613,14 +613,14 @@ sub_80D0D28: @ 80D0D28 _080D0D48: .4byte gScanlineEffectRegBuffers _080D0D4C: .4byte 0x04000006 _080D0D50: .4byte 0x04000014 - thumb_func_end sub_80D0D28 + thumb_func_end HBCB_BT_Phase2DistortedWave - thumb_func_start sub_80D0D54 -sub_80D0D54: @ 80D0D54 + thumb_func_start BT_Phase2HorizontalCorrugate +BT_Phase2HorizontalCorrugate: @ 80D0D54 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D0D84 @ =gUnknown_83FA3D4 + ldr r5, _080D0D84 @ =sBT_Phase2HorizontalCorrugateFuncs ldr r2, _080D0D88 @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -641,16 +641,16 @@ _080D0D66: pop {r0} bx r0 .align 2, 0 -_080D0D84: .4byte gUnknown_83FA3D4 +_080D0D84: .4byte sBT_Phase2HorizontalCorrugateFuncs _080D0D88: .4byte gTasks - thumb_func_end sub_80D0D54 + thumb_func_end BT_Phase2HorizontalCorrugate - thumb_func_start sub_80D0D8C -sub_80D0D8C: @ 80D0D8C + thumb_func_start BT_Phase2HorizontalCorrugate_Init +BT_Phase2HorizontalCorrugate_Init: @ 80D0D8C push {r4,lr} sub sp, 0x4 adds r4, r0, 0 - bl sub_80D3DD0 + bl BT_InitCtrlBlk bl ScanlineEffect_Clear movs r0, 0x1 negs r0, r0 @@ -660,7 +660,7 @@ sub_80D0D8C: @ 80D0D8C movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _080D0DE0 @ =gUnknown_2039A2C + ldr r0, _080D0DE0 @ =sTransitionStructPtr ldr r1, [r0] ldr r0, _080D0DE4 @ =gScanlineEffectRegBuffers + 0x780 movs r2, 0x16 @@ -668,9 +668,9 @@ sub_80D0D8C: @ 80D0D8C movs r2, 0xA0 lsls r2, 1 bl memset - ldr r0, _080D0DE8 @ =sub_80D0E80 + ldr r0, _080D0DE8 @ =VBCB_BT_Phase2HorizontalCorrugate bl SetVBlankCallback - ldr r0, _080D0DEC @ =sub_80D0EB8 + ldr r0, _080D0DEC @ =HBCB_BT_Phase2HorizontalCorrugate bl SetHBlankCallback movs r0, 0x3 bl EnableInterrupts @@ -683,16 +683,16 @@ sub_80D0D8C: @ 80D0D8C pop {r1} bx r1 .align 2, 0 -_080D0DE0: .4byte gUnknown_2039A2C +_080D0DE0: .4byte sTransitionStructPtr _080D0DE4: .4byte gScanlineEffectRegBuffers + 0x780 -_080D0DE8: .4byte sub_80D0E80 -_080D0DEC: .4byte sub_80D0EB8 - thumb_func_end sub_80D0D8C +_080D0DE8: .4byte VBCB_BT_Phase2HorizontalCorrugate +_080D0DEC: .4byte HBCB_BT_Phase2HorizontalCorrugate + thumb_func_end BT_Phase2HorizontalCorrugate_Init - thumb_func_start sub_80D0DF0 -sub_80D0DF0: @ 80D0DF0 + thumb_func_start BT_Phase2HorizontalCorrugate_UpdateWave +BT_Phase2HorizontalCorrugate_UpdateWave: @ 80D0DF0 push {r4-r7,lr} - ldr r1, _080D0E70 @ =gUnknown_2039A2C + ldr r1, _080D0E70 @ =sTransitionStructPtr ldr r2, [r1] ldrb r1, [r2] movs r1, 0 @@ -718,7 +718,7 @@ _080D0E18: ldr r1, _080D0E74 @ =gScanlineEffectRegBuffers lsls r2, r5, 1 adds r2, r1 - ldr r6, _080D0E70 @ =gUnknown_2039A2C + ldr r6, _080D0E70 @ =sTransitionStructPtr ldr r1, [r6] ldrh r1, [r1, 0x16] adds r0, r1 @@ -739,7 +739,7 @@ _080D0E18: ands r0, r1 cmp r0, 0 bne _080D0E5E - ldr r0, _080D0E7C @ =sub_80D0D54 + ldr r0, _080D0E7C @ =BT_Phase2HorizontalCorrugate bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -755,17 +755,17 @@ _080D0E5E: pop {r1} bx r1 .align 2, 0 -_080D0E70: .4byte gUnknown_2039A2C +_080D0E70: .4byte sTransitionStructPtr _080D0E74: .4byte gScanlineEffectRegBuffers _080D0E78: .4byte gPaletteFade -_080D0E7C: .4byte sub_80D0D54 - thumb_func_end sub_80D0DF0 +_080D0E7C: .4byte BT_Phase2HorizontalCorrugate + thumb_func_end BT_Phase2HorizontalCorrugate_UpdateWave - thumb_func_start sub_80D0E80 -sub_80D0E80: @ 80D0E80 + thumb_func_start VBCB_BT_Phase2HorizontalCorrugate +VBCB_BT_Phase2HorizontalCorrugate: @ 80D0E80 push {lr} - bl sub_80D3DF4 - ldr r0, _080D0EA8 @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r0, _080D0EA8 @ =sTransitionStructPtr ldr r0, [r0] ldrb r0, [r0] cmp r0, 0 @@ -784,14 +784,14 @@ _080D0EA4: pop {r0} bx r0 .align 2, 0 -_080D0EA8: .4byte gUnknown_2039A2C +_080D0EA8: .4byte sTransitionStructPtr _080D0EAC: .4byte 0x040000d4 _080D0EB0: .4byte gScanlineEffectRegBuffers _080D0EB4: .4byte 0x800000a0 - thumb_func_end sub_80D0E80 + thumb_func_end VBCB_BT_Phase2HorizontalCorrugate - thumb_func_start sub_80D0EB8 -sub_80D0EB8: @ 80D0EB8 + thumb_func_start HBCB_BT_Phase2HorizontalCorrugate +HBCB_BT_Phase2HorizontalCorrugate: @ 80D0EB8 ldr r1, _080D0ED8 @ =gScanlineEffectRegBuffers ldr r0, _080D0EDC @ =0x04000006 ldrh r0, [r0] @@ -812,14 +812,14 @@ sub_80D0EB8: @ 80D0EB8 _080D0ED8: .4byte gScanlineEffectRegBuffers _080D0EDC: .4byte 0x04000006 _080D0EE0: .4byte 0x04000016 - thumb_func_end sub_80D0EB8 + thumb_func_end HBCB_BT_Phase2HorizontalCorrugate - thumb_func_start sub_80D0EE4 -sub_80D0EE4: @ 80D0EE4 + thumb_func_start BT_Phase2BigPokeball +BT_Phase2BigPokeball: @ 80D0EE4 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D0F14 @ =gUnknown_83FA3DC + ldr r5, _080D0F14 @ =sBT_Phase2BigPokeballFuncs ldr r2, _080D0F18 @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -840,16 +840,16 @@ _080D0EF6: pop {r0} bx r0 .align 2, 0 -_080D0F14: .4byte gUnknown_83FA3DC +_080D0F14: .4byte sBT_Phase2BigPokeballFuncs _080D0F18: .4byte gTasks - thumb_func_end sub_80D0EE4 + thumb_func_end BT_Phase2BigPokeball - thumb_func_start sub_80D0F1C -sub_80D0F1C: @ 80D0F1C + thumb_func_start BT_Phase2BigPokeball_Init +BT_Phase2BigPokeball_Init: @ 80D0F1C push {r4-r6,lr} sub sp, 0xC adds r4, r0, 0 - bl sub_80D3DD0 + bl BT_InitCtrlBlk bl ScanlineEffect_Clear movs r1, 0 movs r0, 0x10 @@ -859,7 +859,7 @@ sub_80D0F1C: @ 80D0F1C movs r0, 0x80 lsls r0, 7 strh r0, [r4, 0x12] - ldr r0, _080D0FB8 @ =gUnknown_2039A2C + ldr r0, _080D0FB8 @ =sTransitionStructPtr ldr r2, [r0] movs r0, 0x3F strh r0, [r2, 0x2] @@ -889,11 +889,11 @@ _080D0F64: lsrs r1, r0, 16 cmp r1, 0x9F bls _080D0F64 - ldr r0, _080D0FC4 @ =sub_80D1370 + ldr r0, _080D0FC4 @ =VBCB_BT_Phase2BigPokeball1 bl SetVBlankCallback adds r0, r5, 0 adds r1, r6, 0 - bl sub_80D3E28 + bl BT_GetBg0TilemapAndTilesetBase mov r1, sp movs r0, 0 strh r0, [r1] @@ -901,12 +901,12 @@ _080D0F64: ldr r2, _080D0FC8 @ =0x01000400 mov r0, sp bl CpuSet - ldr r0, _080D0FCC @ =gUnknown_83F87A0 + ldr r0, _080D0FCC @ =sBigPokeballTileset ldr r1, [sp, 0x8] movs r2, 0xB0 lsls r2, 2 bl CpuSet - ldr r0, _080D0FD0 @ =gUnknown_83FA638 + ldr r0, _080D0FD0 @ =sSlidingPokeballBigPokeballPalette movs r1, 0xF0 movs r2, 0x20 bl LoadPalette @@ -919,27 +919,27 @@ _080D0F64: pop {r1} bx r1 .align 2, 0 -_080D0FB8: .4byte gUnknown_2039A2C +_080D0FB8: .4byte sTransitionStructPtr _080D0FBC: .4byte 0x00003f41 _080D0FC0: .4byte gScanlineEffectRegBuffers + 0x780 -_080D0FC4: .4byte sub_80D1370 +_080D0FC4: .4byte VBCB_BT_Phase2BigPokeball1 _080D0FC8: .4byte 0x01000400 -_080D0FCC: .4byte gUnknown_83F87A0 -_080D0FD0: .4byte gUnknown_83FA638 - thumb_func_end sub_80D0F1C +_080D0FCC: .4byte sBigPokeballTileset +_080D0FD0: .4byte sSlidingPokeballBigPokeballPalette + thumb_func_end BT_Phase2BigPokeball_Init - thumb_func_start sub_80D0FD4 -sub_80D0FD4: @ 80D0FD4 + thumb_func_start BT_Phase2BigPokeball_LoadTilemapAndWave +BT_Phase2BigPokeball_LoadTilemapAndWave: @ 80D0FD4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x10 adds r7, r0, 0 - ldr r5, _080D105C @ =gUnknown_83FA784 + ldr r5, _080D105C @ =sBigPokeballTilemap add r1, sp, 0xC add r0, sp, 0x8 - bl sub_80D3E28 + bl BT_GetBg0TilemapAndTilesetBase movs r1, 0 ldr r0, [sp, 0x8] mov r9, r0 @@ -986,7 +986,7 @@ _080D1000: mov r0, r8 movs r1, 0 movs r3, 0x84 - bl sub_80D3E74 + bl BT_LoadWaveIntoBuffer ldrh r0, [r7, 0x8] adds r0, 0x1 strh r0, [r7, 0x8] @@ -999,16 +999,16 @@ _080D1000: pop {r1} bx r1 .align 2, 0 -_080D105C: .4byte gUnknown_83FA784 +_080D105C: .4byte sBigPokeballTilemap _080D1060: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80D0FD4 + thumb_func_end BT_Phase2BigPokeball_LoadTilemapAndWave - thumb_func_start sub_80D1064 -sub_80D1064: @ 80D1064 + thumb_func_start BT_Phase2BigPokeball_UpdateWave1IncEva +BT_Phase2BigPokeball_UpdateWave1IncEva: @ 80D1064 push {r4,r5,lr} sub sp, 0x8 adds r3, r0, 0 - ldr r2, _080D10EC @ =gUnknown_2039A2C + ldr r2, _080D10EC @ =sTransitionStructPtr ldr r1, [r2] ldrb r0, [r1] movs r0, 0 @@ -1063,7 +1063,7 @@ _080D10AE: str r1, [sp, 0x4] movs r1, 0 movs r3, 0x84 - bl sub_80D3E74 + bl BT_LoadWaveIntoBuffer ldr r1, [r4] ldrb r0, [r1] adds r0, 0x1 @@ -1075,17 +1075,17 @@ _080D10AE: pop {r1} bx r1 .align 2, 0 -_080D10EC: .4byte gUnknown_2039A2C +_080D10EC: .4byte sTransitionStructPtr _080D10F0: .4byte 0xfffffe80 _080D10F4: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80D1064 + thumb_func_end BT_Phase2BigPokeball_UpdateWave1IncEva - thumb_func_start sub_80D10F8 -sub_80D10F8: @ 80D10F8 + thumb_func_start BT_Phase2BigPokeball_UpdateWave2DecEvb +BT_Phase2BigPokeball_UpdateWave2DecEvb: @ 80D10F8 push {r4,lr} sub sp, 0x8 adds r3, r0, 0 - ldr r2, _080D1158 @ =gUnknown_2039A2C + ldr r2, _080D1158 @ =sTransitionStructPtr ldr r1, [r2] ldrb r0, [r1] movs r0, 0 @@ -1133,7 +1133,7 @@ _080D1140: adds r0, r1, r4 b _080D1162 .align 2, 0 -_080D1158: .4byte gUnknown_2039A2C +_080D1158: .4byte sTransitionStructPtr _080D115C: .4byte 0xfffffe80 _080D1160: movs r0, 0 @@ -1150,8 +1150,8 @@ _080D1162: str r1, [sp, 0x4] movs r1, 0 movs r3, 0x84 - bl sub_80D3E74 - ldr r0, _080D1198 @ =gUnknown_2039A2C + bl BT_LoadWaveIntoBuffer + ldr r0, _080D1198 @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 @@ -1164,15 +1164,15 @@ _080D1162: bx r1 .align 2, 0 _080D1194: .4byte gScanlineEffectRegBuffers -_080D1198: .4byte gUnknown_2039A2C - thumb_func_end sub_80D10F8 +_080D1198: .4byte sTransitionStructPtr + thumb_func_end BT_Phase2BigPokeball_UpdateWave2DecEvb - thumb_func_start sub_80D119C -sub_80D119C: @ 80D119C + thumb_func_start BT_Phase2BigPokeball_UpdateWave3 +BT_Phase2BigPokeball_UpdateWave3: @ 80D119C push {r4,r5,lr} sub sp, 0x8 adds r4, r0, 0 - ldr r0, _080D11C4 @ =gUnknown_2039A2C + ldr r0, _080D11C4 @ =sTransitionStructPtr ldr r0, [r0] ldrb r1, [r0] movs r2, 0 @@ -1190,7 +1190,7 @@ sub_80D119C: @ 80D119C strh r0, [r4, 0x12] b _080D11CE .align 2, 0 -_080D11C4: .4byte gUnknown_2039A2C +_080D11C4: .4byte sTransitionStructPtr _080D11C8: .4byte 0xfffffe80 _080D11CC: strh r2, [r4, 0x12] @@ -1206,7 +1206,7 @@ _080D11CE: str r5, [sp, 0x4] movs r1, 0 movs r3, 0x84 - bl sub_80D3E74 + bl BT_LoadWaveIntoBuffer movs r1, 0x12 ldrsh r0, [r4, r1] cmp r0, 0 @@ -1221,7 +1221,7 @@ _080D11CE: strh r0, [r4, 0xC] strh r1, [r4, 0xE] _080D1202: - ldr r0, _080D121C @ =gUnknown_2039A2C + ldr r0, _080D121C @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 @@ -1234,14 +1234,14 @@ _080D1202: bx r1 .align 2, 0 _080D1218: .4byte gScanlineEffectRegBuffers -_080D121C: .4byte gUnknown_2039A2C - thumb_func_end sub_80D119C +_080D121C: .4byte sTransitionStructPtr + thumb_func_end BT_Phase2BigPokeball_UpdateWave3 - thumb_func_start sub_80D1220 -sub_80D1220: @ 80D1220 + thumb_func_start BT_Phase2BigPokeball_CircleEffect +BT_Phase2BigPokeball_CircleEffect: @ 80D1220 push {r4,lr} adds r4, r0, 0 - ldr r0, _080D12C4 @ =gUnknown_2039A2C + ldr r0, _080D12C4 @ =sTransitionStructPtr ldr r0, [r0] ldrb r1, [r0] movs r3, 0 @@ -1277,7 +1277,7 @@ _080D125E: ldrsh r3, [r4, r1] movs r1, 0x78 movs r2, 0x50 - bl sub_80D3EF0 + bl BT_GenerateCircle movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 @@ -1292,8 +1292,8 @@ _080D125E: ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] - bl sub_80D3E60 - ldr r0, _080D12DC @ =sub_80D0EE4 + bl BT_BlendPalettesToBlack + ldr r0, _080D12DC @ =BT_Phase2BigPokeball bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -1306,10 +1306,10 @@ _080D129A: bne _080D12AE adds r0, r1, 0x1 strh r0, [r4, 0xE] - ldr r0, _080D12E0 @ =sub_80D139C + ldr r0, _080D12E0 @ =VBCB_BT_Phase2BigPokeball2 bl SetVBlankCallback _080D12AE: - ldr r0, _080D12C4 @ =gUnknown_2039A2C + ldr r0, _080D12C4 @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 @@ -1320,18 +1320,18 @@ _080D12AE: pop {r1} bx r1 .align 2, 0 -_080D12C4: .4byte gUnknown_2039A2C +_080D12C4: .4byte sTransitionStructPtr _080D12C8: .4byte 0x000007ff _080D12CC: .4byte gScanlineEffectRegBuffers _080D12D0: .4byte 0x040000b0 _080D12D4: .4byte 0x0000c5ff _080D12D8: .4byte 0x00007fff -_080D12DC: .4byte sub_80D0EE4 -_080D12E0: .4byte sub_80D139C - thumb_func_end sub_80D1220 +_080D12DC: .4byte BT_Phase2BigPokeball +_080D12E0: .4byte VBCB_BT_Phase2BigPokeball2 + thumb_func_end BT_Phase2BigPokeball_CircleEffect - thumb_func_start sub_80D12E4 -sub_80D12E4: @ 80D12E4 + thumb_func_start BT_VBStopDma0SyncSrcBufferSetLcdRegs +BT_VBStopDma0SyncSrcBufferSetLcdRegs: @ 80D12E4 push {r4,lr} ldr r1, _080D1354 @ =0x040000b0 ldrh r2, [r1, 0xA] @@ -1343,8 +1343,8 @@ sub_80D12E4: @ 80D12E4 ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] - bl sub_80D3DF4 - ldr r4, _080D1360 @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r4, _080D1360 @ =sTransitionStructPtr ldr r0, [r4] ldrb r0, [r0] cmp r0, 0 @@ -1387,16 +1387,16 @@ _080D131C: _080D1354: .4byte 0x040000b0 _080D1358: .4byte 0x0000c5ff _080D135C: .4byte 0x00007fff -_080D1360: .4byte gUnknown_2039A2C +_080D1360: .4byte sTransitionStructPtr _080D1364: .4byte 0x040000d4 _080D1368: .4byte gScanlineEffectRegBuffers _080D136C: .4byte 0x800000a0 - thumb_func_end sub_80D12E4 + thumb_func_end BT_VBStopDma0SyncSrcBufferSetLcdRegs - thumb_func_start sub_80D1370 -sub_80D1370: @ 80D1370 + thumb_func_start VBCB_BT_Phase2BigPokeball1 +VBCB_BT_Phase2BigPokeball1: @ 80D1370 push {lr} - bl sub_80D12E4 + bl BT_VBStopDma0SyncSrcBufferSetLcdRegs ldr r1, _080D138C @ =0x040000b0 ldr r0, _080D1390 @ =gScanlineEffectRegBuffers + 0x780 str r0, [r1] @@ -1412,12 +1412,12 @@ _080D138C: .4byte 0x040000b0 _080D1390: .4byte gScanlineEffectRegBuffers + 0x780 _080D1394: .4byte 0x04000010 _080D1398: .4byte 0xa2400001 - thumb_func_end sub_80D1370 + thumb_func_end VBCB_BT_Phase2BigPokeball1 - thumb_func_start sub_80D139C -sub_80D139C: @ 80D139C + thumb_func_start VBCB_BT_Phase2BigPokeball2 +VBCB_BT_Phase2BigPokeball2: @ 80D139C push {lr} - bl sub_80D12E4 + bl BT_VBStopDma0SyncSrcBufferSetLcdRegs ldr r1, _080D13B8 @ =0x040000b0 ldr r0, _080D13BC @ =gScanlineEffectRegBuffers + 0x780 str r0, [r1] @@ -1433,14 +1433,14 @@ _080D13B8: .4byte 0x040000b0 _080D13BC: .4byte gScanlineEffectRegBuffers + 0x780 _080D13C0: .4byte 0x04000040 _080D13C4: .4byte 0xa2400001 - thumb_func_end sub_80D139C + thumb_func_end VBCB_BT_Phase2BigPokeball2 - thumb_func_start sub_80D13C8 -sub_80D13C8: @ 80D13C8 + thumb_func_start BT_Phase2SlidingPokeballs +BT_Phase2SlidingPokeballs: @ 80D13C8 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D13F8 @ =gUnknown_83FA3F4 + ldr r5, _080D13F8 @ =sBT_Phase2SlidingPokeballsFuncs ldr r2, _080D13FC @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -1461,19 +1461,19 @@ _080D13DA: pop {r0} bx r0 .align 2, 0 -_080D13F8: .4byte gUnknown_83FA3F4 +_080D13F8: .4byte sBT_Phase2SlidingPokeballsFuncs _080D13FC: .4byte gTasks - thumb_func_end sub_80D13C8 + thumb_func_end BT_Phase2SlidingPokeballs - thumb_func_start Phase2_Transition_PokeballsTrail_Func1 -Phase2_Transition_PokeballsTrail_Func1: @ 80D1400 + thumb_func_start BT_Phase2SlidingPokeballs_LoadBgGfx +BT_Phase2SlidingPokeballs_LoadBgGfx: @ 80D1400 push {r4,lr} sub sp, 0xC adds r4, r0, 0 add r0, sp, 0x4 add r1, sp, 0x8 - bl sub_80D3E28 - ldr r0, _080D1440 @ =gUnknown_83F8D20 + bl BT_GetBg0TilemapAndTilesetBase + ldr r0, _080D1440 @ =sSlidingPokeballTilemap ldr r1, [sp, 0x8] movs r2, 0x20 bl CpuSet @@ -1483,7 +1483,7 @@ Phase2_Transition_PokeballsTrail_Func1: @ 80D1400 ldr r2, _080D1444 @ =0x05000200 mov r0, sp bl CpuSet - ldr r0, _080D1448 @ =gUnknown_83FA638 + ldr r0, _080D1448 @ =sSlidingPokeballBigPokeballPalette movs r1, 0xF0 movs r2, 0x20 bl LoadPalette @@ -1496,13 +1496,13 @@ Phase2_Transition_PokeballsTrail_Func1: @ 80D1400 pop {r1} bx r1 .align 2, 0 -_080D1440: .4byte gUnknown_83F8D20 +_080D1440: .4byte sSlidingPokeballTilemap _080D1444: .4byte 0x05000200 -_080D1448: .4byte gUnknown_83FA638 - thumb_func_end Phase2_Transition_PokeballsTrail_Func1 +_080D1448: .4byte sSlidingPokeballBigPokeballPalette + thumb_func_end BT_Phase2SlidingPokeballs_LoadBgGfx - thumb_func_start Phase2_Transition_PokeballsTrail_Func2 -Phase2_Transition_PokeballsTrail_Func2: @ 80D144C + thumb_func_start BT_Phase2SlidingPokeballs_SetupFldeffArgs +BT_Phase2SlidingPokeballs_SetupFldeffArgs: @ 80D144C push {r4-r7,lr} mov r7, r8 push {r7} @@ -1568,18 +1568,18 @@ _080D147A: _080D14CC: .4byte gUnknown_83FA400 _080D14D0: .4byte gUnknown_83FA404 _080D14D4: .4byte gFieldEffectArguments - thumb_func_end Phase2_Transition_PokeballsTrail_Func2 + thumb_func_end BT_Phase2SlidingPokeballs_SetupFldeffArgs - thumb_func_start Phase2_Transition_PokeballsTrail_Func3 -Phase2_Transition_PokeballsTrail_Func3: @ 80D14D8 + thumb_func_start BT_Phase2SlidingPokeballs_IsDone +BT_Phase2SlidingPokeballs_IsDone: @ 80D14D8 push {lr} movs r0, 0x2D bl FieldEffectActiveListContains lsls r0, 24 cmp r0, 0 bne _080D14F8 - bl sub_80D3E60 - ldr r0, _080D1500 @ =sub_80D13C8 + bl BT_BlendPalettesToBlack + ldr r0, _080D1500 @ =BT_Phase2SlidingPokeballs bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -1589,13 +1589,13 @@ _080D14F8: pop {r1} bx r1 .align 2, 0 -_080D1500: .4byte sub_80D13C8 - thumb_func_end Phase2_Transition_PokeballsTrail_Func3 +_080D1500: .4byte BT_Phase2SlidingPokeballs + thumb_func_end BT_Phase2SlidingPokeballs_IsDone thumb_func_start FldEff_Pokeball FldEff_Pokeball: @ 80D1504 push {r4,r5,lr} - ldr r0, _080D1560 @ =gUnknown_83FA5CC + ldr r0, _080D1560 @ =sSpriteTemplate_SlidingPokeball ldr r5, _080D1564 @ =gFieldEffectArguments movs r2, 0 ldrsh r1, [r5, r2] @@ -1638,14 +1638,14 @@ FldEff_Pokeball: @ 80D1504 pop {r1} bx r1 .align 2, 0 -_080D1560: .4byte gUnknown_83FA5CC +_080D1560: .4byte sSpriteTemplate_SlidingPokeball _080D1564: .4byte gFieldEffectArguments _080D1568: .4byte gSprites _080D156C: .4byte 0x0000ffff thumb_func_end FldEff_Pokeball - thumb_func_start sub_80D1570 -sub_80D1570: @ 80D1570 + thumb_func_start SpriteCB_BT_Phase2SlidingPokeballs +SpriteCB_BT_Phase2SlidingPokeballs: @ 80D1570 push {r4-r6,lr} sub sp, 0x4 adds r4, r0, 0 @@ -1745,14 +1745,14 @@ _080D162A: bx r0 .align 2, 0 _080D1634: .4byte 0x0000f001 - thumb_func_end sub_80D1570 + thumb_func_end SpriteCB_BT_Phase2SlidingPokeballs - thumb_func_start sub_80D1638 -sub_80D1638: @ 80D1638 + thumb_func_start BT_Phase2ClockwiseBlackFade +BT_Phase2ClockwiseBlackFade: @ 80D1638 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D1668 @ =gUnknown_83FA414 + ldr r5, _080D1668 @ =sBT_Phase2ClockwiseBlackFadeFuncs ldr r2, _080D166C @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -1773,17 +1773,17 @@ _080D164A: pop {r0} bx r0 .align 2, 0 -_080D1668: .4byte gUnknown_83FA414 +_080D1668: .4byte sBT_Phase2ClockwiseBlackFadeFuncs _080D166C: .4byte gTasks - thumb_func_end sub_80D1638 + thumb_func_end BT_Phase2ClockwiseBlackFade - thumb_func_start sub_80D1670 -sub_80D1670: @ 80D1670 + thumb_func_start BT_Phase2ClockwiseBlackFade_Init +BT_Phase2ClockwiseBlackFade_Init: @ 80D1670 push {r4,lr} adds r4, r0, 0 - bl sub_80D3DD0 + bl BT_InitCtrlBlk bl ScanlineEffect_Clear - ldr r0, _080D16C4 @ =gUnknown_2039A2C + ldr r0, _080D16C4 @ =sTransitionStructPtr ldr r1, [r0] movs r0, 0 strh r0, [r1, 0x2] @@ -1805,9 +1805,9 @@ _080D1696: lsrs r1, r0, 16 cmp r1, 0x9F bls _080D1696 - ldr r0, _080D16D4 @ =sub_80D1ABC + ldr r0, _080D16D4 @ =VBCB_BT_Phase2ClockwiseBlackFade bl SetVBlankCallback - ldr r0, _080D16C4 @ =gUnknown_2039A2C + ldr r0, _080D16C4 @ =sTransitionStructPtr ldr r1, [r0] movs r0, 0x78 strh r0, [r1, 0x2C] @@ -1819,19 +1819,19 @@ _080D1696: pop {r1} bx r1 .align 2, 0 -_080D16C4: .4byte gUnknown_2039A2C +_080D16C4: .4byte sTransitionStructPtr _080D16C8: .4byte 0x0000f0f1 _080D16CC: .4byte gScanlineEffectRegBuffers + 0x780 _080D16D0: .4byte 0x0000f3f4 -_080D16D4: .4byte sub_80D1ABC - thumb_func_end sub_80D1670 +_080D16D4: .4byte VBCB_BT_Phase2ClockwiseBlackFade + thumb_func_end BT_Phase2ClockwiseBlackFade_Init - thumb_func_start sub_80D16D8 -sub_80D16D8: @ 80D16D8 + thumb_func_start BT_Phase2ClockwiseBlackFade_Step1 +BT_Phase2ClockwiseBlackFade_Step1: @ 80D16D8 push {r4-r7,lr} sub sp, 0xC adds r6, r0, 0 - ldr r2, _080D1760 @ =gUnknown_2039A2C + ldr r2, _080D1760 @ =sTransitionStructPtr ldr r1, [r2] ldrb r0, [r1] movs r0, 0 @@ -1849,10 +1849,10 @@ sub_80D16D8: @ 80D16D8 str r1, [sp, 0x8] movs r1, 0x78 movs r2, 0x50 - bl sub_80D4088 + bl BT_DiagonalSegment_InitParams ldr r5, _080D1764 @ =gScanlineEffectRegBuffers _080D1708: - ldr r4, _080D1760 @ =gUnknown_2039A2C + ldr r4, _080D1760 @ =sTransitionStructPtr ldr r0, [r4] movs r7, 0x2A ldrsh r3, [r0, r7] @@ -1868,7 +1868,7 @@ _080D1708: adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 - bl sub_80D4104 + bl BT_DiagonalSegment_ComputePointOnSegment lsls r0, 24 cmp r0, 0 beq _080D1708 @@ -1897,12 +1897,12 @@ _080D174C: pop {r1} bx r1 .align 2, 0 -_080D1760: .4byte gUnknown_2039A2C +_080D1760: .4byte sTransitionStructPtr _080D1764: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80D16D8 + thumb_func_end BT_Phase2ClockwiseBlackFade_Step1 - thumb_func_start sub_80D1768 -sub_80D1768: @ 80D1768 + thumb_func_start BT_Phase2ClockwiseBlackFade_Step2 +BT_Phase2ClockwiseBlackFade_Step2: @ 80D1768 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -1912,7 +1912,7 @@ sub_80D1768: @ 80D1768 add r1, sp, 0xC movs r0, 0 strb r0, [r1] - ldr r4, _080D17EC @ =gUnknown_2039A2C + ldr r4, _080D17EC @ =sTransitionStructPtr ldr r1, [r4] ldrb r0, [r1] movs r0, 0 @@ -1929,7 +1929,7 @@ sub_80D1768: @ 80D1768 movs r1, 0x78 movs r2, 0x50 movs r3, 0xF0 - bl sub_80D4088 + bl BT_DiagonalSegment_InitParams mov r9, r4 mov r7, r9 add r5, sp, 0xC @@ -1965,11 +1965,11 @@ _080D17BE: adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 - bl sub_80D4104 + bl BT_DiagonalSegment_ComputePointOnSegment strb r0, [r5] b _080D17A6 .align 2, 0 -_080D17EC: .4byte gUnknown_2039A2C +_080D17EC: .4byte sTransitionStructPtr _080D17F0: .4byte gScanlineEffectRegBuffers _080D17F4: ldr r1, [r7] @@ -1993,7 +1993,7 @@ _080D1812: cmp r0, r2 bge _080D183A adds r3, r4, 0 - ldr r5, _080D1858 @ =gUnknown_2039A2C + ldr r5, _080D1858 @ =sTransitionStructPtr _080D181E: ldr r2, [r5] ldrh r0, [r2, 0x2A] @@ -2025,15 +2025,15 @@ _080D183A: pop {r1} bx r1 .align 2, 0 -_080D1858: .4byte gUnknown_2039A2C - thumb_func_end sub_80D1768 +_080D1858: .4byte sTransitionStructPtr + thumb_func_end BT_Phase2ClockwiseBlackFade_Step2 - thumb_func_start sub_80D185C -sub_80D185C: @ 80D185C + thumb_func_start BT_Phase2ClockwiseBlackFade_Step3 +BT_Phase2ClockwiseBlackFade_Step3: @ 80D185C push {r4-r6,lr} sub sp, 0xC adds r6, r0, 0 - ldr r2, _080D18DC @ =gUnknown_2039A2C + ldr r2, _080D18DC @ =sTransitionStructPtr ldr r1, [r2] ldrb r0, [r1] movs r0, 0 @@ -2050,10 +2050,10 @@ sub_80D185C: @ 80D185C str r1, [sp, 0x8] movs r1, 0x78 movs r2, 0x50 - bl sub_80D4088 + bl BT_DiagonalSegment_InitParams ldr r5, _080D18E0 @ =gScanlineEffectRegBuffers _080D188A: - ldr r4, _080D18DC @ =gUnknown_2039A2C + ldr r4, _080D18DC @ =sTransitionStructPtr ldr r0, [r4] movs r1, 0x2A ldrsh r3, [r0, r1] @@ -2067,7 +2067,7 @@ _080D188A: adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 - bl sub_80D4104 + bl BT_DiagonalSegment_ComputePointOnSegment lsls r0, 24 cmp r0, 0 beq _080D188A @@ -2095,12 +2095,12 @@ _080D18C8: pop {r1} bx r1 .align 2, 0 -_080D18DC: .4byte gUnknown_2039A2C +_080D18DC: .4byte sTransitionStructPtr _080D18E0: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80D185C + thumb_func_end BT_Phase2ClockwiseBlackFade_Step3 - thumb_func_start sub_80D18E4 -sub_80D18E4: @ 80D18E4 + thumb_func_start BT_Phase2ClockwiseBlackFade_Step4 +BT_Phase2ClockwiseBlackFade_Step4: @ 80D18E4 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2111,7 +2111,7 @@ sub_80D18E4: @ 80D18E4 add r1, sp, 0xC movs r0, 0 strb r0, [r1] - ldr r4, _080D196C @ =gUnknown_2039A2C + ldr r4, _080D196C @ =sTransitionStructPtr ldr r1, [r4] ldrb r0, [r1] movs r0, 0 @@ -2128,10 +2128,10 @@ sub_80D18E4: @ 80D18E4 movs r1, 0x78 movs r2, 0x50 movs r3, 0 - bl sub_80D4088 + bl BT_DiagonalSegment_InitParams ldr r7, _080D1970 @ =gScanlineEffectRegBuffers mov r10, r7 - ldr r0, _080D196C @ =gUnknown_2039A2C + ldr r0, _080D196C @ =sTransitionStructPtr mov r8, r0 add r6, sp, 0xC _080D1928: @@ -2166,11 +2166,11 @@ _080D1948: adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 - bl sub_80D4104 + bl BT_DiagonalSegment_ComputePointOnSegment strb r0, [r6] b _080D1928 .align 2, 0 -_080D196C: .4byte gUnknown_2039A2C +_080D196C: .4byte sTransitionStructPtr _080D1970: .4byte gScanlineEffectRegBuffers _080D1974: mov r0, r8 @@ -2195,7 +2195,7 @@ _080D1992: ble _080D19BC ldr r6, _080D19DC @ =gScanlineEffectRegBuffers adds r3, r1, 0 - ldr r5, _080D19E0 @ =gUnknown_2039A2C + ldr r5, _080D19E0 @ =sTransitionStructPtr _080D19A0: ldr r2, [r5] ldrh r0, [r2, 0x2A] @@ -2212,7 +2212,7 @@ _080D19A0: cmp r1, r0 bgt _080D19A0 _080D19BC: - ldr r7, _080D19E0 @ =gUnknown_2039A2C + ldr r7, _080D19E0 @ =sTransitionStructPtr ldr r0, [r7] ldrb r1, [r0] adds r1, 0x1 @@ -2229,15 +2229,15 @@ _080D19BC: bx r1 .align 2, 0 _080D19DC: .4byte gScanlineEffectRegBuffers -_080D19E0: .4byte gUnknown_2039A2C - thumb_func_end sub_80D18E4 +_080D19E0: .4byte sTransitionStructPtr + thumb_func_end BT_Phase2ClockwiseBlackFade_Step4 - thumb_func_start sub_80D19E4 -sub_80D19E4: @ 80D19E4 + thumb_func_start BT_Phase2ClockwiseBlackFade_Step5 +BT_Phase2ClockwiseBlackFade_Step5: @ 80D19E4 push {r4-r7,lr} sub sp, 0xC adds r7, r0, 0 - ldr r1, _080D1A74 @ =gUnknown_2039A2C + ldr r1, _080D1A74 @ =sTransitionStructPtr ldr r0, [r1] ldrb r2, [r0] movs r2, 0 @@ -2253,11 +2253,11 @@ sub_80D19E4: @ 80D19E4 str r1, [sp, 0x8] movs r1, 0x78 movs r2, 0x50 - bl sub_80D4088 + bl BT_DiagonalSegment_InitParams ldr r6, _080D1A78 @ =gScanlineEffectRegBuffers _080D1A10: movs r2, 0x78 - ldr r5, _080D1A74 @ =gUnknown_2039A2C + ldr r5, _080D1A74 @ =sTransitionStructPtr ldr r3, [r5] ldrh r4, [r3, 0x28] movs r1, 0x28 @@ -2280,7 +2280,7 @@ _080D1A24: adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 - bl sub_80D4104 + bl BT_DiagonalSegment_ComputePointOnSegment lsls r0, 24 cmp r0, 0 beq _080D1A10 @@ -2307,12 +2307,12 @@ _080D1A5E: pop {r1} bx r1 .align 2, 0 -_080D1A74: .4byte gUnknown_2039A2C +_080D1A74: .4byte sTransitionStructPtr _080D1A78: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80D19E4 + thumb_func_end BT_Phase2ClockwiseBlackFade_Step5 - thumb_func_start sub_80D1A7C -sub_80D1A7C: @ 80D1A7C + thumb_func_start BT_Phase2ClockwiseBlackFade_End +BT_Phase2ClockwiseBlackFade_End: @ 80D1A7C push {lr} ldr r1, _080D1AAC @ =0x040000b0 ldrh r2, [r1, 0xA] @@ -2324,8 +2324,8 @@ sub_80D1A7C: @ 80D1A7C ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] - bl sub_80D3E60 - ldr r0, _080D1AB8 @ =sub_80D1638 + bl BT_BlendPalettesToBlack + ldr r0, _080D1AB8 @ =BT_Phase2ClockwiseBlackFade bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -2337,11 +2337,11 @@ sub_80D1A7C: @ 80D1A7C _080D1AAC: .4byte 0x040000b0 _080D1AB0: .4byte 0x0000c5ff _080D1AB4: .4byte 0x00007fff -_080D1AB8: .4byte sub_80D1638 - thumb_func_end sub_80D1A7C +_080D1AB8: .4byte BT_Phase2ClockwiseBlackFade + thumb_func_end BT_Phase2ClockwiseBlackFade_End - thumb_func_start sub_80D1ABC -sub_80D1ABC: @ 80D1ABC + thumb_func_start VBCB_BT_Phase2ClockwiseBlackFade +VBCB_BT_Phase2ClockwiseBlackFade: @ 80D1ABC push {r4,r5,lr} ldr r5, _080D1B34 @ =0x040000b0 ldrh r1, [r5, 0xA] @@ -2353,8 +2353,8 @@ sub_80D1ABC: @ 80D1ABC ands r0, r1 strh r0, [r5, 0xA] ldrh r0, [r5, 0xA] - bl sub_80D3DF4 - ldr r4, _080D1B40 @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r4, _080D1B40 @ =sTransitionStructPtr ldr r0, [r4] ldrb r0, [r0] cmp r0, 0 @@ -2402,20 +2402,20 @@ _080D1AF4: _080D1B34: .4byte 0x040000b0 _080D1B38: .4byte 0x0000c5ff _080D1B3C: .4byte 0x00007fff -_080D1B40: .4byte gUnknown_2039A2C +_080D1B40: .4byte sTransitionStructPtr _080D1B44: .4byte 0x040000d4 _080D1B48: .4byte gScanlineEffectRegBuffers _080D1B4C: .4byte 0x800000a0 _080D1B50: .4byte 0x04000040 _080D1B54: .4byte 0xa2400001 - thumb_func_end sub_80D1ABC + thumb_func_end VBCB_BT_Phase2ClockwiseBlackFade - thumb_func_start sub_80D1B58 -sub_80D1B58: @ 80D1B58 + thumb_func_start BT_Phase2FullScreenWave +BT_Phase2FullScreenWave: @ 80D1B58 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D1B88 @ =gUnknown_83FA430 + ldr r5, _080D1B88 @ =sBT_Phase2FullScreenWaveFuncs ldr r2, _080D1B8C @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -2436,19 +2436,19 @@ _080D1B6A: pop {r0} bx r0 .align 2, 0 -_080D1B88: .4byte gUnknown_83FA430 +_080D1B88: .4byte sBT_Phase2FullScreenWaveFuncs _080D1B8C: .4byte gTasks - thumb_func_end sub_80D1B58 + thumb_func_end BT_Phase2FullScreenWave - thumb_func_start sub_80D1B90 -sub_80D1B90: @ 80D1B90 + thumb_func_start BT_Phase2FullScreenWave_Init +BT_Phase2FullScreenWave_Init: @ 80D1B90 push {r4,r5,lr} adds r5, r0, 0 - bl sub_80D3DD0 + bl BT_InitCtrlBlk bl ScanlineEffect_Clear movs r2, 0 ldr r4, _080D1BD8 @ =gScanlineEffectRegBuffers + 0x780 - ldr r3, _080D1BDC @ =gUnknown_2039A2C + ldr r3, _080D1BDC @ =sTransitionStructPtr _080D1BA2: lsls r1, r2, 1 adds r1, r4 @@ -2460,9 +2460,9 @@ _080D1BA2: lsrs r2, r0, 24 cmp r2, 0x9F bls _080D1BA2 - ldr r0, _080D1BE0 @ =sub_80D1CC8 + ldr r0, _080D1BE0 @ =VBCB_BT_Phase2FullScreenWave bl SetVBlankCallback - ldr r0, _080D1BE4 @ =sub_80D1D00 + ldr r0, _080D1BE4 @ =HBCB_BT_Phase2FullScreenWave bl SetHBlankCallback movs r0, 0x2 bl EnableInterrupts @@ -2475,19 +2475,19 @@ _080D1BA2: bx r1 .align 2, 0 _080D1BD8: .4byte gScanlineEffectRegBuffers + 0x780 -_080D1BDC: .4byte gUnknown_2039A2C -_080D1BE0: .4byte sub_80D1CC8 -_080D1BE4: .4byte sub_80D1D00 - thumb_func_end sub_80D1B90 +_080D1BDC: .4byte sTransitionStructPtr +_080D1BE0: .4byte VBCB_BT_Phase2FullScreenWave +_080D1BE4: .4byte HBCB_BT_Phase2FullScreenWave + thumb_func_end BT_Phase2FullScreenWave_Init - thumb_func_start sub_80D1BE8 -sub_80D1BE8: @ 80D1BE8 + thumb_func_start BT_Phase2FullScreenWave_UpdateWave +BT_Phase2FullScreenWave_UpdateWave: @ 80D1BE8 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 adds r6, r0, 0 - ldr r0, _080D1CB4 @ =gUnknown_2039A2C + ldr r0, _080D1CB4 @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] movs r0, 0 @@ -2522,7 +2522,7 @@ _080D1C28: ldr r1, _080D1CBC @ =gScanlineEffectRegBuffers lsls r2, r5, 1 adds r2, r1 - ldr r1, _080D1CB4 @ =gUnknown_2039A2C + ldr r1, _080D1CB4 @ =sTransitionStructPtr ldr r1, [r1] ldrh r1, [r1, 0x16] adds r0, r1 @@ -2565,13 +2565,13 @@ _080D1C78: ands r0, r1 cmp r0, 0 bne _080D1C9A - ldr r0, _080D1CC4 @ =sub_80D1B58 + ldr r0, _080D1CC4 @ =BT_Phase2FullScreenWave bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 bl DestroyTask _080D1C9A: - ldr r0, _080D1CB4 @ =gUnknown_2039A2C + ldr r0, _080D1CB4 @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 @@ -2585,18 +2585,18 @@ _080D1C9A: pop {r1} bx r1 .align 2, 0 -_080D1CB4: .4byte gUnknown_2039A2C +_080D1CB4: .4byte sTransitionStructPtr _080D1CB8: .4byte 0x1fff0000 _080D1CBC: .4byte gScanlineEffectRegBuffers _080D1CC0: .4byte gPaletteFade -_080D1CC4: .4byte sub_80D1B58 - thumb_func_end sub_80D1BE8 +_080D1CC4: .4byte BT_Phase2FullScreenWave + thumb_func_end BT_Phase2FullScreenWave_UpdateWave - thumb_func_start sub_80D1CC8 -sub_80D1CC8: @ 80D1CC8 + thumb_func_start VBCB_BT_Phase2FullScreenWave +VBCB_BT_Phase2FullScreenWave: @ 80D1CC8 push {lr} - bl sub_80D3DF4 - ldr r0, _080D1CF0 @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r0, _080D1CF0 @ =sTransitionStructPtr ldr r0, [r0] ldrb r0, [r0] cmp r0, 0 @@ -2615,14 +2615,14 @@ _080D1CEC: pop {r0} bx r0 .align 2, 0 -_080D1CF0: .4byte gUnknown_2039A2C +_080D1CF0: .4byte sTransitionStructPtr _080D1CF4: .4byte 0x040000d4 _080D1CF8: .4byte gScanlineEffectRegBuffers _080D1CFC: .4byte 0x800000a0 - thumb_func_end sub_80D1CC8 + thumb_func_end VBCB_BT_Phase2FullScreenWave - thumb_func_start sub_80D1D00 -sub_80D1D00: @ 80D1D00 + thumb_func_start HBCB_BT_Phase2FullScreenWave +HBCB_BT_Phase2FullScreenWave: @ 80D1D00 ldr r1, _080D1D20 @ =gScanlineEffectRegBuffers ldr r0, _080D1D24 @ =0x04000006 ldrh r0, [r0] @@ -2643,14 +2643,14 @@ sub_80D1D00: @ 80D1D00 _080D1D20: .4byte gScanlineEffectRegBuffers _080D1D24: .4byte 0x04000006 _080D1D28: .4byte 0x04000016 - thumb_func_end sub_80D1D00 + thumb_func_end HBCB_BT_Phase2FullScreenWave - thumb_func_start sub_80D1D2C -sub_80D1D2C: @ 80D1D2C + thumb_func_start BT_Phase2BlackWaveToRight +BT_Phase2BlackWaveToRight: @ 80D1D2C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D1D5C @ =gUnknown_83FA438 + ldr r5, _080D1D5C @ =sBT_Phase2BlackWaveToRightFuncs ldr r2, _080D1D60 @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -2671,17 +2671,17 @@ _080D1D3E: pop {r0} bx r0 .align 2, 0 -_080D1D5C: .4byte gUnknown_83FA438 +_080D1D5C: .4byte sBT_Phase2BlackWaveToRightFuncs _080D1D60: .4byte gTasks - thumb_func_end sub_80D1D2C + thumb_func_end BT_Phase2BlackWaveToRight - thumb_func_start sub_80D1D64 -sub_80D1D64: @ 80D1D64 + thumb_func_start BT_Phase2BlackWaveToRight_Init +BT_Phase2BlackWaveToRight_Init: @ 80D1D64 push {r4,lr} adds r4, r0, 0 - bl sub_80D3DD0 + bl BT_InitCtrlBlk bl ScanlineEffect_Clear - ldr r0, _080D1DB0 @ =gUnknown_2039A2C + ldr r0, _080D1DB0 @ =sTransitionStructPtr ldr r1, [r0] movs r2, 0 movs r0, 0x3F @@ -2703,7 +2703,7 @@ _080D1D8A: lsrs r1, r0, 24 cmp r1, 0x9F bls _080D1D8A - ldr r0, _080D1DB8 @ =sub_80D1E98 + ldr r0, _080D1DB8 @ =VBCB_BT_Phase2BlackWaveToRight bl SetVBlankCallback ldrh r0, [r4, 0x8] adds r0, 0x1 @@ -2713,18 +2713,18 @@ _080D1D8A: pop {r1} bx r1 .align 2, 0 -_080D1DB0: .4byte gUnknown_2039A2C +_080D1DB0: .4byte sTransitionStructPtr _080D1DB4: .4byte gScanlineEffectRegBuffers + 0x780 -_080D1DB8: .4byte sub_80D1E98 - thumb_func_end sub_80D1D64 +_080D1DB8: .4byte VBCB_BT_Phase2BlackWaveToRight + thumb_func_end BT_Phase2BlackWaveToRight_Init - thumb_func_start sub_80D1DBC -sub_80D1DBC: @ 80D1DBC + thumb_func_start BT_Phase2BlackWaveToRight_UpdateWave +BT_Phase2BlackWaveToRight_UpdateWave: @ 80D1DBC push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r0, 0 - ldr r0, _080D1E50 @ =gUnknown_2039A2C + ldr r0, _080D1E50 @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] movs r0, 0 @@ -2785,7 +2785,7 @@ _080D1E18: adds r0, 0x1 strh r0, [r4, 0x8] _080D1E36: - ldr r0, _080D1E50 @ =gUnknown_2039A2C + ldr r0, _080D1E50 @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 @@ -2798,12 +2798,12 @@ _080D1E36: pop {r1} bx r1 .align 2, 0 -_080D1E50: .4byte gUnknown_2039A2C +_080D1E50: .4byte sTransitionStructPtr _080D1E54: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80D1DBC + thumb_func_end BT_Phase2BlackWaveToRight_UpdateWave - thumb_func_start sub_80D1E58 -sub_80D1E58: @ 80D1E58 + thumb_func_start BT_Phase2BlackWaveToRight_End +BT_Phase2BlackWaveToRight_End: @ 80D1E58 push {lr} ldr r1, _080D1E88 @ =0x040000b0 ldrh r2, [r1, 0xA] @@ -2815,8 +2815,8 @@ sub_80D1E58: @ 80D1E58 ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] - bl sub_80D3E60 - ldr r0, _080D1E94 @ =sub_80D1D2C + bl BT_BlendPalettesToBlack + ldr r0, _080D1E94 @ =BT_Phase2BlackWaveToRight bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -2828,11 +2828,11 @@ sub_80D1E58: @ 80D1E58 _080D1E88: .4byte 0x040000b0 _080D1E8C: .4byte 0x0000c5ff _080D1E90: .4byte 0x00007fff -_080D1E94: .4byte sub_80D1D2C - thumb_func_end sub_80D1E58 +_080D1E94: .4byte BT_Phase2BlackWaveToRight + thumb_func_end BT_Phase2BlackWaveToRight_End - thumb_func_start sub_80D1E98 -sub_80D1E98: @ 80D1E98 + thumb_func_start VBCB_BT_Phase2BlackWaveToRight +VBCB_BT_Phase2BlackWaveToRight: @ 80D1E98 push {r4,r5,lr} ldr r4, _080D1F04 @ =0x040000b0 ldrh r1, [r4, 0xA] @@ -2844,8 +2844,8 @@ sub_80D1E98: @ 80D1E98 ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] - bl sub_80D3DF4 - ldr r5, _080D1F10 @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r5, _080D1F10 @ =sTransitionStructPtr ldr r0, [r5] ldrb r0, [r0] cmp r0, 0 @@ -2887,21 +2887,21 @@ _080D1ED0: _080D1F04: .4byte 0x040000b0 _080D1F08: .4byte 0x0000c5ff _080D1F0C: .4byte 0x00007fff -_080D1F10: .4byte gUnknown_2039A2C +_080D1F10: .4byte sTransitionStructPtr _080D1F14: .4byte 0x040000d4 _080D1F18: .4byte gScanlineEffectRegBuffers _080D1F1C: .4byte 0x800000a0 _080D1F20: .4byte gScanlineEffectRegBuffers + 0x780 _080D1F24: .4byte 0x04000040 _080D1F28: .4byte 0xa2400001 - thumb_func_end sub_80D1E98 + thumb_func_end VBCB_BT_Phase2BlackWaveToRight - thumb_func_start sub_80D1F2C -sub_80D1F2C: @ 80D1F2C + thumb_func_start BT_Phase2AntiClockwiseSpiral +BT_Phase2AntiClockwiseSpiral: @ 80D1F2C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D1F5C @ =gUnknown_83FA464 + ldr r5, _080D1F5C @ =sBT_Phase2AntiClockwiseSpiralFuncs ldr r2, _080D1F60 @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -2922,9 +2922,9 @@ _080D1F3E: pop {r0} bx r0 .align 2, 0 -_080D1F5C: .4byte gUnknown_83FA464 +_080D1F5C: .4byte sBT_Phase2AntiClockwiseSpiralFuncs _080D1F60: .4byte gTasks - thumb_func_end sub_80D1F2C + thumb_func_end BT_Phase2AntiClockwiseSpiral thumb_func_start sub_80D1F64 sub_80D1F64: @ 80D1F64 @@ -3398,7 +3398,7 @@ _080D22CA: ldrsh r4, [r0, r3] ldr r6, _080D2324 @ =gScanlineEffectRegBuffers + 0x780 _080D22D4: - ldr r0, _080D2328 @ =gUnknown_2039A2C + ldr r0, _080D2328 @ =sTransitionStructPtr ldr r5, [r0] asrs r2, r1, 16 adds r0, r2, 0 @@ -3438,7 +3438,7 @@ _080D22D4: .align 2, 0 _080D2320: .4byte gUnknown_83FA444 _080D2324: .4byte gScanlineEffectRegBuffers + 0x780 -_080D2328: .4byte gUnknown_2039A2C +_080D2328: .4byte sTransitionStructPtr _080D232C: ldrh r0, [r3] cmp r0, r1 @@ -3476,7 +3476,7 @@ _080D2360: ldrsh r4, [r0, r3] ldr r6, _080D23C0 @ =gScanlineEffectRegBuffers + 0x780 _080D236A: - ldr r0, _080D23C4 @ =gUnknown_2039A2C + ldr r0, _080D23C4 @ =sTransitionStructPtr ldr r3, [r0] asrs r2, r1, 16 adds r0, r2, 0 @@ -3520,7 +3520,7 @@ _080D23A6: .align 2, 0 _080D23BC: .4byte gUnknown_83FA444 _080D23C0: .4byte gScanlineEffectRegBuffers + 0x780 -_080D23C4: .4byte gUnknown_2039A2C +_080D23C4: .4byte sTransitionStructPtr _080D23C8: .4byte 0xffff0000 _080D23CC: lsls r0, r2, 16 @@ -3541,7 +3541,7 @@ _080D23DA: ldrsh r4, [r0, r6] ldr r6, _080D2440 @ =gScanlineEffectRegBuffers + 0x780 _080D23EC: - ldr r0, _080D2444 @ =gUnknown_2039A2C + ldr r0, _080D2444 @ =sTransitionStructPtr ldr r5, [r0] asrs r2, r1, 16 adds r0, r2, 0 @@ -3582,7 +3582,7 @@ _080D23EC: _080D2438: .4byte 0x0000ffb1 _080D243C: .4byte gUnknown_83FA444 _080D2440: .4byte gScanlineEffectRegBuffers + 0x780 -_080D2444: .4byte gUnknown_2039A2C +_080D2444: .4byte sTransitionStructPtr _080D2448: ldrh r0, [r3] cmp r0, r1 @@ -3617,7 +3617,7 @@ _080D2474: adds r0, r5, r0 movs r3, 0 ldrsh r4, [r0, r3] - ldr r6, _080D2534 @ =gUnknown_2039A2C + ldr r6, _080D2534 @ =sTransitionStructPtr mov r8, r6 ldr r6, _080D2538 @ =gScanlineEffectRegBuffers + 0x780 _080D248A: @@ -3709,17 +3709,17 @@ _080D251C: .align 2, 0 _080D252C: .4byte 0x0000ffb1 _080D2530: .4byte gUnknown_83FA444 -_080D2534: .4byte gUnknown_2039A2C +_080D2534: .4byte sTransitionStructPtr _080D2538: .4byte gScanlineEffectRegBuffers + 0x780 thumb_func_end sub_80D1F64 - thumb_func_start sub_80D253C -sub_80D253C: @ 80D253C + thumb_func_start BT_Phase2AntiClockwiseSpiral_Init +BT_Phase2AntiClockwiseSpiral_Init: @ 80D253C push {r4,r5,lr} adds r5, r0, 0 - bl sub_80D3DD0 + bl BT_InitCtrlBlk bl ScanlineEffect_Clear - ldr r0, _080D25A0 @ =gUnknown_2039A2C + ldr r0, _080D25A0 @ =sTransitionStructPtr ldr r1, [r0] movs r4, 0 strh r4, [r1, 0x2] @@ -3749,7 +3749,7 @@ sub_80D253C: @ 80D253C ldr r0, _080D25BC @ =0x80000140 str r0, [r1, 0x8] ldr r0, [r1, 0x8] - ldr r0, _080D25C0 @ =sub_80D2698 + ldr r0, _080D25C0 @ =VBCB_BT_Phase2AntiClockwiseBlackFade bl SetVBlankCallback ldrh r0, [r5, 0x8] adds r0, 0x1 @@ -3761,7 +3761,7 @@ sub_80D253C: @ 80D253C pop {r1} bx r1 .align 2, 0 -_080D25A0: .4byte gUnknown_2039A2C +_080D25A0: .4byte sTransitionStructPtr _080D25A4: .4byte 0x00007878 _080D25A8: .4byte 0x00003070 _080D25AC: .4byte 0x00001090 @@ -3769,11 +3769,11 @@ _080D25B0: .4byte 0x040000d4 _080D25B4: .4byte gScanlineEffectRegBuffers + 0x780 _080D25B8: .4byte 0xfffff880 _080D25BC: .4byte 0x80000140 -_080D25C0: .4byte sub_80D2698 - thumb_func_end sub_80D253C +_080D25C0: .4byte VBCB_BT_Phase2AntiClockwiseBlackFade + thumb_func_end BT_Phase2AntiClockwiseSpiral_Init - thumb_func_start sub_80D25C4 -sub_80D25C4: @ 80D25C4 + thumb_func_start BT_Phase2AntiClockwiseSpiral_Update +BT_Phase2AntiClockwiseSpiral_Update: @ 80D25C4 push {r4-r7,lr} mov r7, r8 push {r7} @@ -3784,7 +3784,7 @@ sub_80D25C4: @ 80D25C4 ldrsh r1, [r4, r2] movs r2, 0x1 bl sub_80D1F64 - ldr r5, _080D2694 @ =gUnknown_2039A2C + ldr r5, _080D2694 @ =sTransitionStructPtr ldr r1, [r5] ldrb r0, [r1] movs r2, 0x1 @@ -3870,7 +3870,7 @@ _080D2662: ldr r1, [r5] movs r0, 0x1 strh r0, [r1, 0x20] - bl sub_80D3E60 + bl BT_BlendPalettesToBlack _080D2686: movs r0, 0 pop {r3} @@ -3879,11 +3879,11 @@ _080D2686: pop {r1} bx r1 .align 2, 0 -_080D2694: .4byte gUnknown_2039A2C - thumb_func_end sub_80D25C4 +_080D2694: .4byte sTransitionStructPtr + thumb_func_end BT_Phase2AntiClockwiseSpiral_Update - thumb_func_start sub_80D2698 -sub_80D2698: @ 80D2698 + thumb_func_start VBCB_BT_Phase2AntiClockwiseBlackFade +VBCB_BT_Phase2AntiClockwiseBlackFade: @ 80D2698 push {r4-r6,lr} ldr r5, _080D26D0 @ =0x040000b0 ldrh r1, [r5, 0xA] @@ -3895,14 +3895,14 @@ sub_80D2698: @ 80D2698 ands r0, r1 strh r0, [r5, 0xA] ldrh r0, [r5, 0xA] - bl sub_80D3DF4 - ldr r4, _080D26DC @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r4, _080D26DC @ =sTransitionStructPtr ldr r2, [r4] movs r0, 0x20 ldrsh r3, [r2, r0] cmp r3, 0 beq _080D26E4 - ldr r0, _080D26E0 @ =sub_80D1F2C + ldr r0, _080D26E0 @ =BT_Phase2AntiClockwiseSpiral bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -3912,8 +3912,8 @@ sub_80D2698: @ 80D2698 _080D26D0: .4byte 0x040000b0 _080D26D4: .4byte 0x0000c5ff _080D26D8: .4byte 0x00007fff -_080D26DC: .4byte gUnknown_2039A2C -_080D26E0: .4byte sub_80D1F2C +_080D26DC: .4byte sTransitionStructPtr +_080D26E0: .4byte BT_Phase2AntiClockwiseSpiral _080D26E4: ldrb r0, [r2] cmp r0, 0 @@ -3971,10 +3971,10 @@ _080D2758: .4byte 0x80000140 _080D275C: .4byte gScanlineEffectRegBuffers _080D2760: .4byte 0x04000040 _080D2764: .4byte 0xa6400001 - thumb_func_end sub_80D2698 + thumb_func_end VBCB_BT_Phase2AntiClockwiseBlackFade - thumb_func_start Phase2Task_Transition_Sydney -Phase2Task_Transition_Sydney: @ 80D2768 + thumb_func_start BT_Phase2StartLoreleiMugshot +BT_Phase2StartLoreleiMugshot: @ 80D2768 push {lr} lsls r0, 24 lsrs r0, 24 @@ -3985,15 +3985,15 @@ Phase2Task_Transition_Sydney: @ 80D2768 adds r1, r2 movs r2, 0 strh r2, [r1, 0x26] - bl Phase2Task_MugShotTransition + bl BT_Phase2Mugshot pop {r0} bx r0 .align 2, 0 _080D2784: .4byte gTasks - thumb_func_end Phase2Task_Transition_Sydney + thumb_func_end BT_Phase2StartLoreleiMugshot - thumb_func_start Phase2Task_Transition_Phoebe -Phase2Task_Transition_Phoebe: @ 80D2788 + thumb_func_start BT_Phase2StartBrunoMugshot +BT_Phase2StartBrunoMugshot: @ 80D2788 push {lr} lsls r0, 24 lsrs r0, 24 @@ -4004,15 +4004,15 @@ Phase2Task_Transition_Phoebe: @ 80D2788 adds r1, r2 movs r2, 0x1 strh r2, [r1, 0x26] - bl Phase2Task_MugShotTransition + bl BT_Phase2Mugshot pop {r0} bx r0 .align 2, 0 _080D27A4: .4byte gTasks - thumb_func_end Phase2Task_Transition_Phoebe + thumb_func_end BT_Phase2StartBrunoMugshot - thumb_func_start Phase2Task_Transition_Glacia -Phase2Task_Transition_Glacia: @ 80D27A8 + thumb_func_start BT_Phase2StartAgathaMugshot +BT_Phase2StartAgathaMugshot: @ 80D27A8 push {lr} lsls r0, 24 lsrs r0, 24 @@ -4023,15 +4023,15 @@ Phase2Task_Transition_Glacia: @ 80D27A8 adds r1, r2 movs r2, 0x2 strh r2, [r1, 0x26] - bl Phase2Task_MugShotTransition + bl BT_Phase2Mugshot pop {r0} bx r0 .align 2, 0 _080D27C4: .4byte gTasks - thumb_func_end Phase2Task_Transition_Glacia + thumb_func_end BT_Phase2StartAgathaMugshot - thumb_func_start Phase2Task_Transition_Drake -Phase2Task_Transition_Drake: @ 80D27C8 + thumb_func_start BT_Phase2StartLanceMugshot +BT_Phase2StartLanceMugshot: @ 80D27C8 push {lr} lsls r0, 24 lsrs r0, 24 @@ -4042,15 +4042,15 @@ Phase2Task_Transition_Drake: @ 80D27C8 adds r1, r2 movs r2, 0x3 strh r2, [r1, 0x26] - bl Phase2Task_MugShotTransition + bl BT_Phase2Mugshot pop {r0} bx r0 .align 2, 0 _080D27E4: .4byte gTasks - thumb_func_end Phase2Task_Transition_Drake + thumb_func_end BT_Phase2StartLanceMugshot - thumb_func_start Phase2Task_Transition_Steven -Phase2Task_Transition_Steven: @ 80D27E8 + thumb_func_start BT_Phase2StartBlueMugshot +BT_Phase2StartBlueMugshot: @ 80D27E8 push {lr} lsls r0, 24 lsrs r0, 24 @@ -4061,19 +4061,19 @@ Phase2Task_Transition_Steven: @ 80D27E8 adds r1, r2 movs r2, 0x4 strh r2, [r1, 0x26] - bl Phase2Task_MugShotTransition + bl BT_Phase2Mugshot pop {r0} bx r0 .align 2, 0 _080D2804: .4byte gTasks - thumb_func_end Phase2Task_Transition_Steven + thumb_func_end BT_Phase2StartBlueMugshot - thumb_func_start Phase2Task_MugShotTransition -Phase2Task_MugShotTransition: @ 80D2808 + thumb_func_start BT_Phase2Mugshot +BT_Phase2Mugshot: @ 80D2808 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D2838 @ =gUnknown_83FA46C + ldr r5, _080D2838 @ =sBT_Phase2MugshotFuncs ldr r2, _080D283C @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -4094,25 +4094,25 @@ _080D281A: pop {r0} bx r0 .align 2, 0 -_080D2838: .4byte gUnknown_83FA46C +_080D2838: .4byte sBT_Phase2MugshotFuncs _080D283C: .4byte gTasks - thumb_func_end Phase2Task_MugShotTransition + thumb_func_end BT_Phase2Mugshot - thumb_func_start Phase2_Mugshot_Func1 -Phase2_Mugshot_Func1: @ 80D2840 + thumb_func_start BT_Phase2Mugshot_Init +BT_Phase2Mugshot_Init: @ 80D2840 push {r4,lr} adds r4, r0, 0 - bl sub_80D3DD0 + bl BT_InitCtrlBlk bl ScanlineEffect_Clear adds r0, r4, 0 - bl sub_80D2EA4 + bl BT_Phase2Mugshots_CreateSprites movs r0, 0 strh r0, [r4, 0xA] movs r0, 0x1 strh r0, [r4, 0xC] movs r0, 0xEF strh r0, [r4, 0xE] - ldr r0, _080D2898 @ =gUnknown_2039A2C + ldr r0, _080D2898 @ =sTransitionStructPtr ldr r1, [r0] movs r0, 0x3F strh r0, [r1, 0x2] @@ -4132,7 +4132,7 @@ _080D2874: lsrs r1, r0, 24 cmp r1, 0x9F bls _080D2874 - ldr r0, _080D28A4 @ =sub_80D2D50 + ldr r0, _080D28A4 @ =VBCB_BT_Phase2Mugshot1_Slide bl SetVBlankCallback ldrh r0, [r4, 0x8] adds r0, 0x1 @@ -4142,28 +4142,28 @@ _080D2874: pop {r1} bx r1 .align 2, 0 -_080D2898: .4byte gUnknown_2039A2C +_080D2898: .4byte sTransitionStructPtr _080D289C: .4byte gScanlineEffectRegBuffers + 0x780 _080D28A0: .4byte 0x0000f0f1 -_080D28A4: .4byte sub_80D2D50 - thumb_func_end Phase2_Mugshot_Func1 +_080D28A4: .4byte VBCB_BT_Phase2Mugshot1_Slide + thumb_func_end BT_Phase2Mugshot_Init - thumb_func_start Phase2_Mugshot_Func2 -Phase2_Mugshot_Func2: @ 80D28A8 + thumb_func_start BT_Phase2Mugshot_LoadGfx +BT_Phase2Mugshot_LoadGfx: @ 80D28A8 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 mov r8, r0 - ldr r6, _080D2950 @ =gUnknown_83FAC34 + ldr r6, _080D2950 @ =sVsBarTilemap add r1, sp, 0x4 mov r0, sp - bl sub_80D3E28 - ldr r0, _080D2954 @ =gUnknown_83F8F60 + bl BT_GetBg0TilemapAndTilesetBase + ldr r0, _080D2954 @ =sVsBarTileset ldr r1, [sp, 0x4] movs r2, 0xF0 bl CpuSet - ldr r1, _080D2958 @ =gUnknown_83FA740 + ldr r1, _080D2958 @ =sVsBarOpponentPalettes mov r2, r8 movs r3, 0x26 ldrsh r0, [r2, r3] @@ -4173,7 +4173,7 @@ Phase2_Mugshot_Func2: @ 80D28A8 movs r1, 0xF0 movs r2, 0x20 bl LoadPalette - ldr r1, _080D295C @ =gUnknown_83FA754 + ldr r1, _080D295C @ =sVsBarPlayerPalettes ldr r0, _080D2960 @ =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x8] @@ -4217,7 +4217,7 @@ _080D2902: ble _080D28FC movs r0, 0x2 bl EnableInterrupts - ldr r0, _080D2964 @ =sub_80D2E6C + ldr r0, _080D2964 @ =HBCB_BT_Phase2Mugshot bl SetHBlankCallback mov r2, r8 ldrh r0, [r2, 0x8] @@ -4231,19 +4231,19 @@ _080D2902: pop {r1} bx r1 .align 2, 0 -_080D2950: .4byte gUnknown_83FAC34 -_080D2954: .4byte gUnknown_83F8F60 -_080D2958: .4byte gUnknown_83FA740 -_080D295C: .4byte gUnknown_83FA754 +_080D2950: .4byte sVsBarTilemap +_080D2954: .4byte sVsBarTileset +_080D2958: .4byte sVsBarOpponentPalettes +_080D295C: .4byte sVsBarPlayerPalettes _080D2960: .4byte gSaveBlock2Ptr -_080D2964: .4byte sub_80D2E6C - thumb_func_end Phase2_Mugshot_Func2 +_080D2964: .4byte HBCB_BT_Phase2Mugshot + thumb_func_end BT_Phase2Mugshot_LoadGfx - thumb_func_start sub_80D2968 -sub_80D2968: @ 80D2968 + thumb_func_start BT_Phase2Mugshot_VsBarsSlideIn +BT_Phase2Mugshot_VsBarsSlideIn: @ 80D2968 push {r4-r7,lr} adds r4, r0, 0 - ldr r0, _080D2A4C @ =gUnknown_2039A2C + ldr r0, _080D2A4C @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] movs r0, 0 @@ -4346,7 +4346,7 @@ _080D2A1E: adds r0, 0x1 strh r0, [r4, 0x8] _080D2A2A: - ldr r0, _080D2A4C @ =gUnknown_2039A2C + ldr r0, _080D2A4C @ =sTransitionStructPtr ldr r1, [r0] ldrh r0, [r1, 0x18] subs r0, 0x8 @@ -4363,15 +4363,15 @@ _080D2A2A: pop {r1} bx r1 .align 2, 0 -_080D2A4C: .4byte gUnknown_2039A2C +_080D2A4C: .4byte sTransitionStructPtr _080D2A50: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80D2968 + thumb_func_end BT_Phase2Mugshot_VsBarsSlideIn - thumb_func_start sub_80D2A54 -sub_80D2A54: @ 80D2A54 + thumb_func_start BT_Phase2Mugshot_StartSpriteSlide +BT_Phase2Mugshot_StartSpriteSlide: @ 80D2A54 push {r4,r5,lr} adds r4, r0, 0 - ldr r2, _080D2AC8 @ =gUnknown_2039A2C + ldr r2, _080D2AC8 @ =sTransitionStructPtr ldr r1, [r2] ldrb r0, [r1] movs r0, 0 @@ -4404,14 +4404,14 @@ _080D2A68: movs r1, 0x22 ldrsh r0, [r4, r1] movs r1, 0 - bl sub_80D3120 + bl BT_SetSpriteAsOpponentOrPlayer movs r1, 0x24 ldrsh r0, [r4, r1] movs r1, 0x1 - bl sub_80D3120 + bl BT_SetSpriteAsOpponentOrPlayer movs r1, 0x22 ldrsh r0, [r4, r1] - bl sub_80D3138 + bl BT_StartSpriteSlide movs r0, 0x61 bl PlaySE ldr r1, [r5] @@ -4424,15 +4424,15 @@ _080D2A68: pop {r1} bx r1 .align 2, 0 -_080D2AC8: .4byte gUnknown_2039A2C +_080D2AC8: .4byte sTransitionStructPtr _080D2ACC: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80D2A54 + thumb_func_end BT_Phase2Mugshot_StartSpriteSlide - thumb_func_start sub_80D2AD0 -sub_80D2AD0: @ 80D2AD0 + thumb_func_start BT_Phase2Mugshot_WaitForOpponentInPlace +BT_Phase2Mugshot_WaitForOpponentInPlace: @ 80D2AD0 push {r4,lr} adds r4, r0, 0 - ldr r0, _080D2B08 @ =gUnknown_2039A2C + ldr r0, _080D2B08 @ =sTransitionStructPtr ldr r1, [r0] ldrh r0, [r1, 0x18] subs r0, 0x8 @@ -4442,7 +4442,7 @@ sub_80D2AD0: @ 80D2AD0 strh r0, [r1, 0x1A] movs r1, 0x22 ldrsh r0, [r4, r1] - bl sub_80D3154 + bl BT_IsSpriteSlideFinished lsls r0, 16 cmp r0, 0 beq _080D2B00 @@ -4451,23 +4451,23 @@ sub_80D2AD0: @ 80D2AD0 strh r0, [r4, 0x8] movs r1, 0x24 ldrsh r0, [r4, r1] - bl sub_80D3138 + bl BT_StartSpriteSlide _080D2B00: movs r0, 0 pop {r4} pop {r1} bx r1 .align 2, 0 -_080D2B08: .4byte gUnknown_2039A2C - thumb_func_end sub_80D2AD0 +_080D2B08: .4byte sTransitionStructPtr + thumb_func_end BT_Phase2Mugshot_WaitForOpponentInPlace - thumb_func_start sub_80D2B0C -sub_80D2B0C: @ 80D2B0C + thumb_func_start BT_Phase2Mugshot_WaitForPlayerInPlace +BT_Phase2Mugshot_WaitForPlayerInPlace: @ 80D2B0C push {r4-r7,lr} mov r7, r8 push {r7} adds r6, r0, 0 - ldr r7, _080D2BAC @ =gUnknown_2039A2C + ldr r7, _080D2BAC @ =sTransitionStructPtr ldr r1, [r7] ldrh r0, [r1, 0x18] subs r0, 0x8 @@ -4479,7 +4479,7 @@ sub_80D2B0C: @ 80D2B0C strh r0, [r1, 0x1A] movs r1, 0x24 ldrsh r0, [r6, r1] - bl sub_80D3154 + bl BT_IsSpriteSlideFinished lsls r0, 16 cmp r0, 0 beq _080D2BA0 @@ -4528,7 +4528,7 @@ sub_80D2B0C: @ 80D2B0C ldr r1, [r7] movs r0, 0xBF strh r0, [r1, 0xE] - ldr r0, _080D2BC0 @ =sub_80D2DEC + ldr r0, _080D2BC0 @ =VBCB_BT_Phase2Mugshot2_WhiteFade bl SetVBlankCallback _080D2BA0: movs r0, 0 @@ -4538,19 +4538,19 @@ _080D2BA0: pop {r1} bx r1 .align 2, 0 -_080D2BAC: .4byte gUnknown_2039A2C +_080D2BAC: .4byte sTransitionStructPtr _080D2BB0: .4byte 0x040000b0 _080D2BB4: .4byte 0x0000c5ff _080D2BB8: .4byte 0x00007fff _080D2BBC: .4byte gScanlineEffectRegBuffers -_080D2BC0: .4byte sub_80D2DEC - thumb_func_end sub_80D2B0C +_080D2BC0: .4byte VBCB_BT_Phase2Mugshot2_WhiteFade + thumb_func_end BT_Phase2Mugshot_WaitForPlayerInPlace - thumb_func_start sub_80D2BC4 -sub_80D2BC4: @ 80D2BC4 + thumb_func_start BT_Phase2Mugshot_ExpandWhiteBand +BT_Phase2Mugshot_ExpandWhiteBand: @ 80D2BC4 push {r4-r7,lr} adds r4, r0, 0 - ldr r2, _080D2C84 @ =gUnknown_2039A2C + ldr r2, _080D2C84 @ =sTransitionStructPtr ldr r1, [r2] ldrb r0, [r1] movs r0, 0 @@ -4651,15 +4651,15 @@ _080D2C6E: pop {r1} bx r1 .align 2, 0 -_080D2C84: .4byte gUnknown_2039A2C +_080D2C84: .4byte sTransitionStructPtr _080D2C88: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80D2BC4 + thumb_func_end BT_Phase2Mugshot_ExpandWhiteBand - thumb_func_start sub_80D2C8C -sub_80D2C8C: @ 80D2C8C + thumb_func_start BT_Phase2Mugshot_StartBlackFade +BT_Phase2Mugshot_StartBlackFade: @ 80D2C8C push {r4-r6,lr} adds r4, r0, 0 - ldr r5, _080D2CBC @ =gUnknown_2039A2C + ldr r5, _080D2CBC @ =sTransitionStructPtr ldr r0, [r5] ldrb r1, [r0] movs r6, 0 @@ -4681,15 +4681,15 @@ sub_80D2C8C: @ 80D2C8C pop {r1} bx r1 .align 2, 0 -_080D2CBC: .4byte gUnknown_2039A2C +_080D2CBC: .4byte sTransitionStructPtr _080D2CC0: .4byte 0x00007fff - thumb_func_end sub_80D2C8C + thumb_func_end BT_Phase2Mugshot_StartBlackFade - thumb_func_start sub_80D2CC4 -sub_80D2CC4: @ 80D2CC4 + thumb_func_start BT_Phase2Mugshot_WaitForBlackFade +BT_Phase2Mugshot_WaitForBlackFade: @ 80D2CC4 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, _080D2D08 @ =gUnknown_2039A2C + ldr r5, _080D2D08 @ =sTransitionStructPtr ldr r1, [r5] ldrb r0, [r1] movs r0, 0 @@ -4721,12 +4721,12 @@ _080D2CF4: pop {r1} bx r1 .align 2, 0 -_080D2D08: .4byte gUnknown_2039A2C +_080D2D08: .4byte sTransitionStructPtr _080D2D0C: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80D2CC4 + thumb_func_end BT_Phase2Mugshot_WaitForBlackFade - thumb_func_start sub_80D2D10 -sub_80D2D10: @ 80D2D10 + thumb_func_start BT_Phase2Mugshot_End +BT_Phase2Mugshot_End: @ 80D2D10 push {r4,lr} adds r4, r0, 0 ldr r1, _080D2D44 @ =0x040000b0 @@ -4739,7 +4739,7 @@ sub_80D2D10: @ 80D2D10 ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] - bl sub_80D3E60 + bl BT_BlendPalettesToBlack ldr r0, [r4] bl FindTaskIdByFunc lsls r0, 24 @@ -4753,10 +4753,10 @@ sub_80D2D10: @ 80D2D10 _080D2D44: .4byte 0x040000b0 _080D2D48: .4byte 0x0000c5ff _080D2D4C: .4byte 0x00007fff - thumb_func_end sub_80D2D10 + thumb_func_end BT_Phase2Mugshot_End - thumb_func_start sub_80D2D50 -sub_80D2D50: @ 80D2D50 + thumb_func_start VBCB_BT_Phase2Mugshot1_Slide +VBCB_BT_Phase2Mugshot1_Slide: @ 80D2D50 push {r4,r5,lr} ldr r4, _080D2DC4 @ =0x040000b0 ldrh r1, [r4, 0xA] @@ -4768,8 +4768,8 @@ sub_80D2D50: @ 80D2D50 ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] - bl sub_80D3DF4 - ldr r5, _080D2DD0 @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r5, _080D2DD0 @ =sTransitionStructPtr ldr r0, [r5] ldrb r0, [r0] cmp r0, 0 @@ -4815,17 +4815,17 @@ _080D2D88: _080D2DC4: .4byte 0x040000b0 _080D2DC8: .4byte 0x0000c5ff _080D2DCC: .4byte 0x00007fff -_080D2DD0: .4byte gUnknown_2039A2C +_080D2DD0: .4byte sTransitionStructPtr _080D2DD4: .4byte 0x040000d4 _080D2DD8: .4byte gScanlineEffectRegBuffers _080D2DDC: .4byte 0x800000a0 _080D2DE0: .4byte gScanlineEffectRegBuffers + 0x780 _080D2DE4: .4byte 0x04000040 _080D2DE8: .4byte 0xa2400001 - thumb_func_end sub_80D2D50 + thumb_func_end VBCB_BT_Phase2Mugshot1_Slide - thumb_func_start sub_80D2DEC -sub_80D2DEC: @ 80D2DEC + thumb_func_start VBCB_BT_Phase2Mugshot2_WhiteFade +VBCB_BT_Phase2Mugshot2_WhiteFade: @ 80D2DEC push {r4,lr} ldr r4, _080D2E44 @ =0x040000b0 ldrh r1, [r4, 0xA] @@ -4837,8 +4837,8 @@ sub_80D2DEC: @ 80D2DEC ands r0, r1 strh r0, [r4, 0xA] ldrh r0, [r4, 0xA] - bl sub_80D3DF4 - ldr r2, _080D2E50 @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r2, _080D2E50 @ =sTransitionStructPtr ldr r0, [r2] ldrb r0, [r0] cmp r0, 0 @@ -4872,34 +4872,34 @@ _080D2E24: _080D2E44: .4byte 0x040000b0 _080D2E48: .4byte 0x0000c5ff _080D2E4C: .4byte 0x00007fff -_080D2E50: .4byte gUnknown_2039A2C +_080D2E50: .4byte sTransitionStructPtr _080D2E54: .4byte 0x040000d4 _080D2E58: .4byte gScanlineEffectRegBuffers _080D2E5C: .4byte 0x800000a0 _080D2E60: .4byte gScanlineEffectRegBuffers + 0x780 _080D2E64: .4byte 0x04000054 _080D2E68: .4byte 0xa2400001 - thumb_func_end sub_80D2DEC + thumb_func_end VBCB_BT_Phase2Mugshot2_WhiteFade - thumb_func_start sub_80D2E6C -sub_80D2E6C: @ 80D2E6C + thumb_func_start HBCB_BT_Phase2Mugshot +HBCB_BT_Phase2Mugshot: @ 80D2E6C push {lr} ldr r0, _080D2E80 @ =0x04000006 ldrh r0, [r0] cmp r0, 0x4F bhi _080D2E8C ldr r1, _080D2E84 @ =0x04000010 - ldr r0, _080D2E88 @ =gUnknown_2039A2C + ldr r0, _080D2E88 @ =sTransitionStructPtr ldr r0, [r0] ldrh r0, [r0, 0x18] b _080D2E94 .align 2, 0 _080D2E80: .4byte 0x04000006 _080D2E84: .4byte 0x04000010 -_080D2E88: .4byte gUnknown_2039A2C +_080D2E88: .4byte sTransitionStructPtr _080D2E8C: ldr r1, _080D2E9C @ =0x04000010 - ldr r0, _080D2EA0 @ =gUnknown_2039A2C + ldr r0, _080D2EA0 @ =sTransitionStructPtr ldr r0, [r0] ldrh r0, [r0, 0x1A] _080D2E94: @@ -4908,11 +4908,11 @@ _080D2E94: bx r0 .align 2, 0 _080D2E9C: .4byte 0x04000010 -_080D2EA0: .4byte gUnknown_2039A2C - thumb_func_end sub_80D2E6C +_080D2EA0: .4byte sTransitionStructPtr + thumb_func_end HBCB_BT_Phase2Mugshot - thumb_func_start sub_80D2EA4 -sub_80D2EA4: @ 80D2EA4 + thumb_func_start BT_Phase2Mugshots_CreateSprites +BT_Phase2Mugshots_CreateSprites: @ 80D2EA4 push {r4-r6,lr} mov r6, r9 mov r5, r8 @@ -4922,13 +4922,13 @@ sub_80D2EA4: @ 80D2EA4 ldr r6, _080D2FF8 @ =gReservedSpritePaletteCount movs r0, 0xA strb r0, [r6] - ldr r0, _080D2FFC @ =gUnknown_83FA494 + ldr r0, _080D2FFC @ =sMugshotsTrainerPicIDsTable movs r2, 0x26 ldrsh r1, [r4, r2] mov r9, r1 add r0, r9 ldrb r0, [r0] - ldr r2, _080D3000 @ =gUnknown_83FA4AE + ldr r2, _080D3000 @ =sMugshotsOpponentCoords lsls r1, 2 mov r9, r1 adds r1, r2 @@ -4980,7 +4980,7 @@ sub_80D2EA4: @ 80D2EA4 adds r6, r0 lsls r6, 2 adds r6, r1 - ldr r0, _080D3010 @ =sub_80D301C + ldr r0, _080D3010 @ =SpriteCB_BT_Phase2Mugshots str r0, [r5, 0x1C] str r0, [r6, 0x1C] ldrb r0, [r5, 0x1] @@ -5046,7 +5046,7 @@ sub_80D2EA4: @ 80D2EA4 ldrb r0, [r5, 0x3] lsls r0, 26 lsrs r0, 27 - ldr r2, _080D3014 @ =gUnknown_83FA49A + ldr r2, _080D3014 @ =sMugshotsOpponentRotationScales mov r3, r9 adds r1, r3, r2 movs r4, 0 @@ -5075,21 +5075,21 @@ sub_80D2EA4: @ 80D2EA4 bx r0 .align 2, 0 _080D2FF8: .4byte gReservedSpritePaletteCount -_080D2FFC: .4byte gUnknown_83FA494 -_080D3000: .4byte gUnknown_83FA4AE +_080D2FFC: .4byte sMugshotsTrainerPicIDsTable +_080D3000: .4byte sMugshotsOpponentCoords _080D3004: .4byte gDecompressionBuffer _080D3008: .4byte gSaveBlock2Ptr _080D300C: .4byte gSprites -_080D3010: .4byte sub_80D301C -_080D3014: .4byte gUnknown_83FA49A +_080D3010: .4byte SpriteCB_BT_Phase2Mugshots +_080D3014: .4byte sMugshotsOpponentRotationScales _080D3018: .4byte 0xfffffe00 - thumb_func_end sub_80D2EA4 + thumb_func_end BT_Phase2Mugshots_CreateSprites - thumb_func_start sub_80D301C -sub_80D301C: @ 80D301C + thumb_func_start SpriteCB_BT_Phase2Mugshots +SpriteCB_BT_Phase2Mugshots: @ 80D301C push {r4,r5,lr} adds r4, r0, 0 - ldr r5, _080D3040 @ =gUnknown_83FA4C4 + ldr r5, _080D3040 @ =sBT_Phase2MugshotSpriteFuncs _080D3022: movs r1, 0x2E ldrsh r0, [r4, r1] @@ -5105,26 +5105,26 @@ _080D3022: pop {r0} bx r0 .align 2, 0 -_080D3040: .4byte gUnknown_83FA4C4 - thumb_func_end sub_80D301C +_080D3040: .4byte sBT_Phase2MugshotSpriteFuncs + thumb_func_end SpriteCB_BT_Phase2Mugshots - thumb_func_start sub_80D3044 -sub_80D3044: @ 80D3044 + thumb_func_start BT_Phase2MugshotsSpriteFuncs_Wait +BT_Phase2MugshotsSpriteFuncs_Wait: @ 80D3044 movs r0, 0 bx lr - thumb_func_end sub_80D3044 + thumb_func_end BT_Phase2MugshotsSpriteFuncs_Wait - thumb_func_start sub_80D3048 -sub_80D3048: @ 80D3048 + thumb_func_start BT_Phase2MugshotsSpriteFuncs_InitParams +BT_Phase2MugshotsSpriteFuncs_InitParams: @ 80D3048 push {r4,r5,lr} sub sp, 0x8 adds r5, r0, 0 - ldr r1, _080D308C @ =gUnknown_83FA4E0 + ldr r1, _080D308C @ =sMugShotSlideVelocity mov r0, sp movs r2, 0x4 bl memcpy add r4, sp, 0x4 - ldr r1, _080D3090 @ =gUnknown_83FA4E4 + ldr r1, _080D3090 @ =sMugShotSlideDeceleration adds r0, r4, 0 movs r2, 0x4 bl memcpy @@ -5149,12 +5149,12 @@ sub_80D3048: @ 80D3048 pop {r1} bx r1 .align 2, 0 -_080D308C: .4byte gUnknown_83FA4E0 -_080D3090: .4byte gUnknown_83FA4E4 - thumb_func_end sub_80D3048 +_080D308C: .4byte sMugShotSlideVelocity +_080D3090: .4byte sMugShotSlideDeceleration + thumb_func_end BT_Phase2MugshotsSpriteFuncs_InitParams - thumb_func_start sub_80D3094 -sub_80D3094: @ 80D3094 + thumb_func_start BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn +BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn: @ 80D3094 push {lr} adds r1, r0, 0 ldrh r0, [r1, 0x30] @@ -5183,10 +5183,10 @@ _080D30C0: movs r0, 0 pop {r1} bx r1 - thumb_func_end sub_80D3094 + thumb_func_end BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn - thumb_func_start sub_80D30C8 -sub_80D30C8: @ 80D30C8 + thumb_func_start BT_Phase2MugshotsSpriteFuncs_DecelerateSprite +BT_Phase2MugshotsSpriteFuncs_DecelerateSprite: @ 80D30C8 push {lr} adds r2, r0, 0 ldrh r3, [r2, 0x32] @@ -5210,10 +5210,10 @@ _080D30EE: movs r0, 0 pop {r1} bx r1 - thumb_func_end sub_80D30C8 + thumb_func_end BT_Phase2MugshotsSpriteFuncs_DecelerateSprite - thumb_func_start sub_80D30F4 -sub_80D30F4: @ 80D30F4 + thumb_func_start BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2 +BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2: @ 80D30F4 push {lr} adds r2, r0, 0 ldrh r0, [r2, 0x32] @@ -5236,10 +5236,10 @@ _080D3118: movs r0, 0 pop {r1} bx r1 - thumb_func_end sub_80D30F4 + thumb_func_end BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2 - thumb_func_start sub_80D3120 -sub_80D3120: @ 80D3120 + thumb_func_start BT_SetSpriteAsOpponentOrPlayer +BT_SetSpriteAsOpponentOrPlayer: @ 80D3120 ldr r3, _080D3134 @ =gSprites lsls r0, 16 asrs r0, 16 @@ -5251,10 +5251,10 @@ sub_80D3120: @ 80D3120 bx lr .align 2, 0 _080D3134: .4byte gSprites - thumb_func_end sub_80D3120 + thumb_func_end BT_SetSpriteAsOpponentOrPlayer - thumb_func_start sub_80D3138 -sub_80D3138: @ 80D3138 + thumb_func_start BT_StartSpriteSlide +BT_StartSpriteSlide: @ 80D3138 ldr r2, _080D3150 @ =gSprites lsls r0, 16 asrs r0, 16 @@ -5268,10 +5268,10 @@ sub_80D3138: @ 80D3138 bx lr .align 2, 0 _080D3150: .4byte gSprites - thumb_func_end sub_80D3138 + thumb_func_end BT_StartSpriteSlide - thumb_func_start sub_80D3154 -sub_80D3154: @ 80D3154 + thumb_func_start BT_IsSpriteSlideFinished +BT_IsSpriteSlideFinished: @ 80D3154 ldr r2, _080D3168 @ =gSprites lsls r0, 16 asrs r0, 16 @@ -5284,14 +5284,14 @@ sub_80D3154: @ 80D3154 bx lr .align 2, 0 _080D3168: .4byte gSprites - thumb_func_end sub_80D3154 + thumb_func_end BT_IsSpriteSlideFinished - thumb_func_start sub_80D316C -sub_80D316C: @ 80D316C + thumb_func_start BT_Phase2SlicedScreen +BT_Phase2SlicedScreen: @ 80D316C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D319C @ =gUnknown_83FA4E8 + ldr r5, _080D319C @ =sBT_Phase2SlicedScreenFuncs ldr r2, _080D31A0 @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -5312,15 +5312,15 @@ _080D317E: pop {r0} bx r0 .align 2, 0 -_080D319C: .4byte gUnknown_83FA4E8 +_080D319C: .4byte sBT_Phase2SlicedScreenFuncs _080D31A0: .4byte gTasks - thumb_func_end sub_80D316C + thumb_func_end BT_Phase2SlicedScreen - thumb_func_start sub_80D31A4 -sub_80D31A4: @ 80D31A4 + thumb_func_start BT_Phase2SlicedScreen_Init +BT_Phase2SlicedScreen_Init: @ 80D31A4 push {r4-r6,lr} adds r5, r0, 0 - bl sub_80D3DD0 + bl BT_InitCtrlBlk bl ScanlineEffect_Clear movs r3, 0 movs r0, 0x80 @@ -5328,7 +5328,7 @@ sub_80D31A4: @ 80D31A4 strh r0, [r5, 0xC] movs r0, 0x1 strh r0, [r5, 0xE] - ldr r2, _080D3210 @ =gUnknown_2039A2C + ldr r2, _080D3210 @ =sTransitionStructPtr ldr r1, [r2] movs r0, 0x3F strh r0, [r1, 0x2] @@ -5356,9 +5356,9 @@ _080D31D0: bls _080D31D0 movs r0, 0x2 bl EnableInterrupts - ldr r0, _080D3218 @ =sub_80D332C + ldr r0, _080D3218 @ =VBCB_BT_Phase2SlicedScreen bl SetVBlankCallback - ldr r0, _080D321C @ =sub_80D33C0 + ldr r0, _080D321C @ =HBCB_BT_Phase2SlicedScreen bl SetHBlankCallback ldrh r0, [r5, 0x8] adds r0, 0x1 @@ -5368,19 +5368,19 @@ _080D31D0: pop {r1} bx r1 .align 2, 0 -_080D3210: .4byte gUnknown_2039A2C +_080D3210: .4byte sTransitionStructPtr _080D3214: .4byte gScanlineEffectRegBuffers + 0x780 -_080D3218: .4byte sub_80D332C -_080D321C: .4byte sub_80D33C0 - thumb_func_end sub_80D31A4 +_080D3218: .4byte VBCB_BT_Phase2SlicedScreen +_080D321C: .4byte HBCB_BT_Phase2SlicedScreen + thumb_func_end BT_Phase2SlicedScreen_Init - thumb_func_start sub_80D3220 -sub_80D3220: @ 80D3220 + thumb_func_start BT_Phase2SlicedScreen_UpdateOffsets +BT_Phase2SlicedScreen_UpdateOffsets: @ 80D3220 push {r4-r7,lr} mov r7, r8 push {r7} adds r3, r0, 0 - ldr r2, _080D329C @ =gUnknown_2039A2C + ldr r2, _080D329C @ =sTransitionStructPtr ldr r1, [r2] ldrb r0, [r1] movs r0, 0 @@ -5442,7 +5442,7 @@ _080D3278: subs r0, r1 b _080D32BA .align 2, 0 -_080D329C: .4byte gUnknown_2039A2C +_080D329C: .4byte sTransitionStructPtr _080D32A0: .4byte 0x00000fff _080D32A4: .4byte gScanlineEffectRegBuffers _080D32A8: @@ -5482,10 +5482,10 @@ _080D32D4: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_80D3220 + thumb_func_end BT_Phase2SlicedScreen_UpdateOffsets - thumb_func_start sub_80D32EC -sub_80D32EC: @ 80D32EC + thumb_func_start BT_Phase2SlicedScreen_End +BT_Phase2SlicedScreen_End: @ 80D32EC push {lr} ldr r1, _080D331C @ =0x040000b0 ldrh r2, [r1, 0xA] @@ -5497,8 +5497,8 @@ sub_80D32EC: @ 80D32EC ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] - bl sub_80D3E60 - ldr r0, _080D3328 @ =sub_80D316C + bl BT_BlendPalettesToBlack + ldr r0, _080D3328 @ =BT_Phase2SlicedScreen bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -5510,11 +5510,11 @@ sub_80D32EC: @ 80D32EC _080D331C: .4byte 0x040000b0 _080D3320: .4byte 0x0000c5ff _080D3324: .4byte 0x00007fff -_080D3328: .4byte sub_80D316C - thumb_func_end sub_80D32EC +_080D3328: .4byte BT_Phase2SlicedScreen + thumb_func_end BT_Phase2SlicedScreen_End - thumb_func_start sub_80D332C -sub_80D332C: @ 80D332C + thumb_func_start VBCB_BT_Phase2SlicedScreen +VBCB_BT_Phase2SlicedScreen: @ 80D332C push {r4,r5,lr} ldr r5, _080D3398 @ =0x040000b0 ldrh r1, [r5, 0xA] @@ -5526,8 +5526,8 @@ sub_80D332C: @ 80D332C ands r0, r1 strh r0, [r5, 0xA] ldrh r0, [r5, 0xA] - bl sub_80D3DF4 - ldr r4, _080D33A4 @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r4, _080D33A4 @ =sTransitionStructPtr ldr r0, [r4] ldrh r1, [r0, 0x2] movs r0, 0x48 @@ -5569,17 +5569,17 @@ _080D3382: _080D3398: .4byte 0x040000b0 _080D339C: .4byte 0x0000c5ff _080D33A0: .4byte 0x00007fff -_080D33A4: .4byte gUnknown_2039A2C +_080D33A4: .4byte sTransitionStructPtr _080D33A8: .4byte 0x040000d4 _080D33AC: .4byte gScanlineEffectRegBuffers _080D33B0: .4byte 0x80000140 _080D33B4: .4byte gScanlineEffectRegBuffers + 0x8C0 _080D33B8: .4byte 0x04000040 _080D33BC: .4byte 0xa2400001 - thumb_func_end sub_80D332C + thumb_func_end VBCB_BT_Phase2SlicedScreen - thumb_func_start sub_80D33C0 -sub_80D33C0: @ 80D33C0 + thumb_func_start HBCB_BT_Phase2SlicedScreen +HBCB_BT_Phase2SlicedScreen: @ 80D33C0 ldr r1, _080D33E0 @ =gScanlineEffectRegBuffers ldr r0, _080D33E4 @ =0x04000006 ldrh r0, [r0] @@ -5600,14 +5600,14 @@ sub_80D33C0: @ 80D33C0 _080D33E0: .4byte gScanlineEffectRegBuffers _080D33E4: .4byte 0x04000006 _080D33E8: .4byte 0x04000014 - thumb_func_end sub_80D33C0 + thumb_func_end HBCB_BT_Phase2SlicedScreen - thumb_func_start sub_80D33EC -sub_80D33EC: @ 80D33EC + thumb_func_start BT_Phase2WhiteFadeInStripes +BT_Phase2WhiteFadeInStripes: @ 80D33EC push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D341C @ =gUnknown_83FA4F4 + ldr r5, _080D341C @ =sBT_Phase2WhiteFadeInStripesFuncs ldr r2, _080D3420 @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -5628,17 +5628,17 @@ _080D33FE: pop {r0} bx r0 .align 2, 0 -_080D341C: .4byte gUnknown_83FA4F4 +_080D341C: .4byte sBT_Phase2WhiteFadeInStripesFuncs _080D3420: .4byte gTasks - thumb_func_end sub_80D33EC + thumb_func_end BT_Phase2WhiteFadeInStripes - thumb_func_start sub_80D3424 -sub_80D3424: @ 80D3424 + thumb_func_start BT_Phase2WhiteFadeInStripes_Init +BT_Phase2WhiteFadeInStripes_Init: @ 80D3424 push {r4,r5,lr} adds r5, r0, 0 - bl sub_80D3DD0 + bl BT_InitCtrlBlk bl ScanlineEffect_Clear - ldr r0, _080D348C @ =gUnknown_2039A2C + ldr r0, _080D348C @ =sTransitionStructPtr ldr r1, [r0] movs r2, 0 movs r0, 0xBF @@ -5670,9 +5670,9 @@ _080D3450: bls _080D3450 movs r0, 0x2 bl EnableInterrupts - ldr r0, _080D3494 @ =sub_80D36E0 + ldr r0, _080D3494 @ =HBCB_BT_Phase2WhiteFadeInStripes bl SetHBlankCallback - ldr r0, _080D3498 @ =sub_80D35F4 + ldr r0, _080D3498 @ =VBCB_BT_Phase2WhiteFadeInStripes1 bl SetVBlankCallback ldrh r0, [r5, 0x8] adds r0, 0x1 @@ -5682,25 +5682,25 @@ _080D3450: pop {r1} bx r1 .align 2, 0 -_080D348C: .4byte gUnknown_2039A2C +_080D348C: .4byte sTransitionStructPtr _080D3490: .4byte gScanlineEffectRegBuffers + 0x780 -_080D3494: .4byte sub_80D36E0 -_080D3498: .4byte sub_80D35F4 - thumb_func_end sub_80D3424 +_080D3494: .4byte HBCB_BT_Phase2WhiteFadeInStripes +_080D3498: .4byte VBCB_BT_Phase2WhiteFadeInStripes1 + thumb_func_end BT_Phase2WhiteFadeInStripes_Init - thumb_func_start sub_80D349C -sub_80D349C: @ 80D349C + thumb_func_start BT_Phase2WhiteFadeInStripes_SetupSprites +BT_Phase2WhiteFadeInStripes_SetupSprites: @ 80D349C push {r4-r6,lr} sub sp, 0xC adds r6, r0, 0 - ldr r1, _080D3504 @ =gUnknown_83FA508 + ldr r1, _080D3504 @ =sWhiteStripeDelay mov r0, sp movs r2, 0xC bl memcpy movs r5, 0 movs r4, 0 _080D34B0: - ldr r0, _080D3508 @ =sub_80D3720 + ldr r0, _080D3508 @ =SpriteCB_BT_Phase2WhiteFadeInStripes bl CreateInvisibleSprite lsls r0, 24 lsrs r0, 24 @@ -5741,16 +5741,16 @@ _080D34B0: pop {r1} bx r1 .align 2, 0 -_080D3504: .4byte gUnknown_83FA508 -_080D3508: .4byte sub_80D3720 +_080D3504: .4byte sWhiteStripeDelay +_080D3508: .4byte SpriteCB_BT_Phase2WhiteFadeInStripes _080D350C: .4byte gSprites - thumb_func_end sub_80D349C + thumb_func_end BT_Phase2WhiteFadeInStripes_SetupSprites - thumb_func_start sub_80D3510 -sub_80D3510: @ 80D3510 + thumb_func_start BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone +BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone: @ 80D3510 push {r4,lr} adds r4, r0, 0 - ldr r2, _080D3544 @ =gUnknown_2039A2C + ldr r2, _080D3544 @ =sTransitionStructPtr ldr r1, [r2] ldrb r0, [r1] movs r0, 0 @@ -5774,15 +5774,15 @@ _080D353A: pop {r1} bx r1 .align 2, 0 -_080D3544: .4byte gUnknown_2039A2C +_080D3544: .4byte sTransitionStructPtr _080D3548: .4byte 0x00007fff - thumb_func_end sub_80D3510 + thumb_func_end BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone - thumb_func_start sub_80D354C -sub_80D354C: @ 80D354C + thumb_func_start BT_Phase2WhiteFadeInStripes_Stop +BT_Phase2WhiteFadeInStripes_Stop: @ 80D354C push {r4-r6,lr} adds r6, r0, 0 - ldr r5, _080D35A0 @ =gUnknown_2039A2C + ldr r5, _080D35A0 @ =sTransitionStructPtr ldr r0, [r5] ldrb r1, [r0] movs r4, 0 @@ -5810,7 +5810,7 @@ sub_80D354C: @ 80D354C movs r0, 0x3F strh r0, [r1, 0x2] strh r4, [r1, 0x20] - ldr r0, _080D35B0 @ =sub_80D3690 + ldr r0, _080D35B0 @ =VBCB_BT_Phase2WhiteFadeInStripes2 bl SetVBlankCallback ldrh r0, [r6, 0x8] adds r0, 0x1 @@ -5820,17 +5820,17 @@ sub_80D354C: @ 80D354C pop {r1} bx r1 .align 2, 0 -_080D35A0: .4byte gUnknown_2039A2C +_080D35A0: .4byte sTransitionStructPtr _080D35A4: .4byte 0x040000b0 _080D35A8: .4byte 0x0000c5ff _080D35AC: .4byte 0x00007fff -_080D35B0: .4byte sub_80D3690 - thumb_func_end sub_80D354C +_080D35B0: .4byte VBCB_BT_Phase2WhiteFadeInStripes2 + thumb_func_end BT_Phase2WhiteFadeInStripes_Stop - thumb_func_start sub_80D35B4 -sub_80D35B4: @ 80D35B4 + thumb_func_start BT_Phase2WhiteFadeInStripes_IsDone +BT_Phase2WhiteFadeInStripes_IsDone: @ 80D35B4 push {lr} - ldr r0, _080D35EC @ =gUnknown_2039A2C + ldr r0, _080D35EC @ =sTransitionStructPtr ldr r1, [r0] movs r2, 0xF0 lsls r2, 1 @@ -5845,8 +5845,8 @@ sub_80D35B4: @ 80D35B4 lsrs r0, 16 cmp r0, 0x10 bls _080D35E6 - bl sub_80D3E60 - ldr r0, _080D35F0 @ =sub_80D33EC + bl BT_BlendPalettesToBlack + ldr r0, _080D35F0 @ =BT_Phase2WhiteFadeInStripes bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -5856,12 +5856,12 @@ _080D35E6: pop {r1} bx r1 .align 2, 0 -_080D35EC: .4byte gUnknown_2039A2C -_080D35F0: .4byte sub_80D33EC - thumb_func_end sub_80D35B4 +_080D35EC: .4byte sTransitionStructPtr +_080D35F0: .4byte BT_Phase2WhiteFadeInStripes + thumb_func_end BT_Phase2WhiteFadeInStripes_IsDone - thumb_func_start sub_80D35F4 -sub_80D35F4: @ 80D35F4 + thumb_func_start VBCB_BT_Phase2WhiteFadeInStripes1 +VBCB_BT_Phase2WhiteFadeInStripes1: @ 80D35F4 push {r4,r5,lr} ldr r5, _080D3668 @ =0x040000b0 ldrh r1, [r5, 0xA] @@ -5873,8 +5873,8 @@ sub_80D35F4: @ 80D35F4 ands r0, r1 strh r0, [r5, 0xA] ldrh r0, [r5, 0xA] - bl sub_80D3DF4 - ldr r4, _080D3674 @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r4, _080D3674 @ =sTransitionStructPtr ldr r0, [r4] ldrh r1, [r0, 0xE] movs r0, 0x50 @@ -5920,20 +5920,20 @@ _080D3654: _080D3668: .4byte 0x040000b0 _080D366C: .4byte 0x0000c5ff _080D3670: .4byte 0x00007fff -_080D3674: .4byte gUnknown_2039A2C +_080D3674: .4byte sTransitionStructPtr _080D3678: .4byte 0x040000d4 _080D367C: .4byte gScanlineEffectRegBuffers _080D3680: .4byte 0x80000140 _080D3684: .4byte gScanlineEffectRegBuffers + 0x8C0 _080D3688: .4byte 0x04000040 _080D368C: .4byte 0xa2400001 - thumb_func_end sub_80D35F4 + thumb_func_end VBCB_BT_Phase2WhiteFadeInStripes1 - thumb_func_start sub_80D3690 -sub_80D3690: @ 80D3690 + thumb_func_start VBCB_BT_Phase2WhiteFadeInStripes2 +VBCB_BT_Phase2WhiteFadeInStripes2: @ 80D3690 push {r4,lr} - bl sub_80D3DF4 - ldr r4, _080D36DC @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r4, _080D36DC @ =sTransitionStructPtr ldr r0, [r4] ldrh r1, [r0, 0x12] movs r0, 0x54 @@ -5962,11 +5962,11 @@ sub_80D3690: @ 80D3690 pop {r0} bx r0 .align 2, 0 -_080D36DC: .4byte gUnknown_2039A2C - thumb_func_end sub_80D3690 +_080D36DC: .4byte sTransitionStructPtr + thumb_func_end VBCB_BT_Phase2WhiteFadeInStripes2 - thumb_func_start sub_80D36E0 -sub_80D36E0: @ 80D36E0 + thumb_func_start HBCB_BT_Phase2WhiteFadeInStripes +HBCB_BT_Phase2WhiteFadeInStripes: @ 80D36E0 push {lr} sub sp, 0x4 mov r1, sp @@ -5998,10 +5998,10 @@ _080D36F8: _080D3714: .4byte 0x04000006 _080D3718: .4byte 0x04000054 _080D371C: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_80D36E0 + thumb_func_end HBCB_BT_Phase2WhiteFadeInStripes - thumb_func_start sub_80D3720 -sub_80D3720: @ 80D3720 + thumb_func_start SpriteCB_BT_Phase2WhiteFadeInStripes +SpriteCB_BT_Phase2WhiteFadeInStripes: @ 80D3720 push {r4-r7,lr} adds r3, r0, 0 ldrh r1, [r3, 0x38] @@ -6015,14 +6015,14 @@ sub_80D3720: @ 80D3720 ldrsh r0, [r3, r1] cmp r0, 0 beq _080D380A - ldr r0, _080D3748 @ =gUnknown_2039A2C + ldr r0, _080D3748 @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] movs r0, 0x1 strb r0, [r1] b _080D380A .align 2, 0 -_080D3748: .4byte gUnknown_2039A2C +_080D3748: .4byte sTransitionStructPtr _080D374C: movs r2, 0x22 ldrsh r0, [r3, r2] @@ -6099,7 +6099,7 @@ _080D37CE: ldrsh r0, [r3, r2] cmp r0, 0 beq _080D37E0 - ldr r0, _080D3814 @ =gUnknown_2039A2C + ldr r0, _080D3814 @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] movs r0, 0x1 @@ -6111,7 +6111,7 @@ _080D37E0: beq _080D380A movs r2, 0x3A ldrsh r0, [r3, r2] - ldr r1, _080D3814 @ =gUnknown_2039A2C + ldr r1, _080D3814 @ =sTransitionStructPtr cmp r0, 0 beq _080D37FC ldr r0, [r1] @@ -6132,15 +6132,15 @@ _080D380A: bx r0 .align 2, 0 _080D3810: .4byte gScanlineEffectRegBuffers -_080D3814: .4byte gUnknown_2039A2C - thumb_func_end sub_80D3720 +_080D3814: .4byte sTransitionStructPtr + thumb_func_end SpriteCB_BT_Phase2WhiteFadeInStripes - thumb_func_start sub_80D3818 -sub_80D3818: @ 80D3818 + thumb_func_start BT_Phase2GridSquares +BT_Phase2GridSquares: @ 80D3818 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D3848 @ =gUnknown_83FA514 + ldr r5, _080D3848 @ =sBT_Phase2GridSquaresFuncs ldr r2, _080D384C @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -6161,19 +6161,19 @@ _080D382A: pop {r0} bx r0 .align 2, 0 -_080D3848: .4byte gUnknown_83FA514 +_080D3848: .4byte sBT_Phase2GridSquaresFuncs _080D384C: .4byte gTasks - thumb_func_end sub_80D3818 + thumb_func_end BT_Phase2GridSquares - thumb_func_start Phase2_Transition_GridSquares_Func1 -Phase2_Transition_GridSquares_Func1: @ 80D3850 + thumb_func_start BT_Phase2GridSquares_LoadGfx +BT_Phase2GridSquares_LoadGfx: @ 80D3850 push {r4,lr} sub sp, 0xC adds r4, r0, 0 add r0, sp, 0x4 add r1, sp, 0x8 - bl sub_80D3E28 - ldr r0, _080D3898 @ =gUnknown_83FA140 + bl BT_GetBg0TilemapAndTilesetBase + ldr r0, _080D3898 @ =sGridSquareTilemap ldr r1, [sp, 0x8] movs r2, 0x10 bl CpuSet @@ -6186,7 +6186,7 @@ Phase2_Transition_GridSquares_Func1: @ 80D3850 ldr r2, _080D389C @ =0x01000400 mov r0, sp bl CpuSet - ldr r0, _080D38A0 @ =gUnknown_83FA638 + ldr r0, _080D38A0 @ =sSlidingPokeballBigPokeballPalette movs r1, 0xF0 movs r2, 0x20 bl LoadPalette @@ -6199,13 +6199,13 @@ Phase2_Transition_GridSquares_Func1: @ 80D3850 pop {r1} bx r1 .align 2, 0 -_080D3898: .4byte gUnknown_83FA140 +_080D3898: .4byte sGridSquareTilemap _080D389C: .4byte 0x01000400 -_080D38A0: .4byte gUnknown_83FA638 - thumb_func_end Phase2_Transition_GridSquares_Func1 +_080D38A0: .4byte sSlidingPokeballBigPokeballPalette + thumb_func_end BT_Phase2GridSquares_LoadGfx - thumb_func_start Phase2_Transition_GridSquares_Func2 -Phase2_Transition_GridSquares_Func2: @ 80D38A4 + thumb_func_start BT_Phase2GridSquares_UpdateTileset +BT_Phase2GridSquares_UpdateTileset: @ 80D38A4 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 @@ -6214,7 +6214,7 @@ Phase2_Transition_GridSquares_Func2: @ 80D38A4 cmp r0, 0 bne _080D38E6 mov r0, sp - bl sub_80D3E08 + bl BT_GetBg0TilesetBase movs r0, 0x3 strh r0, [r4, 0xA] ldrh r0, [r4, 0xC] @@ -6223,7 +6223,7 @@ Phase2_Transition_GridSquares_Func2: @ 80D38A4 movs r1, 0xC ldrsh r0, [r4, r1] lsls r0, 5 - ldr r1, _080D38F8 @ =gUnknown_83FA140 + ldr r1, _080D38F8 @ =sGridSquareTilemap adds r0, r1 ldr r1, [sp] movs r2, 0x10 @@ -6247,11 +6247,11 @@ _080D38E6: pop {r1} bx r1 .align 2, 0 -_080D38F8: .4byte gUnknown_83FA140 - thumb_func_end Phase2_Transition_GridSquares_Func2 +_080D38F8: .4byte sGridSquareTilemap + thumb_func_end BT_Phase2GridSquares_UpdateTileset - thumb_func_start Phase2_Transition_GridSquares_Func3 -Phase2_Transition_GridSquares_Func3: @ 80D38FC + thumb_func_start BT_Phase2GridSquares_IsDone +BT_Phase2GridSquares_IsDone: @ 80D38FC push {lr} ldrh r1, [r0, 0xA] subs r1, 0x1 @@ -6259,8 +6259,8 @@ Phase2_Transition_GridSquares_Func3: @ 80D38FC lsls r1, 16 cmp r1, 0 bne _080D391C - bl sub_80D3E60 - ldr r0, _080D3924 @ =sub_80D3818 + bl BT_BlendPalettesToBlack + ldr r0, _080D3924 @ =BT_Phase2GridSquares bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -6270,15 +6270,15 @@ _080D391C: pop {r1} bx r1 .align 2, 0 -_080D3924: .4byte sub_80D3818 - thumb_func_end Phase2_Transition_GridSquares_Func3 +_080D3924: .4byte BT_Phase2GridSquares + thumb_func_end BT_Phase2GridSquares_IsDone - thumb_func_start sub_80D3928 -sub_80D3928: @ 80D3928 + thumb_func_start BT_Phase2BlackDoodles +BT_Phase2BlackDoodles: @ 80D3928 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D3958 @ =gUnknown_83FA520 + ldr r5, _080D3958 @ =sBT_Phase2BlackDoodlesFuncs ldr r2, _080D395C @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -6299,17 +6299,17 @@ _080D393A: pop {r0} bx r0 .align 2, 0 -_080D3958: .4byte gUnknown_83FA520 +_080D3958: .4byte sBT_Phase2BlackDoodlesFuncs _080D395C: .4byte gTasks - thumb_func_end sub_80D3928 + thumb_func_end BT_Phase2BlackDoodles - thumb_func_start sub_80D3960 -sub_80D3960: @ 80D3960 + thumb_func_start BT_Phase2BlackDoodles_Init +BT_Phase2BlackDoodles_Init: @ 80D3960 push {r4,r5,lr} adds r5, r0, 0 - bl sub_80D3DD0 + bl BT_InitCtrlBlk bl ScanlineEffect_Clear - ldr r0, _080D39B8 @ =gUnknown_2039A2C + ldr r0, _080D39B8 @ =sTransitionStructPtr ldr r1, [r0] movs r2, 0 movs r0, 0x3F @@ -6336,7 +6336,7 @@ _080D3984: adds r0, r4, 0 movs r2, 0xA0 bl CpuSet - ldr r0, _080D39C0 @ =sub_80D3BA4 + ldr r0, _080D39C0 @ =VBCB_BT_Phase2BlackDoodles bl SetVBlankCallback ldrh r0, [r5, 0x8] adds r0, 0x1 @@ -6346,22 +6346,22 @@ _080D3984: pop {r1} bx r1 .align 2, 0 -_080D39B8: .4byte gUnknown_2039A2C +_080D39B8: .4byte sTransitionStructPtr _080D39BC: .4byte gScanlineEffectRegBuffers -_080D39C0: .4byte sub_80D3BA4 - thumb_func_end sub_80D3960 +_080D39C0: .4byte VBCB_BT_Phase2BlackDoodles + thumb_func_end BT_Phase2BlackDoodles_Init - thumb_func_start sub_80D39C4 -sub_80D39C4: @ 80D39C4 + thumb_func_start BT_Phase2BlackDoodles_InitSingleBrush +BT_Phase2BlackDoodles_InitSingleBrush: @ 80D39C4 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0xC mov r8, r0 - ldr r0, _080D3A38 @ =gUnknown_2039A2C + ldr r0, _080D3A38 @ =sTransitionStructPtr ldr r0, [r0] adds r0, 0x24 - ldr r6, _080D3A3C @ =gUnknown_83FA534 + ldr r6, _080D3A3C @ =sBlackDoodlesSegments mov r2, r8 movs r3, 0xA ldrsh r1, [r2, r3] @@ -6387,7 +6387,7 @@ sub_80D39C4: @ 80D39C4 movs r4, 0x1 str r4, [sp, 0x4] str r4, [sp, 0x8] - bl sub_80D4088 + bl BT_DiagonalSegment_InitParams mov r0, r8 movs r2, 0xA ldrsh r1, [r0, r2] @@ -6410,18 +6410,18 @@ sub_80D39C4: @ 80D39C4 pop {r1} bx r1 .align 2, 0 -_080D3A38: .4byte gUnknown_2039A2C -_080D3A3C: .4byte gUnknown_83FA534 - thumb_func_end sub_80D39C4 +_080D3A38: .4byte sTransitionStructPtr +_080D3A3C: .4byte sBlackDoodlesSegments + thumb_func_end BT_Phase2BlackDoodles_InitSingleBrush - thumb_func_start sub_80D3A40 -sub_80D3A40: @ 80D3A40 + thumb_func_start BT_Phase2BlackDoodles_DrawSingleBrush +BT_Phase2BlackDoodles_DrawSingleBrush: @ 80D3A40 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r6, r0, 0 - ldr r0, _080D3A90 @ =gUnknown_2039A2C + ldr r0, _080D3A90 @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] movs r0, 0 @@ -6432,7 +6432,7 @@ sub_80D3A40: @ 80D3A40 mov r9, r0 _080D3A5C: ldr r1, _080D3A94 @ =gScanlineEffectRegBuffers - ldr r0, _080D3A90 @ =gUnknown_2039A2C + ldr r0, _080D3A90 @ =sTransitionStructPtr ldr r2, [r0] movs r3, 0x2A ldrsh r0, [r2, r3] @@ -6459,7 +6459,7 @@ _080D3A84: lsrs r3, r1, 16 b _080D3AB0 .align 2, 0 -_080D3A90: .4byte gUnknown_2039A2C +_080D3A90: .4byte sTransitionStructPtr _080D3A94: .4byte gScanlineEffectRegBuffers _080D3A98: lsls r0, r5, 16 @@ -6476,7 +6476,7 @@ _080D3AA6: bgt _080D3AB0 lsrs r5, r1, 16 _080D3AB0: - ldr r0, _080D3AD4 @ =gUnknown_2039A2C + ldr r0, _080D3AD4 @ =sTransitionStructPtr ldr r4, [r0] movs r0, 0x2A ldrsh r2, [r4, r0] @@ -6495,13 +6495,13 @@ _080D3AB0: strh r0, [r6, 0x8] b _080D3AFC .align 2, 0 -_080D3AD4: .4byte gUnknown_2039A2C +_080D3AD4: .4byte sTransitionStructPtr _080D3AD8: adds r0, r4, 0 adds r0, 0x24 movs r1, 0x1 movs r2, 0x1 - bl sub_80D4104 + bl BT_DiagonalSegment_ComputePointOnSegment lsls r0, 24 lsrs r7, r0, 24 mov r1, r8 @@ -6515,7 +6515,7 @@ _080D3AD8: cmp r0, 0xF ble _080D3A5C _080D3AFC: - ldr r0, _080D3B18 @ =gUnknown_2039A2C + ldr r0, _080D3B18 @ =sTransitionStructPtr ldr r1, [r0] ldrb r0, [r1] adds r0, 0x1 @@ -6529,11 +6529,11 @@ _080D3AFC: pop {r1} bx r1 .align 2, 0 -_080D3B18: .4byte gUnknown_2039A2C - thumb_func_end sub_80D3A40 +_080D3B18: .4byte sTransitionStructPtr + thumb_func_end BT_Phase2BlackDoodles_DrawSingleBrush - thumb_func_start sub_80D3B1C -sub_80D3B1C: @ 80D3B1C + thumb_func_start BT_Phase2BlackDoodles_IsDone +BT_Phase2BlackDoodles_IsDone: @ 80D3B1C push {lr} adds r2, r0, 0 ldrh r0, [r2, 0xA] @@ -6553,8 +6553,8 @@ sub_80D3B1C: @ 80D3B1C ands r0, r2 strh r0, [r1, 0xA] ldrh r0, [r1, 0xA] - bl sub_80D3E60 - ldr r0, _080D3B64 @ =sub_80D3928 + bl BT_BlendPalettesToBlack + ldr r0, _080D3B64 @ =BT_Phase2BlackDoodles bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -6565,12 +6565,12 @@ sub_80D3B1C: @ 80D3B1C _080D3B58: .4byte 0x040000b0 _080D3B5C: .4byte 0x0000c5ff _080D3B60: .4byte 0x00007fff -_080D3B64: .4byte sub_80D3928 +_080D3B64: .4byte BT_Phase2BlackDoodles _080D3B68: ldrh r0, [r2, 0x8] adds r0, 0x1 strh r0, [r2, 0x8] - ldr r1, _080D3B84 @ =gUnknown_83FA57A + ldr r1, _080D3B84 @ =sBlackDoodlesDelay movs r3, 0xA ldrsh r0, [r2, r3] subs r0, 0x1 @@ -6583,11 +6583,11 @@ _080D3B80: pop {r1} bx r1 .align 2, 0 -_080D3B84: .4byte gUnknown_83FA57A - thumb_func_end sub_80D3B1C +_080D3B84: .4byte sBlackDoodlesDelay + thumb_func_end BT_Phase2BlackDoodles_IsDone - thumb_func_start sub_80D3B88 -sub_80D3B88: @ 80D3B88 + thumb_func_start BT_Phase2BlackDoodles_NextBrush +BT_Phase2BlackDoodles_NextBrush: @ 80D3B88 push {lr} adds r1, r0, 0 ldrh r0, [r1, 0xE] @@ -6604,10 +6604,10 @@ _080D3B9C: _080D3BA0: pop {r1} bx r1 - thumb_func_end sub_80D3B88 + thumb_func_end BT_Phase2BlackDoodles_NextBrush - thumb_func_start sub_80D3BA4 -sub_80D3BA4: @ 80D3BA4 + thumb_func_start VBCB_BT_Phase2BlackDoodles +VBCB_BT_Phase2BlackDoodles: @ 80D3BA4 push {r4,r5,lr} ldr r5, _080D3C1C @ =0x040000b0 ldrh r1, [r5, 0xA] @@ -6619,8 +6619,8 @@ sub_80D3BA4: @ 80D3BA4 ands r0, r1 strh r0, [r5, 0xA] ldrh r0, [r5, 0xA] - bl sub_80D3DF4 - ldr r4, _080D3C28 @ =gUnknown_2039A2C + bl BT_VBSyncOamAndPltt + ldr r4, _080D3C28 @ =sTransitionStructPtr ldr r0, [r4] ldrb r0, [r0] cmp r0, 0 @@ -6668,16 +6668,16 @@ _080D3BDC: _080D3C1C: .4byte 0x040000b0 _080D3C20: .4byte 0x0000c5ff _080D3C24: .4byte 0x00007fff -_080D3C28: .4byte gUnknown_2039A2C +_080D3C28: .4byte sTransitionStructPtr _080D3C2C: .4byte 0x040000d4 _080D3C30: .4byte gScanlineEffectRegBuffers _080D3C34: .4byte 0x800000a0 _080D3C38: .4byte 0x04000040 _080D3C3C: .4byte 0xa2400001 - thumb_func_end sub_80D3BA4 + thumb_func_end VBCB_BT_Phase2BlackDoodles - thumb_func_start CreatePhase1Task -CreatePhase1Task: @ 80D3C40 + thumb_func_start BT_CreatePhase1SubTask +BT_CreatePhase1SubTask: @ 80D3C40 push {r4-r6,lr} mov r6, r8 push {r6} @@ -6698,7 +6698,7 @@ CreatePhase1Task: @ 80D3C40 lsrs r6, 16 lsls r3, 16 lsrs r3, 16 - ldr r0, _080D3C9C @ =sub_80D3CC4 + ldr r0, _080D3C9C @ =BT_Phase1SubTask movs r1, 0x3 str r3, [sp] bl CreateTask @@ -6724,14 +6724,14 @@ CreatePhase1Task: @ 80D3C40 pop {r0} bx r0 .align 2, 0 -_080D3C9C: .4byte sub_80D3CC4 +_080D3C9C: .4byte BT_Phase1SubTask _080D3CA0: .4byte gTasks - thumb_func_end CreatePhase1Task + thumb_func_end BT_CreatePhase1SubTask - thumb_func_start sub_80D3CA4 -sub_80D3CA4: @ 80D3CA4 + thumb_func_start BT_IsPhase1Done +BT_IsPhase1Done: @ 80D3CA4 push {lr} - ldr r0, _080D3CB8 @ =sub_80D3CC4 + ldr r0, _080D3CB8 @ =BT_Phase1SubTask bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -6740,20 +6740,20 @@ sub_80D3CA4: @ 80D3CA4 movs r0, 0 b _080D3CBE .align 2, 0 -_080D3CB8: .4byte sub_80D3CC4 +_080D3CB8: .4byte BT_Phase1SubTask _080D3CBC: movs r0, 0x1 _080D3CBE: pop {r1} bx r1 - thumb_func_end sub_80D3CA4 + thumb_func_end BT_IsPhase1Done - thumb_func_start sub_80D3CC4 -sub_80D3CC4: @ 80D3CC4 + thumb_func_start BT_Phase1SubTask +BT_Phase1SubTask: @ 80D3CC4 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 - ldr r5, _080D3CF4 @ =gUnknown_83FA588 + ldr r5, _080D3CF4 @ =sBT_Phase1FadeFuncs ldr r2, _080D3CF8 @ =gTasks lsls r1, r0, 2 adds r1, r0 @@ -6774,12 +6774,12 @@ _080D3CD6: pop {r0} bx r0 .align 2, 0 -_080D3CF4: .4byte gUnknown_83FA588 +_080D3CF4: .4byte sBT_Phase1FadeFuncs _080D3CF8: .4byte gTasks - thumb_func_end sub_80D3CC4 + thumb_func_end BT_Phase1SubTask - thumb_func_start Phase1_TransitionAll_Func1 -Phase1_TransitionAll_Func1: @ 80D3CFC + thumb_func_start BT_Phase1_FadeOut +BT_Phase1_FadeOut: @ 80D3CFC push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x14] @@ -6828,10 +6828,10 @@ _080D3D4A: bx r1 .align 2, 0 _080D3D54: .4byte 0x00002d6b - thumb_func_end Phase1_TransitionAll_Func1 + thumb_func_end BT_Phase1_FadeOut - thumb_func_start Phase1_TransitionAll_Func2 -Phase1_TransitionAll_Func2: @ 80D3D58 + thumb_func_start BT_Phase1_FadeIn +BT_Phase1_FadeIn: @ 80D3D58 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x14] @@ -6873,7 +6873,7 @@ _080D3D92: lsls r0, 16 cmp r0, 0 bne _080D3DC0 - ldr r0, _080D3DBC @ =sub_80D3CC4 + ldr r0, _080D3DBC @ =BT_Phase1SubTask bl FindTaskIdByFunc lsls r0, 24 lsrs r0, 24 @@ -6881,7 +6881,7 @@ _080D3D92: b _080D3DC6 .align 2, 0 _080D3DB8: .4byte 0x00002d6b -_080D3DBC: .4byte sub_80D3CC4 +_080D3DBC: .4byte BT_Phase1SubTask _080D3DC0: ldrh r0, [r4, 0xA] strh r0, [r4, 0x14] @@ -6891,12 +6891,12 @@ _080D3DC6: pop {r4} pop {r1} bx r1 - thumb_func_end Phase1_TransitionAll_Func2 + thumb_func_end BT_Phase1_FadeIn - thumb_func_start sub_80D3DD0 -sub_80D3DD0: @ 80D3DD0 + thumb_func_start BT_InitCtrlBlk +BT_InitCtrlBlk: @ 80D3DD0 push {r4,lr} - ldr r4, _080D3DF0 @ =gUnknown_2039A2C + ldr r4, _080D3DF0 @ =sTransitionStructPtr ldr r0, [r4] movs r1, 0 movs r2, 0x3C @@ -6910,21 +6910,21 @@ sub_80D3DD0: @ 80D3DD0 pop {r0} bx r0 .align 2, 0 -_080D3DF0: .4byte gUnknown_2039A2C - thumb_func_end sub_80D3DD0 +_080D3DF0: .4byte sTransitionStructPtr + thumb_func_end BT_InitCtrlBlk - thumb_func_start sub_80D3DF4 -sub_80D3DF4: @ 80D3DF4 + thumb_func_start BT_VBSyncOamAndPltt +BT_VBSyncOamAndPltt: @ 80D3DF4 push {lr} bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer pop {r0} bx r0 - thumb_func_end sub_80D3DF4 + thumb_func_end BT_VBSyncOamAndPltt - thumb_func_start sub_80D3E08 -sub_80D3E08: @ 80D3E08 + thumb_func_start BT_GetBg0TilesetBase +BT_GetBg0TilesetBase: @ 80D3E08 push {r4,lr} adds r4, r0, 0 movs r0, 0x8 @@ -6940,10 +6940,10 @@ sub_80D3E08: @ 80D3E08 pop {r4} pop {r0} bx r0 - thumb_func_end sub_80D3E08 + thumb_func_end BT_GetBg0TilesetBase - thumb_func_start sub_80D3E28 -sub_80D3E28: @ 80D3E28 + thumb_func_start BT_GetBg0TilemapAndTilesetBase +BT_GetBg0TilemapAndTilesetBase: @ 80D3E28 push {r4-r6,lr} adds r5, r0, 0 adds r6, r1, 0 @@ -6970,10 +6970,10 @@ sub_80D3E28: @ 80D3E28 pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_80D3E28 + thumb_func_end BT_GetBg0TilemapAndTilesetBase - thumb_func_start sub_80D3E60 -sub_80D3E60: @ 80D3E60 + thumb_func_start BT_BlendPalettesToBlack +BT_BlendPalettesToBlack: @ 80D3E60 push {lr} movs r0, 0x1 negs r0, r0 @@ -6982,10 +6982,10 @@ sub_80D3E60: @ 80D3E60 bl BlendPalettes pop {r0} bx r0 - thumb_func_end sub_80D3E60 + thumb_func_end BT_BlendPalettesToBlack - thumb_func_start sub_80D3E74 -sub_80D3E74: @ 80D3E74 + thumb_func_start BT_LoadWaveIntoBuffer +BT_LoadWaveIntoBuffer: @ 80D3E74 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -7048,10 +7048,10 @@ _080D3EDC: bx r0 .align 2, 0 _080D3EEC: .4byte 0xffff0000 - thumb_func_end sub_80D3E74 + thumb_func_end BT_LoadWaveIntoBuffer - thumb_func_start sub_80D3EF0 -sub_80D3EF0: @ 80D3EF0 + thumb_func_start BT_GenerateCircle +BT_GenerateCircle: @ 80D3EF0 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -7267,10 +7267,10 @@ _080D4072: bx r0 .align 2, 0 _080D4084: .4byte 0xffff0000 - thumb_func_end sub_80D3EF0 + thumb_func_end BT_GenerateCircle - thumb_func_start sub_80D4088 -sub_80D4088: @ 80D4088 + thumb_func_start BT_DiagonalSegment_InitParams +BT_DiagonalSegment_InitParams: @ 80D4088 push {r4-r7,lr} adds r6, r0, 0 ldr r0, [sp, 0x14] @@ -7334,10 +7334,10 @@ _080D40F8: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_80D4088 + thumb_func_end BT_DiagonalSegment_InitParams - thumb_func_start sub_80D4104 -sub_80D4104: @ 80D4104 + thumb_func_start BT_DiagonalSegment_ComputePointOnSegment +BT_DiagonalSegment_ComputePointOnSegment: @ 80D4104 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -7475,6 +7475,6 @@ _080D41F2: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_80D4104 + thumb_func_end BT_DiagonalSegment_ComputePointOnSegment .align 2, 0 @ Don't pad with nop. diff --git a/asm/overworld.s b/asm/overworld.s index 39fbe770a..56c253477 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -3398,13 +3398,13 @@ sub_8056578: @ 8056578 bx r0 thumb_func_end sub_8056578 - thumb_func_start sub_80565A8 -sub_80565A8: @ 80565A8 + thumb_func_start CB2_OverworldBasic +CB2_OverworldBasic: @ 80565A8 push {lr} bl sub_8056578 pop {r0} bx r0 - thumb_func_end sub_80565A8 + thumb_func_end CB2_OverworldBasic thumb_func_start sub_80565B4 sub_80565B4: @ 80565B4 diff --git a/data/data_83F5738.s b/data/data_83F5738.s index a466ffd45..12fa41711 100644 --- a/data/data_83F5738.s +++ b/data/data_83F5738.s @@ -133,40 +133,40 @@ gUnknown_83F846D:: @ 83F846D gUnknown_83F847D:: @ 83F847D .incbin "baserom.gba", 0x3F847D, 0x323 -gUnknown_83F87A0:: @ 83F87A0 +sBigPokeballTileset:: @ 83F87A0 .incbin "baserom.gba", 0x3F87A0, 0x580 -gUnknown_83F8D20:: @ 83F8D20 +sSlidingPokeballTilemap:: @ 83F8D20 .incbin "baserom.gba", 0x3F8D20, 0x240 -gUnknown_83F8F60:: @ 83F8F60 +sVsBarTileset:: @ 83F8F60 .incbin "baserom.gba", 0x3F8F60, 0x11E0 -gUnknown_83FA140:: @ 83FA140 +sGridSquareTilemap:: @ 83FA140 .incbin "baserom.gba", 0x3FA140, 0x1E0 -gUnknown_83FA320:: @ 83FA320 +sBT_Phase1Tasks:: @ 83FA320 .incbin "baserom.gba", 0x3FA320, 0x48 -gUnknown_83FA368:: @ 83FA368 +sBT_Phase2Tasks:: @ 83FA368 .incbin "baserom.gba", 0x3FA368, 0x48 -gUnknown_83FA3B0:: @ 83FA3B0 +sBT_MainPhases:: @ 83FA3B0 .incbin "baserom.gba", 0x3FA3B0, 0x10 -gUnknown_83FA3C0:: @ 83FA3C0 +sBT_Phase2BlurFuncs:: @ 83FA3C0 .incbin "baserom.gba", 0x3FA3C0, 0xC -gUnknown_83FA3CC:: @ 83FA3CC +sBT_Phase2DistortedWaveFuncs:: @ 83FA3CC .incbin "baserom.gba", 0x3FA3CC, 0x8 -gUnknown_83FA3D4:: @ 83FA3D4 +sBT_Phase2HorizontalCorrugateFuncs:: @ 83FA3D4 .incbin "baserom.gba", 0x3FA3D4, 0x8 -gUnknown_83FA3DC:: @ 83FA3DC +sBT_Phase2BigPokeballFuncs:: @ 83FA3DC .incbin "baserom.gba", 0x3FA3DC, 0x18 -gUnknown_83FA3F4:: @ 83FA3F4 +sBT_Phase2SlidingPokeballsFuncs:: @ 83FA3F4 .incbin "baserom.gba", 0x3FA3F4, 0xC gUnknown_83FA400:: @ 83FA400 @@ -178,82 +178,82 @@ gUnknown_83FA404:: @ 83FA404 gUnknown_83FA40E:: @ 83FA40E .incbin "baserom.gba", 0x3FA40E, 0x6 -gUnknown_83FA414:: @ 83FA414 +sBT_Phase2ClockwiseBlackFadeFuncs:: @ 83FA414 .incbin "baserom.gba", 0x3FA414, 0x1C -gUnknown_83FA430:: @ 83FA430 +sBT_Phase2FullScreenWaveFuncs:: @ 83FA430 .incbin "baserom.gba", 0x3FA430, 0x8 -gUnknown_83FA438:: @ 83FA438 +sBT_Phase2BlackWaveToRightFuncs:: @ 83FA438 .incbin "baserom.gba", 0x3FA438, 0xC gUnknown_83FA444:: @ 83FA444 .incbin "baserom.gba", 0x3FA444, 0x20 -gUnknown_83FA464:: @ 83FA464 +sBT_Phase2AntiClockwiseSpiralFuncs:: @ 83FA464 .incbin "baserom.gba", 0x3FA464, 0x8 -gUnknown_83FA46C:: @ 83FA46C +sBT_Phase2MugshotFuncs:: @ 83FA46C .incbin "baserom.gba", 0x3FA46C, 0x28 -gUnknown_83FA494:: @ 83FA494 +sMugshotsTrainerPicIDsTable:: @ 83FA494 .incbin "baserom.gba", 0x3FA494, 0x6 -gUnknown_83FA49A:: @ 83FA49A +sMugshotsOpponentRotationScales:: @ 83FA49A .incbin "baserom.gba", 0x3FA49A, 0x14 -gUnknown_83FA4AE:: @ 83FA4AE +sMugshotsOpponentCoords:: @ 83FA4AE .incbin "baserom.gba", 0x3FA4AE, 0x16 -gUnknown_83FA4C4:: @ 83FA4C4 +sBT_Phase2MugshotSpriteFuncs:: @ 83FA4C4 .incbin "baserom.gba", 0x3FA4C4, 0x1C -gUnknown_83FA4E0:: @ 83FA4E0 +sMugShotSlideVelocity:: @ 83FA4E0 .incbin "baserom.gba", 0x3FA4E0, 0x4 -gUnknown_83FA4E4:: @ 83FA4E4 +sMugShotSlideDeceleration:: @ 83FA4E4 .incbin "baserom.gba", 0x3FA4E4, 0x4 -gUnknown_83FA4E8:: @ 83FA4E8 +sBT_Phase2SlicedScreenFuncs:: @ 83FA4E8 .incbin "baserom.gba", 0x3FA4E8, 0xC -gUnknown_83FA4F4:: @ 83FA4F4 +sBT_Phase2WhiteFadeInStripesFuncs:: @ 83FA4F4 .incbin "baserom.gba", 0x3FA4F4, 0x14 -gUnknown_83FA508:: @ 83FA508 +sWhiteStripeDelay:: @ 83FA508 .incbin "baserom.gba", 0x3FA508, 0xC -gUnknown_83FA514:: @ 83FA514 +sBT_Phase2GridSquaresFuncs:: @ 83FA514 .incbin "baserom.gba", 0x3FA514, 0xC -gUnknown_83FA520:: @ 83FA520 +sBT_Phase2BlackDoodlesFuncs:: @ 83FA520 .incbin "baserom.gba", 0x3FA520, 0x14 -gUnknown_83FA534:: @ 83FA534 +sBlackDoodlesSegments:: @ 83FA534 .incbin "baserom.gba", 0x3FA534, 0x46 -gUnknown_83FA57A:: @ 83FA57A +sBlackDoodlesDelay:: @ 83FA57A .incbin "baserom.gba", 0x3FA57A, 0xE -gUnknown_83FA588:: @ 83FA588 +sBT_Phase1FadeFuncs:: @ 83FA588 .incbin "baserom.gba", 0x3FA588, 0x44 -gUnknown_83FA5CC:: @ 83FA5CC +sSpriteTemplate_SlidingPokeball:: @ 83FA5CC .incbin "baserom.gba", 0x3FA5CC, 0x6C -gUnknown_83FA638:: @ 83FA638 +sSlidingPokeballBigPokeballPalette:: @ 83FA638 .incbin "baserom.gba", 0x3FA638, 0x108 -gUnknown_83FA740:: @ 83FA740 +sVsBarOpponentPalettes:: @ 83FA740 .incbin "baserom.gba", 0x3FA740, 0x14 -gUnknown_83FA754:: @ 83FA754 +sVsBarPlayerPalettes:: @ 83FA754 .incbin "baserom.gba", 0x3FA754, 0x30 -gUnknown_83FA784:: @ 83FA784 +sBigPokeballTilemap:: @ 83FA784 .incbin "baserom.gba", 0x3FA784, 0x4B0 -gUnknown_83FAC34:: @ 83FAC34 +sVsBarTilemap:: @ 83FAC34 .incbin "baserom.gba", 0x3FAC34, 0x500 gUnknown_83FB134:: @ 83FB134 diff --git a/include/battle_transition.h b/include/battle_transition.h index 91e564790..8f29d40b3 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -4,7 +4,7 @@ #include "global.h" void sub_8149DFC(u8 a0); -bool8 sub_80D08F8(void); -void sub_80D08B8(u8 a0); +bool8 BT_IsDone(void); +void BT_StartOnField(u8 a0); #endif // GUARD_BATTLE_TRANSITION_H diff --git a/src/teachy_tv.c b/src/teachy_tv.c index 0b0e7b932..3594c79a2 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -1208,11 +1208,11 @@ static void TeachyTvPreBattleAnimAndSetBattleCallback(u8 taskId) switch (data[7]) { case 0: - sub_80D08B8(data[6]); + BT_StartOnField(data[6]); ++data[7]; break; case 1: - if (sub_80D08F8()) + if (BT_IsDone()) { SetMainCallback2(sub_800FD9C); DestroyTask(taskId); diff --git a/src/trainer_tower.c b/src/trainer_tower.c index f1ae2d4e5..d80be781d 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -1111,7 +1111,7 @@ void sub_815E114(void) void sub_815E124(u8 taskId) { - if (sub_80D08F8() == TRUE) + if (BT_IsDone() == TRUE) { gMain.savedCallback = sub_815E114; CleanupOverworldWindowsAndTilemaps(); @@ -1129,7 +1129,7 @@ void sub_815E160(void) sub_815E9FC(); CreateTask(sub_815E124, 1); PlayMapChosenOrBattleBGM(0); - sub_80D08B8(sub_8080060()); + BT_StartOnField(sub_8080060()); } void sub_815E1C0(void) diff --git a/sym_ewram.txt b/sym_ewram.txt index a1739776e..e97441132 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1057,7 +1057,7 @@ gUnknown_2039A24: @ 2039A24 .include "src/coins.o" .align 2 -gUnknown_2039A2C: @ 2039A2C +sTransitionStructPtr: @ 2039A2C .space 0x4 gUnknown_2039A30: @ 2039A30 From a674ba2749871cb1c26c4c17719cc784e329f815 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 23 Jul 2019 09:31:54 +0800 Subject: [PATCH 19/38] updated battle transition header --- include/battle_transition.h | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/include/battle_transition.h b/include/battle_transition.h index 8f29d40b3..4e9d0029c 100644 --- a/include/battle_transition.h +++ b/include/battle_transition.h @@ -3,8 +3,37 @@ #include "global.h" -void sub_8149DFC(u8 a0); bool8 BT_IsDone(void); -void BT_StartOnField(u8 a0); +void BT_StartOnField(u8 transitionId); +bool8 FldEff_Pokeball(void); + +enum +{ + MUGSHOT_LORELEI, + MUGSHOT_BRUNO, + MUGSHOT_AGATHA, + MUGSHOT_LANCE, + MUGSHOT_BLUE, + MUGSHOTS_COUNT +}; + +#define B_TRANSITION_BLUR 0 +#define B_TRANSITION_DISTORTED_WAVE 1 +#define B_TRANSITION_HORIZONTAL_CORRUGATE 2 +#define B_TRANSITION_BIG_POKEBALL 3 +#define B_TRANSITION_SLIDING_POKEBALLS 4 +#define B_TRANSITION_CLOCKWISE_BLACKFADE 5 +#define B_TRANSITION_FULLSCREEN_WAVE 6 +#define B_TRANSITION_BLACK_WAVE_TO_RIGHT 7 +#define B_TRANSITION_SLICED_SCREEN 8 +#define B_TRANSITION_WHITEFADE_IN_STRIPES 9 +#define B_TRANSITION_GRID_SQUARES 10 +#define B_TRANSITION_BLACK_DOODLES 11 +#define B_TRANSITION_LORELEI 12 +#define B_TRANSITION_BRUNO 13 +#define B_TRANSITION_AGATHA 14 +#define B_TRANSITION_LANCE 15 +#define B_TRANSITION_BLUE 16 +#define B_TRANSITION_ANTI_CLOCKWISE_SPIRAL 17 #endif // GUARD_BATTLE_TRANSITION_H From e150a620450a17bb2ab3905c04c33777dc6bf0cc Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 23 Jul 2019 14:07:10 +0800 Subject: [PATCH 20/38] battle transition data decomp --- data/data_83F5738.s | 123 +--- data/field_map_obj.s | 8 +- graphics/battle_transitions/agatha_bg.pal | 19 + .../big_pokeball_tilemap.bin | Bin 0 -> 1200 bytes .../big_pokeball_tileset.png | Bin 0 -> 553 bytes graphics/battle_transitions/blue_bg.pal | 19 + graphics/battle_transitions/bruno_bg.pal | 19 + graphics/battle_transitions/green_bg.pal | 19 + .../grid_square_tilemap.bin | Bin 0 -> 480 bytes graphics/battle_transitions/lance_bg.pal | 19 + graphics/battle_transitions/lorelei_bg.pal | 19 + graphics/battle_transitions/red_bg.pal | 19 + .../battle_transitions/sliding_pokeball.pal | 19 + .../battle_transitions/sliding_pokeball.png | Bin 0 -> 309 bytes .../sliding_pokeball_tilemap.bin | Bin 0 -> 64 bytes .../battle_transitions/unused_brendan.png | Bin 0 -> 475 bytes graphics/battle_transitions/unused_lass.png | Bin 0 -> 412 bytes .../battle_transitions/unused_trainer.pal | 19 + graphics/battle_transitions/vsbar_tilemap.bin | Bin 0 -> 1280 bytes graphics/battle_transitions/vsbar_tileset.png | Bin 0 -> 158 bytes include/battle_transition.h | 10 +- ld_script.txt | 2 + src/battle_transition.c | 577 ++++++++++++++++++ sym_ewram.txt | 5 +- 24 files changed, 765 insertions(+), 131 deletions(-) create mode 100644 graphics/battle_transitions/agatha_bg.pal create mode 100644 graphics/battle_transitions/big_pokeball_tilemap.bin create mode 100644 graphics/battle_transitions/big_pokeball_tileset.png create mode 100644 graphics/battle_transitions/blue_bg.pal create mode 100644 graphics/battle_transitions/bruno_bg.pal create mode 100644 graphics/battle_transitions/green_bg.pal create mode 100644 graphics/battle_transitions/grid_square_tilemap.bin create mode 100644 graphics/battle_transitions/lance_bg.pal create mode 100644 graphics/battle_transitions/lorelei_bg.pal create mode 100644 graphics/battle_transitions/red_bg.pal create mode 100644 graphics/battle_transitions/sliding_pokeball.pal create mode 100644 graphics/battle_transitions/sliding_pokeball.png create mode 100644 graphics/battle_transitions/sliding_pokeball_tilemap.bin create mode 100644 graphics/battle_transitions/unused_brendan.png create mode 100644 graphics/battle_transitions/unused_lass.png create mode 100644 graphics/battle_transitions/unused_trainer.pal create mode 100644 graphics/battle_transitions/vsbar_tilemap.bin create mode 100644 graphics/battle_transitions/vsbar_tileset.png create mode 100644 src/battle_transition.c diff --git a/data/data_83F5738.s b/data/data_83F5738.s index 12fa41711..dc09b0532 100644 --- a/data/data_83F5738.s +++ b/data/data_83F5738.s @@ -133,128 +133,7 @@ gUnknown_83F846D:: @ 83F846D gUnknown_83F847D:: @ 83F847D .incbin "baserom.gba", 0x3F847D, 0x323 -sBigPokeballTileset:: @ 83F87A0 - .incbin "baserom.gba", 0x3F87A0, 0x580 - -sSlidingPokeballTilemap:: @ 83F8D20 - .incbin "baserom.gba", 0x3F8D20, 0x240 - -sVsBarTileset:: @ 83F8F60 - .incbin "baserom.gba", 0x3F8F60, 0x11E0 - -sGridSquareTilemap:: @ 83FA140 - .incbin "baserom.gba", 0x3FA140, 0x1E0 - -sBT_Phase1Tasks:: @ 83FA320 - .incbin "baserom.gba", 0x3FA320, 0x48 - -sBT_Phase2Tasks:: @ 83FA368 - .incbin "baserom.gba", 0x3FA368, 0x48 - -sBT_MainPhases:: @ 83FA3B0 - .incbin "baserom.gba", 0x3FA3B0, 0x10 - -sBT_Phase2BlurFuncs:: @ 83FA3C0 - .incbin "baserom.gba", 0x3FA3C0, 0xC - -sBT_Phase2DistortedWaveFuncs:: @ 83FA3CC - .incbin "baserom.gba", 0x3FA3CC, 0x8 - -sBT_Phase2HorizontalCorrugateFuncs:: @ 83FA3D4 - .incbin "baserom.gba", 0x3FA3D4, 0x8 - -sBT_Phase2BigPokeballFuncs:: @ 83FA3DC - .incbin "baserom.gba", 0x3FA3DC, 0x18 - -sBT_Phase2SlidingPokeballsFuncs:: @ 83FA3F4 - .incbin "baserom.gba", 0x3FA3F4, 0xC - -gUnknown_83FA400:: @ 83FA400 - .incbin "baserom.gba", 0x3FA400, 0x4 - -gUnknown_83FA404:: @ 83FA404 - .incbin "baserom.gba", 0x3FA404, 0xA - -gUnknown_83FA40E:: @ 83FA40E - .incbin "baserom.gba", 0x3FA40E, 0x6 - -sBT_Phase2ClockwiseBlackFadeFuncs:: @ 83FA414 - .incbin "baserom.gba", 0x3FA414, 0x1C - -sBT_Phase2FullScreenWaveFuncs:: @ 83FA430 - .incbin "baserom.gba", 0x3FA430, 0x8 - -sBT_Phase2BlackWaveToRightFuncs:: @ 83FA438 - .incbin "baserom.gba", 0x3FA438, 0xC - -gUnknown_83FA444:: @ 83FA444 - .incbin "baserom.gba", 0x3FA444, 0x20 - -sBT_Phase2AntiClockwiseSpiralFuncs:: @ 83FA464 - .incbin "baserom.gba", 0x3FA464, 0x8 - -sBT_Phase2MugshotFuncs:: @ 83FA46C - .incbin "baserom.gba", 0x3FA46C, 0x28 - -sMugshotsTrainerPicIDsTable:: @ 83FA494 - .incbin "baserom.gba", 0x3FA494, 0x6 - -sMugshotsOpponentRotationScales:: @ 83FA49A - .incbin "baserom.gba", 0x3FA49A, 0x14 - -sMugshotsOpponentCoords:: @ 83FA4AE - .incbin "baserom.gba", 0x3FA4AE, 0x16 - -sBT_Phase2MugshotSpriteFuncs:: @ 83FA4C4 - .incbin "baserom.gba", 0x3FA4C4, 0x1C - -sMugShotSlideVelocity:: @ 83FA4E0 - .incbin "baserom.gba", 0x3FA4E0, 0x4 - -sMugShotSlideDeceleration:: @ 83FA4E4 - .incbin "baserom.gba", 0x3FA4E4, 0x4 - -sBT_Phase2SlicedScreenFuncs:: @ 83FA4E8 - .incbin "baserom.gba", 0x3FA4E8, 0xC - -sBT_Phase2WhiteFadeInStripesFuncs:: @ 83FA4F4 - .incbin "baserom.gba", 0x3FA4F4, 0x14 - -sWhiteStripeDelay:: @ 83FA508 - .incbin "baserom.gba", 0x3FA508, 0xC - -sBT_Phase2GridSquaresFuncs:: @ 83FA514 - .incbin "baserom.gba", 0x3FA514, 0xC - -sBT_Phase2BlackDoodlesFuncs:: @ 83FA520 - .incbin "baserom.gba", 0x3FA520, 0x14 - -sBlackDoodlesSegments:: @ 83FA534 - .incbin "baserom.gba", 0x3FA534, 0x46 - -sBlackDoodlesDelay:: @ 83FA57A - .incbin "baserom.gba", 0x3FA57A, 0xE - -sBT_Phase1FadeFuncs:: @ 83FA588 - .incbin "baserom.gba", 0x3FA588, 0x44 - -sSpriteTemplate_SlidingPokeball:: @ 83FA5CC - .incbin "baserom.gba", 0x3FA5CC, 0x6C - -sSlidingPokeballBigPokeballPalette:: @ 83FA638 - .incbin "baserom.gba", 0x3FA638, 0x108 - -sVsBarOpponentPalettes:: @ 83FA740 - .incbin "baserom.gba", 0x3FA740, 0x14 - -sVsBarPlayerPalettes:: @ 83FA754 - .incbin "baserom.gba", 0x3FA754, 0x30 - -sBigPokeballTilemap:: @ 83FA784 - .incbin "baserom.gba", 0x3FA784, 0x4B0 - -sVsBarTilemap:: @ 83FAC34 - .incbin "baserom.gba", 0x3FAC34, 0x500 + .section .rodata.83FB134 gUnknown_83FB134:: @ 83FB134 .incbin "baserom.gba", 0x3FB134, 0xA80 diff --git a/data/field_map_obj.s b/data/field_map_obj.s index d12de7aa9..72d20cd4e 100644 --- a/data/field_map_obj.s +++ b/data/field_map_obj.s @@ -31,7 +31,13 @@ gUnknown_83A0010:: @ 83A0010 .incbin "baserom.gba", 0x3A0010, 0x3688 gUnknown_83A3698:: @ 83A3698 - .incbin "baserom.gba", 0x3A3698, 0x1AC0 + .incbin "baserom.gba", 0x3A3698, 0x80 + +gEventObjectBaseOam_32x32:: @ 83A3718 + .incbin "baserom.gba", 0x3A3718, 0x8 + +gUnknown_83A3720:: @ 83A3720 + .incbin "baserom.gba", 0x3A3720, 0x1a38 gUnknown_83A5158:: @ 83A5158 .incbin "baserom.gba", 0x3A5158, 0xB0 diff --git a/graphics/battle_transitions/agatha_bg.pal b/graphics/battle_transitions/agatha_bg.pal new file mode 100644 index 000000000..4aac79fec --- /dev/null +++ b/graphics/battle_transitions/agatha_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +172 49 49 +115 115 115 +148 148 148 +180 180 180 +213 213 213 +255 82 172 +255 98 189 +255 115 205 +255 131 222 +255 148 238 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/battle_transitions/big_pokeball_tilemap.bin b/graphics/battle_transitions/big_pokeball_tilemap.bin new file mode 100644 index 0000000000000000000000000000000000000000..691e16ef7a9e80f4ddd8541400262278d24703f5 GIT binary patch literal 1200 zcmd7R$Bu(Q5Jl13_H&kV&N=`8|Bc%oO0aOjViwa^0wHv|KmzzrtBj~nrK*agvR;>; zavriqod)5P!mEbrsui$JT8WG2w~fb^no+x}ot7yZ)XuRTx?gQq9d~XoD>HM0damuK z?1?jHo$QT+`mP-?v@Tq^>Y|}FaP5e(b>q%mH;t{4YbTVf2Tz`QsANrCJ2m;chq<`J z)U`9_S)H$-pzy6v}(`deJD=!)vECJ(h z{P^P}0I&tN$OhFu4DbaY%>XI2G$bOJya9;2Cr)#p-C$Nf-OI=Uf+UTW~8m#9D& zM@^tS*3s0A;3cejtz zUZfrgD1NodAW(}@cHjzma1LyhLJkK_Ar-%>O^}v>p+B|;O%LU0--9VHGhlMeKz1`v zKri!s0=DJ%Jp8G={vkBx7x_kfgt)@Rz`}19>Amu1yH6+jiBU$O@$~#YamJbzaKLYj zHwKre;HJvysTm9wEgyyI4uq2}R?-xRtK{J`ZQ#pNL2_*zR}F#d)7ohWYlDXi(hwF1 rt4r2Svf8s`u18HGh`wwk=PUgKeSm<1APZGU00000NkvXXu0mjfrQ-Az literal 0 HcmV?d00001 diff --git a/graphics/battle_transitions/blue_bg.pal b/graphics/battle_transitions/blue_bg.pal new file mode 100644 index 000000000..30da9c5f9 --- /dev/null +++ b/graphics/battle_transitions/blue_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +172 49 49 +115 115 115 +148 148 148 +180 180 180 +213 213 213 +197 197 65 +213 213 82 +230 230 98 +246 246 115 +255 255 131 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/battle_transitions/bruno_bg.pal b/graphics/battle_transitions/bruno_bg.pal new file mode 100644 index 000000000..b55e6a6cd --- /dev/null +++ b/graphics/battle_transitions/bruno_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +172 49 49 +115 115 115 +148 148 148 +180 180 180 +213 213 213 +8 213 8 +32 238 32 +49 246 49 +74 255 74 +123 255 123 +230 123 139 +246 139 156 +255 156 172 +255 172 189 +255 189 205 +230 123 139 diff --git a/graphics/battle_transitions/green_bg.pal b/graphics/battle_transitions/green_bg.pal new file mode 100644 index 000000000..8ebd38309 --- /dev/null +++ b/graphics/battle_transitions/green_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +230 123 139 +246 139 156 +255 156 172 +255 172 189 +255 189 205 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/battle_transitions/grid_square_tilemap.bin b/graphics/battle_transitions/grid_square_tilemap.bin new file mode 100644 index 0000000000000000000000000000000000000000..7f67463eb394909323c1ac2e8a0bd14da1f4f8cf GIT binary patch literal 480 zcma)%0S*8W5Ci?d|9|NRwAffeSCcx)bR?IOPDRvW@`BB^ijy%J?yZB4^Mmu9t%v_) ceFqmmy6R=ShrGa_HOGGy<1WKxRU&@44FlFGUH||9 literal 0 HcmV?d00001 diff --git a/graphics/battle_transitions/lance_bg.pal b/graphics/battle_transitions/lance_bg.pal new file mode 100644 index 000000000..6717a90bd --- /dev/null +++ b/graphics/battle_transitions/lance_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +172 49 49 +115 115 115 +148 148 148 +180 180 180 +213 213 213 +0 0 131 +16 16 148 +32 32 164 +49 49 180 +65 65 197 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/battle_transitions/lorelei_bg.pal b/graphics/battle_transitions/lorelei_bg.pal new file mode 100644 index 000000000..1f30ed062 --- /dev/null +++ b/graphics/battle_transitions/lorelei_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +172 49 49 +115 115 115 +148 148 148 +180 180 180 +213 213 213 +189 0 189 +205 16 205 +222 32 222 +238 49 238 +255 65 255 +106 180 213 +123 197 230 +139 213 246 +156 230 255 +172 246 255 +255 255 255 diff --git a/graphics/battle_transitions/red_bg.pal b/graphics/battle_transitions/red_bg.pal new file mode 100644 index 000000000..e43b0f74c --- /dev/null +++ b/graphics/battle_transitions/red_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 180 213 +123 197 230 +139 213 246 +156 230 255 +172 246 255 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/battle_transitions/sliding_pokeball.pal b/graphics/battle_transitions/sliding_pokeball.pal new file mode 100644 index 000000000..6190709ed --- /dev/null +++ b/graphics/battle_transitions/sliding_pokeball.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 172 238 +246 8 0 +238 213 180 +222 180 148 +255 255 255 +222 230 238 +189 205 230 +156 180 222 +98 156 180 +148 0 0 +197 197 197 +238 230 164 +222 205 131 +213 180 106 +205 156 82 +0 0 0 diff --git a/graphics/battle_transitions/sliding_pokeball.png b/graphics/battle_transitions/sliding_pokeball.png new file mode 100644 index 0000000000000000000000000000000000000000..3802a915b98341c15232a8951dac84b97e202dee GIT binary patch literal 309 zcmV-50m}Y~P)$-pzy6v}(D>A241?AmP6Pz<&zwuWL+2C-}!kY&-J|LLHf0)P`-I6i<6CwH0I zV;bfA2LZ#r9w&`H3Rf}4Szlc(u8IzVC``f^G>ubVUo zdD}ySl`cpFzQfdZG?wxXsWq5-vainzCSE`8+qs*n_3!WnnQ@ETPDvh=00000NkvXX Hu0mjfk&KKl literal 0 HcmV?d00001 diff --git a/graphics/battle_transitions/sliding_pokeball_tilemap.bin b/graphics/battle_transitions/sliding_pokeball_tilemap.bin new file mode 100644 index 0000000000000000000000000000000000000000..6cdeb0d170b0da948cb4d19de798c13c368850da GIT binary patch literal 64 NcmZQzzz_Zt000h7AK?H1 literal 0 HcmV?d00001 diff --git a/graphics/battle_transitions/unused_brendan.png b/graphics/battle_transitions/unused_brendan.png new file mode 100644 index 0000000000000000000000000000000000000000..926ba0ff725d1ad10716efb37172001da948a85f GIT binary patch literal 475 zcmV<10VMv3P)5Fk0;=I;N+TD_cF|6*FjK|%lj{{R30ViWUa0004I zNkln|&17F< zJC;-W*0yh zuQ-|J6>wFxF>IKK_@_Vu$pl9c0C`!+MAVO~xB-w?f;DGSKh6QVZcdQ5vUv96XSfDf zw?eRN&SCHYNXRULB`-J!6l;J5ewJT@1bzaLta=*nWc8CJ-Udk=@8WCV-g}4lS1~M_ z##(!^%ro#`va5~##++imnSsBYfKA&PUt)e2V2qu(7Pful>}bPXz&p>qcjH-5jhs!b z`xqaQ_DkynUALcvDwxifR{sVfoYx%!$Ep$5+KH~@dLUBy!^gJ RnwS6p002ovPDHLkV1oK;)KdTe literal 0 HcmV?d00001 diff --git a/graphics/battle_transitions/unused_lass.png b/graphics/battle_transitions/unused_lass.png new file mode 100644 index 0000000000000000000000000000000000000000..378fa3c19fc46d2795300bb90e7e7e48c68c4449 GIT binary patch literal 412 zcmV;N0b~A&P)5Fk0;=I;N+TD_cF|6*FjK|%lj{{R30ViWUa0003e zNkl~>TnP_T4vK10F^cpfR83BF9F)B%ym2gK+vxAbLH=WQc&Sb z;Ik2{6OoCa{6FT7>;a)LqAYEmM{`x5D0{sJxMr@rR#okg_a3U|er8sd)QLg8n|Bj2 zzFY(Jeg}ft!2vL{fm=|)4nq4)Q2l5k!g(KKxD8_00AzmTE$8=`>L;-U*qR@$Mz}uP z@c@2{2K5GT5MG`U&H!`>tj^RmpmU>DmdAPzT&m=64wY0000SWi7B?&A?wbQC| zcA} Date: Wed, 24 Jul 2019 05:50:36 +0800 Subject: [PATCH 21/38] thru BT_Phase2BigPokeball_UpdateWave3 --- asm/battle_transition.s | 1232 --------------------------------------- include/overworld.h | 1 + ld_script.txt | 1 + src/battle_transition.c | 446 +++++++++++++- 4 files changed, 425 insertions(+), 1255 deletions(-) diff --git a/asm/battle_transition.s b/asm/battle_transition.s index 83f03553d..b6b365db4 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -5,1238 +5,6 @@ .text - thumb_func_start BT_StartOnField -BT_StartOnField: @ 80D08B8 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _080D08DC @ =sTransitionStructPtr - movs r0, 0x3C - bl AllocZeroed - str r0, [r5] - ldr r1, _080D08E0 @ =gMain - ldr r0, _080D08E4 @ =CB2_OverworldBasic - str r0, [r1, 0x4] - adds r0, r4, 0 - bl BT_LaunchTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D08DC: .4byte sTransitionStructPtr -_080D08E0: .4byte gMain -_080D08E4: .4byte CB2_OverworldBasic - thumb_func_end BT_StartOnField - - thumb_func_start BT_StartWithoutAlloc -BT_StartWithoutAlloc: @ 80D08E8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl BT_LaunchTask - pop {r0} - bx r0 - thumb_func_end BT_StartWithoutAlloc - - thumb_func_start BT_IsDone -BT_IsDone: @ 80D08F8 - push {r4,r5,lr} - ldr r0, _080D091C @ =BT_TaskMain - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D0920 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x26 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080D0924 - movs r0, 0 - b _080D093C - .align 2, 0 -_080D091C: .4byte BT_TaskMain -_080D0920: .4byte gTasks -_080D0924: - bl BT_InitCtrlBlk - ldr r4, _080D0944 @ =sTransitionStructPtr - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] - adds r0, r5, 0 - bl DestroyTask - movs r0, 0x1 -_080D093C: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D0944: .4byte sTransitionStructPtr - thumb_func_end BT_IsDone - - thumb_func_start BT_LaunchTask -BT_LaunchTask: @ 80D0948 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080D0970 @ =BT_TaskMain - movs r1, 0x2 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D0974 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D0970: .4byte BT_TaskMain -_080D0974: .4byte gTasks - thumb_func_end BT_LaunchTask - - thumb_func_start BT_TaskMain -BT_TaskMain: @ 80D0978 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D09A8 @ =sBT_MainPhases - ldr r2, _080D09AC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D098A: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D098A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D09A8: .4byte sBT_MainPhases -_080D09AC: .4byte gTasks - thumb_func_end BT_TaskMain - - thumb_func_start BT_Phase1Blink -BT_Phase1Blink: @ 80D09B0 - push {r4,lr} - adds r4, r0, 0 - bl SetWeatherScreenFadeOut - ldr r0, _080D09DC @ =gPlttBufferFaded - ldr r1, _080D09E0 @ =gPlttBufferUnfaded - ldr r2, _080D09E4 @ =0x04000100 - bl CpuSet - ldr r1, _080D09E8 @ =sBT_Phase1Tasks - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bne _080D09EC - movs r0, 0x2 - strh r0, [r4, 0x8] - movs r0, 0x1 - b _080D09FA - .align 2, 0 -_080D09DC: .4byte gPlttBufferFaded -_080D09E0: .4byte gPlttBufferUnfaded -_080D09E4: .4byte 0x04000100 -_080D09E8: .4byte sBT_Phase1Tasks -_080D09EC: - movs r1, 0x4 - bl CreateTask - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 -_080D09FA: - pop {r4} - pop {r1} - bx r1 - thumb_func_end BT_Phase1Blink - - thumb_func_start BT_WaitForPhase1 -BT_WaitForPhase1: @ 80D0A00 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080D0A20 @ =sBT_Phase1Tasks - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080D0A24 - movs r0, 0 - b _080D0A2C - .align 2, 0 -_080D0A20: .4byte sBT_Phase1Tasks -_080D0A24: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 -_080D0A2C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end BT_WaitForPhase1 - - thumb_func_start BT_Phase2LaunchAnimTask -BT_Phase2LaunchAnimTask: @ 80D0A34 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080D0A58 @ =sBT_Phase2Tasks - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl CreateTask - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D0A58: .4byte sBT_Phase2Tasks - thumb_func_end BT_Phase2LaunchAnimTask - - thumb_func_start BT_WaitForPhase2 -BT_WaitForPhase2: @ 80D0A5C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - strh r0, [r4, 0x26] - ldr r1, _080D0A88 @ =sBT_Phase2Tasks - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080D0A80 - movs r0, 0x1 - strh r0, [r4, 0x26] -_080D0A80: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D0A88: .4byte sBT_Phase2Tasks - thumb_func_end BT_WaitForPhase2 - - thumb_func_start BT_Phase1Task -BT_Phase1Task: @ 80D0A8C - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r1, _080D0AC0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0x8] - movs r3, 0x8 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080D0AC4 - adds r0, r2, 0x1 - strh r0, [r1, 0x8] - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x2 - bl BT_CreatePhase1SubTask - b _080D0AD4 - .align 2, 0 -_080D0AC0: .4byte gTasks -_080D0AC4: - bl BT_IsPhase1Done - lsls r0, 24 - cmp r0, 0 - beq _080D0AD4 - adds r0, r4, 0 - bl DestroyTask -_080D0AD4: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end BT_Phase1Task - - thumb_func_start BT_Phase2Blur -BT_Phase2Blur: @ 80D0ADC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D0B0C @ =sBT_Phase2BlurFuncs - ldr r2, _080D0B10 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D0AEE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D0AEE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D0B0C: .4byte sBT_Phase2BlurFuncs -_080D0B10: .4byte gTasks - thumb_func_end BT_Phase2Blur - - thumb_func_start BT_Phase2Blur_InitBgMosaic -BT_Phase2Blur_InitBgMosaic: @ 80D0B14 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x4C - movs r1, 0 - bl SetGpuReg - movs r0, 0xA - movs r1, 0x40 - bl SetGpuRegBits - movs r0, 0xC - movs r1, 0x40 - bl SetGpuRegBits - movs r0, 0xE - movs r1, 0x40 - bl SetGpuRegBits - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end BT_Phase2Blur_InitBgMosaic - - thumb_func_start BT_Phase2Blur_Anim -BT_Phase2Blur_Anim: @ 80D0B48 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0xA] - movs r1, 0xA - ldrsh r2, [r4, r1] - cmp r2, 0 - beq _080D0B5E - subs r0, 0x1 - strh r0, [r4, 0xA] - b _080D0B9E -_080D0B5E: - movs r0, 0x2 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _080D0B80 - movs r1, 0x1 - negs r1, r1 - str r2, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_080D0B80: - ldrh r1, [r4, 0xC] - movs r0, 0xF - ands r0, r1 - lsls r1, r0, 4 - orrs r1, r0 - movs r0, 0x4C - bl SetGpuReg - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0xE - ble _080D0B9E - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080D0B9E: - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end BT_Phase2Blur_Anim - - thumb_func_start BT_Phase2Blur_IsDone -BT_Phase2Blur_IsDone: @ 80D0BA8 - push {lr} - ldr r0, _080D0BCC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080D0BC4 - ldr r0, _080D0BD0 @ =BT_Phase2Blur - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_080D0BC4: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080D0BCC: .4byte gPaletteFade -_080D0BD0: .4byte BT_Phase2Blur - thumb_func_end BT_Phase2Blur_IsDone - - thumb_func_start BT_Phase2DistortedWave -BT_Phase2DistortedWave: @ 80D0BD4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D0C04 @ =sBT_Phase2DistortedWaveFuncs - ldr r2, _080D0C08 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D0BE6: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D0BE6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D0C04: .4byte sBT_Phase2DistortedWaveFuncs -_080D0C08: .4byte gTasks - thumb_func_end BT_Phase2DistortedWave - - thumb_func_start BT_Phase2DistortedWave_InitWave -BT_Phase2DistortedWave_InitWave: @ 80D0C0C - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - bl BT_InitCtrlBlk - bl ScanlineEffect_Clear - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080D0C68 @ =gScanlineEffectRegBuffers + 0x780 - ldr r1, _080D0C6C @ =sTransitionStructPtr - ldr r1, [r1] - movs r2, 0x14 - ldrsh r1, [r1, r2] - str r4, [sp] - movs r2, 0xA0 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0x2 - bl BT_LoadWaveIntoBuffer - ldr r0, _080D0C70 @ =VBCB_BT_Phase2DistortedWave - bl SetVBlankCallback - ldr r0, _080D0C74 @ =HBCB_BT_Phase2DistortedWave - bl SetHBlankCallback - movs r0, 0x3 - bl EnableInterrupts - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D0C68: .4byte gScanlineEffectRegBuffers + 0x780 -_080D0C6C: .4byte sTransitionStructPtr -_080D0C70: .4byte VBCB_BT_Phase2DistortedWave -_080D0C74: .4byte HBCB_BT_Phase2DistortedWave - thumb_func_end BT_Phase2DistortedWave_InitWave - - thumb_func_start BT_Phase2DistortedWave_UpdateWave -BT_Phase2DistortedWave_UpdateWave: @ 80D0C78 - push {r4,r5,lr} - sub sp, 0x8 - ldr r4, _080D0CE0 @ =sTransitionStructPtr - ldr r2, [r4] - ldrb r1, [r2] - movs r1, 0 - strb r1, [r2] - ldrh r1, [r0, 0xA] - adds r1, 0x4 - strh r1, [r0, 0xA] - ldrh r1, [r0, 0xC] - adds r1, 0x8 - strh r1, [r0, 0xC] - ldr r3, _080D0CE4 @ =gScanlineEffectRegBuffers - ldr r1, [r4] - movs r2, 0x14 - ldrsh r1, [r1, r2] - movs r5, 0xA - ldrsh r2, [r0, r5] - movs r5, 0xC - ldrsh r0, [r0, r5] - str r0, [sp] - movs r0, 0xA0 - str r0, [sp, 0x4] - adds r0, r3, 0 - movs r3, 0x2 - bl BT_LoadWaveIntoBuffer - ldr r0, _080D0CE8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080D0CCA - ldr r0, _080D0CEC @ =BT_Phase2DistortedWave - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_080D0CCA: - ldr r0, [r4] - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D0CE0: .4byte sTransitionStructPtr -_080D0CE4: .4byte gScanlineEffectRegBuffers -_080D0CE8: .4byte gPaletteFade -_080D0CEC: .4byte BT_Phase2DistortedWave - thumb_func_end BT_Phase2DistortedWave_UpdateWave - - thumb_func_start VBCB_BT_Phase2DistortedWave -VBCB_BT_Phase2DistortedWave: @ 80D0CF0 - push {lr} - bl BT_VBSyncOamAndPltt - ldr r0, _080D0D18 @ =sTransitionStructPtr - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0 - beq _080D0D14 - ldr r1, _080D0D1C @ =0x040000d4 - ldr r0, _080D0D20 @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _080D0D24 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080D0D14: - pop {r0} - bx r0 - .align 2, 0 -_080D0D18: .4byte sTransitionStructPtr -_080D0D1C: .4byte 0x040000d4 -_080D0D20: .4byte gScanlineEffectRegBuffers -_080D0D24: .4byte 0x800000a0 - thumb_func_end VBCB_BT_Phase2DistortedWave - - thumb_func_start HBCB_BT_Phase2DistortedWave -HBCB_BT_Phase2DistortedWave: @ 80D0D28 - ldr r1, _080D0D48 @ =gScanlineEffectRegBuffers - ldr r0, _080D0D4C @ =0x04000006 - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _080D0D50 @ =0x04000014 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_080D0D48: .4byte gScanlineEffectRegBuffers -_080D0D4C: .4byte 0x04000006 -_080D0D50: .4byte 0x04000014 - thumb_func_end HBCB_BT_Phase2DistortedWave - - thumb_func_start BT_Phase2HorizontalCorrugate -BT_Phase2HorizontalCorrugate: @ 80D0D54 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D0D84 @ =sBT_Phase2HorizontalCorrugateFuncs - ldr r2, _080D0D88 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D0D66: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D0D66 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D0D84: .4byte sBT_Phase2HorizontalCorrugateFuncs -_080D0D88: .4byte gTasks - thumb_func_end BT_Phase2HorizontalCorrugate - - thumb_func_start BT_Phase2HorizontalCorrugate_Init -BT_Phase2HorizontalCorrugate_Init: @ 80D0D8C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - bl BT_InitCtrlBlk - bl ScanlineEffect_Clear - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080D0DE0 @ =sTransitionStructPtr - ldr r1, [r0] - ldr r0, _080D0DE4 @ =gScanlineEffectRegBuffers + 0x780 - movs r2, 0x16 - ldrsh r1, [r1, r2] - movs r2, 0xA0 - lsls r2, 1 - bl memset - ldr r0, _080D0DE8 @ =VBCB_BT_Phase2HorizontalCorrugate - bl SetVBlankCallback - ldr r0, _080D0DEC @ =HBCB_BT_Phase2HorizontalCorrugate - bl SetHBlankCallback - movs r0, 0x3 - bl EnableInterrupts - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D0DE0: .4byte sTransitionStructPtr -_080D0DE4: .4byte gScanlineEffectRegBuffers + 0x780 -_080D0DE8: .4byte VBCB_BT_Phase2HorizontalCorrugate -_080D0DEC: .4byte HBCB_BT_Phase2HorizontalCorrugate - thumb_func_end BT_Phase2HorizontalCorrugate_Init - - thumb_func_start BT_Phase2HorizontalCorrugate_UpdateWave -BT_Phase2HorizontalCorrugate_UpdateWave: @ 80D0DF0 - push {r4-r7,lr} - ldr r1, _080D0E70 @ =sTransitionStructPtr - ldr r2, [r1] - ldrb r1, [r2] - movs r1, 0 - strb r1, [r2] - ldrh r4, [r0, 0xA] - ldrh r2, [r0, 0xC] - lsls r3, r2, 16 - asrs r3, 24 - movs r5, 0x84 - lsls r5, 5 - adds r1, r4, r5 - strh r1, [r0, 0xA] - movs r1, 0xC0 - lsls r1, 1 - adds r2, r1 - strh r2, [r0, 0xC] - movs r5, 0 - lsls r7, r3, 16 -_080D0E18: - lsrs r0, r4, 8 - asrs r1, r7, 16 - bl Sin - ldr r1, _080D0E74 @ =gScanlineEffectRegBuffers - lsls r2, r5, 1 - adds r2, r1 - ldr r6, _080D0E70 @ =sTransitionStructPtr - ldr r1, [r6] - ldrh r1, [r1, 0x16] - adds r0, r1 - strh r0, [r2] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x84 - lsls r1, 5 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0x9F - bls _080D0E18 - ldr r0, _080D0E78 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080D0E5E - ldr r0, _080D0E7C @ =BT_Phase2HorizontalCorrugate - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_080D0E5E: - ldr r0, [r6] - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D0E70: .4byte sTransitionStructPtr -_080D0E74: .4byte gScanlineEffectRegBuffers -_080D0E78: .4byte gPaletteFade -_080D0E7C: .4byte BT_Phase2HorizontalCorrugate - thumb_func_end BT_Phase2HorizontalCorrugate_UpdateWave - - thumb_func_start VBCB_BT_Phase2HorizontalCorrugate -VBCB_BT_Phase2HorizontalCorrugate: @ 80D0E80 - push {lr} - bl BT_VBSyncOamAndPltt - ldr r0, _080D0EA8 @ =sTransitionStructPtr - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0 - beq _080D0EA4 - ldr r1, _080D0EAC @ =0x040000d4 - ldr r0, _080D0EB0 @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _080D0EB4 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080D0EA4: - pop {r0} - bx r0 - .align 2, 0 -_080D0EA8: .4byte sTransitionStructPtr -_080D0EAC: .4byte 0x040000d4 -_080D0EB0: .4byte gScanlineEffectRegBuffers -_080D0EB4: .4byte 0x800000a0 - thumb_func_end VBCB_BT_Phase2HorizontalCorrugate - - thumb_func_start HBCB_BT_Phase2HorizontalCorrugate -HBCB_BT_Phase2HorizontalCorrugate: @ 80D0EB8 - ldr r1, _080D0ED8 @ =gScanlineEffectRegBuffers - ldr r0, _080D0EDC @ =0x04000006 - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _080D0EE0 @ =0x04000016 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_080D0ED8: .4byte gScanlineEffectRegBuffers -_080D0EDC: .4byte 0x04000006 -_080D0EE0: .4byte 0x04000016 - thumb_func_end HBCB_BT_Phase2HorizontalCorrugate - - thumb_func_start BT_Phase2BigPokeball -BT_Phase2BigPokeball: @ 80D0EE4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D0F14 @ =sBT_Phase2BigPokeballFuncs - ldr r2, _080D0F18 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D0EF6: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D0EF6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D0F14: .4byte sBT_Phase2BigPokeballFuncs -_080D0F18: .4byte gTasks - thumb_func_end BT_Phase2BigPokeball - - thumb_func_start BT_Phase2BigPokeball_Init -BT_Phase2BigPokeball_Init: @ 80D0F1C - push {r4-r6,lr} - sub sp, 0xC - adds r4, r0, 0 - bl BT_InitCtrlBlk - bl ScanlineEffect_Clear - movs r1, 0 - movs r0, 0x10 - strh r0, [r4, 0xA] - strh r1, [r4, 0xC] - strh r1, [r4, 0x10] - movs r0, 0x80 - lsls r0, 7 - strh r0, [r4, 0x12] - ldr r0, _080D0FB8 @ =sTransitionStructPtr - ldr r2, [r0] - movs r0, 0x3F - strh r0, [r2, 0x2] - strh r1, [r2, 0x4] - movs r0, 0xF0 - strh r0, [r2, 0x6] - movs r0, 0xA0 - strh r0, [r2, 0x8] - ldr r0, _080D0FBC @ =0x00003f41 - strh r0, [r2, 0xE] - ldrh r0, [r4, 0xA] - lsls r0, 8 - ldrh r1, [r4, 0xC] - orrs r0, r1 - strh r0, [r2, 0x10] - movs r1, 0 - add r5, sp, 0x4 - add r6, sp, 0x8 - ldr r3, _080D0FC0 @ =gScanlineEffectRegBuffers + 0x780 - movs r2, 0xF0 -_080D0F64: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _080D0F64 - ldr r0, _080D0FC4 @ =VBCB_BT_Phase2BigPokeball1 - bl SetVBlankCallback - adds r0, r5, 0 - adds r1, r6, 0 - bl BT_GetBg0TilemapAndTilesetBase - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, [sp, 0x4] - ldr r2, _080D0FC8 @ =0x01000400 - mov r0, sp - bl CpuSet - ldr r0, _080D0FCC @ =sBigPokeballTileset - ldr r1, [sp, 0x8] - movs r2, 0xB0 - lsls r2, 2 - bl CpuSet - ldr r0, _080D0FD0 @ =sSlidingPokeballBigPokeballPalette - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080D0FB8: .4byte sTransitionStructPtr -_080D0FBC: .4byte 0x00003f41 -_080D0FC0: .4byte gScanlineEffectRegBuffers + 0x780 -_080D0FC4: .4byte VBCB_BT_Phase2BigPokeball1 -_080D0FC8: .4byte 0x01000400 -_080D0FCC: .4byte sBigPokeballTileset -_080D0FD0: .4byte sSlidingPokeballBigPokeballPalette - thumb_func_end BT_Phase2BigPokeball_Init - - thumb_func_start BT_Phase2BigPokeball_LoadTilemapAndWave -BT_Phase2BigPokeball_LoadTilemapAndWave: @ 80D0FD4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - adds r7, r0, 0 - ldr r5, _080D105C @ =sBigPokeballTilemap - add r1, sp, 0xC - add r0, sp, 0x8 - bl BT_GetBg0TilemapAndTilesetBase - movs r1, 0 - ldr r0, [sp, 0x8] - mov r9, r0 - ldr r6, _080D1060 @ =gScanlineEffectRegBuffers - mov r8, r6 - movs r0, 0xF0 - lsls r0, 8 - mov r12, r0 -_080D0FFA: - movs r0, 0 - lsls r3, r1, 16 - asrs r4, r3, 11 -_080D1000: - lsls r2, r0, 16 - asrs r2, 16 - adds r1, r4, r2 - lsls r1, 1 - add r1, r9 - ldrh r0, [r5] - mov r6, r12 - orrs r0, r6 - strh r0, [r1] - adds r2, 0x1 - lsls r2, 16 - adds r5, 0x2 - lsrs r0, r2, 16 - asrs r2, 16 - cmp r2, 0x1D - ble _080D1000 - movs r1, 0x80 - lsls r1, 9 - adds r0, r3, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080D0FFA - movs r6, 0x10 - ldrsh r2, [r7, r6] - movs r1, 0x12 - ldrsh r0, [r7, r1] - str r0, [sp] - movs r0, 0xA0 - str r0, [sp, 0x4] - mov r0, r8 - movs r1, 0 - movs r3, 0x84 - bl BT_LoadWaveIntoBuffer - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - movs r0, 0x1 - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D105C: .4byte sBigPokeballTilemap -_080D1060: .4byte gScanlineEffectRegBuffers - thumb_func_end BT_Phase2BigPokeball_LoadTilemapAndWave - - thumb_func_start BT_Phase2BigPokeball_UpdateWave1IncEva -BT_Phase2BigPokeball_UpdateWave1IncEva: @ 80D1064 - push {r4,r5,lr} - sub sp, 0x8 - adds r3, r0, 0 - ldr r2, _080D10EC @ =sTransitionStructPtr - ldr r1, [r2] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r1, [r3, 0xE] - movs r4, 0xE - ldrsh r0, [r3, r4] - adds r4, r2, 0 - cmp r0, 0 - beq _080D108A - subs r0, r1, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080D1094 -_080D108A: - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - movs r0, 0x1 - strh r0, [r3, 0xE] -_080D1094: - ldr r2, [r4] - ldrh r0, [r3, 0xA] - lsls r0, 8 - ldrh r1, [r3, 0xC] - orrs r0, r1 - strh r0, [r2, 0x10] - movs r5, 0xC - ldrsh r0, [r3, r5] - cmp r0, 0xF - ble _080D10AE - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] -_080D10AE: - ldrh r0, [r3, 0x10] - adds r0, 0xC - strh r0, [r3, 0x10] - ldr r0, _080D10F0 @ =0xfffffe80 - adds r1, r0, 0 - ldrh r5, [r3, 0x12] - adds r1, r5 - strh r1, [r3, 0x12] - ldr r0, _080D10F4 @ =gScanlineEffectRegBuffers - movs r5, 0x10 - ldrsh r2, [r3, r5] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r1, 0xA0 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl BT_LoadWaveIntoBuffer - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D10EC: .4byte sTransitionStructPtr -_080D10F0: .4byte 0xfffffe80 -_080D10F4: .4byte gScanlineEffectRegBuffers - thumb_func_end BT_Phase2BigPokeball_UpdateWave1IncEva - - thumb_func_start BT_Phase2BigPokeball_UpdateWave2DecEvb -BT_Phase2BigPokeball_UpdateWave2DecEvb: @ 80D10F8 - push {r4,lr} - sub sp, 0x8 - adds r3, r0, 0 - ldr r2, _080D1158 @ =sTransitionStructPtr - ldr r1, [r2] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r1, [r3, 0xE] - movs r4, 0xE - ldrsh r0, [r3, r4] - cmp r0, 0 - beq _080D111C - subs r0, r1, 0x1 - strh r0, [r3, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080D1126 -_080D111C: - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - movs r0, 0x2 - strh r0, [r3, 0xE] -_080D1126: - ldr r2, [r2] - ldrh r0, [r3, 0xA] - lsls r0, 8 - ldrh r1, [r3, 0xC] - orrs r0, r1 - strh r0, [r2, 0x10] - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080D1140 - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] -_080D1140: - ldrh r1, [r3, 0x12] - movs r2, 0x12 - ldrsh r0, [r3, r2] - cmp r0, 0 - ble _080D1160 - ldrh r0, [r3, 0x10] - adds r0, 0xC - strh r0, [r3, 0x10] - ldr r4, _080D115C @ =0xfffffe80 - adds r0, r1, r4 - b _080D1162 - .align 2, 0 -_080D1158: .4byte sTransitionStructPtr -_080D115C: .4byte 0xfffffe80 -_080D1160: - movs r0, 0 -_080D1162: - strh r0, [r3, 0x12] - ldr r0, _080D1194 @ =gScanlineEffectRegBuffers - movs r1, 0x10 - ldrsh r2, [r3, r1] - ldrh r1, [r3, 0x12] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r1, 0xA0 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl BT_LoadWaveIntoBuffer - ldr r0, _080D1198 @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D1194: .4byte gScanlineEffectRegBuffers -_080D1198: .4byte sTransitionStructPtr - thumb_func_end BT_Phase2BigPokeball_UpdateWave2DecEvb - - thumb_func_start BT_Phase2BigPokeball_UpdateWave3 -BT_Phase2BigPokeball_UpdateWave3: @ 80D119C - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r0, _080D11C4 @ =sTransitionStructPtr - ldr r0, [r0] - ldrb r1, [r0] - movs r2, 0 - strb r2, [r0] - ldrh r1, [r4, 0x12] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r0, 0 - ble _080D11CC - ldrh r0, [r4, 0x10] - adds r0, 0xC - strh r0, [r4, 0x10] - ldr r2, _080D11C8 @ =0xfffffe80 - adds r0, r1, r2 - strh r0, [r4, 0x12] - b _080D11CE - .align 2, 0 -_080D11C4: .4byte sTransitionStructPtr -_080D11C8: .4byte 0xfffffe80 -_080D11CC: - strh r2, [r4, 0x12] -_080D11CE: - ldr r0, _080D1218 @ =gScanlineEffectRegBuffers - movs r3, 0x10 - ldrsh r2, [r4, r3] - ldrh r1, [r4, 0x12] - lsls r1, 16 - asrs r1, 24 - str r1, [sp] - movs r5, 0xA0 - str r5, [sp, 0x4] - movs r1, 0 - movs r3, 0x84 - bl BT_LoadWaveIntoBuffer - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bgt _080D1202 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x8] - strh r5, [r4, 0xA] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0xC] - strh r1, [r4, 0xE] -_080D1202: - ldr r0, _080D121C @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D1218: .4byte gScanlineEffectRegBuffers -_080D121C: .4byte sTransitionStructPtr - thumb_func_end BT_Phase2BigPokeball_UpdateWave3 - thumb_func_start BT_Phase2BigPokeball_CircleEffect BT_Phase2BigPokeball_CircleEffect: @ 80D1220 push {r4,lr} diff --git a/include/overworld.h b/include/overworld.h index 9a9657006..7c1f34e41 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -106,6 +106,7 @@ extern bool8 (* gFieldCallback2)(void); void SetLastHealLocationWarp(u8 healLocaionId); void sub_8055864(u8 mapGroup, u8 mapNum); void CB2_Overworld(void); +void CB2_OverworldBasic(void); void CB2_NewGame(void); bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType); void Overworld_ResetStateAfterTeleport(void); diff --git a/ld_script.txt b/ld_script.txt index 1dc198e6f..f3f580d0c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -191,6 +191,7 @@ SECTIONS { asm/evolution_scene.o(.text); src/coins.o(.text); src/fldeff_strength.o(.text); + src/battle_transition.o(.text); asm/battle_transition.o(.text); asm/battle_controller_link_partner.o(.text); asm/battle_message.o(.text); diff --git a/src/battle_transition.c b/src/battle_transition.c index 7894a5b73..27354292c 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -1,7 +1,14 @@ #include "global.h" #include "sprite.h" #include "task.h" +#include "overworld.h" +#include "malloc.h" +#include "palette.h" +#include "trig.h" +#include "gpu_regs.h" #include "battle_transition.h" +#include "field_weather.h" +#include "scanline_effect.h" typedef bool8 (*TransitionStateFunc)(struct Task *task); typedef bool8 (*TransitionSpriteCallback)(struct Sprite *sprite); @@ -105,25 +112,28 @@ bool8 BT_Phase1Blink(struct Task *task); bool8 BT_WaitForPhase1(struct Task *task); bool8 BT_Phase2LaunchAnimTask(struct Task *task); bool8 BT_WaitForPhase2(struct Task *task); -bool8 BT_Phase2Blur(struct Task *task); -bool8 BT_Phase2DistortedWave(struct Task *task); -bool8 BT_Phase2HorizontalCorrugate(struct Task *task); -bool8 BT_Phase2BigPokeball(struct Task *task); -bool8 BT_Phase2SlidingPokeballs(struct Task *task); -bool8 BT_Phase2ClockwiseBlackFade(struct Task *task); -bool8 BT_Phase2FullScreenWave(struct Task *task); -bool8 BT_Phase2BlackWaveToRight(struct Task *task); -bool8 BT_Phase2SlicedScreen(struct Task *task); -bool8 BT_Phase2WhiteFadeInStripes(struct Task *task); -bool8 BT_Phase2GridSquares(struct Task *task); -bool8 BT_Phase2BlackDoodles(struct Task *task); -bool8 BT_Phase2StartLoreleiMugshot(struct Task *task); -bool8 BT_Phase2StartBrunoMugshot(struct Task *task); -bool8 BT_Phase2StartAgathaMugshot(struct Task *task); -bool8 BT_Phase2StartLanceMugshot(struct Task *task); -bool8 BT_Phase2StartBlueMugshot(struct Task *task); -bool8 BT_Phase2AntiClockwiseSpiral(struct Task *task); -bool8 BT_Phase1Task(struct Task *task); +void BT_Phase2Blur(u8 taskId); +void BT_Phase2DistortedWave(u8 taskId); +void BT_Phase2HorizontalCorrugate(u8 taskId); +void BT_Phase2BigPokeball(u8 taskId); +void BT_Phase2SlidingPokeballs(u8 taskId); +void BT_Phase2ClockwiseBlackFade(u8 taskId); +void BT_Phase2FullScreenWave(u8 taskId); +void BT_Phase2BlackWaveToRight(u8 taskId); +void BT_Phase2SlicedScreen(u8 taskId); +void BT_Phase2WhiteFadeInStripes(u8 taskId); +void BT_Phase2GridSquares(u8 taskId); +void BT_Phase2BlackDoodles(u8 taskId); +void BT_Phase2StartLoreleiMugshot(u8 taskId); +void BT_Phase2StartBrunoMugshot(u8 taskId); +void BT_Phase2StartAgathaMugshot(u8 taskId); +void BT_Phase2StartLanceMugshot(u8 taskId); +void BT_Phase2StartBlueMugshot(u8 taskId); +void BT_Phase2AntiClockwiseSpiral(u8 taskId); +void BT_Phase1Task(u8 taskId); + +void SpriteCB_BT_Phase2Mugshots(struct Sprite *sprite); +void SpriteCB_BT_Phase2SlidingPokeballs(struct Sprite *sprite); bool8 BT_Phase2MugshotsSpriteFuncs_Wait(struct Sprite *sprite); bool8 BT_Phase2MugshotsSpriteFuncs_InitParams(struct Sprite *sprite); @@ -131,8 +141,23 @@ bool8 BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn(struct Sprite *sprite); bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite(struct Sprite *sprite); bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2(struct Sprite *sprite); -void SpriteCB_BT_Phase2Mugshots(struct Sprite *sprite); -void SpriteCB_BT_Phase2SlidingPokeballs(struct Sprite *sprite); +void VBCB_BT_Phase2DistortedWave(void); +void HBCB_BT_Phase2DistortedWave(void); +void VBCB_BT_Phase2HorizontalCorrugate(void); +void HBCB_BT_Phase2HorizontalCorrugate(void); +void VBCB_BT_Phase2BigPokeball1(void); +void VBCB_BT_Phase2BigPokeball2(void); +void HBCB_BT_Phase2BigPokeball(void); + +void BT_LaunchTask(u8 transitionId); +void BT_TaskMain(u8 taskId); +void BT_InitCtrlBlk(void); +void BT_CreatePhase1SubTask(s16 fadeOutDelay, s16 fadeInDelay, s16 blinkTimes, s16 fadeOutSpeed, s16 fadeInSpeed); +bool8 BT_IsPhase1Done(void); +void BT_VBSyncOamAndPltt(void); +void BT_GetBg0TilemapAndTilesetBase(u16 **tilemapPtr, u16 **tilesetPtr); +void BT_LoadWaveIntoBuffer(s16 *buffer, s16 offset, s16 theta, s16 frequency, s16 amplitude, s16 bufSize); + const u32 sBigPokeballTileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball_tileset.4bpp"); const u32 sSlidingPokeballTilemap[] = INCBIN_U32("graphics/battle_transitions/sliding_pokeball_tilemap.bin"); @@ -142,7 +167,7 @@ const u8 sSpriteImage_UnusedBrendan[] = INCBIN_U8("graphics/battle_transitions/u const u8 sSpriteImage_UnusedLass[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp"); const u32 sGridSquareTilemap[] = INCBIN_U32("graphics/battle_transitions/grid_square_tilemap.bin"); -const TransitionStateFunc sBT_Phase1Tasks[] = +const TaskFunc sBT_Phase1Tasks[] = { BT_Phase1Task, BT_Phase1Task, @@ -164,7 +189,7 @@ const TransitionStateFunc sBT_Phase1Tasks[] = BT_Phase1Task, }; -const TransitionStateFunc sBT_Phase2Tasks[] = +const TaskFunc sBT_Phase2Tasks[] = { BT_Phase2Blur, BT_Phase2DistortedWave, @@ -575,3 +600,378 @@ const struct SpritePalette sSpritePalette_UnusedTrainer = const u16 sBigPokeballTilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_tilemap.bin"); const u16 sVsBarTilemap[] = INCBIN_U16("graphics/battle_transitions/vsbar_tilemap.bin"); + +void BT_StartOnField(u8 transitionId) +{ + sTransitionStructPtr = AllocZeroed(sizeof(struct TransitionData)); + gMain.callback2 = CB2_OverworldBasic; + BT_LaunchTask(transitionId); +} + +// not used +static void BT_StartWithoutAlloc(u8 transitionId) +{ + BT_LaunchTask(transitionId); +} + +#define tState data[0] +#define tTransitionId data[1] +#define tTransitionDone data[15] + +bool8 BT_IsDone(void) +{ + u8 taskId = FindTaskIdByFunc(BT_TaskMain); + if (gTasks[taskId].tTransitionDone) + { + BT_InitCtrlBlk(); + FREE_AND_SET_NULL(sTransitionStructPtr); + DestroyTask(taskId); + return TRUE; + } + else + { + return FALSE; + } +} + +void BT_LaunchTask(u8 transitionId) +{ + u8 taskId = CreateTask(BT_TaskMain, 2); + gTasks[taskId].tTransitionId = transitionId; +} + +void BT_TaskMain(u8 taskId) +{ + while (sBT_MainPhases[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase1Blink(struct Task *task) +{ + SetWeatherScreenFadeOut(); + CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + if (sBT_Phase1Tasks[task->tTransitionId] != NULL) + { + CreateTask(sBT_Phase1Tasks[task->tTransitionId], 4); + ++task->tState; + return FALSE; + } + else + { + task->tState = 2; + return TRUE; + } +} + +bool8 BT_WaitForPhase1(struct Task *task) +{ + if (FindTaskIdByFunc(sBT_Phase1Tasks[task->tTransitionId]) == TASK_NONE) + { + ++task->tState; + return TRUE; + } + else + { + return FALSE; + } +} + +bool8 BT_Phase2LaunchAnimTask(struct Task *task) +{ + CreateTask(sBT_Phase2Tasks[task->tTransitionId], 0); + ++task->tState; + return FALSE; +} + +bool8 BT_WaitForPhase2(struct Task *task) +{ + task->tTransitionDone = FALSE; + if (FindTaskIdByFunc(sBT_Phase2Tasks[task->tTransitionId]) == TASK_NONE) + task->tTransitionDone = TRUE; + return FALSE; +} + +void BT_Phase1Task(u8 taskId) +{ + if (!gTasks[taskId].tState) + { + ++gTasks[taskId].tState; + BT_CreatePhase1SubTask(0, 0, 2, 2, 2); + } + else if (BT_IsPhase1Done()) + { + DestroyTask(taskId); + } +} + +#define tInterval data[1] +#define tMosaicSize data[2] + +void BT_Phase2Blur(u8 taskId) +{ + while (sBT_Phase2BlurFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2Blur_InitBgMosaic(struct Task *task) +{ + SetGpuReg(REG_OFFSET_MOSAIC, 0); + SetGpuRegBits(REG_OFFSET_BG1CNT, BGCNT_MOSAIC); + SetGpuRegBits(REG_OFFSET_BG2CNT, BGCNT_MOSAIC); + SetGpuRegBits(REG_OFFSET_BG3CNT, BGCNT_MOSAIC); + ++task->tState; + return TRUE; +} + +bool8 BT_Phase2Blur_Anim(struct Task *task) +{ + if (task->tInterval) + { + --task->tInterval; + } + else + { + task->tInterval = 2; + if (++task->tMosaicSize == 10) + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, RGB_BLACK); + // The mosaic size argument is shared by HSIZE and VSIZE + SetGpuReg(REG_OFFSET_MOSAIC, (task->tMosaicSize & 0xF) + ((task->tMosaicSize & 0xF) << 4)); + if (task->tMosaicSize > 14) + ++task->tState; + } + return FALSE; +} + +bool8 BT_Phase2Blur_IsDone(struct Task *task) +{ + if (!gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(BT_Phase2Blur)); + return FALSE; +} + +#undef tInterval +#undef tMosaicSize + +#define tTheta data[1] +#define tAmplitude data[2] + +void BT_Phase2DistortedWave(u8 taskId) +{ + while (sBT_Phase2DistortedWaveFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2DistortedWave_InitWave(struct Task *task) +{ + BT_InitCtrlBlk(); + ScanlineEffect_Clear(); + BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, RGB_BLACK); + BT_LoadWaveIntoBuffer(gScanlineEffectRegBuffers[1], sTransitionStructPtr->bg123HOfs, 0, 2, 0, 160); + SetVBlankCallback(VBCB_BT_Phase2DistortedWave); + SetHBlankCallback(HBCB_BT_Phase2DistortedWave); + EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); + ++task->tState; + return FALSE; +} + +bool8 BT_Phase2DistortedWave_UpdateWave(struct Task *task) +{ + sTransitionStructPtr->vblankDma = FALSE; + task->tTheta += 4; + task->tAmplitude += 8; + BT_LoadWaveIntoBuffer(gScanlineEffectRegBuffers[0], sTransitionStructPtr->bg123HOfs, task->tTheta, 2, task->tAmplitude, 160); + if (!gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(BT_Phase2DistortedWave)); + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +void VBCB_BT_Phase2DistortedWave(void) +{ + BT_VBSyncOamAndPltt(); + if (sTransitionStructPtr->vblankDma) + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); +} + +void HBCB_BT_Phase2DistortedWave(void) +{ + s16 offset = gScanlineEffectRegBuffers[1][REG_VCOUNT]; + REG_BG1HOFS = offset; + REG_BG2HOFS = offset; + REG_BG3HOFS = offset; +} + +void BT_Phase2HorizontalCorrugate(u8 taskId) +{ + while (sBT_Phase2HorizontalCorrugateFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2HorizontalCorrugate_Init(struct Task *task) +{ + BT_InitCtrlBlk(); + ScanlineEffect_Clear(); + BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, RGB_BLACK); + memset(gScanlineEffectRegBuffers[1], sTransitionStructPtr->bg123VOfs, 320); + SetVBlankCallback(VBCB_BT_Phase2HorizontalCorrugate); + SetHBlankCallback(HBCB_BT_Phase2HorizontalCorrugate); + EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); + ++task->tState; + return FALSE; +} + +bool8 BT_Phase2HorizontalCorrugate_UpdateWave(struct Task *task) +{ + u8 i; + u16 theta, amplitude; + + sTransitionStructPtr->vblankDma = FALSE; + theta = task->tTheta; + amplitude = task->tAmplitude >> 8; + task->tTheta += 4224; + task->tAmplitude += 384; + for (i = 0; i < 160; i++, theta += 4224) + gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->bg123VOfs + Sin(theta / 256, amplitude); + if (!gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(BT_Phase2HorizontalCorrugate)); + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +void VBCB_BT_Phase2HorizontalCorrugate(void) +{ + BT_VBSyncOamAndPltt(); + if (sTransitionStructPtr->vblankDma) + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); +} + +void HBCB_BT_Phase2HorizontalCorrugate(void) +{ + u16 offset = gScanlineEffectRegBuffers[1][REG_VCOUNT]; + REG_BG1VOFS = offset; + REG_BG2VOFS = offset; + REG_BG3VOFS = offset; +} + +#undef tTheta +#undef tAmplitude + +#define tEvb data[1] +#define tEva data[2] +#define tInterval data[3] +#define tTheta data[4] +#define tAmplitude data[5] + +void BT_Phase2BigPokeball(u8 taskId) +{ + while (sBT_Phase2BigPokeballFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2BigPokeball_Init(struct Task *task) +{ + u16 i, *tilemapAddr, *tilesetAddr; + + BT_InitCtrlBlk(); + ScanlineEffect_Clear(); + task->tEvb = 16; + task->tEva = 0; + task-> tTheta = 0; + task-> tAmplitude = 0x4000; + sTransitionStructPtr->winIn = 0x3F; + sTransitionStructPtr->winOut = 0; + sTransitionStructPtr->win0H = 240; + sTransitionStructPtr->win0V = 160; + sTransitionStructPtr->bldCnt = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD; + sTransitionStructPtr->bldAlpha = (task->tEvb << 8) | task->tEva; + for (i = 0; i < 160; ++i) + gScanlineEffectRegBuffers[1][i] = 240; + SetVBlankCallback(VBCB_BT_Phase2BigPokeball1); + BT_GetBg0TilemapAndTilesetBase(&tilemapAddr, &tilesetAddr); + CpuFill16(0, tilemapAddr, 0x800); + CpuCopy16(sBigPokeballTileset, tilesetAddr, 0x580); + LoadPalette(sSlidingPokeballBigPokeballPalette, 0xF0, 0x20); + ++task->tState; + return FALSE; +} + +bool8 BT_Phase2BigPokeball_LoadTilemapAndWave(struct Task *task) +{ + s16 i, j; + u16 *tilemapAddr, *tilesetAddr; + const u16 *BigPokeballMap = sBigPokeballTilemap; + + BT_GetBg0TilemapAndTilesetBase(&tilemapAddr, &tilesetAddr); + for (i = 0; i < 20; ++i) + for (j = 0; j < 30; ++j, ++BigPokeballMap) + tilemapAddr[i * 32 + j] = *BigPokeballMap | 0xF000; // use palette #15 + BT_LoadWaveIntoBuffer(gScanlineEffectRegBuffers[0], 0, task->tTheta, 132, task->tAmplitude, 160); + ++task->tState; + return TRUE; +} + +bool8 BT_Phase2BigPokeball_UpdateWave1IncEva(struct Task *task) +{ + sTransitionStructPtr->vblankDma = FALSE; + if (task->tInterval == 0 || --task->tInterval == 0) + { + ++task->tEva; + task->tInterval = 1; // Broken logic. This makes the condition always TRUE. + } + sTransitionStructPtr->bldAlpha = (task->tEvb << 8) | task->tEva; + // Increment eva until it reaches 50% coeff + if (task->tEva > 15) + ++task->tState; + task->tTheta += 12; + task->tAmplitude -= 384; + // Assign a very high frequency value so that 2 adjacent values in gScanlineEffectRegBuffers[0] have different sign + BT_LoadWaveIntoBuffer(gScanlineEffectRegBuffers[0], 0, task->tTheta, 132, task->tAmplitude >> 8, 160); + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2BigPokeball_UpdateWave2DecEvb(struct Task *task) +{ + sTransitionStructPtr->vblankDma = FALSE; + if (task->tInterval == 0 || --task->tInterval == 0) + { + --task->tEvb; + task->tInterval = 2; + } + sTransitionStructPtr->bldAlpha = (task->tEvb << 8) | task->tEva; + if (!task->tEvb) + ++task->tState; + if (task->tAmplitude > 0) + { + task->tTheta += 12; + task->tAmplitude -= 384; + } + else + { + task->tAmplitude = 0; + } + BT_LoadWaveIntoBuffer(gScanlineEffectRegBuffers[0], 0, task->tTheta, 132, task->tAmplitude >> 8, 160); + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2BigPokeball_UpdateWave3(struct Task *task) +{ + sTransitionStructPtr->vblankDma = FALSE; + if (task->tAmplitude > 0) + { + task->tTheta += 12; + task->tAmplitude -= 384; + } + else + { + task->tAmplitude = 0; + } + BT_LoadWaveIntoBuffer(gScanlineEffectRegBuffers[0], 0, task->tTheta, 132, task->tAmplitude >> 8, 160); + if (task->tAmplitude <= 0) + { + ++task->tState; + task->tEvb = 160; + task->tEva = 256; + task->tInterval = 0; + } + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + + From 25661400cc57bc3511945d9d05c324ceec5839e2 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Wed, 24 Jul 2019 14:52:07 +0800 Subject: [PATCH 22/38] thru BT_Phase2AntiClockwiseSpiral --- asm/battle_transition.s | 1689 --------------------------------------- include/field_effect.h | 1 + src/battle_transition.c | 560 ++++++++++++- 3 files changed, 555 insertions(+), 1695 deletions(-) diff --git a/asm/battle_transition.s b/asm/battle_transition.s index b6b365db4..64b5686db 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -5,1695 +5,6 @@ .text - thumb_func_start BT_Phase2BigPokeball_CircleEffect -BT_Phase2BigPokeball_CircleEffect: @ 80D1220 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D12C4 @ =sTransitionStructPtr - ldr r0, [r0] - ldrb r1, [r0] - movs r3, 0 - strb r3, [r0] - ldrh r2, [r4, 0xC] - movs r0, 0xC - ldrsh r1, [r4, r0] - ldr r0, _080D12C8 @ =0x000007ff - cmp r1, r0 - bgt _080D1242 - movs r1, 0x80 - lsls r1, 1 - adds r0, r2, r1 - strh r0, [r4, 0xC] -_080D1242: - ldrh r1, [r4, 0xA] - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080D125E - ldrh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 24 - subs r0, r1, r0 - strh r0, [r4, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _080D125E - strh r3, [r4, 0xA] -_080D125E: - ldr r0, _080D12CC @ =gScanlineEffectRegBuffers - movs r1, 0xA - ldrsh r3, [r4, r1] - movs r1, 0x78 - movs r2, 0x50 - bl BT_GenerateCircle - movs r2, 0xA - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080D129A - ldr r1, _080D12D0 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080D12D4 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080D12D8 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl BT_BlendPalettesToBlack - ldr r0, _080D12DC @ =BT_Phase2BigPokeball - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_080D129A: - ldrh r1, [r4, 0xE] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080D12AE - adds r0, r1, 0x1 - strh r0, [r4, 0xE] - ldr r0, _080D12E0 @ =VBCB_BT_Phase2BigPokeball2 - bl SetVBlankCallback -_080D12AE: - ldr r0, _080D12C4 @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D12C4: .4byte sTransitionStructPtr -_080D12C8: .4byte 0x000007ff -_080D12CC: .4byte gScanlineEffectRegBuffers -_080D12D0: .4byte 0x040000b0 -_080D12D4: .4byte 0x0000c5ff -_080D12D8: .4byte 0x00007fff -_080D12DC: .4byte BT_Phase2BigPokeball -_080D12E0: .4byte VBCB_BT_Phase2BigPokeball2 - thumb_func_end BT_Phase2BigPokeball_CircleEffect - - thumb_func_start BT_VBStopDma0SyncSrcBufferSetLcdRegs -BT_VBStopDma0SyncSrcBufferSetLcdRegs: @ 80D12E4 - push {r4,lr} - ldr r1, _080D1354 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080D1358 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080D135C @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl BT_VBSyncOamAndPltt - ldr r4, _080D1360 @ =sTransitionStructPtr - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _080D131C - ldr r1, _080D1364 @ =0x040000d4 - ldr r0, _080D1368 @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _080D136C @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080D131C: - ldr r0, [r4] - ldrh r1, [r0, 0x2] - movs r0, 0x48 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x4] - movs r0, 0x4A - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x8] - movs r0, 0x44 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0xE] - movs r0, 0x50 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x10] - movs r0, 0x52 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1354: .4byte 0x040000b0 -_080D1358: .4byte 0x0000c5ff -_080D135C: .4byte 0x00007fff -_080D1360: .4byte sTransitionStructPtr -_080D1364: .4byte 0x040000d4 -_080D1368: .4byte gScanlineEffectRegBuffers -_080D136C: .4byte 0x800000a0 - thumb_func_end BT_VBStopDma0SyncSrcBufferSetLcdRegs - - thumb_func_start VBCB_BT_Phase2BigPokeball1 -VBCB_BT_Phase2BigPokeball1: @ 80D1370 - push {lr} - bl BT_VBStopDma0SyncSrcBufferSetLcdRegs - ldr r1, _080D138C @ =0x040000b0 - ldr r0, _080D1390 @ =gScanlineEffectRegBuffers + 0x780 - str r0, [r1] - ldr r0, _080D1394 @ =0x04000010 - str r0, [r1, 0x4] - ldr r0, _080D1398 @ =0xa2400001 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_080D138C: .4byte 0x040000b0 -_080D1390: .4byte gScanlineEffectRegBuffers + 0x780 -_080D1394: .4byte 0x04000010 -_080D1398: .4byte 0xa2400001 - thumb_func_end VBCB_BT_Phase2BigPokeball1 - - thumb_func_start VBCB_BT_Phase2BigPokeball2 -VBCB_BT_Phase2BigPokeball2: @ 80D139C - push {lr} - bl BT_VBStopDma0SyncSrcBufferSetLcdRegs - ldr r1, _080D13B8 @ =0x040000b0 - ldr r0, _080D13BC @ =gScanlineEffectRegBuffers + 0x780 - str r0, [r1] - ldr r0, _080D13C0 @ =0x04000040 - str r0, [r1, 0x4] - ldr r0, _080D13C4 @ =0xa2400001 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_080D13B8: .4byte 0x040000b0 -_080D13BC: .4byte gScanlineEffectRegBuffers + 0x780 -_080D13C0: .4byte 0x04000040 -_080D13C4: .4byte 0xa2400001 - thumb_func_end VBCB_BT_Phase2BigPokeball2 - - thumb_func_start BT_Phase2SlidingPokeballs -BT_Phase2SlidingPokeballs: @ 80D13C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D13F8 @ =sBT_Phase2SlidingPokeballsFuncs - ldr r2, _080D13FC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D13DA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D13DA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D13F8: .4byte sBT_Phase2SlidingPokeballsFuncs -_080D13FC: .4byte gTasks - thumb_func_end BT_Phase2SlidingPokeballs - - thumb_func_start BT_Phase2SlidingPokeballs_LoadBgGfx -BT_Phase2SlidingPokeballs_LoadBgGfx: @ 80D1400 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - add r0, sp, 0x4 - add r1, sp, 0x8 - bl BT_GetBg0TilemapAndTilesetBase - ldr r0, _080D1440 @ =sSlidingPokeballTilemap - ldr r1, [sp, 0x8] - movs r2, 0x20 - bl CpuSet - movs r0, 0 - str r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, _080D1444 @ =0x05000200 - mov r0, sp - bl CpuSet - ldr r0, _080D1448 @ =sSlidingPokeballBigPokeballPalette - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D1440: .4byte sSlidingPokeballTilemap -_080D1444: .4byte 0x05000200 -_080D1448: .4byte sSlidingPokeballBigPokeballPalette - thumb_func_end BT_Phase2SlidingPokeballs_LoadBgGfx - - thumb_func_start BT_Phase2SlidingPokeballs_SetupFldeffArgs -BT_Phase2SlidingPokeballs_SetupFldeffArgs: @ 80D144C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r7, r0, 0 - ldr r1, _080D14CC @ =gUnknown_83FA400 - mov r0, sp - movs r2, 0x4 - bl memcpy - add r4, sp, 0x4 - ldr r1, _080D14D0 @ =gUnknown_83FA404 - adds r0, r4, 0 - movs r2, 0xA - bl memcpy - bl Random - movs r5, 0x1 - ands r5, r0 - movs r1, 0 - mov r8, r4 - ldr r6, _080D14D4 @ =gFieldEffectArguments -_080D147A: - lsls r5, 16 - asrs r5, 16 - lsls r0, r5, 1 - add r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - str r0, [r6] - lsls r4, r1, 16 - asrs r4, 16 - lsls r0, r4, 5 - adds r0, 0x10 - str r0, [r6, 0x4] - str r5, [r6, 0x8] - lsls r0, r4, 1 - add r0, r8 - movs r1, 0 - ldrsh r0, [r0, r1] - str r0, [r6, 0xC] - movs r0, 0x2D - bl FieldEffectStart - adds r4, 0x1 - lsls r4, 16 - movs r0, 0x1 - eors r5, r0 - lsls r5, 16 - lsrs r5, 16 - lsrs r1, r4, 16 - asrs r4, 16 - cmp r4, 0x4 - ble _080D147A - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - movs r0, 0 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D14CC: .4byte gUnknown_83FA400 -_080D14D0: .4byte gUnknown_83FA404 -_080D14D4: .4byte gFieldEffectArguments - thumb_func_end BT_Phase2SlidingPokeballs_SetupFldeffArgs - - thumb_func_start BT_Phase2SlidingPokeballs_IsDone -BT_Phase2SlidingPokeballs_IsDone: @ 80D14D8 - push {lr} - movs r0, 0x2D - bl FieldEffectActiveListContains - lsls r0, 24 - cmp r0, 0 - bne _080D14F8 - bl BT_BlendPalettesToBlack - ldr r0, _080D1500 @ =BT_Phase2SlidingPokeballs - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_080D14F8: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080D1500: .4byte BT_Phase2SlidingPokeballs - thumb_func_end BT_Phase2SlidingPokeballs_IsDone - - thumb_func_start FldEff_Pokeball -FldEff_Pokeball: @ 80D1504 - push {r4,r5,lr} - ldr r0, _080D1560 @ =sSpriteTemplate_SlidingPokeball - ldr r5, _080D1564 @ =gFieldEffectArguments - movs r2, 0 - ldrsh r1, [r5, r2] - movs r3, 0x4 - ldrsh r2, [r5, r3] - movs r3, 0 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080D1568 @ =gSprites - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r4, r1 - ldrb r1, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x5] - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - ldr r0, [r5, 0x8] - strh r0, [r4, 0x2E] - ldr r0, [r5, 0xC] - strh r0, [r4, 0x30] - ldr r0, _080D156C @ =0x0000ffff - strh r0, [r4, 0x32] - adds r0, r4, 0 - bl InitSpriteAffineAnim - ldrb r1, [r5, 0x8] - adds r0, r4, 0 - bl StartSpriteAffineAnim - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D1560: .4byte sSpriteTemplate_SlidingPokeball -_080D1564: .4byte gFieldEffectArguments -_080D1568: .4byte gSprites -_080D156C: .4byte 0x0000ffff - thumb_func_end FldEff_Pokeball - - thumb_func_start SpriteCB_BT_Phase2SlidingPokeballs -SpriteCB_BT_Phase2SlidingPokeballs: @ 80D1570 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r1, _080D1590 @ =gUnknown_83FA40E - mov r0, sp - movs r2, 0x4 - bl memcpy - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080D1594 - subs r0, r1, 0x1 - strh r0, [r4, 0x30] - b _080D162A - .align 2, 0 -_080D1590: .4byte gUnknown_83FA40E -_080D1594: - ldrh r0, [r4, 0x20] - lsls r1, r0, 16 - lsrs r0, r1, 16 - cmp r0, 0xF0 - bhi _080D1606 - asrs r0, r1, 19 - lsls r0, 16 - ldrh r1, [r4, 0x22] - lsls r1, 16 - asrs r1, 19 - lsls r1, 16 - lsrs r6, r1, 16 - lsrs r1, r0, 16 - asrs r5, r0, 16 - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r5, r0 - beq _080D1606 - strh r1, [r4, 0x32] - movs r0, 0x8 - bl GetGpuReg - lsls r0, 16 - lsrs r0, 24 - movs r1, 0x1F - ands r0, r1 - lsls r0, 11 - movs r1, 0xC0 - lsls r1, 19 - adds r0, r1 - lsls r2, r6, 16 - asrs r2, 16 - subs r1, r2, 0x2 - lsls r1, 5 - adds r1, r5 - lsls r1, 1 - adds r1, r0 - ldr r6, _080D1634 @ =0x0000f001 - adds r3, r6, 0 - strh r3, [r1] - subs r1, r2, 0x1 - lsls r1, 5 - adds r1, r5 - lsls r1, 1 - adds r1, r0 - strh r3, [r1] - lsls r1, r2, 5 - adds r1, r5 - lsls r1, 1 - adds r1, r0 - strh r3, [r1] - adds r2, 0x1 - lsls r2, 5 - adds r2, r5 - lsls r2, 1 - adds r2, r0 - strh r3, [r2] -_080D1606: - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, 0xF - lsls r0, 16 - movs r1, 0x87 - lsls r1, 17 - cmp r0, r1 - bls _080D162A - adds r0, r4, 0 - movs r1, 0x2D - bl FieldEffectStop -_080D162A: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D1634: .4byte 0x0000f001 - thumb_func_end SpriteCB_BT_Phase2SlidingPokeballs - - thumb_func_start BT_Phase2ClockwiseBlackFade -BT_Phase2ClockwiseBlackFade: @ 80D1638 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D1668 @ =sBT_Phase2ClockwiseBlackFadeFuncs - ldr r2, _080D166C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D164A: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D164A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1668: .4byte sBT_Phase2ClockwiseBlackFadeFuncs -_080D166C: .4byte gTasks - thumb_func_end BT_Phase2ClockwiseBlackFade - - thumb_func_start BT_Phase2ClockwiseBlackFade_Init -BT_Phase2ClockwiseBlackFade_Init: @ 80D1670 - push {r4,lr} - adds r4, r0, 0 - bl BT_InitCtrlBlk - bl ScanlineEffect_Clear - ldr r0, _080D16C4 @ =sTransitionStructPtr - ldr r1, [r0] - movs r0, 0 - strh r0, [r1, 0x2] - movs r0, 0x3F - strh r0, [r1, 0x4] - ldr r0, _080D16C8 @ =0x0000f0f1 - strh r0, [r1, 0x6] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _080D16CC @ =gScanlineEffectRegBuffers + 0x780 - ldr r2, _080D16D0 @ =0x0000f3f4 -_080D1696: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _080D1696 - ldr r0, _080D16D4 @ =VBCB_BT_Phase2ClockwiseBlackFade - bl SetVBlankCallback - ldr r0, _080D16C4 @ =sTransitionStructPtr - ldr r1, [r0] - movs r0, 0x78 - strh r0, [r1, 0x2C] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D16C4: .4byte sTransitionStructPtr -_080D16C8: .4byte 0x0000f0f1 -_080D16CC: .4byte gScanlineEffectRegBuffers + 0x780 -_080D16D0: .4byte 0x0000f3f4 -_080D16D4: .4byte VBCB_BT_Phase2ClockwiseBlackFade - thumb_func_end BT_Phase2ClockwiseBlackFade_Init - - thumb_func_start BT_Phase2ClockwiseBlackFade_Step1 -BT_Phase2ClockwiseBlackFade_Step1: @ 80D16D8 - push {r4-r7,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r2, _080D1760 @ =sTransitionStructPtr - ldr r1, [r2] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x24 - movs r2, 0x2C - ldrsh r3, [r1, r2] - movs r1, 0x1 - negs r1, r1 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl BT_DiagonalSegment_InitParams - ldr r5, _080D1764 @ =gScanlineEffectRegBuffers -_080D1708: - ldr r4, _080D1760 @ =sTransitionStructPtr - ldr r0, [r4] - movs r7, 0x2A - ldrsh r3, [r0, r7] - lsls r3, 1 - adds r3, r5 - ldrh r1, [r0, 0x28] - adds r1, 0x1 - movs r7, 0xF0 - lsls r7, 7 - adds r2, r7, 0 - orrs r1, r2 - strh r1, [r3] - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl BT_DiagonalSegment_ComputePointOnSegment - lsls r0, 24 - cmp r0, 0 - beq _080D1708 - ldr r1, [r4] - ldrh r0, [r1, 0x2C] - adds r0, 0x20 - strh r0, [r1, 0x2C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xEF - ble _080D174C - movs r0, 0 - strh r0, [r1, 0x2E] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_080D174C: - ldr r0, [r4] - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - add sp, 0xC - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D1760: .4byte sTransitionStructPtr -_080D1764: .4byte gScanlineEffectRegBuffers - thumb_func_end BT_Phase2ClockwiseBlackFade_Step1 - - thumb_func_start BT_Phase2ClockwiseBlackFade_Step2 -BT_Phase2ClockwiseBlackFade_Step2: @ 80D1768 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - mov r8, r0 - add r1, sp, 0xC - movs r0, 0 - strb r0, [r1] - ldr r4, _080D17EC @ =sTransitionStructPtr - ldr r1, [r4] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x24 - movs r2, 0x2E - ldrsh r1, [r1, r2] - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0xF0 - bl BT_DiagonalSegment_InitParams - mov r9, r4 - mov r7, r9 - add r5, sp, 0xC -_080D17A6: - movs r1, 0x78 - ldr r3, [r7] - ldrh r0, [r3, 0x28] - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - movs r2, 0x2E - ldrsh r0, [r3, r2] - cmp r0, 0x4F - ble _080D17BE - ldrh r1, [r3, 0x28] - movs r4, 0xF0 -_080D17BE: - ldr r6, _080D17F0 @ =gScanlineEffectRegBuffers - movs r0, 0x2A - ldrsh r2, [r3, r0] - lsls r2, 1 - adds r2, r6 - lsls r1, 16 - asrs r1, 8 - lsls r0, r4, 16 - asrs r4, r0, 16 - orrs r4, r1 - strh r4, [r2] - ldrb r0, [r5] - cmp r0, 0 - bne _080D17F4 - adds r0, r3, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl BT_DiagonalSegment_ComputePointOnSegment - strb r0, [r5] - b _080D17A6 - .align 2, 0 -_080D17EC: .4byte sTransitionStructPtr -_080D17F0: .4byte gScanlineEffectRegBuffers -_080D17F4: - ldr r1, [r7] - ldrh r0, [r1, 0x2E] - adds r0, 0x10 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0x9F - ble _080D1812 - movs r0, 0xF0 - strh r0, [r1, 0x2C] - mov r1, r8 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080D183A -_080D1812: - movs r3, 0x2A - ldrsh r0, [r1, r3] - cmp r0, r2 - bge _080D183A - adds r3, r4, 0 - ldr r5, _080D1858 @ =sTransitionStructPtr -_080D181E: - ldr r2, [r5] - ldrh r0, [r2, 0x2A] - adds r0, 0x1 - strh r0, [r2, 0x2A] - lsls r0, 16 - asrs r0, 15 - adds r0, r6 - strh r3, [r0] - movs r4, 0x2A - ldrsh r1, [r2, r4] - movs r4, 0x2E - ldrsh r0, [r2, r4] - cmp r1, r0 - blt _080D181E -_080D183A: - mov r1, r9 - ldr r0, [r1] - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D1858: .4byte sTransitionStructPtr - thumb_func_end BT_Phase2ClockwiseBlackFade_Step2 - - thumb_func_start BT_Phase2ClockwiseBlackFade_Step3 -BT_Phase2ClockwiseBlackFade_Step3: @ 80D185C - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r2, _080D18DC @ =sTransitionStructPtr - ldr r1, [r2] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x24 - movs r2, 0x2C - ldrsh r3, [r1, r2] - movs r1, 0xA0 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl BT_DiagonalSegment_InitParams - ldr r5, _080D18E0 @ =gScanlineEffectRegBuffers -_080D188A: - ldr r4, _080D18DC @ =sTransitionStructPtr - ldr r0, [r4] - movs r1, 0x2A - ldrsh r3, [r0, r1] - lsls r3, 1 - adds r3, r5 - ldrh r1, [r0, 0x28] - lsls r1, 8 - movs r2, 0xF0 - orrs r1, r2 - strh r1, [r3] - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl BT_DiagonalSegment_ComputePointOnSegment - lsls r0, 24 - cmp r0, 0 - beq _080D188A - ldr r1, [r4] - ldrh r0, [r1, 0x2C] - subs r0, 0x20 - strh r0, [r1, 0x2C] - lsls r0, 16 - cmp r0, 0 - bgt _080D18C8 - movs r0, 0xA0 - strh r0, [r1, 0x2E] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_080D18C8: - ldr r0, [r4] - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080D18DC: .4byte sTransitionStructPtr -_080D18E0: .4byte gScanlineEffectRegBuffers - thumb_func_end BT_Phase2ClockwiseBlackFade_Step3 - - thumb_func_start BT_Phase2ClockwiseBlackFade_Step4 -BT_Phase2ClockwiseBlackFade_Step4: @ 80D18E4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - mov r9, r0 - add r1, sp, 0xC - movs r0, 0 - strb r0, [r1] - ldr r4, _080D196C @ =sTransitionStructPtr - ldr r1, [r4] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x24 - movs r2, 0x2E - ldrsh r1, [r1, r2] - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl BT_DiagonalSegment_InitParams - ldr r7, _080D1970 @ =gScanlineEffectRegBuffers - mov r10, r7 - ldr r0, _080D196C @ =sTransitionStructPtr - mov r8, r0 - add r6, sp, 0xC -_080D1928: - mov r1, r8 - ldr r4, [r1] - movs r2, 0x2A - ldrsh r0, [r4, r2] - lsls r0, 1 - mov r7, r10 - adds r5, r0, r7 - ldrb r1, [r5] - ldrh r2, [r4, 0x28] - adds r3, r2, 0 - movs r7, 0x2E - ldrsh r0, [r4, r7] - cmp r0, 0x50 - bgt _080D1948 - movs r2, 0x78 - adds r1, r3, 0 -_080D1948: - lsls r0, r2, 16 - asrs r0, 8 - lsls r1, 16 - asrs r1, 16 - orrs r1, r0 - movs r7, 0 - strh r1, [r5] - ldrb r0, [r6] - cmp r0, 0 - bne _080D1974 - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl BT_DiagonalSegment_ComputePointOnSegment - strb r0, [r6] - b _080D1928 - .align 2, 0 -_080D196C: .4byte sTransitionStructPtr -_080D1970: .4byte gScanlineEffectRegBuffers -_080D1974: - mov r0, r8 - ldr r2, [r0] - ldrh r0, [r2, 0x2E] - subs r0, 0x10 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r3, r0, 16 - cmp r3, 0 - bgt _080D1992 - strh r7, [r2, 0x2C] - mov r1, r9 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080D19BC -_080D1992: - movs r4, 0x2A - ldrsh r0, [r2, r4] - cmp r0, r3 - ble _080D19BC - ldr r6, _080D19DC @ =gScanlineEffectRegBuffers - adds r3, r1, 0 - ldr r5, _080D19E0 @ =sTransitionStructPtr -_080D19A0: - ldr r2, [r5] - ldrh r0, [r2, 0x2A] - subs r0, 0x1 - strh r0, [r2, 0x2A] - lsls r0, 16 - asrs r0, 15 - adds r0, r6 - strh r3, [r0] - movs r7, 0x2A - ldrsh r1, [r2, r7] - movs r4, 0x2E - ldrsh r0, [r2, r4] - cmp r1, r0 - bgt _080D19A0 -_080D19BC: - ldr r7, _080D19E0 @ =sTransitionStructPtr - ldr r0, [r7] - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D19DC: .4byte gScanlineEffectRegBuffers -_080D19E0: .4byte sTransitionStructPtr - thumb_func_end BT_Phase2ClockwiseBlackFade_Step4 - - thumb_func_start BT_Phase2ClockwiseBlackFade_Step5 -BT_Phase2ClockwiseBlackFade_Step5: @ 80D19E4 - push {r4-r7,lr} - sub sp, 0xC - adds r7, r0, 0 - ldr r1, _080D1A74 @ =sTransitionStructPtr - ldr r0, [r1] - ldrb r2, [r0] - movs r2, 0 - strb r2, [r0] - ldr r1, [r1] - adds r0, r1, 0 - adds r0, 0x24 - movs r4, 0x2C - ldrsh r3, [r1, r4] - str r2, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x78 - movs r2, 0x50 - bl BT_DiagonalSegment_InitParams - ldr r6, _080D1A78 @ =gScanlineEffectRegBuffers -_080D1A10: - movs r2, 0x78 - ldr r5, _080D1A74 @ =sTransitionStructPtr - ldr r3, [r5] - ldrh r4, [r3, 0x28] - movs r1, 0x28 - ldrsh r0, [r3, r1] - cmp r0, 0x77 - ble _080D1A24 - movs r2, 0 - movs r4, 0xF0 -_080D1A24: - movs r0, 0x2A - ldrsh r1, [r3, r0] - lsls r1, 1 - adds r1, r6 - lsls r2, 8 - lsls r0, r4, 16 - asrs r0, 16 - orrs r0, r2 - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl BT_DiagonalSegment_ComputePointOnSegment - lsls r0, 24 - cmp r0, 0 - beq _080D1A10 - ldr r0, [r5] - ldrh r1, [r0, 0x2C] - adds r1, 0x20 - strh r1, [r0, 0x2C] - movs r1, 0x28 - ldrsh r0, [r0, r1] - cmp r0, 0x78 - ble _080D1A5E - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] -_080D1A5E: - ldr r0, [r5] - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - add sp, 0xC - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D1A74: .4byte sTransitionStructPtr -_080D1A78: .4byte gScanlineEffectRegBuffers - thumb_func_end BT_Phase2ClockwiseBlackFade_Step5 - - thumb_func_start BT_Phase2ClockwiseBlackFade_End -BT_Phase2ClockwiseBlackFade_End: @ 80D1A7C - push {lr} - ldr r1, _080D1AAC @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080D1AB0 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080D1AB4 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl BT_BlendPalettesToBlack - ldr r0, _080D1AB8 @ =BT_Phase2ClockwiseBlackFade - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080D1AAC: .4byte 0x040000b0 -_080D1AB0: .4byte 0x0000c5ff -_080D1AB4: .4byte 0x00007fff -_080D1AB8: .4byte BT_Phase2ClockwiseBlackFade - thumb_func_end BT_Phase2ClockwiseBlackFade_End - - thumb_func_start VBCB_BT_Phase2ClockwiseBlackFade -VBCB_BT_Phase2ClockwiseBlackFade: @ 80D1ABC - push {r4,r5,lr} - ldr r5, _080D1B34 @ =0x040000b0 - ldrh r1, [r5, 0xA] - ldr r0, _080D1B38 @ =0x0000c5ff - ands r0, r1 - strh r0, [r5, 0xA] - ldrh r1, [r5, 0xA] - ldr r0, _080D1B3C @ =0x00007fff - ands r0, r1 - strh r0, [r5, 0xA] - ldrh r0, [r5, 0xA] - bl BT_VBSyncOamAndPltt - ldr r4, _080D1B40 @ =sTransitionStructPtr - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _080D1AF4 - ldr r1, _080D1B44 @ =0x040000d4 - ldr r0, _080D1B48 @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _080D1B4C @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080D1AF4: - ldr r0, [r4] - ldrh r1, [r0, 0x2] - movs r0, 0x48 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x4] - movs r0, 0x4A - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x8] - movs r0, 0x44 - bl SetGpuReg - ldr r4, _080D1B48 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r4, r0 - ldrh r1, [r4] - movs r0, 0x40 - bl SetGpuReg - str r4, [r5] - ldr r0, _080D1B50 @ =0x04000040 - str r0, [r5, 0x4] - ldr r0, _080D1B54 @ =0xa2400001 - str r0, [r5, 0x8] - ldr r0, [r5, 0x8] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1B34: .4byte 0x040000b0 -_080D1B38: .4byte 0x0000c5ff -_080D1B3C: .4byte 0x00007fff -_080D1B40: .4byte sTransitionStructPtr -_080D1B44: .4byte 0x040000d4 -_080D1B48: .4byte gScanlineEffectRegBuffers -_080D1B4C: .4byte 0x800000a0 -_080D1B50: .4byte 0x04000040 -_080D1B54: .4byte 0xa2400001 - thumb_func_end VBCB_BT_Phase2ClockwiseBlackFade - - thumb_func_start BT_Phase2FullScreenWave -BT_Phase2FullScreenWave: @ 80D1B58 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D1B88 @ =sBT_Phase2FullScreenWaveFuncs - ldr r2, _080D1B8C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D1B6A: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D1B6A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1B88: .4byte sBT_Phase2FullScreenWaveFuncs -_080D1B8C: .4byte gTasks - thumb_func_end BT_Phase2FullScreenWave - - thumb_func_start BT_Phase2FullScreenWave_Init -BT_Phase2FullScreenWave_Init: @ 80D1B90 - push {r4,r5,lr} - adds r5, r0, 0 - bl BT_InitCtrlBlk - bl ScanlineEffect_Clear - movs r2, 0 - ldr r4, _080D1BD8 @ =gScanlineEffectRegBuffers + 0x780 - ldr r3, _080D1BDC @ =sTransitionStructPtr -_080D1BA2: - lsls r1, r2, 1 - adds r1, r4 - ldr r0, [r3] - ldrh r0, [r0, 0x16] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x9F - bls _080D1BA2 - ldr r0, _080D1BE0 @ =VBCB_BT_Phase2FullScreenWave - bl SetVBlankCallback - ldr r0, _080D1BE4 @ =HBCB_BT_Phase2FullScreenWave - bl SetHBlankCallback - movs r0, 0x2 - bl EnableInterrupts - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D1BD8: .4byte gScanlineEffectRegBuffers + 0x780 -_080D1BDC: .4byte sTransitionStructPtr -_080D1BE0: .4byte VBCB_BT_Phase2FullScreenWave -_080D1BE4: .4byte HBCB_BT_Phase2FullScreenWave - thumb_func_end BT_Phase2FullScreenWave_Init - - thumb_func_start BT_Phase2FullScreenWave_UpdateWave -BT_Phase2FullScreenWave_UpdateWave: @ 80D1BE8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r6, r0, 0 - ldr r0, _080D1CB4 @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r2, [r6, 0xC] - lsls r1, r2, 16 - asrs r0, r1, 24 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r4, [r6, 0xA] - movs r0, 0xC0 - lsls r0, 1 - mov r8, r0 - movs r5, 0x80 - lsls r5, 3 - adds r0, r4, r5 - strh r0, [r6, 0xA] - ldr r0, _080D1CB8 @ =0x1fff0000 - cmp r1, r0 - bgt _080D1C24 - movs r1, 0xC0 - lsls r1, 1 - adds r0, r2, r1 - strh r0, [r6, 0xC] -_080D1C24: - movs r5, 0 - lsls r7, r3, 16 -_080D1C28: - lsrs r0, r4, 8 - asrs r1, r7, 16 - bl Sin - ldr r1, _080D1CBC @ =gScanlineEffectRegBuffers - lsls r2, r5, 1 - adds r2, r1 - ldr r1, _080D1CB4 @ =sTransitionStructPtr - ldr r1, [r1] - ldrh r1, [r1, 0x16] - adds r0, r1 - strh r0, [r2] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r8 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0x9F - bls _080D1C28 - ldrh r0, [r6, 0xE] - adds r0, 0x1 - strh r0, [r6, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x29 - bne _080D1C78 - ldrh r0, [r6, 0x10] - adds r0, 0x1 - strh r0, [r6, 0x10] - movs r0, 0x1 - negs r0, r0 - movs r1, 0x8 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r3, 0x10 - bl BeginNormalPaletteFade -_080D1C78: - movs r5, 0x10 - ldrsh r0, [r6, r5] - cmp r0, 0 - beq _080D1C9A - ldr r0, _080D1CC0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080D1C9A - ldr r0, _080D1CC4 @ =BT_Phase2FullScreenWave - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_080D1C9A: - ldr r0, _080D1CB4 @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D1CB4: .4byte sTransitionStructPtr -_080D1CB8: .4byte 0x1fff0000 -_080D1CBC: .4byte gScanlineEffectRegBuffers -_080D1CC0: .4byte gPaletteFade -_080D1CC4: .4byte BT_Phase2FullScreenWave - thumb_func_end BT_Phase2FullScreenWave_UpdateWave - - thumb_func_start VBCB_BT_Phase2FullScreenWave -VBCB_BT_Phase2FullScreenWave: @ 80D1CC8 - push {lr} - bl BT_VBSyncOamAndPltt - ldr r0, _080D1CF0 @ =sTransitionStructPtr - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0 - beq _080D1CEC - ldr r1, _080D1CF4 @ =0x040000d4 - ldr r0, _080D1CF8 @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _080D1CFC @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080D1CEC: - pop {r0} - bx r0 - .align 2, 0 -_080D1CF0: .4byte sTransitionStructPtr -_080D1CF4: .4byte 0x040000d4 -_080D1CF8: .4byte gScanlineEffectRegBuffers -_080D1CFC: .4byte 0x800000a0 - thumb_func_end VBCB_BT_Phase2FullScreenWave - - thumb_func_start HBCB_BT_Phase2FullScreenWave -HBCB_BT_Phase2FullScreenWave: @ 80D1D00 - ldr r1, _080D1D20 @ =gScanlineEffectRegBuffers - ldr r0, _080D1D24 @ =0x04000006 - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _080D1D28 @ =0x04000016 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_080D1D20: .4byte gScanlineEffectRegBuffers -_080D1D24: .4byte 0x04000006 -_080D1D28: .4byte 0x04000016 - thumb_func_end HBCB_BT_Phase2FullScreenWave - - thumb_func_start BT_Phase2BlackWaveToRight -BT_Phase2BlackWaveToRight: @ 80D1D2C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D1D5C @ =sBT_Phase2BlackWaveToRightFuncs - ldr r2, _080D1D60 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D1D3E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D1D3E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1D5C: .4byte sBT_Phase2BlackWaveToRightFuncs -_080D1D60: .4byte gTasks - thumb_func_end BT_Phase2BlackWaveToRight - - thumb_func_start BT_Phase2BlackWaveToRight_Init -BT_Phase2BlackWaveToRight_Init: @ 80D1D64 - push {r4,lr} - adds r4, r0, 0 - bl BT_InitCtrlBlk - bl ScanlineEffect_Clear - ldr r0, _080D1DB0 @ =sTransitionStructPtr - ldr r1, [r0] - movs r2, 0 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xF0 - strh r0, [r1, 0x6] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _080D1DB4 @ =gScanlineEffectRegBuffers + 0x780 - movs r2, 0xF2 -_080D1D8A: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x9F - bls _080D1D8A - ldr r0, _080D1DB8 @ =VBCB_BT_Phase2BlackWaveToRight - bl SetVBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D1DB0: .4byte sTransitionStructPtr -_080D1DB4: .4byte gScanlineEffectRegBuffers + 0x780 -_080D1DB8: .4byte VBCB_BT_Phase2BlackWaveToRight - thumb_func_end BT_Phase2BlackWaveToRight_Init - - thumb_func_start BT_Phase2BlackWaveToRight_UpdateWave -BT_Phase2BlackWaveToRight_UpdateWave: @ 80D1DBC - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - ldr r0, _080D1E50 @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r7, _080D1E54 @ =gScanlineEffectRegBuffers - ldrh r0, [r4, 0xC] - ldrb r5, [r4, 0xC] - adds r0, 0x10 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0xA] - adds r0, 0x8 - strh r0, [r4, 0xA] - movs r6, 0 - movs r0, 0x1 - mov r8, r0 -_080D1DE4: - adds r0, r5, 0 - movs r1, 0x28 - bl Sin - ldrh r1, [r4, 0xA] - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r0, 0 - bge _080D1DFA - movs r1, 0 -_080D1DFA: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _080D1E04 - movs r1, 0xF0 -_080D1E04: - lsls r0, r1, 16 - asrs r0, 16 - lsls r1, r0, 8 - movs r2, 0xF1 - orrs r1, r2 - strh r1, [r7] - cmp r0, 0xEF - bgt _080D1E18 - movs r0, 0 - mov r8, r0 -_080D1E18: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, 0x2 - cmp r6, 0x9F - bls _080D1DE4 - mov r1, r8 - cmp r1, 0 - beq _080D1E36 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080D1E36: - ldr r0, _080D1E50 @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D1E50: .4byte sTransitionStructPtr -_080D1E54: .4byte gScanlineEffectRegBuffers - thumb_func_end BT_Phase2BlackWaveToRight_UpdateWave - - thumb_func_start BT_Phase2BlackWaveToRight_End -BT_Phase2BlackWaveToRight_End: @ 80D1E58 - push {lr} - ldr r1, _080D1E88 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080D1E8C @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080D1E90 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl BT_BlendPalettesToBlack - ldr r0, _080D1E94 @ =BT_Phase2BlackWaveToRight - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080D1E88: .4byte 0x040000b0 -_080D1E8C: .4byte 0x0000c5ff -_080D1E90: .4byte 0x00007fff -_080D1E94: .4byte BT_Phase2BlackWaveToRight - thumb_func_end BT_Phase2BlackWaveToRight_End - - thumb_func_start VBCB_BT_Phase2BlackWaveToRight -VBCB_BT_Phase2BlackWaveToRight: @ 80D1E98 - push {r4,r5,lr} - ldr r4, _080D1F04 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _080D1F08 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _080D1F0C @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl BT_VBSyncOamAndPltt - ldr r5, _080D1F10 @ =sTransitionStructPtr - ldr r0, [r5] - ldrb r0, [r0] - cmp r0, 0 - beq _080D1ED0 - ldr r1, _080D1F14 @ =0x040000d4 - ldr r0, _080D1F18 @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _080D1F1C @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080D1ED0: - ldr r0, [r5] - ldrh r1, [r0, 0x2] - movs r0, 0x48 - bl SetGpuReg - ldr r0, [r5] - ldrh r1, [r0, 0x4] - movs r0, 0x4A - bl SetGpuReg - ldr r0, [r5] - ldrh r1, [r0, 0x8] - movs r0, 0x44 - bl SetGpuReg - ldr r0, _080D1F20 @ =gScanlineEffectRegBuffers + 0x780 - str r0, [r4] - ldr r0, _080D1F24 @ =0x04000040 - str r0, [r4, 0x4] - ldr r0, _080D1F28 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1F04: .4byte 0x040000b0 -_080D1F08: .4byte 0x0000c5ff -_080D1F0C: .4byte 0x00007fff -_080D1F10: .4byte sTransitionStructPtr -_080D1F14: .4byte 0x040000d4 -_080D1F18: .4byte gScanlineEffectRegBuffers -_080D1F1C: .4byte 0x800000a0 -_080D1F20: .4byte gScanlineEffectRegBuffers + 0x780 -_080D1F24: .4byte 0x04000040 -_080D1F28: .4byte 0xa2400001 - thumb_func_end VBCB_BT_Phase2BlackWaveToRight - - thumb_func_start BT_Phase2AntiClockwiseSpiral -BT_Phase2AntiClockwiseSpiral: @ 80D1F2C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D1F5C @ =sBT_Phase2AntiClockwiseSpiralFuncs - ldr r2, _080D1F60 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D1F3E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D1F3E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1F5C: .4byte sBT_Phase2AntiClockwiseSpiralFuncs -_080D1F60: .4byte gTasks - thumb_func_end BT_Phase2AntiClockwiseSpiral - thumb_func_start sub_80D1F64 sub_80D1F64: @ 80D1F64 push {r4-r7,lr} diff --git a/include/field_effect.h b/include/field_effect.h index 426f77510..47f35fe86 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -83,5 +83,6 @@ void sub_80B69DC(void); void CreateTeleportFieldEffectTask(void); void FieldEffectActiveListRemove(u8 id); void sub_8085620(void); +void FieldEffectStop(struct Sprite *sprite, u8 id); #endif //GUARD_FIELD_EFFECTS_H diff --git a/src/battle_transition.c b/src/battle_transition.c index 27354292c..311563a95 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -5,8 +5,10 @@ #include "malloc.h" #include "palette.h" #include "trig.h" +#include "random.h" #include "gpu_regs.h" #include "battle_transition.h" +#include "field_effect.h" #include "field_weather.h" #include "scanline_effect.h" @@ -47,7 +49,7 @@ struct __attribute__((packed)) BlackDoodleSegment EWRAM_DATA struct TransitionData *sTransitionStructPtr = NULL; -// TODO: move this declaration to include/event_object_movement.h +// TODO: Move this declaration to include/event_object_movement.h extern const struct OamData gEventObjectBaseOam_32x32; bool8 BT_Phase1_FadeOut(struct Task *task); @@ -148,6 +150,10 @@ void HBCB_BT_Phase2HorizontalCorrugate(void); void VBCB_BT_Phase2BigPokeball1(void); void VBCB_BT_Phase2BigPokeball2(void); void HBCB_BT_Phase2BigPokeball(void); +void VBCB_BT_Phase2ClockwiseBlackFade(void); +void VBCB_BT_Phase2FullScreenWave(void); +void HBCB_BT_Phase2FullScreenWave(void); +void VBCB_BT_Phase2BlackWaveToRight(void); void BT_LaunchTask(u8 transitionId); void BT_TaskMain(u8 taskId); @@ -157,7 +163,10 @@ bool8 BT_IsPhase1Done(void); void BT_VBSyncOamAndPltt(void); void BT_GetBg0TilemapAndTilesetBase(u16 **tilemapPtr, u16 **tilesetPtr); void BT_LoadWaveIntoBuffer(s16 *buffer, s16 offset, s16 theta, s16 frequency, s16 amplitude, s16 bufSize); - +void BT_GenerateCircle(s16 *buffer, s16 x, s16 y, s16 radius); +void BT_BlendPalettesToBlack(void); +void BT_DiagonalSegment_InitParams(s16 *buffer, s16 startPtX, s16 startPtY, s16 endPtX, s16 endPtY, s16 stepX, s16 stepY); +bool8 BT_DiagonalSegment_ComputePointOnSegment(s16 *data, bool8 checkBoundary1, bool8 checkBoundary2); const u32 sBigPokeballTileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball_tileset.4bpp"); const u32 sSlidingPokeballTilemap[] = INCBIN_U32("graphics/battle_transitions/sliding_pokeball_tilemap.bin"); @@ -826,7 +835,7 @@ bool8 BT_Phase2HorizontalCorrugate_UpdateWave(struct Task *task) amplitude = task->tAmplitude >> 8; task->tTheta += 4224; task->tAmplitude += 384; - for (i = 0; i < 160; i++, theta += 4224) + for (i = 0; i < 160; ++i, theta += 4224) gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->bg123VOfs + Sin(theta / 256, amplitude); if (!gPaletteFade.active) DestroyTask(FindTaskIdByFunc(BT_Phase2HorizontalCorrugate)); @@ -950,6 +959,14 @@ bool8 BT_Phase2BigPokeball_UpdateWave2DecEvb(struct Task *task) return FALSE; } +#undef tEvb +#undef tEva +#undef tInterval + +#define tRadius data[1] +#define tDeltaRadius data[2] +#define tKeepVBCB data[3] + bool8 BT_Phase2BigPokeball_UpdateWave3(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; @@ -966,12 +983,543 @@ bool8 BT_Phase2BigPokeball_UpdateWave3(struct Task *task) if (task->tAmplitude <= 0) { ++task->tState; - task->tEvb = 160; - task->tEva = 256; - task->tInterval = 0; + task->tRadius = 160; + task->tDeltaRadius = 256; + task->tKeepVBCB = 0; } ++sTransitionStructPtr->vblankDma; return FALSE; } +bool8 BT_Phase2BigPokeball_CircleEffect(struct Task *task) +{ + sTransitionStructPtr->vblankDma = FALSE; + if (task->tDeltaRadius < 2048) + task->tDeltaRadius += 256; + if (task->tRadius != 0) + { + task->tRadius -= (task->tDeltaRadius >> 8); + if (task->tRadius < 0) + task->tRadius = 0; + } + BT_GenerateCircle(gScanlineEffectRegBuffers[0], 120, 80, task->tRadius); + if (task->tRadius == 0) + { + DmaStop(0); + BT_BlendPalettesToBlack(); + DestroyTask(FindTaskIdByFunc(BT_Phase2BigPokeball)); + } + if (task->tKeepVBCB == 0) + { + ++task->tKeepVBCB; + SetVBlankCallback(VBCB_BT_Phase2BigPokeball2); + } + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +void BT_VBStopDma0SyncSrcBufferSetLcdRegs(void) +{ + DmaStop(0); + BT_VBSyncOamAndPltt(); + if (sTransitionStructPtr->vblankDma) + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); + SetGpuReg(REG_OFFSET_WININ, sTransitionStructPtr->winIn); + SetGpuReg(REG_OFFSET_WINOUT, sTransitionStructPtr->winOut); + SetGpuReg(REG_OFFSET_WIN0V, sTransitionStructPtr->win0V); + SetGpuReg(REG_OFFSET_BLDCNT, sTransitionStructPtr->bldCnt); + SetGpuReg(REG_OFFSET_BLDALPHA, sTransitionStructPtr->bldAlpha); +} + +void VBCB_BT_Phase2BigPokeball1(void) +{ + BT_VBStopDma0SyncSrcBufferSetLcdRegs(); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_BG0HOFS, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); +} + +void VBCB_BT_Phase2BigPokeball2(void) +{ + BT_VBStopDma0SyncSrcBufferSetLcdRegs(); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); +} + +#undef tRadius +#undef tDeltaRadius +#undef tKeepVBCB +#undef tTheta +#undef tAmplitude + +// TODO: Document this effect after knowing more about field effects. +void BT_Phase2SlidingPokeballs(u8 taskId) +{ + while (sBT_Phase2SlidingPokeballsFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2SlidingPokeballs_LoadBgGfx(struct Task *task) +{ + u16 *tilemapAddr, *tilesetAddr; + + BT_GetBg0TilemapAndTilesetBase(&tilemapAddr, &tilesetAddr); + CpuSet(sSlidingPokeballTilemap, tilesetAddr, 0x20); + CpuFill32(0, tilemapAddr, 0x800); + LoadPalette(sSlidingPokeballBigPokeballPalette, 0xF0, 0x20); + ++task->tState; + return FALSE; +} + +bool8 BT_Phase2SlidingPokeballs_SetupFldeffArgs(struct Task *task) +{ + s16 i, rand; + s16 arr0[NELEMS(gUnknown_83FA400)]; + s16 arr1[NELEMS(gUnknown_83FA404)]; + + memcpy(arr0, gUnknown_83FA400, sizeof(gUnknown_83FA400)); + memcpy(arr1, gUnknown_83FA404, sizeof(gUnknown_83FA404)); + rand = Random() & 1; + for (i = 0; i <= 4; ++i, rand ^= 1) + { + gFieldEffectArguments[0] = arr0[rand]; // x + gFieldEffectArguments[1] = (i * 32) + 16; // y + gFieldEffectArguments[2] = rand; + gFieldEffectArguments[3] = arr1[i]; + FieldEffectStart(FLDEFF_POKEBALL); + } + ++task->tState; + return FALSE; +} + +bool8 BT_Phase2SlidingPokeballs_IsDone(struct Task *task) +{ + if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) + { + BT_BlendPalettesToBlack(); + DestroyTask(FindTaskIdByFunc(BT_Phase2SlidingPokeballs)); + } + return FALSE; +} + +bool8 FldEff_Pokeball(void) +{ + u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_SlidingPokeball, gFieldEffectArguments[0], gFieldEffectArguments[1], 0); + + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].data[0] = gFieldEffectArguments[2]; + gSprites[spriteId].data[1] = gFieldEffectArguments[3]; + gSprites[spriteId].data[2] = -1; + InitSpriteAffineAnim(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], gFieldEffectArguments[2]); + return FALSE; +} + +#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \ +{ \ + u32 index = (posY) * 32 + posX; \ + ptr[index] = toStore; \ +} + +void SpriteCB_BT_Phase2SlidingPokeballs(struct Sprite *sprite) +{ + s16 arr0[NELEMS(gUnknown_83FA40E)]; + + memcpy(arr0, gUnknown_83FA40E, sizeof(gUnknown_83FA40E)); + if (sprite->data[1]) + { + --sprite->data[1]; + } + else + { + if ((u16)sprite->pos1.x <= 240) + { + s16 posX = sprite->pos1.x >> 3; + s16 posY = sprite->pos1.y >> 3; + + if (posX != sprite->data[2]) + { + u32 var; + u16 *ptr; + + sprite->data[2] = posX; + var = (((GetGpuReg(REG_OFFSET_BG0CNT) >> 8) & 0x1F) << 11); + ptr = (u16 *)(VRAM + var); + SOME_VRAM_STORE(ptr, posY - 2, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 1, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 0, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001); + } + } + sprite->pos1.x += arr0[sprite->data[0]]; + if (sprite->pos1.x < -15 || sprite->pos1.x > 255) + FieldEffectStop(sprite, FLDEFF_POKEBALL); + } +} + +#define trStartPtX data[0] +#define trStartPtY data[1] +#define trCurrentPtX data[2] +#define trCurrentPtY data[3] +#define trEndPtX data[4] +#define trEndPtY data[5] + +void BT_Phase2ClockwiseBlackFade(u8 taskId) +{ + while (sBT_Phase2ClockwiseBlackFadeFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2ClockwiseBlackFade_Init(struct Task *task) +{ + u16 i; + + BT_InitCtrlBlk(); + ScanlineEffect_Clear(); + sTransitionStructPtr->winIn = 0; + sTransitionStructPtr->winOut = 0x3F; + sTransitionStructPtr->win0H = 0xF0F1; + sTransitionStructPtr->win0V = 0x00A0; + for (i = 0; i < 160; ++i) + { + gScanlineEffectRegBuffers[1][i] = 0xF3F4; + } + SetVBlankCallback(VBCB_BT_Phase2ClockwiseBlackFade); + sTransitionStructPtr->trEndPtX = 120; + ++task->tState; + return TRUE; +} + +bool8 BT_Phase2ClockwiseBlackFade_Step1(struct Task *task) +{ + sTransitionStructPtr->vblankDma = FALSE; + BT_DiagonalSegment_InitParams(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->trEndPtX, -1, 1, 1); + do + { + gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = (sTransitionStructPtr->trCurrentPtX + 1) | 0x7800; + } + while (!BT_DiagonalSegment_ComputePointOnSegment(sTransitionStructPtr->data, TRUE, TRUE)); + + sTransitionStructPtr->trEndPtX += 32; + if (sTransitionStructPtr->trEndPtX >= 240) + { + sTransitionStructPtr->trEndPtY = 0; + ++task->tState; + } + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2ClockwiseBlackFade_Step2(struct Task *task) +{ + s16 left, right; + vu8 finished = FALSE; + + sTransitionStructPtr->vblankDma = FALSE; + BT_DiagonalSegment_InitParams(sTransitionStructPtr->data, 120, 80, 240, sTransitionStructPtr->trEndPtY, 1, 1); + while (TRUE) + { + left = 120; + right = sTransitionStructPtr->trCurrentPtX + 1; + if (sTransitionStructPtr->trEndPtY >= 80) + { + left = sTransitionStructPtr->trCurrentPtX; + right = 240; + } + gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = right | (left << 8); + if (finished) + break; + finished = BT_DiagonalSegment_ComputePointOnSegment(sTransitionStructPtr->data, TRUE, TRUE); + } + sTransitionStructPtr->trEndPtY += 16; + if (sTransitionStructPtr->trEndPtY >= 160) + { + sTransitionStructPtr->trEndPtX = 240; + ++task->tState; + } + else + { + while (sTransitionStructPtr->trCurrentPtY < sTransitionStructPtr->trEndPtY) + gScanlineEffectRegBuffers[0][++sTransitionStructPtr->trCurrentPtY] = right | (left << 8); + } + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2ClockwiseBlackFade_Step3(struct Task *task) +{ + sTransitionStructPtr->vblankDma = FALSE; + BT_DiagonalSegment_InitParams(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->trEndPtX, 160, 1, 1); + do + { + gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = (sTransitionStructPtr->trCurrentPtX << 8) | 0xF0; + } + while (!BT_DiagonalSegment_ComputePointOnSegment(sTransitionStructPtr->data, TRUE, TRUE)); + sTransitionStructPtr->trEndPtX -= 32; + if (sTransitionStructPtr->trEndPtX <= 0) + { + sTransitionStructPtr->trEndPtY = 160; + ++task->tState; + } + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +/* + * BUG: The following 2 functions are incorrect. The animation after + * the rotation angle reaches 1.5Ï€ will not be displayed. + * + * There're 2 problems which need to be solved in order to correct the logic. + * 1. With current setup, nothing is displayed inside WIN0 and everything + * is displayed outside WIN0. Thus, if the rotation angle is > 1.5Ï€, it + * won't be able to handle the situation. + * 2. The programmer sometimes swapped the place of left and right boundary + * of WIN0 (see variables left and right), which will sometimes cause right + * to be smaller than left. In this way, garbage data will be written to WIN0H. + */ +bool8 BT_Phase2ClockwiseBlackFade_Step4(struct Task *task) +{ + s16 right, left; + u16 win0H; + vu8 finished = FALSE; + + sTransitionStructPtr->vblankDma = FALSE; + BT_DiagonalSegment_InitParams(sTransitionStructPtr->data, 120, 80, 0, sTransitionStructPtr->trEndPtY, 1, 1); + while (TRUE) + { + right = (gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY]) & 0xFF; + left = sTransitionStructPtr->trCurrentPtX; + if (sTransitionStructPtr->trEndPtY <= 80) + { + left = 120; + right = sTransitionStructPtr->trCurrentPtX; + } + win0H = right | (left << 8); + gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = win0H; + if (finished) + break; + finished = BT_DiagonalSegment_ComputePointOnSegment(sTransitionStructPtr->data, TRUE, TRUE); + } + sTransitionStructPtr->trEndPtY -= 16; + if (sTransitionStructPtr->trEndPtY <= 0) + { + sTransitionStructPtr->trEndPtX = 0; + ++task->tState; + } + else + { + while (sTransitionStructPtr->trCurrentPtY > sTransitionStructPtr->trEndPtY) + gScanlineEffectRegBuffers[0][--sTransitionStructPtr->trCurrentPtY] = right | (left << 8); + } + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2ClockwiseBlackFade_Step5(struct Task *task) +{ + s16 left, right; + + sTransitionStructPtr->vblankDma = FALSE; + BT_DiagonalSegment_InitParams(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->trEndPtX, 0, 1, 1); + do + { + left = 120; + right = sTransitionStructPtr->trCurrentPtX; + if (sTransitionStructPtr->trCurrentPtX >= 120) + { + left = 0; + right = 240; + } + gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = right | (left << 8); + } + while (!BT_DiagonalSegment_ComputePointOnSegment(sTransitionStructPtr->data, TRUE, TRUE)); + sTransitionStructPtr->trEndPtX += 32; + if (sTransitionStructPtr->trCurrentPtX > 120) + ++task->tState; + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2ClockwiseBlackFade_End(struct Task *task) +{ + DmaStop(0); + BT_BlendPalettesToBlack(); + DestroyTask(FindTaskIdByFunc(BT_Phase2ClockwiseBlackFade)); + return FALSE; +} + +void VBCB_BT_Phase2ClockwiseBlackFade(void) +{ + DmaStop(0); + BT_VBSyncOamAndPltt(); + if (sTransitionStructPtr->vblankDma) + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); + SetGpuReg(REG_OFFSET_WININ, sTransitionStructPtr->winIn); + SetGpuReg(REG_OFFSET_WINOUT, sTransitionStructPtr->winOut); + SetGpuReg(REG_OFFSET_WIN0V, sTransitionStructPtr->win0V); + SetGpuReg(REG_OFFSET_WIN0H, gScanlineEffectRegBuffers[1][0]); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); +} + +#undef trStartPtX +#undef trStartPtY +#undef trCurrentPtX +#undef trCurrentPtY +#undef trEndPtX +#undef trEndPtY + +#define tTheta data[1] +#define tAmplitude data[2] +#define tDelayForFade data[3] +#define tStartFade data[4] + +void BT_Phase2FullScreenWave(u8 taskId) +{ + while (sBT_Phase2FullScreenWaveFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2FullScreenWave_Init(struct Task *task) +{ + u8 i; + + BT_InitCtrlBlk(); + ScanlineEffect_Clear(); + for (i = 0; i < 160; ++i) + gScanlineEffectRegBuffers[1][i] = sTransitionStructPtr->bg123VOfs; + SetVBlankCallback(VBCB_BT_Phase2FullScreenWave); + SetHBlankCallback(HBCB_BT_Phase2FullScreenWave); + EnableInterrupts(INTR_FLAG_HBLANK); + ++task->tState; + return TRUE; +} + +bool8 BT_Phase2FullScreenWave_UpdateWave(struct Task *task) +{ + u8 i; + s16 amplitude; + u16 theta, frequency; + + sTransitionStructPtr->vblankDma = FALSE; + amplitude = task->tAmplitude >> 8; + theta = task->tTheta; + frequency = 384; + task->tTheta += 0x400; + if (task->tAmplitude <= 0x1FFF) + task->tAmplitude += 384; + for (i = 0; i < 160; ++i, theta += frequency) + { + s16 var = theta >> 8; + #ifndef NONMATCHING + asm(""); + #endif + gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->bg123VOfs + Sin(var, amplitude); + } + if (++task->tDelayForFade == 41) + { + ++task->tStartFade; + BeginNormalPaletteFade(0xFFFFFFFF, -8, 0, 0x10, RGB_BLACK); + } + if (task->tStartFade && !gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(BT_Phase2FullScreenWave)); + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +void VBCB_BT_Phase2FullScreenWave(void) +{ + BT_VBSyncOamAndPltt(); + if (sTransitionStructPtr->vblankDma) + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); +} + +void HBCB_BT_Phase2FullScreenWave(void) +{ + u16 offset = gScanlineEffectRegBuffers[1][REG_VCOUNT]; + REG_BG1VOFS = offset; + REG_BG2VOFS = offset; + REG_BG3VOFS = offset; +} + +#undef tTheta +#undef tAmplitude +#undef tDelayForFade +#undef tStartFade + +#define tOffset data[1] +#define tTheta data[2] + +void BT_Phase2BlackWaveToRight(u8 taskId) +{ + while (sBT_Phase2BlackWaveToRightFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2BlackWaveToRight_Init(struct Task *task) +{ + u8 i; + + BT_InitCtrlBlk(); + ScanlineEffect_Clear(); + sTransitionStructPtr->winIn = 0x3F; + sTransitionStructPtr->winOut = 0; + sTransitionStructPtr->win0H = 240; + sTransitionStructPtr->win0V = 160; + for (i = 0; i < 160; ++i) + gScanlineEffectRegBuffers[1][i] = 242; + SetVBlankCallback(VBCB_BT_Phase2BlackWaveToRight); + ++task->tState; + return TRUE; +} + +bool8 BT_Phase2BlackWaveToRight_UpdateWave(struct Task *task) +{ + u8 i, theta; + u16* toStore; + bool8 nextFunc; + + sTransitionStructPtr->vblankDma = FALSE; + toStore = gScanlineEffectRegBuffers[0]; + theta = task->tTheta; + task->tTheta += 16; + task->tOffset += 8; + for (i = 0, nextFunc = TRUE; i < 160; ++i, theta += 4, ++toStore) + { + s16 left = task->tOffset + Sin(theta, 40); + if (left < 0) + left = 0; + if (left > 240) + left = 240; + *toStore = (left << 8) | (0xF1); + if (left < 240) + nextFunc = FALSE; + } + if (nextFunc) + ++task->tState; + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2BlackWaveToRight_End(struct Task *task) +{ + DmaStop(0); + BT_BlendPalettesToBlack(); + DestroyTask(FindTaskIdByFunc(BT_Phase2BlackWaveToRight)); + return FALSE; +} + +void VBCB_BT_Phase2BlackWaveToRight(void) +{ + DmaStop(0); + BT_VBSyncOamAndPltt(); + if (sTransitionStructPtr->vblankDma) + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); + SetGpuReg(REG_OFFSET_WININ, sTransitionStructPtr->winIn); + SetGpuReg(REG_OFFSET_WINOUT, sTransitionStructPtr->winOut); + SetGpuReg(REG_OFFSET_WIN0V, sTransitionStructPtr->win0V); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); +} + +#undef tOffset +#undef tTheta + +void BT_Phase2AntiClockwiseSpiral(u8 taskId) +{ + while (sBT_Phase2AntiClockwiseSpiralFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + From a348095998751f50042cfa3892ed91b37b8e11a8 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 25 Jul 2019 14:15:41 +0800 Subject: [PATCH 23/38] matched all easy functions --- asm/battle_transition.s | 4559 ----------------- .../grid_square_tilemap.bin | Bin 480 -> 0 bytes .../grid_square_tileset.png | Bin 0 -> 121 bytes include/field_camera.h | 1 + include/field_effect.h | 1 + include/trainer_pokemon_sprites.h | 7 +- ld_script.txt | 1 - src/battle_transition.c | 2118 +++++++- 8 files changed, 2055 insertions(+), 4632 deletions(-) delete mode 100644 asm/battle_transition.s delete mode 100644 graphics/battle_transitions/grid_square_tilemap.bin create mode 100644 graphics/battle_transitions/grid_square_tileset.png diff --git a/asm/battle_transition.s b/asm/battle_transition.s deleted file mode 100644 index 64b5686db..000000000 --- a/asm/battle_transition.s +++ /dev/null @@ -1,4559 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D1F64 -sub_80D1F64: @ 80D1F64 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - lsls r1, 16 - lsrs r5, r1, 16 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x4] - movs r0, 0 - mov r10, r0 - movs r1, 0xA0 - lsls r1, 17 - ldr r4, _080D1FD8 @ =gScanlineEffectRegBuffers + 0x780 - ldr r3, _080D1FDC @ =0x000003bf - movs r2, 0x78 -_080D1F8E: - asrs r0, r1, 16 - lsls r1, r0, 1 - adds r1, r4 - strh r2, [r1] - adds r0, 0x1 - lsls r1, r0, 16 - asrs r0, r1, 16 - cmp r0, r3 - ble _080D1F8E - lsls r0, r5, 16 - movs r1, 0 - mov r9, r1 - str r0, [sp, 0xC] - cmp r0, 0 - bgt _080D1FAE - b _080D221A -_080D1FAE: - mov r3, r10 - lsrs r2, r3, 3 - ldr r4, [sp] - adds r0, r2, r4 - lsls r0, 16 - lsrs r3, r0, 16 - mov r0, r10 - adds r0, 0x1 - asrs r1, r0, 3 - str r0, [sp, 0x8] - cmp r2, r1 - beq _080D1FE0 - lsls r1, r3, 16 - movs r6, 0x80 - lsls r6, 9 - adds r0, r1, r6 - lsrs r0, 16 - mov r8, r0 - adds r0, r1, 0 - b _080D1FE6 - .align 2, 0 -_080D1FD8: .4byte gScanlineEffectRegBuffers + 0x780 -_080D1FDC: .4byte 0x000003bf -_080D1FE0: - lsls r0, r3, 16 - lsrs r1, r0, 16 - mov r8, r1 -_080D1FE6: - asrs r4, r0, 16 - mov r0, r10 - adds r1, r4, 0 - bl Sin - movs r5, 0x50 - subs r0, r5, r0 - lsls r0, 16 - lsrs r2, r0, 16 - mov r0, r10 - adds r1, r4, 0 - str r2, [sp, 0x10] - bl Cos - adds r0, 0x78 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r6, [sp, 0x8] - mov r3, r8 - lsls r4, r3, 16 - asrs r4, 16 - adds r0, r6, 0 - adds r1, r4, 0 - bl Sin - subs r5, r0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - adds r1, r4, 0 - bl Cos - adds r0, 0x78 - lsls r0, 16 - lsrs r3, r0, 16 - ldr r2, [sp, 0x10] - lsls r0, r2, 16 - asrs r1, r0, 16 - cmp r1, 0 - bge _080D203E - lsls r0, r5, 16 - cmp r0, 0 - bge _080D203E - b _080D21F8 -_080D203E: - cmp r1, 0x9F - ble _080D204C - lsls r0, r5, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _080D204C - b _080D21F8 -_080D204C: - cmp r1, 0 - bge _080D2052 - movs r2, 0 -_080D2052: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _080D205C - movs r2, 0x9F -_080D205C: - lsls r0, r7, 16 - cmp r0, 0 - bge _080D2064 - movs r7, 0 -_080D2064: - lsls r0, r7, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080D206E - movs r7, 0xFF -_080D206E: - lsls r0, r5, 16 - cmp r0, 0 - bge _080D2076 - movs r5, 0 -_080D2076: - lsls r0, r5, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _080D2080 - movs r5, 0x9F -_080D2080: - lsls r0, r3, 16 - cmp r0, 0 - bge _080D2088 - movs r3, 0 -_080D2088: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080D2092 - movs r3, 0xFF -_080D2092: - lsls r0, r5, 16 - asrs r0, 16 - lsls r1, r2, 16 - asrs r2, r1, 16 - subs r0, r2 - lsls r0, 16 - lsrs r5, r0, 16 - mov r0, r10 - subs r0, 0x40 - lsls r0, 24 - adds r6, r1, 0 - cmp r0, 0 - blt _080D2158 - movs r4, 0xA0 - lsls r4, 1 - adds r0, r2, r4 - lsls r0, 1 - ldr r1, _080D20E8 @ =gScanlineEffectRegBuffers + 0x780 - adds r0, r1 - strh r7, [r0] - lsls r0, r5, 16 - adds r4, r0, 0 - cmp r4, 0 - bne _080D20C4 - b _080D21F8 -_080D20C4: - lsls r0, r3, 16 - asrs r0, 16 - lsls r1, r7, 16 - asrs r2, r1, 16 - subs r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - asrs r0, 16 - mov r8, r0 - movs r0, 0x1 - negs r0, r0 - cmp r8, r0 - bge _080D20EC - cmp r2, 0x1 - ble _080D20EC - subs r0, r2, 0x1 - b _080D20FC - .align 2, 0 -_080D20E8: .4byte gScanlineEffectRegBuffers + 0x780 -_080D20EC: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D2100 - asrs r0, r1, 16 - cmp r0, 0xFE - bgt _080D2100 - adds r0, 0x1 -_080D20FC: - lsls r0, 16 - lsrs r7, r0, 16 -_080D2100: - adds r0, r4, 0 - asrs r1, r0, 16 - cmp r1, 0 - bge _080D212C - asrs r2, r6, 16 - ldr r3, _080D2128 @ =gScanlineEffectRegBuffers + 0x780 -_080D210C: - asrs r1, r0, 16 - adds r0, r2, r1 - movs r4, 0xA0 - lsls r4, 1 - adds r0, r4 - lsls r0, 1 - adds r0, r3 - strh r7, [r0] - adds r1, 0x1 - lsls r0, r1, 16 - cmp r0, 0 - blt _080D210C - b _080D21F8 - .align 2, 0 -_080D2128: .4byte gScanlineEffectRegBuffers + 0x780 -_080D212C: - cmp r1, 0 - ble _080D21F8 - asrs r2, r6, 16 - ldr r3, _080D2154 @ =gScanlineEffectRegBuffers + 0x780 -_080D2134: - lsls r1, r5, 16 - asrs r1, 16 - adds r0, r2, r1 - movs r6, 0xA0 - lsls r6, 1 - adds r0, r6 - lsls r0, 1 - adds r0, r3 - strh r7, [r0] - subs r1, 0x1 - lsls r1, 16 - lsrs r5, r1, 16 - cmp r1, 0 - bgt _080D2134 - b _080D21F8 - .align 2, 0 -_080D2154: .4byte gScanlineEffectRegBuffers + 0x780 -_080D2158: - movs r1, 0xF0 - lsls r1, 1 - adds r0, r2, r1 - lsls r0, 1 - ldr r2, _080D2190 @ =gScanlineEffectRegBuffers + 0x780 - adds r0, r2 - strh r7, [r0] - lsls r0, r5, 16 - adds r4, r0, 0 - cmp r4, 0 - beq _080D21F8 - lsls r0, r3, 16 - asrs r0, 16 - lsls r1, r7, 16 - asrs r2, r1, 16 - subs r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - asrs r0, 16 - mov r8, r0 - movs r0, 0x1 - negs r0, r0 - cmp r8, r0 - bge _080D2194 - cmp r2, 0x1 - ble _080D2194 - subs r0, r2, 0x1 - b _080D21A4 - .align 2, 0 -_080D2190: .4byte gScanlineEffectRegBuffers + 0x780 -_080D2194: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D21A8 - asrs r0, r1, 16 - cmp r0, 0xFE - bgt _080D21A8 - adds r0, 0x1 -_080D21A4: - lsls r0, 16 - lsrs r7, r0, 16 -_080D21A8: - adds r0, r4, 0 - asrs r1, r0, 16 - cmp r1, 0 - bge _080D21D4 - asrs r2, r6, 16 - ldr r3, _080D21D0 @ =gScanlineEffectRegBuffers + 0x780 -_080D21B4: - asrs r1, r0, 16 - adds r0, r2, r1 - movs r4, 0xF0 - lsls r4, 1 - adds r0, r4 - lsls r0, 1 - adds r0, r3 - strh r7, [r0] - adds r1, 0x1 - lsls r0, r1, 16 - cmp r0, 0 - blt _080D21B4 - b _080D21F8 - .align 2, 0 -_080D21D0: .4byte gScanlineEffectRegBuffers + 0x780 -_080D21D4: - cmp r1, 0 - ble _080D21F8 - asrs r2, r6, 16 - ldr r3, _080D2270 @ =gScanlineEffectRegBuffers + 0x780 -_080D21DC: - lsls r1, r5, 16 - asrs r1, 16 - adds r0, r2, r1 - movs r6, 0xF0 - lsls r6, 1 - adds r0, r6 - lsls r0, 1 - adds r0, r3 - strh r7, [r0] - subs r1, 0x1 - lsls r1, 16 - lsrs r5, r1, 16 - cmp r1, 0 - bgt _080D21DC -_080D21F8: - mov r1, r9 - lsls r0, r1, 16 - movs r2, 0x80 - lsls r2, 9 - adds r0, r2 - ldr r3, [sp, 0x8] - lsls r1, r3, 24 - lsrs r1, 24 - mov r10, r1 - lsrs r4, r0, 16 - mov r9, r4 - asrs r0, 16 - ldr r6, [sp, 0xC] - asrs r1, r6, 12 - cmp r0, r1 - bge _080D221A - b _080D1FAE -_080D221A: - ldr r0, [sp, 0x4] - cmp r0, 0 - beq _080D222C - movs r0, 0xC0 - lsls r0, 10 - ldr r1, [sp, 0xC] - ands r0, r1 - cmp r0, 0 - bne _080D2274 -_080D222C: - movs r2, 0 - mov r9, r2 - ldr r4, _080D2270 @ =gScanlineEffectRegBuffers + 0x780 - movs r5, 0xA0 - lsls r5, 1 -_080D2236: - mov r3, r9 - lsls r1, r3, 16 - asrs r1, 16 - lsls r3, r1, 1 - ldr r6, [sp, 0x4] - adds r3, r6 - lsls r3, 1 - adds r3, r4 - adds r0, r1, r5 - lsls r0, 1 - adds r0, r4 - ldrh r2, [r0] - lsls r2, 8 - movs r6, 0xF0 - lsls r6, 1 - adds r0, r1, r6 - lsls r0, 1 - adds r0, r4 - ldrh r0, [r0] - orrs r2, r0 - strh r2, [r3] - adds r1, 0x1 - lsls r1, 16 - lsrs r0, r1, 16 - mov r9, r0 - asrs r1, 16 - cmp r1, 0x9F - ble _080D2236 - b _080D251C - .align 2, 0 -_080D2270: .4byte gScanlineEffectRegBuffers + 0x780 -_080D2274: - ldr r1, [sp, 0xC] - asrs r4, r1, 16 - lsls r0, r4, 20 - asrs r0, 16 - lsls r5, r4, 1 - ldr r2, [sp] - lsls r1, r2, 16 - asrs r1, 16 - adds r1, r5 - lsls r1, 16 - asrs r1, 16 - bl Sin - lsls r0, 16 - lsrs r2, r0, 16 - cmp r4, 0 - bge _080D2298 - adds r4, 0x3 -_080D2298: - asrs r0, r4, 2 - cmp r0, 0x1 - beq _080D234C - cmp r0, 0x1 - bgt _080D22A8 - cmp r0, 0 - beq _080D22B6 - b _080D24DA -_080D22A8: - cmp r0, 0x2 - bne _080D22AE - b _080D23CC -_080D22AE: - cmp r0, 0x3 - bne _080D22B4 - b _080D2466 -_080D22B4: - b _080D24DA -_080D22B6: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x50 - ble _080D22C0 - movs r2, 0x50 -_080D22C0: - mov r9, r2 - lsls r1, r2, 16 - cmp r1, 0 - bgt _080D22CA - b _080D24DA -_080D22CA: - ldr r0, _080D2320 @ =gUnknown_83FA444 - adds r0, r5, r0 - movs r3, 0 - ldrsh r4, [r0, r3] - ldr r6, _080D2324 @ =gScanlineEffectRegBuffers + 0x780 -_080D22D4: - ldr r0, _080D2328 @ =sTransitionStructPtr - ldr r5, [r0] - asrs r2, r1, 16 - adds r0, r2, 0 - muls r0, r4 - asrs r0, 8 - adds r0, 0x78 - lsls r1, r0, 16 - lsrs r7, r1, 16 - strh r0, [r5, 0x28] - lsls r1, r7, 16 - lsrs r0, r1, 16 - cmp r0, 0xFF - bhi _080D2334 - movs r3, 0xC8 - lsls r3, 1 - adds r0, r3, 0 - subs r0, r2 - strh r0, [r5, 0x14] - adds r0, r3, 0 - subs r0, r2 - lsls r0, 1 - adds r3, r0, r6 - ldrh r0, [r3] - strh r0, [r5, 0x38] - movs r0, 0x8C - lsls r0, 2 - subs r0, r2 - lsls r0, 1 - adds r2, r0, r6 - ldrh r0, [r2] - asrs r1, 16 - cmp r0, r1 - bge _080D232C - movs r0, 0x78 - strh r0, [r2] - b _080D2334 - .align 2, 0 -_080D2320: .4byte gUnknown_83FA444 -_080D2324: .4byte gScanlineEffectRegBuffers + 0x780 -_080D2328: .4byte sTransitionStructPtr -_080D232C: - ldrh r0, [r3] - cmp r0, r1 - bge _080D2334 - strh r7, [r3] -_080D2334: - mov r1, r9 - lsls r0, r1, 16 - ldr r2, _080D2348 @ =0xffff0000 - adds r0, r2 - lsrs r0, 16 - mov r9, r0 - lsls r1, r0, 16 - cmp r1, 0 - bgt _080D22D4 - b _080D24DA - .align 2, 0 -_080D2348: .4byte 0xffff0000 -_080D234C: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x50 - ble _080D2356 - movs r2, 0x50 -_080D2356: - mov r9, r2 - lsls r1, r2, 16 - cmp r1, 0 - bgt _080D2360 - b _080D24DA -_080D2360: - ldr r0, _080D23BC @ =gUnknown_83FA444 - adds r0, r5, r0 - movs r3, 0 - ldrsh r4, [r0, r3] - ldr r6, _080D23C0 @ =gScanlineEffectRegBuffers + 0x780 -_080D236A: - ldr r0, _080D23C4 @ =sTransitionStructPtr - ldr r3, [r0] - asrs r2, r1, 16 - adds r0, r2, 0 - muls r0, r4 - asrs r0, 8 - adds r0, 0x78 - lsls r1, r0, 16 - lsrs r7, r1, 16 - strh r0, [r3, 0x28] - lsls r5, r7, 16 - lsrs r0, r5, 16 - cmp r0, 0xFF - bhi _080D23A6 - movs r1, 0xC8 - lsls r1, 1 - adds r0, r1, 0 - subs r0, r2 - strh r0, [r3, 0x14] - adds r0, r1, 0 - subs r0, r2 - lsls r0, 1 - adds r2, r0, r6 - ldrh r0, [r2] - strh r0, [r3, 0x38] - ldrh r1, [r2] - asrs r0, r5, 16 - cmp r1, r0 - bge _080D23A6 - strh r7, [r2] -_080D23A6: - mov r2, r9 - lsls r0, r2, 16 - ldr r3, _080D23C8 @ =0xffff0000 - adds r0, r3 - lsrs r0, 16 - mov r9, r0 - lsls r1, r0, 16 - cmp r1, 0 - bgt _080D236A - b _080D24DA - .align 2, 0 -_080D23BC: .4byte gUnknown_83FA444 -_080D23C0: .4byte gScanlineEffectRegBuffers + 0x780 -_080D23C4: .4byte sTransitionStructPtr -_080D23C8: .4byte 0xffff0000 -_080D23CC: - lsls r0, r2, 16 - asrs r0, 16 - movs r1, 0x4F - negs r1, r1 - cmp r0, r1 - bge _080D23DA - ldr r2, _080D2438 @ =0x0000ffb1 -_080D23DA: - mov r9, r2 - lsls r1, r2, 16 - cmp r1, 0 - bgt _080D24DA - ldr r0, _080D243C @ =gUnknown_83FA444 - adds r0, r5, r0 - movs r6, 0 - ldrsh r4, [r0, r6] - ldr r6, _080D2440 @ =gScanlineEffectRegBuffers + 0x780 -_080D23EC: - ldr r0, _080D2444 @ =sTransitionStructPtr - ldr r5, [r0] - asrs r2, r1, 16 - adds r0, r2, 0 - muls r0, r4 - asrs r0, 8 - adds r0, 0x78 - lsls r1, r0, 16 - lsrs r7, r1, 16 - strh r0, [r5, 0x28] - lsls r1, r7, 16 - lsrs r0, r1, 16 - cmp r0, 0xFF - bhi _080D2450 - movs r3, 0x8C - lsls r3, 2 - adds r0, r3, 0 - subs r0, r2 - strh r0, [r5, 0x14] - adds r0, r3, 0 - subs r0, r2 - lsls r0, 1 - adds r3, r0, r6 - ldrh r0, [r3] - strh r0, [r5, 0x38] - movs r0, 0xC8 - lsls r0, 1 - subs r0, r2 - lsls r0, 1 - adds r2, r0, r6 - ldrh r0, [r2] - asrs r1, 16 - cmp r0, r1 - blt _080D2448 - movs r0, 0x78 - strh r0, [r2] - b _080D2450 - .align 2, 0 -_080D2438: .4byte 0x0000ffb1 -_080D243C: .4byte gUnknown_83FA444 -_080D2440: .4byte gScanlineEffectRegBuffers + 0x780 -_080D2444: .4byte sTransitionStructPtr -_080D2448: - ldrh r0, [r3] - cmp r0, r1 - ble _080D2450 - strh r7, [r3] -_080D2450: - mov r1, r9 - lsls r0, r1, 16 - movs r2, 0x80 - lsls r2, 9 - adds r0, r2 - lsrs r0, 16 - mov r9, r0 - lsls r1, r0, 16 - cmp r1, 0 - ble _080D23EC - b _080D24DA -_080D2466: - lsls r0, r2, 16 - asrs r0, 16 - movs r1, 0x4F - negs r1, r1 - cmp r0, r1 - bge _080D2474 - ldr r2, _080D252C @ =0x0000ffb1 -_080D2474: - mov r9, r2 - lsls r1, r2, 16 - cmp r1, 0 - bgt _080D24DA - ldr r0, _080D2530 @ =gUnknown_83FA444 - adds r0, r5, r0 - movs r3, 0 - ldrsh r4, [r0, r3] - ldr r6, _080D2534 @ =sTransitionStructPtr - mov r8, r6 - ldr r6, _080D2538 @ =gScanlineEffectRegBuffers + 0x780 -_080D248A: - mov r0, r8 - ldr r3, [r0] - asrs r2, r1, 16 - adds r0, r2, 0 - muls r0, r4 - asrs r0, 8 - adds r0, 0x78 - lsls r1, r0, 16 - lsrs r7, r1, 16 - strh r0, [r3, 0x28] - lsls r5, r7, 16 - lsrs r0, r5, 16 - cmp r0, 0xFF - bhi _080D24C6 - movs r1, 0x8C - lsls r1, 2 - adds r0, r1, 0 - subs r0, r2 - strh r0, [r3, 0x14] - adds r0, r1, 0 - subs r0, r2 - lsls r0, 1 - adds r2, r0, r6 - ldrh r0, [r2] - strh r0, [r3, 0x38] - ldrh r1, [r2] - asrs r0, r5, 16 - cmp r1, r0 - ble _080D24C6 - strh r7, [r2] -_080D24C6: - mov r2, r9 - lsls r0, r2, 16 - movs r3, 0x80 - lsls r3, 9 - adds r0, r3 - lsrs r0, 16 - mov r9, r0 - lsls r1, r0, 16 - cmp r1, 0 - ble _080D248A -_080D24DA: - movs r4, 0 - mov r9, r4 - ldr r4, _080D2538 @ =gScanlineEffectRegBuffers + 0x780 - movs r5, 0xA0 - lsls r5, 1 -_080D24E4: - mov r6, r9 - lsls r1, r6, 16 - asrs r1, 16 - lsls r3, r1, 1 - ldr r0, [sp, 0x4] - adds r3, r0 - lsls r3, 1 - adds r3, r4 - adds r0, r1, r5 - lsls r0, 1 - adds r0, r4 - ldrh r2, [r0] - lsls r2, 8 - movs r6, 0xF0 - lsls r6, 1 - adds r0, r1, r6 - lsls r0, 1 - adds r0, r4 - ldrh r0, [r0] - orrs r2, r0 - strh r2, [r3] - adds r1, 0x1 - lsls r1, 16 - lsrs r0, r1, 16 - mov r9, r0 - asrs r1, 16 - cmp r1, 0x9F - ble _080D24E4 -_080D251C: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D252C: .4byte 0x0000ffb1 -_080D2530: .4byte gUnknown_83FA444 -_080D2534: .4byte sTransitionStructPtr -_080D2538: .4byte gScanlineEffectRegBuffers + 0x780 - thumb_func_end sub_80D1F64 - - thumb_func_start BT_Phase2AntiClockwiseSpiral_Init -BT_Phase2AntiClockwiseSpiral_Init: @ 80D253C - push {r4,r5,lr} - adds r5, r0, 0 - bl BT_InitCtrlBlk - bl ScanlineEffect_Clear - ldr r0, _080D25A0 @ =sTransitionStructPtr - ldr r1, [r0] - movs r4, 0 - strh r4, [r1, 0x2] - movs r0, 0x3F - strh r0, [r1, 0x4] - ldr r0, _080D25A4 @ =0x00007878 - strh r0, [r1, 0x6] - ldr r0, _080D25A8 @ =0x00003070 - strh r0, [r1, 0x8] - ldr r0, _080D25AC @ =0x00001090 - strh r0, [r1, 0xC] - strh r4, [r1, 0x20] - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl sub_80D1F64 - movs r0, 0 - movs r1, 0 - movs r2, 0x1 - bl sub_80D1F64 - ldr r1, _080D25B0 @ =0x040000d4 - ldr r0, _080D25B4 @ =gScanlineEffectRegBuffers + 0x780 - str r0, [r1] - ldr r2, _080D25B8 @ =0xfffff880 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _080D25BC @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r0, _080D25C0 @ =VBCB_BT_Phase2AntiClockwiseBlackFade - bl SetVBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - strh r4, [r5, 0xA] - strh r4, [r5, 0xC] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D25A0: .4byte sTransitionStructPtr -_080D25A4: .4byte 0x00007878 -_080D25A8: .4byte 0x00003070 -_080D25AC: .4byte 0x00001090 -_080D25B0: .4byte 0x040000d4 -_080D25B4: .4byte gScanlineEffectRegBuffers + 0x780 -_080D25B8: .4byte 0xfffff880 -_080D25BC: .4byte 0x80000140 -_080D25C0: .4byte VBCB_BT_Phase2AntiClockwiseBlackFade - thumb_func_end BT_Phase2AntiClockwiseSpiral_Init - - thumb_func_start BT_Phase2AntiClockwiseSpiral_Update -BT_Phase2AntiClockwiseSpiral_Update: @ 80D25C4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - movs r1, 0xC - ldrsh r0, [r4, r1] - movs r2, 0xA - ldrsh r1, [r4, r2] - movs r2, 0x1 - bl sub_80D1F64 - ldr r5, _080D2694 @ =sTransitionStructPtr - ldr r1, [r5] - ldrb r0, [r1] - movs r2, 0x1 - mov r8, r2 - ldrb r2, [r1] - movs r7, 0 - mov r2, r8 - orrs r0, r2 - strb r0, [r1] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x11 - bne _080D2686 - movs r1, 0xC - ldrsh r0, [r4, r1] - movs r1, 0x10 - movs r2, 0 - bl sub_80D1F64 - ldrh r1, [r4, 0xC] - movs r6, 0x30 - subs r0, r6, r1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r0, 0 - bge _080D2618 - movs r3, 0 -_080D2618: - adds r0, r1, 0 - adds r0, 0x70 - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080D2628 - movs r2, 0xFF -_080D2628: - ldr r0, [r5] - orrs r2, r3 - strh r2, [r0, 0x8] - ldrh r0, [r4, 0xC] - adds r0, 0x20 - strh r0, [r4, 0xC] - movs r0, 0 - strh r0, [r4, 0xA] - movs r2, 0xC - ldrsh r0, [r4, r2] - movs r1, 0 - movs r2, 0x1 - bl sub_80D1F64 - ldrh r1, [r4, 0xC] - subs r0, r6, r1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r0, 0 - bge _080D2652 - movs r3, 0 -_080D2652: - adds r0, r1, 0 - adds r0, 0x70 - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080D2662 - movs r2, 0xFF -_080D2662: - ldr r1, [r5] - orrs r2, r3 - strh r2, [r1, 0xC] - ldrb r0, [r1] - mov r2, r8 - orrs r0, r2 - ldrb r2, [r1] - orrs r0, r7 - strb r0, [r1] - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x9F - ble _080D2686 - ldr r1, [r5] - movs r0, 0x1 - strh r0, [r1, 0x20] - bl BT_BlendPalettesToBlack -_080D2686: - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D2694: .4byte sTransitionStructPtr - thumb_func_end BT_Phase2AntiClockwiseSpiral_Update - - thumb_func_start VBCB_BT_Phase2AntiClockwiseBlackFade -VBCB_BT_Phase2AntiClockwiseBlackFade: @ 80D2698 - push {r4-r6,lr} - ldr r5, _080D26D0 @ =0x040000b0 - ldrh r1, [r5, 0xA] - ldr r0, _080D26D4 @ =0x0000c5ff - ands r0, r1 - strh r0, [r5, 0xA] - ldrh r1, [r5, 0xA] - ldr r0, _080D26D8 @ =0x00007fff - ands r0, r1 - strh r0, [r5, 0xA] - ldrh r0, [r5, 0xA] - bl BT_VBSyncOamAndPltt - ldr r4, _080D26DC @ =sTransitionStructPtr - ldr r2, [r4] - movs r0, 0x20 - ldrsh r3, [r2, r0] - cmp r3, 0 - beq _080D26E4 - ldr r0, _080D26E0 @ =BT_Phase2AntiClockwiseSpiral - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - b _080D2746 - .align 2, 0 -_080D26D0: .4byte 0x040000b0 -_080D26D4: .4byte 0x0000c5ff -_080D26D8: .4byte 0x00007fff -_080D26DC: .4byte sTransitionStructPtr -_080D26E0: .4byte BT_Phase2AntiClockwiseSpiral -_080D26E4: - ldrb r0, [r2] - cmp r0, 0 - beq _080D2700 - ldr r1, _080D274C @ =0x040000d4 - ldr r0, _080D2750 @ =gScanlineEffectRegBuffers + 0x780 - str r0, [r1] - ldr r6, _080D2754 @ =0xfffff880 - adds r0, r6 - str r0, [r1, 0x4] - ldr r0, _080D2758 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldrb r0, [r2] - strb r3, [r2] -_080D2700: - ldr r0, [r4] - ldrh r1, [r0, 0x2] - movs r0, 0x48 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x4] - movs r0, 0x4A - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x8] - movs r0, 0x44 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0xC] - movs r0, 0x46 - bl SetGpuReg - ldr r4, _080D275C @ =gScanlineEffectRegBuffers - ldrh r1, [r4] - movs r0, 0x40 - bl SetGpuReg - ldrh r1, [r4, 0x2] - movs r0, 0x42 - bl SetGpuReg - str r4, [r5] - ldr r0, _080D2760 @ =0x04000040 - str r0, [r5, 0x4] - ldr r0, _080D2764 @ =0xa6400001 - str r0, [r5, 0x8] - ldr r0, [r5, 0x8] -_080D2746: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D274C: .4byte 0x040000d4 -_080D2750: .4byte gScanlineEffectRegBuffers + 0x780 -_080D2754: .4byte 0xfffff880 -_080D2758: .4byte 0x80000140 -_080D275C: .4byte gScanlineEffectRegBuffers -_080D2760: .4byte 0x04000040 -_080D2764: .4byte 0xa6400001 - thumb_func_end VBCB_BT_Phase2AntiClockwiseBlackFade - - thumb_func_start BT_Phase2StartLoreleiMugshot -BT_Phase2StartLoreleiMugshot: @ 80D2768 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D2784 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - strh r2, [r1, 0x26] - bl BT_Phase2Mugshot - pop {r0} - bx r0 - .align 2, 0 -_080D2784: .4byte gTasks - thumb_func_end BT_Phase2StartLoreleiMugshot - - thumb_func_start BT_Phase2StartBrunoMugshot -BT_Phase2StartBrunoMugshot: @ 80D2788 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D27A4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x1 - strh r2, [r1, 0x26] - bl BT_Phase2Mugshot - pop {r0} - bx r0 - .align 2, 0 -_080D27A4: .4byte gTasks - thumb_func_end BT_Phase2StartBrunoMugshot - - thumb_func_start BT_Phase2StartAgathaMugshot -BT_Phase2StartAgathaMugshot: @ 80D27A8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D27C4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x2 - strh r2, [r1, 0x26] - bl BT_Phase2Mugshot - pop {r0} - bx r0 - .align 2, 0 -_080D27C4: .4byte gTasks - thumb_func_end BT_Phase2StartAgathaMugshot - - thumb_func_start BT_Phase2StartLanceMugshot -BT_Phase2StartLanceMugshot: @ 80D27C8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D27E4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x3 - strh r2, [r1, 0x26] - bl BT_Phase2Mugshot - pop {r0} - bx r0 - .align 2, 0 -_080D27E4: .4byte gTasks - thumb_func_end BT_Phase2StartLanceMugshot - - thumb_func_start BT_Phase2StartBlueMugshot -BT_Phase2StartBlueMugshot: @ 80D27E8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D2804 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x4 - strh r2, [r1, 0x26] - bl BT_Phase2Mugshot - pop {r0} - bx r0 - .align 2, 0 -_080D2804: .4byte gTasks - thumb_func_end BT_Phase2StartBlueMugshot - - thumb_func_start BT_Phase2Mugshot -BT_Phase2Mugshot: @ 80D2808 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D2838 @ =sBT_Phase2MugshotFuncs - ldr r2, _080D283C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D281A: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D281A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2838: .4byte sBT_Phase2MugshotFuncs -_080D283C: .4byte gTasks - thumb_func_end BT_Phase2Mugshot - - thumb_func_start BT_Phase2Mugshot_Init -BT_Phase2Mugshot_Init: @ 80D2840 - push {r4,lr} - adds r4, r0, 0 - bl BT_InitCtrlBlk - bl ScanlineEffect_Clear - adds r0, r4, 0 - bl BT_Phase2Mugshots_CreateSprites - movs r0, 0 - strh r0, [r4, 0xA] - movs r0, 0x1 - strh r0, [r4, 0xC] - movs r0, 0xEF - strh r0, [r4, 0xE] - ldr r0, _080D2898 @ =sTransitionStructPtr - ldr r1, [r0] - movs r0, 0x3F - strh r0, [r1, 0x2] - movs r0, 0x3E - strh r0, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r3, _080D289C @ =gScanlineEffectRegBuffers + 0x780 - ldr r2, _080D28A0 @ =0x0000f0f1 -_080D2874: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x9F - bls _080D2874 - ldr r0, _080D28A4 @ =VBCB_BT_Phase2Mugshot1_Slide - bl SetVBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D2898: .4byte sTransitionStructPtr -_080D289C: .4byte gScanlineEffectRegBuffers + 0x780 -_080D28A0: .4byte 0x0000f0f1 -_080D28A4: .4byte VBCB_BT_Phase2Mugshot1_Slide - thumb_func_end BT_Phase2Mugshot_Init - - thumb_func_start BT_Phase2Mugshot_LoadGfx -BT_Phase2Mugshot_LoadGfx: @ 80D28A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - mov r8, r0 - ldr r6, _080D2950 @ =sVsBarTilemap - add r1, sp, 0x4 - mov r0, sp - bl BT_GetBg0TilemapAndTilesetBase - ldr r0, _080D2954 @ =sVsBarTileset - ldr r1, [sp, 0x4] - movs r2, 0xF0 - bl CpuSet - ldr r1, _080D2958 @ =sVsBarOpponentPalettes - mov r2, r8 - movs r3, 0x26 - ldrsh r0, [r2, r3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _080D295C @ =sVsBarPlayerPalettes - ldr r0, _080D2960 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xFA - movs r2, 0xC - bl LoadPalette - movs r1, 0 - ldr r5, [sp] - movs r0, 0xF0 - lsls r0, 8 - adds r7, r0, 0 -_080D28FC: - movs r0, 0 - lsls r3, r1, 16 - asrs r4, r3, 11 -_080D2902: - lsls r2, r0, 16 - asrs r2, 16 - adds r1, r4, r2 - lsls r1, 1 - adds r1, r5 - ldrh r0, [r6] - orrs r0, r7 - strh r0, [r1] - adds r2, 0x1 - lsls r2, 16 - adds r6, 0x2 - lsrs r0, r2, 16 - asrs r2, 16 - cmp r2, 0x1F - ble _080D2902 - movs r1, 0x80 - lsls r1, 9 - adds r0, r3, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080D28FC - movs r0, 0x2 - bl EnableInterrupts - ldr r0, _080D2964 @ =HBCB_BT_Phase2Mugshot - bl SetHBlankCallback - mov r2, r8 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - movs r0, 0 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D2950: .4byte sVsBarTilemap -_080D2954: .4byte sVsBarTileset -_080D2958: .4byte sVsBarOpponentPalettes -_080D295C: .4byte sVsBarPlayerPalettes -_080D2960: .4byte gSaveBlock2Ptr -_080D2964: .4byte HBCB_BT_Phase2Mugshot - thumb_func_end BT_Phase2Mugshot_LoadGfx - - thumb_func_start BT_Phase2Mugshot_VsBarsSlideIn -BT_Phase2Mugshot_VsBarsSlideIn: @ 80D2968 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r0, _080D2A4C @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r7, _080D2A50 @ =gScanlineEffectRegBuffers - ldrh r0, [r4, 0xA] - ldrb r5, [r4, 0xA] - adds r0, 0x10 - strh r0, [r4, 0xA] - movs r6, 0 -_080D2982: - adds r0, r5, 0 - movs r1, 0x10 - bl Sin - ldrh r1, [r4, 0xC] - adds r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r0, 0 - bge _080D2998 - movs r2, 0x1 -_080D2998: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _080D29A2 - movs r2, 0xF0 -_080D29A2: - strh r2, [r7] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r7, 0x2 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r6, 0x4F - bls _080D2982 - cmp r6, 0x9F - bhi _080D29FA -_080D29BC: - adds r0, r5, 0 - movs r1, 0x10 - bl Sin - ldrh r1, [r4, 0xE] - subs r1, r0 - lsls r1, 16 - lsrs r2, r1, 16 - cmp r1, 0 - bge _080D29D2 - movs r2, 0 -_080D29D2: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xEF - ble _080D29DC - movs r2, 0xEF -_080D29DC: - lsls r0, r2, 16 - asrs r0, 8 - movs r1, 0xF0 - orrs r0, r1 - strh r0, [r7] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r7, 0x2 - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r6, 0x9F - bls _080D29BC -_080D29FA: - ldrh r1, [r4, 0xC] - adds r1, 0x8 - strh r1, [r4, 0xC] - ldrh r0, [r4, 0xE] - subs r0, 0x8 - strh r0, [r4, 0xE] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xF0 - ble _080D2A12 - movs r0, 0xF0 - strh r0, [r4, 0xC] -_080D2A12: - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080D2A1E - movs r0, 0 - strh r0, [r4, 0xE] -_080D2A1E: - ldr r0, [r4, 0xC] - cmp r0, 0xF0 - bne _080D2A2A - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080D2A2A: - ldr r0, _080D2A4C @ =sTransitionStructPtr - ldr r1, [r0] - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D2A4C: .4byte sTransitionStructPtr -_080D2A50: .4byte gScanlineEffectRegBuffers - thumb_func_end BT_Phase2Mugshot_VsBarsSlideIn - - thumb_func_start BT_Phase2Mugshot_StartSpriteSlide -BT_Phase2Mugshot_StartSpriteSlide: @ 80D2A54 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r2, _080D2AC8 @ =sTransitionStructPtr - ldr r1, [r2] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r1, _080D2ACC @ =gScanlineEffectRegBuffers - adds r5, r2, 0 - movs r2, 0xF0 -_080D2A68: - strh r2, [r1] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - adds r1, 0x2 - cmp r0, 0x9F - bls _080D2A68 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x8] - strh r1, [r4, 0xA] - strh r1, [r4, 0xC] - strh r1, [r4, 0xE] - ldr r1, [r5] - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r1, 0 - bl BT_SetSpriteAsOpponentOrPlayer - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r1, 0x1 - bl BT_SetSpriteAsOpponentOrPlayer - movs r1, 0x22 - ldrsh r0, [r4, r1] - bl BT_StartSpriteSlide - movs r0, 0x61 - bl PlaySE - ldr r1, [r5] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D2AC8: .4byte sTransitionStructPtr -_080D2ACC: .4byte gScanlineEffectRegBuffers - thumb_func_end BT_Phase2Mugshot_StartSpriteSlide - - thumb_func_start BT_Phase2Mugshot_WaitForOpponentInPlace -BT_Phase2Mugshot_WaitForOpponentInPlace: @ 80D2AD0 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D2B08 @ =sTransitionStructPtr - ldr r1, [r0] - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - movs r1, 0x22 - ldrsh r0, [r4, r1] - bl BT_IsSpriteSlideFinished - lsls r0, 16 - cmp r0, 0 - beq _080D2B00 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r1, 0x24 - ldrsh r0, [r4, r1] - bl BT_StartSpriteSlide -_080D2B00: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D2B08: .4byte sTransitionStructPtr - thumb_func_end BT_Phase2Mugshot_WaitForOpponentInPlace - - thumb_func_start BT_Phase2Mugshot_WaitForPlayerInPlace -BT_Phase2Mugshot_WaitForPlayerInPlace: @ 80D2B0C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - ldr r7, _080D2BAC @ =sTransitionStructPtr - ldr r1, [r7] - ldrh r0, [r1, 0x18] - subs r0, 0x8 - movs r2, 0 - mov r8, r2 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - movs r1, 0x24 - ldrsh r0, [r6, r1] - bl BT_IsSpriteSlideFinished - lsls r0, 16 - cmp r0, 0 - beq _080D2BA0 - ldr r1, [r7] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - movs r0, 0 - bl SetVBlankCallback - ldr r1, _080D2BB0 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080D2BB4 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080D2BB8 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldr r4, _080D2BBC @ =gScanlineEffectRegBuffers - movs r5, 0xA0 - lsls r5, 1 - adds r0, r4, 0 - movs r1, 0 - adds r2, r5, 0 - bl memset - movs r2, 0xF0 - lsls r2, 3 - adds r4, r2 - adds r0, r4, 0 - movs r1, 0 - adds r2, r5, 0 - bl memset - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - mov r0, r8 - strh r0, [r6, 0xE] - strh r0, [r6, 0x10] - ldr r1, [r7] - movs r0, 0xBF - strh r0, [r1, 0xE] - ldr r0, _080D2BC0 @ =VBCB_BT_Phase2Mugshot2_WhiteFade - bl SetVBlankCallback -_080D2BA0: - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D2BAC: .4byte sTransitionStructPtr -_080D2BB0: .4byte 0x040000b0 -_080D2BB4: .4byte 0x0000c5ff -_080D2BB8: .4byte 0x00007fff -_080D2BBC: .4byte gScanlineEffectRegBuffers -_080D2BC0: .4byte VBCB_BT_Phase2Mugshot2_WhiteFade - thumb_func_end BT_Phase2Mugshot_WaitForPlayerInPlace - - thumb_func_start BT_Phase2Mugshot_ExpandWhiteBand -BT_Phase2Mugshot_ExpandWhiteBand: @ 80D2BC4 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r2, _080D2C84 @ =sTransitionStructPtr - ldr r1, [r2] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - movs r6, 0x1 - ldr r1, [r2] - ldrh r0, [r1, 0x18] - subs r0, 0x8 - strh r0, [r1, 0x18] - ldrh r0, [r1, 0x1A] - adds r0, 0x8 - strh r0, [r1, 0x1A] - ldrh r1, [r4, 0x10] - movs r3, 0x10 - ldrsh r0, [r4, r3] - mov r12, r2 - cmp r0, 0x4F - bgt _080D2BF2 - adds r0, r1, 0x2 - strh r0, [r4, 0x10] -_080D2BF2: - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0x50 - ble _080D2BFE - movs r0, 0x50 - strh r0, [r4, 0x10] -_080D2BFE: - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - movs r1, 0x1 - ands r0, r1 - ldrh r3, [r4, 0x10] - cmp r0, 0 - beq _080D2C60 - movs r2, 0 - lsls r0, r3, 16 - movs r6, 0 - cmp r0, 0 - blt _080D2C60 - movs r7, 0x50 - ldr r5, _080D2C88 @ =gScanlineEffectRegBuffers -_080D2C1C: - lsls r0, r2, 16 - asrs r3, r0, 16 - subs r1, r7, r3 - adds r0, r3, 0 - adds r0, 0x50 - lsls r0, 16 - lsrs r2, r0, 16 - lsls r1, 16 - asrs r1, 15 - adds r1, r5 - ldrh r0, [r1] - cmp r0, 0xF - bhi _080D2C3C - movs r6, 0x1 - adds r0, 0x1 - strh r0, [r1] -_080D2C3C: - lsls r0, r2, 16 - asrs r0, 15 - adds r1, r0, r5 - ldrh r0, [r1] - cmp r0, 0xF - bhi _080D2C4E - movs r6, 0x1 - adds r0, 0x1 - strh r0, [r1] -_080D2C4E: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - movs r3, 0x10 - ldrsh r1, [r4, r3] - ldrh r3, [r4, 0x10] - cmp r0, r1 - ble _080D2C1C -_080D2C60: - cmp r3, 0x50 - bne _080D2C6E - cmp r6, 0 - bne _080D2C6E - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080D2C6E: - mov r1, r12 - ldr r0, [r1] - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D2C84: .4byte sTransitionStructPtr -_080D2C88: .4byte gScanlineEffectRegBuffers - thumb_func_end BT_Phase2Mugshot_ExpandWhiteBand - - thumb_func_start BT_Phase2Mugshot_StartBlackFade -BT_Phase2Mugshot_StartBlackFade: @ 80D2C8C - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _080D2CBC @ =sTransitionStructPtr - ldr r0, [r5] - ldrb r1, [r0] - movs r6, 0 - strb r6, [r0] - movs r0, 0x1 - negs r0, r0 - ldr r2, _080D2CC0 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - ldr r1, [r5] - movs r0, 0xFF - strh r0, [r1, 0xE] - strh r6, [r4, 0xE] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080D2CBC: .4byte sTransitionStructPtr -_080D2CC0: .4byte 0x00007fff - thumb_func_end BT_Phase2Mugshot_StartBlackFade - - thumb_func_start BT_Phase2Mugshot_WaitForBlackFade -BT_Phase2Mugshot_WaitForBlackFade: @ 80D2CC4 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D2D08 @ =sTransitionStructPtr - ldr r1, [r5] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - ldr r0, _080D2D0C @ =gScanlineEffectRegBuffers - movs r2, 0xE - ldrsh r1, [r4, r2] - movs r2, 0xA0 - lsls r2, 1 - bl memset - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0xF - ble _080D2CF4 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080D2CF4: - ldr r0, [r5] - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D2D08: .4byte sTransitionStructPtr -_080D2D0C: .4byte gScanlineEffectRegBuffers - thumb_func_end BT_Phase2Mugshot_WaitForBlackFade - - thumb_func_start BT_Phase2Mugshot_End -BT_Phase2Mugshot_End: @ 80D2D10 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080D2D44 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080D2D48 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080D2D4C @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl BT_BlendPalettesToBlack - ldr r0, [r4] - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D2D44: .4byte 0x040000b0 -_080D2D48: .4byte 0x0000c5ff -_080D2D4C: .4byte 0x00007fff - thumb_func_end BT_Phase2Mugshot_End - - thumb_func_start VBCB_BT_Phase2Mugshot1_Slide -VBCB_BT_Phase2Mugshot1_Slide: @ 80D2D50 - push {r4,r5,lr} - ldr r4, _080D2DC4 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _080D2DC8 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _080D2DCC @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl BT_VBSyncOamAndPltt - ldr r5, _080D2DD0 @ =sTransitionStructPtr - ldr r0, [r5] - ldrb r0, [r0] - cmp r0, 0 - beq _080D2D88 - ldr r1, _080D2DD4 @ =0x040000d4 - ldr r0, _080D2DD8 @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _080D2DDC @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080D2D88: - ldr r0, [r5] - ldrh r1, [r0, 0x1C] - movs r0, 0x12 - bl SetGpuReg - ldr r0, [r5] - ldrh r1, [r0, 0x2] - movs r0, 0x48 - bl SetGpuReg - ldr r0, [r5] - ldrh r1, [r0, 0x4] - movs r0, 0x4A - bl SetGpuReg - ldr r0, [r5] - ldrh r1, [r0, 0x8] - movs r0, 0x44 - bl SetGpuReg - ldr r0, _080D2DE0 @ =gScanlineEffectRegBuffers + 0x780 - str r0, [r4] - ldr r0, _080D2DE4 @ =0x04000040 - str r0, [r4, 0x4] - ldr r0, _080D2DE8 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2DC4: .4byte 0x040000b0 -_080D2DC8: .4byte 0x0000c5ff -_080D2DCC: .4byte 0x00007fff -_080D2DD0: .4byte sTransitionStructPtr -_080D2DD4: .4byte 0x040000d4 -_080D2DD8: .4byte gScanlineEffectRegBuffers -_080D2DDC: .4byte 0x800000a0 -_080D2DE0: .4byte gScanlineEffectRegBuffers + 0x780 -_080D2DE4: .4byte 0x04000040 -_080D2DE8: .4byte 0xa2400001 - thumb_func_end VBCB_BT_Phase2Mugshot1_Slide - - thumb_func_start VBCB_BT_Phase2Mugshot2_WhiteFade -VBCB_BT_Phase2Mugshot2_WhiteFade: @ 80D2DEC - push {r4,lr} - ldr r4, _080D2E44 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _080D2E48 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _080D2E4C @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl BT_VBSyncOamAndPltt - ldr r2, _080D2E50 @ =sTransitionStructPtr - ldr r0, [r2] - ldrb r0, [r0] - cmp r0, 0 - beq _080D2E24 - ldr r1, _080D2E54 @ =0x040000d4 - ldr r0, _080D2E58 @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _080D2E5C @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080D2E24: - ldr r0, [r2] - ldrh r1, [r0, 0xE] - movs r0, 0x50 - bl SetGpuReg - ldr r0, _080D2E60 @ =gScanlineEffectRegBuffers + 0x780 - str r0, [r4] - ldr r0, _080D2E64 @ =0x04000054 - str r0, [r4, 0x4] - ldr r0, _080D2E68 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D2E44: .4byte 0x040000b0 -_080D2E48: .4byte 0x0000c5ff -_080D2E4C: .4byte 0x00007fff -_080D2E50: .4byte sTransitionStructPtr -_080D2E54: .4byte 0x040000d4 -_080D2E58: .4byte gScanlineEffectRegBuffers -_080D2E5C: .4byte 0x800000a0 -_080D2E60: .4byte gScanlineEffectRegBuffers + 0x780 -_080D2E64: .4byte 0x04000054 -_080D2E68: .4byte 0xa2400001 - thumb_func_end VBCB_BT_Phase2Mugshot2_WhiteFade - - thumb_func_start HBCB_BT_Phase2Mugshot -HBCB_BT_Phase2Mugshot: @ 80D2E6C - push {lr} - ldr r0, _080D2E80 @ =0x04000006 - ldrh r0, [r0] - cmp r0, 0x4F - bhi _080D2E8C - ldr r1, _080D2E84 @ =0x04000010 - ldr r0, _080D2E88 @ =sTransitionStructPtr - ldr r0, [r0] - ldrh r0, [r0, 0x18] - b _080D2E94 - .align 2, 0 -_080D2E80: .4byte 0x04000006 -_080D2E84: .4byte 0x04000010 -_080D2E88: .4byte sTransitionStructPtr -_080D2E8C: - ldr r1, _080D2E9C @ =0x04000010 - ldr r0, _080D2EA0 @ =sTransitionStructPtr - ldr r0, [r0] - ldrh r0, [r0, 0x1A] -_080D2E94: - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080D2E9C: .4byte 0x04000010 -_080D2EA0: .4byte sTransitionStructPtr - thumb_func_end HBCB_BT_Phase2Mugshot - - thumb_func_start BT_Phase2Mugshots_CreateSprites -BT_Phase2Mugshots_CreateSprites: @ 80D2EA4 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - adds r4, r0, 0 - ldr r6, _080D2FF8 @ =gReservedSpritePaletteCount - movs r0, 0xA - strb r0, [r6] - ldr r0, _080D2FFC @ =sMugshotsTrainerPicIDsTable - movs r2, 0x26 - ldrsh r1, [r4, r2] - mov r9, r1 - add r0, r9 - ldrb r0, [r0] - ldr r2, _080D3000 @ =sMugshotsOpponentCoords - lsls r1, 2 - mov r9, r1 - adds r1, r2 - ldrh r1, [r1] - subs r1, 0x20 - lsls r1, 16 - asrs r1, 16 - adds r2, 0x2 - add r2, r9 - ldrh r2, [r2] - adds r2, 0x2A - lsls r2, 16 - asrs r2, 16 - ldr r5, _080D3004 @ =gDecompressionBuffer - str r5, [sp] - movs r3, 0 - bl CreateTrainerSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - ldr r0, _080D3008 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - movs r1, 0x1 - bl PlayerGenderToFrontTrainerPicId_Debug - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x88 - lsls r1, 1 - str r5, [sp] - movs r2, 0x6A - movs r3, 0 - bl CreateTrainerSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - movs r0, 0xC - strb r0, [r6] - movs r3, 0x22 - ldrsh r0, [r4, r3] - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r1, _080D300C @ =gSprites - adds r5, r1 - movs r2, 0x24 - ldrsh r0, [r4, r2] - lsls r6, r0, 4 - adds r6, r0 - lsls r6, 2 - adds r6, r1 - ldr r0, _080D3010 @ =SpriteCB_BT_Phase2Mugshots - str r0, [r5, 0x1C] - str r0, [r6, 0x1C] - ldrb r0, [r5, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r5, 0x1] - ldrb r0, [r6, 0x1] - orrs r0, r1 - strb r0, [r6, 0x1] - bl AllocOamMatrix - lsls r0, 24 - lsrs r0, 24 - movs r3, 0x1F - mov r8, r3 - mov r4, r8 - ands r0, r4 - lsls r0, 1 - ldrb r2, [r5, 0x3] - movs r4, 0x3F - negs r4, r4 - adds r1, r4, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x3] - bl AllocOamMatrix - lsls r0, 24 - lsrs r0, 24 - mov r1, r8 - ands r0, r1 - lsls r0, 1 - ldrb r1, [r6, 0x3] - ands r4, r1 - orrs r4, r0 - strb r4, [r6, 0x3] - ldrb r2, [r5, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r2 - movs r2, 0x40 - orrs r0, r2 - strb r0, [r5, 0x1] - ldrb r0, [r6, 0x1] - ands r1, r0 - orrs r1, r2 - strb r1, [r6, 0x1] - ldrb r0, [r5, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r5, 0x3] - ldrb r0, [r6, 0x3] - orrs r0, r1 - strb r0, [r6, 0x3] - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - adds r0, r6, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - ldrb r0, [r5, 0x3] - lsls r0, 26 - lsrs r0, 27 - ldr r2, _080D3014 @ =sMugshotsOpponentRotationScales - mov r3, r9 - adds r1, r3, r2 - movs r4, 0 - ldrsh r1, [r1, r4] - adds r2, 0x2 - add r9, r2 - mov r3, r9 - movs r4, 0 - ldrsh r2, [r3, r4] - movs r3, 0 - bl SetOamMatrixRotationScaling - ldrb r0, [r6, 0x3] - lsls r0, 26 - lsrs r0, 27 - ldr r1, _080D3018 @ =0xfffffe00 - movs r2, 0x80 - lsls r2, 2 - movs r3, 0 - bl SetOamMatrixRotationScaling - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D2FF8: .4byte gReservedSpritePaletteCount -_080D2FFC: .4byte sMugshotsTrainerPicIDsTable -_080D3000: .4byte sMugshotsOpponentCoords -_080D3004: .4byte gDecompressionBuffer -_080D3008: .4byte gSaveBlock2Ptr -_080D300C: .4byte gSprites -_080D3010: .4byte SpriteCB_BT_Phase2Mugshots -_080D3014: .4byte sMugshotsOpponentRotationScales -_080D3018: .4byte 0xfffffe00 - thumb_func_end BT_Phase2Mugshots_CreateSprites - - thumb_func_start SpriteCB_BT_Phase2Mugshots -SpriteCB_BT_Phase2Mugshots: @ 80D301C - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D3040 @ =sBT_Phase2MugshotSpriteFuncs -_080D3022: - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D3022 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D3040: .4byte sBT_Phase2MugshotSpriteFuncs - thumb_func_end SpriteCB_BT_Phase2Mugshots - - thumb_func_start BT_Phase2MugshotsSpriteFuncs_Wait -BT_Phase2MugshotsSpriteFuncs_Wait: @ 80D3044 - movs r0, 0 - bx lr - thumb_func_end BT_Phase2MugshotsSpriteFuncs_Wait - - thumb_func_start BT_Phase2MugshotsSpriteFuncs_InitParams -BT_Phase2MugshotsSpriteFuncs_InitParams: @ 80D3048 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - ldr r1, _080D308C @ =sMugShotSlideVelocity - mov r0, sp - movs r2, 0x4 - bl memcpy - add r4, sp, 0x4 - ldr r1, _080D3090 @ =sMugShotSlideDeceleration - adds r0, r4, 0 - movs r2, 0x4 - bl memcpy - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r1, 0x3C - ldrsh r0, [r5, r1] - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x30] - movs r1, 0x3C - ldrsh r0, [r5, r1] - lsls r0, 1 - adds r4, r0 - ldrh r0, [r4] - strh r0, [r5, 0x32] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D308C: .4byte sMugShotSlideVelocity -_080D3090: .4byte sMugShotSlideDeceleration - thumb_func_end BT_Phase2MugshotsSpriteFuncs_InitParams - - thumb_func_start BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn -BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn: @ 80D3094 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - ldrh r3, [r1, 0x20] - adds r2, r0, r3 - strh r2, [r1, 0x20] - movs r3, 0x3C - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080D30B2 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x84 - bgt _080D30C0 - b _080D30BA -_080D30B2: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x67 - ble _080D30C0 -_080D30BA: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] -_080D30C0: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn - - thumb_func_start BT_Phase2MugshotsSpriteFuncs_DecelerateSprite -BT_Phase2MugshotsSpriteFuncs_DecelerateSprite: @ 80D30C8 - push {lr} - adds r2, r0, 0 - ldrh r3, [r2, 0x32] - ldrh r0, [r2, 0x30] - adds r1, r3, r0 - strh r1, [r2, 0x30] - ldrh r0, [r2, 0x20] - adds r0, r1 - strh r0, [r2, 0x20] - lsls r1, 16 - cmp r1, 0 - bne _080D30EE - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - negs r0, r3 - strh r0, [r2, 0x32] - movs r0, 0x1 - strh r0, [r2, 0x3A] -_080D30EE: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end BT_Phase2MugshotsSpriteFuncs_DecelerateSprite - - thumb_func_start BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2 -BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2: @ 80D30F4 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x30] - adds r0, r1 - strh r0, [r2, 0x30] - ldrh r1, [r2, 0x20] - adds r1, r0 - strh r1, [r2, 0x20] - adds r1, 0x1F - lsls r1, 16 - movs r0, 0x97 - lsls r0, 17 - cmp r1, r0 - bls _080D3118 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] -_080D3118: - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2 - - thumb_func_start BT_SetSpriteAsOpponentOrPlayer -BT_SetSpriteAsOpponentOrPlayer: @ 80D3120 - ldr r3, _080D3134 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - strh r1, [r2, 0x3C] - bx lr - .align 2, 0 -_080D3134: .4byte gSprites - thumb_func_end BT_SetSpriteAsOpponentOrPlayer - - thumb_func_start BT_StartSpriteSlide -BT_StartSpriteSlide: @ 80D3138 - ldr r2, _080D3150 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - bx lr - .align 2, 0 -_080D3150: .4byte gSprites - thumb_func_end BT_StartSpriteSlide - - thumb_func_start BT_IsSpriteSlideFinished -BT_IsSpriteSlideFinished: @ 80D3154 - ldr r2, _080D3168 @ =gSprites - lsls r0, 16 - asrs r0, 16 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x3A - ldrsh r0, [r1, r2] - bx lr - .align 2, 0 -_080D3168: .4byte gSprites - thumb_func_end BT_IsSpriteSlideFinished - - thumb_func_start BT_Phase2SlicedScreen -BT_Phase2SlicedScreen: @ 80D316C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D319C @ =sBT_Phase2SlicedScreenFuncs - ldr r2, _080D31A0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D317E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D317E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D319C: .4byte sBT_Phase2SlicedScreenFuncs -_080D31A0: .4byte gTasks - thumb_func_end BT_Phase2SlicedScreen - - thumb_func_start BT_Phase2SlicedScreen_Init -BT_Phase2SlicedScreen_Init: @ 80D31A4 - push {r4-r6,lr} - adds r5, r0, 0 - bl BT_InitCtrlBlk - bl ScanlineEffect_Clear - movs r3, 0 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r5, 0xC] - movs r0, 0x1 - strh r0, [r5, 0xE] - ldr r2, _080D3210 @ =sTransitionStructPtr - ldr r1, [r2] - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r3, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - ldr r4, _080D3214 @ =gScanlineEffectRegBuffers + 0x780 - adds r6, r2, 0 - movs r2, 0xF0 -_080D31D0: - lsls r1, r3, 1 - adds r1, r4 - ldr r0, [r6] - ldrh r0, [r0, 0x14] - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0xA0 - lsls r0, 1 - adds r0, r4 - strh r2, [r0] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x9F - bls _080D31D0 - movs r0, 0x2 - bl EnableInterrupts - ldr r0, _080D3218 @ =VBCB_BT_Phase2SlicedScreen - bl SetVBlankCallback - ldr r0, _080D321C @ =HBCB_BT_Phase2SlicedScreen - bl SetHBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080D3210: .4byte sTransitionStructPtr -_080D3214: .4byte gScanlineEffectRegBuffers + 0x780 -_080D3218: .4byte VBCB_BT_Phase2SlicedScreen -_080D321C: .4byte HBCB_BT_Phase2SlicedScreen - thumb_func_end BT_Phase2SlicedScreen_Init - - thumb_func_start BT_Phase2SlicedScreen_UpdateOffsets -BT_Phase2SlicedScreen_UpdateOffsets: @ 80D3220 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r3, r0, 0 - ldr r2, _080D329C @ =sTransitionStructPtr - ldr r1, [r2] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r0, [r3, 0xC] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r3, 0xA] - adds r0, r1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - mov r8, r2 - cmp r0, 0xF0 - ble _080D324C - movs r0, 0xF0 - strh r0, [r3, 0xA] -_080D324C: - ldrh r4, [r3, 0xC] - movs r0, 0xC - ldrsh r1, [r3, r0] - ldr r0, _080D32A0 @ =0x00000fff - ldrh r2, [r3, 0xE] - cmp r1, r0 - bgt _080D325E - adds r0, r4, r2 - strh r0, [r3, 0xC] -_080D325E: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x7F - bgt _080D326A - lsls r0, r2, 1 - strh r0, [r3, 0xE] -_080D326A: - movs r5, 0 - ldr r7, _080D32A4 @ =gScanlineEffectRegBuffers - movs r1, 0xA0 - lsls r1, 1 - adds r1, r7 - mov r12, r1 - mov r6, r8 -_080D3278: - lsls r0, r5, 1 - adds r2, r0, r7 - mov r1, r12 - adds r4, r0, r1 - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _080D32A8 - ldr r1, [r6] - ldrh r0, [r3, 0xA] - ldrh r1, [r1, 0x14] - adds r0, r1 - strh r0, [r2] - ldrh r1, [r3, 0xA] - movs r0, 0xF0 - subs r0, r1 - b _080D32BA - .align 2, 0 -_080D329C: .4byte sTransitionStructPtr -_080D32A0: .4byte 0x00000fff -_080D32A4: .4byte gScanlineEffectRegBuffers -_080D32A8: - ldr r0, [r6] - ldrh r0, [r0, 0x14] - ldrh r1, [r3, 0xA] - subs r0, r1 - strh r0, [r2] - ldrh r0, [r3, 0xA] - lsls r0, 8 - movs r1, 0xF1 - orrs r0, r1 -_080D32BA: - strh r0, [r4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x9F - bls _080D3278 - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0xEF - ble _080D32D4 - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] -_080D32D4: - mov r1, r8 - ldr r0, [r1] - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end BT_Phase2SlicedScreen_UpdateOffsets - - thumb_func_start BT_Phase2SlicedScreen_End -BT_Phase2SlicedScreen_End: @ 80D32EC - push {lr} - ldr r1, _080D331C @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080D3320 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080D3324 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl BT_BlendPalettesToBlack - ldr r0, _080D3328 @ =BT_Phase2SlicedScreen - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080D331C: .4byte 0x040000b0 -_080D3320: .4byte 0x0000c5ff -_080D3324: .4byte 0x00007fff -_080D3328: .4byte BT_Phase2SlicedScreen - thumb_func_end BT_Phase2SlicedScreen_End - - thumb_func_start VBCB_BT_Phase2SlicedScreen -VBCB_BT_Phase2SlicedScreen: @ 80D332C - push {r4,r5,lr} - ldr r5, _080D3398 @ =0x040000b0 - ldrh r1, [r5, 0xA] - ldr r0, _080D339C @ =0x0000c5ff - ands r0, r1 - strh r0, [r5, 0xA] - ldrh r1, [r5, 0xA] - ldr r0, _080D33A0 @ =0x00007fff - ands r0, r1 - strh r0, [r5, 0xA] - ldrh r0, [r5, 0xA] - bl BT_VBSyncOamAndPltt - ldr r4, _080D33A4 @ =sTransitionStructPtr - ldr r0, [r4] - ldrh r1, [r0, 0x2] - movs r0, 0x48 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x4] - movs r0, 0x4A - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x8] - movs r0, 0x44 - bl SetGpuReg - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _080D3382 - ldr r1, _080D33A8 @ =0x040000d4 - ldr r0, _080D33AC @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _080D33B0 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080D3382: - ldr r0, _080D33B4 @ =gScanlineEffectRegBuffers + 0x8C0 - str r0, [r5] - ldr r0, _080D33B8 @ =0x04000040 - str r0, [r5, 0x4] - ldr r0, _080D33BC @ =0xa2400001 - str r0, [r5, 0x8] - ldr r0, [r5, 0x8] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D3398: .4byte 0x040000b0 -_080D339C: .4byte 0x0000c5ff -_080D33A0: .4byte 0x00007fff -_080D33A4: .4byte sTransitionStructPtr -_080D33A8: .4byte 0x040000d4 -_080D33AC: .4byte gScanlineEffectRegBuffers -_080D33B0: .4byte 0x80000140 -_080D33B4: .4byte gScanlineEffectRegBuffers + 0x8C0 -_080D33B8: .4byte 0x04000040 -_080D33BC: .4byte 0xa2400001 - thumb_func_end VBCB_BT_Phase2SlicedScreen - - thumb_func_start HBCB_BT_Phase2SlicedScreen -HBCB_BT_Phase2SlicedScreen: @ 80D33C0 - ldr r1, _080D33E0 @ =gScanlineEffectRegBuffers - ldr r0, _080D33E4 @ =0x04000006 - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _080D33E8 @ =0x04000014 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_080D33E0: .4byte gScanlineEffectRegBuffers -_080D33E4: .4byte 0x04000006 -_080D33E8: .4byte 0x04000014 - thumb_func_end HBCB_BT_Phase2SlicedScreen - - thumb_func_start BT_Phase2WhiteFadeInStripes -BT_Phase2WhiteFadeInStripes: @ 80D33EC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D341C @ =sBT_Phase2WhiteFadeInStripesFuncs - ldr r2, _080D3420 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D33FE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D33FE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D341C: .4byte sBT_Phase2WhiteFadeInStripesFuncs -_080D3420: .4byte gTasks - thumb_func_end BT_Phase2WhiteFadeInStripes - - thumb_func_start BT_Phase2WhiteFadeInStripes_Init -BT_Phase2WhiteFadeInStripes_Init: @ 80D3424 - push {r4,r5,lr} - adds r5, r0, 0 - bl BT_InitCtrlBlk - bl ScanlineEffect_Clear - ldr r0, _080D348C @ =sTransitionStructPtr - ldr r1, [r0] - movs r2, 0 - movs r0, 0xBF - strh r0, [r1, 0xE] - strh r2, [r1, 0x12] - movs r0, 0x1E - strh r0, [r1, 0x2] - movs r0, 0x3F - strh r0, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r2, _080D3490 @ =gScanlineEffectRegBuffers + 0x780 - movs r4, 0 - movs r3, 0xF0 -_080D3450: - lsls r0, r1, 1 - adds r0, r2 - strh r4, [r0] - adds r0, r1, 0 - adds r0, 0xA0 - lsls r0, 1 - adds r0, r2 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _080D3450 - movs r0, 0x2 - bl EnableInterrupts - ldr r0, _080D3494 @ =HBCB_BT_Phase2WhiteFadeInStripes - bl SetHBlankCallback - ldr r0, _080D3498 @ =VBCB_BT_Phase2WhiteFadeInStripes1 - bl SetVBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D348C: .4byte sTransitionStructPtr -_080D3490: .4byte gScanlineEffectRegBuffers + 0x780 -_080D3494: .4byte HBCB_BT_Phase2WhiteFadeInStripes -_080D3498: .4byte VBCB_BT_Phase2WhiteFadeInStripes1 - thumb_func_end BT_Phase2WhiteFadeInStripes_Init - - thumb_func_start BT_Phase2WhiteFadeInStripes_SetupSprites -BT_Phase2WhiteFadeInStripes_SetupSprites: @ 80D349C - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r1, _080D3504 @ =sWhiteStripeDelay - mov r0, sp - movs r2, 0xC - bl memcpy - movs r5, 0 - movs r4, 0 -_080D34B0: - ldr r0, _080D3508 @ =SpriteCB_BT_Phase2WhiteFadeInStripes - bl CreateInvisibleSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _080D350C @ =gSprites - adds r2, r1, r0 - movs r0, 0xF0 - strh r0, [r2, 0x20] - strh r4, [r2, 0x22] - lsls r1, r5, 16 - asrs r1, 16 - lsls r0, r1, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r2, 0x38] - adds r1, 0x1 - lsls r1, 16 - lsls r0, r4, 16 - movs r3, 0xD8 - lsls r3, 13 - adds r0, r3 - lsrs r4, r0, 16 - lsrs r5, r1, 16 - asrs r1, 16 - cmp r1, 0x5 - ble _080D34B0 - ldrh r0, [r2, 0x3A] - adds r0, 0x1 - strh r0, [r2, 0x3A] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080D3504: .4byte sWhiteStripeDelay -_080D3508: .4byte SpriteCB_BT_Phase2WhiteFadeInStripes -_080D350C: .4byte gSprites - thumb_func_end BT_Phase2WhiteFadeInStripes_SetupSprites - - thumb_func_start BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone -BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone: @ 80D3510 - push {r4,lr} - adds r4, r0, 0 - ldr r2, _080D3544 @ =sTransitionStructPtr - ldr r1, [r2] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r0, [r2] - movs r1, 0x20 - ldrsh r0, [r0, r1] - cmp r0, 0x5 - ble _080D353A - movs r0, 0x1 - negs r0, r0 - ldr r2, _080D3548 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_080D353A: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D3544: .4byte sTransitionStructPtr -_080D3548: .4byte 0x00007fff - thumb_func_end BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone - - thumb_func_start BT_Phase2WhiteFadeInStripes_Stop -BT_Phase2WhiteFadeInStripes_Stop: @ 80D354C - push {r4-r6,lr} - adds r6, r0, 0 - ldr r5, _080D35A0 @ =sTransitionStructPtr - ldr r0, [r5] - ldrb r1, [r0] - movs r4, 0 - strb r4, [r0] - ldr r1, _080D35A4 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080D35A8 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080D35AC @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - ldr r1, [r5] - movs r0, 0xF0 - strh r0, [r1, 0x6] - strh r4, [r1, 0x12] - movs r0, 0xFF - strh r0, [r1, 0xE] - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r4, [r1, 0x20] - ldr r0, _080D35B0 @ =VBCB_BT_Phase2WhiteFadeInStripes2 - bl SetVBlankCallback - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080D35A0: .4byte sTransitionStructPtr -_080D35A4: .4byte 0x040000b0 -_080D35A8: .4byte 0x0000c5ff -_080D35AC: .4byte 0x00007fff -_080D35B0: .4byte VBCB_BT_Phase2WhiteFadeInStripes2 - thumb_func_end BT_Phase2WhiteFadeInStripes_Stop - - thumb_func_start BT_Phase2WhiteFadeInStripes_IsDone -BT_Phase2WhiteFadeInStripes_IsDone: @ 80D35B4 - push {lr} - ldr r0, _080D35EC @ =sTransitionStructPtr - ldr r1, [r0] - movs r2, 0xF0 - lsls r2, 1 - adds r0, r2, 0 - ldrh r2, [r1, 0x20] - adds r0, r2 - strh r0, [r1, 0x20] - lsls r0, 16 - asrs r0, 24 - strh r0, [r1, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x10 - bls _080D35E6 - bl BT_BlendPalettesToBlack - ldr r0, _080D35F0 @ =BT_Phase2WhiteFadeInStripes - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_080D35E6: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080D35EC: .4byte sTransitionStructPtr -_080D35F0: .4byte BT_Phase2WhiteFadeInStripes - thumb_func_end BT_Phase2WhiteFadeInStripes_IsDone - - thumb_func_start VBCB_BT_Phase2WhiteFadeInStripes1 -VBCB_BT_Phase2WhiteFadeInStripes1: @ 80D35F4 - push {r4,r5,lr} - ldr r5, _080D3668 @ =0x040000b0 - ldrh r1, [r5, 0xA] - ldr r0, _080D366C @ =0x0000c5ff - ands r0, r1 - strh r0, [r5, 0xA] - ldrh r1, [r5, 0xA] - ldr r0, _080D3670 @ =0x00007fff - ands r0, r1 - strh r0, [r5, 0xA] - ldrh r0, [r5, 0xA] - bl BT_VBSyncOamAndPltt - ldr r4, _080D3674 @ =sTransitionStructPtr - ldr r0, [r4] - ldrh r1, [r0, 0xE] - movs r0, 0x50 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x2] - movs r0, 0x48 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x4] - movs r0, 0x4A - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x6] - movs r0, 0x44 - bl SetGpuReg - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _080D3654 - ldr r1, _080D3678 @ =0x040000d4 - ldr r0, _080D367C @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _080D3680 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080D3654: - ldr r0, _080D3684 @ =gScanlineEffectRegBuffers + 0x8C0 - str r0, [r5] - ldr r0, _080D3688 @ =0x04000040 - str r0, [r5, 0x4] - ldr r0, _080D368C @ =0xa2400001 - str r0, [r5, 0x8] - ldr r0, [r5, 0x8] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D3668: .4byte 0x040000b0 -_080D366C: .4byte 0x0000c5ff -_080D3670: .4byte 0x00007fff -_080D3674: .4byte sTransitionStructPtr -_080D3678: .4byte 0x040000d4 -_080D367C: .4byte gScanlineEffectRegBuffers -_080D3680: .4byte 0x80000140 -_080D3684: .4byte gScanlineEffectRegBuffers + 0x8C0 -_080D3688: .4byte 0x04000040 -_080D368C: .4byte 0xa2400001 - thumb_func_end VBCB_BT_Phase2WhiteFadeInStripes1 - - thumb_func_start VBCB_BT_Phase2WhiteFadeInStripes2 -VBCB_BT_Phase2WhiteFadeInStripes2: @ 80D3690 - push {r4,lr} - bl BT_VBSyncOamAndPltt - ldr r4, _080D36DC @ =sTransitionStructPtr - ldr r0, [r4] - ldrh r1, [r0, 0x12] - movs r0, 0x54 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0xE] - movs r0, 0x50 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x2] - movs r0, 0x48 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x4] - movs r0, 0x4A - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x6] - movs r0, 0x40 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x8] - movs r0, 0x44 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D36DC: .4byte sTransitionStructPtr - thumb_func_end VBCB_BT_Phase2WhiteFadeInStripes2 - - thumb_func_start HBCB_BT_Phase2WhiteFadeInStripes -HBCB_BT_Phase2WhiteFadeInStripes: @ 80D36E0 - push {lr} - sub sp, 0x4 - mov r1, sp - ldr r0, _080D3714 @ =0x04000006 - ldrh r0, [r0] - strh r0, [r1] - mov r0, sp - ldrh r0, [r0] - cmp r0, 0xE3 - bne _080D36F8 - movs r0, 0 - strh r0, [r1] -_080D36F8: - ldr r2, _080D3718 @ =0x04000054 - ldr r1, _080D371C @ =gScanlineEffectRegBuffers - mov r0, sp - ldrh r0, [r0] - lsls r0, 1 - movs r3, 0xF0 - lsls r3, 3 - adds r1, r3 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080D3714: .4byte 0x04000006 -_080D3718: .4byte 0x04000054 -_080D371C: .4byte gScanlineEffectRegBuffers - thumb_func_end HBCB_BT_Phase2WhiteFadeInStripes - - thumb_func_start SpriteCB_BT_Phase2WhiteFadeInStripes -SpriteCB_BT_Phase2WhiteFadeInStripes: @ 80D3720 - push {r4-r7,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x38] - movs r2, 0x38 - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _080D374C - subs r0, r1, 0x1 - strh r0, [r3, 0x38] - movs r1, 0x3A - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _080D380A - ldr r0, _080D3748 @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - movs r0, 0x1 - strb r0, [r1] - b _080D380A - .align 2, 0 -_080D3748: .4byte sTransitionStructPtr -_080D374C: - movs r2, 0x22 - ldrsh r0, [r3, r2] - lsls r0, 1 - ldr r1, _080D3810 @ =gScanlineEffectRegBuffers - adds r7, r0, r1 - movs r2, 0xA0 - lsls r2, 1 - adds r1, r2 - adds r6, r0, r1 - movs r1, 0x3A - ldrsh r0, [r3, r1] - movs r5, 0x1B - cmp r0, 0 - beq _080D376A - movs r5, 0x19 -_080D376A: - movs r4, 0 - cmp r4, r5 - bcs _080D3790 -_080D3770: - lsls r1, r4, 1 - adds r2, r1, r7 - ldrh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2] - adds r1, r6 - ldrh r0, [r3, 0x20] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r5 - bcc _080D3770 -_080D3790: - movs r2, 0x20 - ldrsh r0, [r3, r2] - ldrh r2, [r3, 0x20] - cmp r0, 0 - bne _080D37AA - movs r0, 0x2E - ldrsh r1, [r3, r0] - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bne _080D37AA - movs r0, 0x1 - strh r0, [r3, 0x30] -_080D37AA: - adds r1, r2, 0 - subs r1, 0x18 - strh r1, [r3, 0x20] - ldrh r0, [r3, 0x2E] - adds r0, 0xC0 - strh r0, [r3, 0x2E] - lsls r1, 16 - cmp r1, 0 - bge _080D37C0 - movs r0, 0 - strh r0, [r3, 0x20] -_080D37C0: - movs r1, 0x2E - ldrsh r0, [r3, r1] - movs r1, 0x80 - lsls r1, 5 - cmp r0, r1 - ble _080D37CE - strh r1, [r3, 0x2E] -_080D37CE: - movs r2, 0x3A - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _080D37E0 - ldr r0, _080D3814 @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - movs r0, 0x1 - strb r0, [r1] -_080D37E0: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _080D380A - movs r2, 0x3A - ldrsh r0, [r3, r2] - ldr r1, _080D3814 @ =sTransitionStructPtr - cmp r0, 0 - beq _080D37FC - ldr r0, [r1] - movs r2, 0x20 - ldrsh r0, [r0, r2] - cmp r0, 0x4 - ble _080D380A -_080D37FC: - ldr r1, [r1] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - adds r0, r3, 0 - bl DestroySprite -_080D380A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D3810: .4byte gScanlineEffectRegBuffers -_080D3814: .4byte sTransitionStructPtr - thumb_func_end SpriteCB_BT_Phase2WhiteFadeInStripes - - thumb_func_start BT_Phase2GridSquares -BT_Phase2GridSquares: @ 80D3818 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D3848 @ =sBT_Phase2GridSquaresFuncs - ldr r2, _080D384C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D382A: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D382A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D3848: .4byte sBT_Phase2GridSquaresFuncs -_080D384C: .4byte gTasks - thumb_func_end BT_Phase2GridSquares - - thumb_func_start BT_Phase2GridSquares_LoadGfx -BT_Phase2GridSquares_LoadGfx: @ 80D3850 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - add r0, sp, 0x4 - add r1, sp, 0x8 - bl BT_GetBg0TilemapAndTilesetBase - ldr r0, _080D3898 @ =sGridSquareTilemap - ldr r1, [sp, 0x8] - movs r2, 0x10 - bl CpuSet - mov r1, sp - movs r2, 0xF0 - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, [sp, 0x4] - ldr r2, _080D389C @ =0x01000400 - mov r0, sp - bl CpuSet - ldr r0, _080D38A0 @ =sSlidingPokeballBigPokeballPalette - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D3898: .4byte sGridSquareTilemap -_080D389C: .4byte 0x01000400 -_080D38A0: .4byte sSlidingPokeballBigPokeballPalette - thumb_func_end BT_Phase2GridSquares_LoadGfx - - thumb_func_start BT_Phase2GridSquares_UpdateTileset -BT_Phase2GridSquares_UpdateTileset: @ 80D38A4 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D38E6 - mov r0, sp - bl BT_GetBg0TilesetBase - movs r0, 0x3 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0xC - ldrsh r0, [r4, r1] - lsls r0, 5 - ldr r1, _080D38F8 @ =sGridSquareTilemap - adds r0, r1 - ldr r1, [sp] - movs r2, 0x10 - bl CpuSet - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0xD - ble _080D38E6 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x10 - strh r0, [r4, 0xA] -_080D38E6: - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D38F8: .4byte sGridSquareTilemap - thumb_func_end BT_Phase2GridSquares_UpdateTileset - - thumb_func_start BT_Phase2GridSquares_IsDone -BT_Phase2GridSquares_IsDone: @ 80D38FC - push {lr} - ldrh r1, [r0, 0xA] - subs r1, 0x1 - strh r1, [r0, 0xA] - lsls r1, 16 - cmp r1, 0 - bne _080D391C - bl BT_BlendPalettesToBlack - ldr r0, _080D3924 @ =BT_Phase2GridSquares - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_080D391C: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080D3924: .4byte BT_Phase2GridSquares - thumb_func_end BT_Phase2GridSquares_IsDone - - thumb_func_start BT_Phase2BlackDoodles -BT_Phase2BlackDoodles: @ 80D3928 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D3958 @ =sBT_Phase2BlackDoodlesFuncs - ldr r2, _080D395C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D393A: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D393A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D3958: .4byte sBT_Phase2BlackDoodlesFuncs -_080D395C: .4byte gTasks - thumb_func_end BT_Phase2BlackDoodles - - thumb_func_start BT_Phase2BlackDoodles_Init -BT_Phase2BlackDoodles_Init: @ 80D3960 - push {r4,r5,lr} - adds r5, r0, 0 - bl BT_InitCtrlBlk - bl ScanlineEffect_Clear - ldr r0, _080D39B8 @ =sTransitionStructPtr - ldr r1, [r0] - movs r2, 0 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r2, _080D39BC @ =gScanlineEffectRegBuffers - movs r3, 0xF0 - adds r4, r2, 0 -_080D3984: - lsls r0, r1, 1 - adds r0, r2 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _080D3984 - movs r0, 0xF0 - lsls r0, 3 - adds r1, r4, r0 - adds r0, r4, 0 - movs r2, 0xA0 - bl CpuSet - ldr r0, _080D39C0 @ =VBCB_BT_Phase2BlackDoodles - bl SetVBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080D39B8: .4byte sTransitionStructPtr -_080D39BC: .4byte gScanlineEffectRegBuffers -_080D39C0: .4byte VBCB_BT_Phase2BlackDoodles - thumb_func_end BT_Phase2BlackDoodles_Init - - thumb_func_start BT_Phase2BlackDoodles_InitSingleBrush -BT_Phase2BlackDoodles_InitSingleBrush: @ 80D39C4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - mov r8, r0 - ldr r0, _080D3A38 @ =sTransitionStructPtr - ldr r0, [r0] - adds r0, 0x24 - ldr r6, _080D3A3C @ =sBlackDoodlesSegments - mov r2, r8 - movs r3, 0xA - ldrsh r1, [r2, r3] - lsls r4, r1, 2 - adds r4, r1 - lsls r4, 1 - adds r1, r4, r6 - movs r5, 0 - ldrsh r1, [r1, r5] - adds r2, r6, 0x2 - adds r2, r4, r2 - movs r3, 0 - ldrsh r2, [r2, r3] - adds r3, r6, 0x4 - adds r3, r4, r3 - movs r5, 0 - ldrsh r3, [r3, r5] - adds r5, r6, 0x6 - adds r4, r5 - movs r5, 0 - ldrsh r4, [r4, r5] - str r4, [sp] - movs r4, 0x1 - str r4, [sp, 0x4] - str r4, [sp, 0x8] - bl BT_DiagonalSegment_InitParams - mov r0, r8 - movs r2, 0xA - ldrsh r1, [r0, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r6, 0x8 - adds r0, r6 - ldrh r0, [r0] - mov r3, r8 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - movs r0, 0x1 - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080D3A38: .4byte sTransitionStructPtr -_080D3A3C: .4byte sBlackDoodlesSegments - thumb_func_end BT_Phase2BlackDoodles_InitSingleBrush - - thumb_func_start BT_Phase2BlackDoodles_DrawSingleBrush -BT_Phase2BlackDoodles_DrawSingleBrush: @ 80D3A40 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r6, r0, 0 - ldr r0, _080D3A90 @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - mov r8, r0 - movs r7, 0 - ldr r0, _080D3A94 @ =gScanlineEffectRegBuffers - mov r9, r0 -_080D3A5C: - ldr r1, _080D3A94 @ =gScanlineEffectRegBuffers - ldr r0, _080D3A90 @ =sTransitionStructPtr - ldr r2, [r0] - movs r3, 0x2A - ldrsh r0, [r2, r3] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsrs r3, r0, 8 - movs r5, 0xFF - ands r5, r0 - movs r4, 0xC - ldrsh r0, [r6, r4] - cmp r0, 0 - bne _080D3A98 - movs r1, 0x28 - ldrsh r0, [r2, r1] - cmp r3, r0 - bge _080D3A84 - ldrh r3, [r2, 0x28] -_080D3A84: - lsls r0, r3, 16 - lsls r1, r5, 16 - cmp r0, r1 - ble _080D3AB0 - lsrs r3, r1, 16 - b _080D3AB0 - .align 2, 0 -_080D3A90: .4byte sTransitionStructPtr -_080D3A94: .4byte gScanlineEffectRegBuffers -_080D3A98: - lsls r0, r5, 16 - asrs r0, 16 - movs r4, 0x28 - ldrsh r1, [r2, r4] - cmp r0, r1 - ble _080D3AA6 - ldrh r5, [r2, 0x28] -_080D3AA6: - lsls r0, r5, 16 - lsls r1, r3, 16 - cmp r0, r1 - bgt _080D3AB0 - lsrs r5, r1, 16 -_080D3AB0: - ldr r0, _080D3AD4 @ =sTransitionStructPtr - ldr r4, [r0] - movs r0, 0x2A - ldrsh r2, [r4, r0] - lsls r2, 1 - add r2, r9 - lsls r1, r3, 16 - asrs r1, 8 - lsls r0, r5, 16 - asrs r0, 16 - orrs r0, r1 - strh r0, [r2] - cmp r7, 0 - beq _080D3AD8 - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - b _080D3AFC - .align 2, 0 -_080D3AD4: .4byte sTransitionStructPtr -_080D3AD8: - adds r0, r4, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl BT_DiagonalSegment_ComputePointOnSegment - lsls r0, 24 - lsrs r7, r0, 24 - mov r1, r8 - lsls r0, r1, 16 - movs r3, 0x80 - lsls r3, 9 - adds r0, r3 - lsrs r4, r0, 16 - mov r8, r4 - asrs r0, 16 - cmp r0, 0xF - ble _080D3A5C -_080D3AFC: - ldr r0, _080D3B18 @ =sTransitionStructPtr - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080D3B18: .4byte sTransitionStructPtr - thumb_func_end BT_Phase2BlackDoodles_DrawSingleBrush - - thumb_func_start BT_Phase2BlackDoodles_IsDone -BT_Phase2BlackDoodles_IsDone: @ 80D3B1C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080D3B68 - ldr r1, _080D3B58 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080D3B5C @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080D3B60 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl BT_BlendPalettesToBlack - ldr r0, _080D3B64 @ =BT_Phase2BlackDoodles - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - b _080D3B80 - .align 2, 0 -_080D3B58: .4byte 0x040000b0 -_080D3B5C: .4byte 0x0000c5ff -_080D3B60: .4byte 0x00007fff -_080D3B64: .4byte BT_Phase2BlackDoodles -_080D3B68: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - ldr r1, _080D3B84 @ =sBlackDoodlesDelay - movs r3, 0xA - ldrsh r0, [r2, r3] - subs r0, 0x1 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2, 0xE] - movs r0, 0x1 -_080D3B80: - pop {r1} - bx r1 - .align 2, 0 -_080D3B84: .4byte sBlackDoodlesDelay - thumb_func_end BT_Phase2BlackDoodles_IsDone - - thumb_func_start BT_Phase2BlackDoodles_NextBrush -BT_Phase2BlackDoodles_NextBrush: @ 80D3B88 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0xE] - subs r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - cmp r0, 0 - beq _080D3B9C - movs r0, 0 - b _080D3BA0 -_080D3B9C: - movs r0, 0x1 - strh r0, [r1, 0x8] -_080D3BA0: - pop {r1} - bx r1 - thumb_func_end BT_Phase2BlackDoodles_NextBrush - - thumb_func_start VBCB_BT_Phase2BlackDoodles -VBCB_BT_Phase2BlackDoodles: @ 80D3BA4 - push {r4,r5,lr} - ldr r5, _080D3C1C @ =0x040000b0 - ldrh r1, [r5, 0xA] - ldr r0, _080D3C20 @ =0x0000c5ff - ands r0, r1 - strh r0, [r5, 0xA] - ldrh r1, [r5, 0xA] - ldr r0, _080D3C24 @ =0x00007fff - ands r0, r1 - strh r0, [r5, 0xA] - ldrh r0, [r5, 0xA] - bl BT_VBSyncOamAndPltt - ldr r4, _080D3C28 @ =sTransitionStructPtr - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _080D3BDC - ldr r1, _080D3C2C @ =0x040000d4 - ldr r0, _080D3C30 @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _080D3C34 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080D3BDC: - ldr r0, [r4] - ldrh r1, [r0, 0x2] - movs r0, 0x48 - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x4] - movs r0, 0x4A - bl SetGpuReg - ldr r0, [r4] - ldrh r1, [r0, 0x8] - movs r0, 0x44 - bl SetGpuReg - ldr r4, _080D3C30 @ =gScanlineEffectRegBuffers - movs r0, 0xF0 - lsls r0, 3 - adds r4, r0 - ldrh r1, [r4] - movs r0, 0x40 - bl SetGpuReg - str r4, [r5] - ldr r0, _080D3C38 @ =0x04000040 - str r0, [r5, 0x4] - ldr r0, _080D3C3C @ =0xa2400001 - str r0, [r5, 0x8] - ldr r0, [r5, 0x8] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D3C1C: .4byte 0x040000b0 -_080D3C20: .4byte 0x0000c5ff -_080D3C24: .4byte 0x00007fff -_080D3C28: .4byte sTransitionStructPtr -_080D3C2C: .4byte 0x040000d4 -_080D3C30: .4byte gScanlineEffectRegBuffers -_080D3C34: .4byte 0x800000a0 -_080D3C38: .4byte 0x04000040 -_080D3C3C: .4byte 0xa2400001 - thumb_func_end VBCB_BT_Phase2BlackDoodles - - thumb_func_start BT_CreatePhase1SubTask -BT_CreatePhase1SubTask: @ 80D3C40 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - mov r8, r0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - ldr r3, [sp, 0x18] - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 16 - lsrs r6, 16 - lsls r3, 16 - lsrs r3, 16 - ldr r0, _080D3C9C @ =BT_Phase1SubTask - movs r1, 0x3 - str r3, [sp] - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D3CA0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - mov r0, r8 - strh r0, [r1, 0xA] - strh r4, [r1, 0xC] - strh r5, [r1, 0xE] - strh r6, [r1, 0x10] - ldr r3, [sp] - strh r3, [r1, 0x12] - strh r0, [r1, 0x14] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D3C9C: .4byte BT_Phase1SubTask -_080D3CA0: .4byte gTasks - thumb_func_end BT_CreatePhase1SubTask - - thumb_func_start BT_IsPhase1Done -BT_IsPhase1Done: @ 80D3CA4 - push {lr} - ldr r0, _080D3CB8 @ =BT_Phase1SubTask - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080D3CBC - movs r0, 0 - b _080D3CBE - .align 2, 0 -_080D3CB8: .4byte BT_Phase1SubTask -_080D3CBC: - movs r0, 0x1 -_080D3CBE: - pop {r1} - bx r1 - thumb_func_end BT_IsPhase1Done - - thumb_func_start BT_Phase1SubTask -BT_Phase1SubTask: @ 80D3CC4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080D3CF4 @ =sBT_Phase1FadeFuncs - ldr r2, _080D3CF8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_080D3CD6: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080D3CD6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D3CF4: .4byte sBT_Phase1FadeFuncs -_080D3CF8: .4byte gTasks - thumb_func_end BT_Phase1SubTask - - thumb_func_start BT_Phase1_FadeOut -BT_Phase1_FadeOut: @ 80D3CFC - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080D3D14 - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _080D3D38 -_080D3D14: - ldrh r0, [r4, 0xA] - strh r0, [r4, 0x14] - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0x16] - adds r0, r1 - strh r0, [r4, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080D3D2C - movs r0, 0x10 - strh r0, [r4, 0x16] -_080D3D2C: - movs r0, 0x1 - negs r0, r0 - ldrb r1, [r4, 0x16] - ldr r2, _080D3D54 @ =0x00002d6b - bl BlendPalettes -_080D3D38: - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0xF - ble _080D3D4A - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xC] - strh r0, [r4, 0x14] -_080D3D4A: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D3D54: .4byte 0x00002d6b - thumb_func_end BT_Phase1_FadeOut - - thumb_func_start BT_Phase1_FadeIn -BT_Phase1_FadeIn: @ 80D3D58 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x14] - movs r2, 0x14 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080D3D70 - subs r0, r1, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _080D3D92 -_080D3D70: - ldrh r0, [r4, 0xC] - strh r0, [r4, 0x14] - ldrh r0, [r4, 0x16] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r4, 0x16] - lsls r0, 16 - cmp r0, 0 - bge _080D3D86 - movs r0, 0 - strh r0, [r4, 0x16] -_080D3D86: - movs r0, 0x1 - negs r0, r0 - ldrb r1, [r4, 0x16] - ldr r2, _080D3DB8 @ =0x00002d6b - bl BlendPalettes -_080D3D92: - movs r0, 0x16 - ldrsh r1, [r4, r0] - cmp r1, 0 - bne _080D3DC6 - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080D3DC0 - ldr r0, _080D3DBC @ =BT_Phase1SubTask - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - b _080D3DC6 - .align 2, 0 -_080D3DB8: .4byte 0x00002d6b -_080D3DBC: .4byte BT_Phase1SubTask -_080D3DC0: - ldrh r0, [r4, 0xA] - strh r0, [r4, 0x14] - strh r1, [r4, 0x8] -_080D3DC6: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end BT_Phase1_FadeIn - - thumb_func_start BT_InitCtrlBlk -BT_InitCtrlBlk: @ 80D3DD0 - push {r4,lr} - ldr r4, _080D3DF0 @ =sTransitionStructPtr - ldr r0, [r4] - movs r1, 0 - movs r2, 0x3C - bl memset - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x14 - adds r1, 0x16 - bl sub_805A658 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D3DF0: .4byte sTransitionStructPtr - thumb_func_end BT_InitCtrlBlk - - thumb_func_start BT_VBSyncOamAndPltt -BT_VBSyncOamAndPltt: @ 80D3DF4 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end BT_VBSyncOamAndPltt - - thumb_func_start BT_GetBg0TilesetBase -BT_GetBg0TilesetBase: @ 80D3E08 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x8 - bl GetGpuReg - lsls r0, 16 - lsrs r0, 18 - lsls r0, 30 - lsrs r0, 16 - movs r1, 0xC0 - lsls r1, 19 - adds r0, r1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - thumb_func_end BT_GetBg0TilesetBase - - thumb_func_start BT_GetBg0TilemapAndTilesetBase -BT_GetBg0TilemapAndTilesetBase: @ 80D3E28 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0x8 - bl GetGpuReg - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 24 - movs r0, 0x1F - ands r4, r0 - movs r0, 0x8 - bl GetGpuReg - lsls r0, 16 - lsrs r0, 18 - lsls r4, 11 - lsls r0, 30 - lsrs r0, 16 - movs r1, 0xC0 - lsls r1, 19 - adds r4, r1 - str r4, [r5] - adds r0, r1 - str r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end BT_GetBg0TilemapAndTilesetBase - - thumb_func_start BT_BlendPalettesToBlack -BT_BlendPalettesToBlack: @ 80D3E60 - push {lr} - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - pop {r0} - bx r0 - thumb_func_end BT_BlendPalettesToBlack - - thumb_func_start BT_LoadWaveIntoBuffer -BT_LoadWaveIntoBuffer: @ 80D3E74 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - ldr r0, [sp, 0x20] - ldr r4, [sp, 0x24] - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - lsrs r1, r0, 16 - lsls r4, 16 - movs r6, 0 - lsrs r5, r4, 16 - cmp r4, 0 - ble _080D3EDC - lsls r0, r7, 16 - asrs r0, 16 - mov r9, r0 - lsls r1, 16 - mov r8, r1 - lsls r0, r3, 16 - asrs r7, r0, 16 -_080D3EAC: - lsls r4, r2, 16 - asrs r4, 16 - movs r0, 0xFF - ands r0, r4 - mov r2, r8 - asrs r1, r2, 16 - bl Sin - lsls r1, r6, 1 - add r1, r10 - add r0, r9 - strh r0, [r1] - lsls r1, r5, 16 - ldr r0, _080D3EEC @ =0xffff0000 - adds r1, r0 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, r7 - lsls r4, 16 - lsrs r2, r4, 16 - lsrs r5, r1, 16 - cmp r1, 0 - bgt _080D3EAC -_080D3EDC: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D3EEC: .4byte 0xffff0000 - thumb_func_end BT_LoadWaveIntoBuffer - - thumb_func_start BT_GenerateCircle -BT_GenerateCircle: @ 80D3EF0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r9, r0 - adds r5, r2, 0 - adds r4, r3, 0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - movs r2, 0xA0 - lsls r2, 1 - movs r1, 0xA - bl memset - movs r1, 0 - lsls r4, 16 - asrs r4, 16 - str r4, [sp, 0x4] - lsls r5, 16 - asrs r5, 16 - str r5, [sp, 0x8] -_080D3F28: - lsls r5, r1, 16 - asrs r0, r5, 16 - mov r10, r0 - ldr r1, [sp, 0x4] - bl Sin - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - mov r0, r10 - ldr r1, [sp, 0x4] - bl Cos - ldr r2, [sp] - lsls r1, r2, 16 - asrs r1, 16 - lsls r4, 16 - asrs r4, 16 - subs r2, r1, r4 - lsls r2, 16 - adds r1, r4 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r0, 16 - asrs r0, 16 - ldr r3, [sp, 0x8] - subs r1, r3, r0 - lsls r1, 16 - lsrs r7, r1, 16 - adds r0, r3, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsrs r1, r2, 16 - str r5, [sp, 0x10] - cmp r2, 0 - bge _080D3F74 - movs r1, 0 -_080D3F74: - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, 0xF0 - ble _080D3F7E - movs r6, 0xF0 -_080D3F7E: - lsls r0, r7, 16 - cmp r0, 0 - bge _080D3F86 - movs r7, 0 -_080D3F86: - mov r2, r8 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _080D3F94 - movs r3, 0x9F - mov r8, r3 -_080D3F94: - lsls r0, r1, 24 - lsrs r0, 16 - orrs r6, r0 - lsls r0, r7, 16 - asrs r0, 16 - str r0, [sp, 0xC] - lsls r0, 1 - add r0, r9 - strh r6, [r0] - mov r0, r8 - lsls r4, r0, 16 - asrs r0, r4, 15 - add r0, r9 - strh r6, [r0] - mov r0, r10 - adds r0, 0x1 - lsls r0, 16 - asrs r0, 16 - ldr r1, [sp, 0x4] - bl Cos - lsls r0, 16 - asrs r0, 16 - ldr r2, [sp, 0x8] - subs r1, r2, r0 - lsls r1, 16 - adds r0, r2, r0 - lsls r0, 16 - lsrs r2, r0, 16 - lsrs r3, r1, 16 - cmp r1, 0 - bge _080D3FD6 - movs r3, 0 -_080D3FD6: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _080D3FE0 - movs r2, 0x9F -_080D3FE0: - lsls r0, r3, 16 - asrs r1, r0, 16 - adds r3, r0, 0 - lsls r5, r2, 16 - ldr r0, [sp, 0xC] - cmp r0, r1 - ble _080D4004 - adds r2, r1, 0 -_080D3FF0: - lsls r1, r7, 16 - ldr r0, _080D4084 @ =0xffff0000 - adds r1, r0 - asrs r0, r1, 15 - add r0, r9 - strh r6, [r0] - lsrs r7, r1, 16 - asrs r1, 16 - cmp r1, r2 - bgt _080D3FF0 -_080D4004: - lsls r1, r7, 16 - asrs r0, r3, 16 - cmp r1, r3 - bge _080D4022 - adds r2, r0, 0 -_080D400E: - movs r3, 0x80 - lsls r3, 9 - adds r0, r1, r3 - asrs r1, r0, 15 - add r1, r9 - strh r6, [r1] - adds r1, r0, 0 - asrs r0, r1, 16 - cmp r0, r2 - blt _080D400E -_080D4022: - asrs r0, r5, 16 - cmp r4, r5 - ble _080D4040 - adds r1, r0, 0 -_080D402A: - ldr r2, _080D4084 @ =0xffff0000 - adds r0, r4, r2 - lsrs r3, r0, 16 - mov r8, r3 - asrs r0, 15 - add r0, r9 - strh r6, [r0] - lsls r4, r3, 16 - asrs r0, r4, 16 - cmp r0, r1 - bgt _080D402A -_080D4040: - mov r0, r8 - lsls r4, r0, 16 - asrs r0, r5, 16 - cmp r4, r5 - bge _080D4060 - adds r2, r0, 0 -_080D404C: - movs r1, 0x80 - lsls r1, 9 - adds r0, r4, r1 - asrs r1, r0, 15 - add r1, r9 - strh r6, [r1] - adds r4, r0, 0 - asrs r0, r4, 16 - cmp r0, r2 - blt _080D404C -_080D4060: - ldr r2, [sp, 0x10] - movs r3, 0x80 - lsls r3, 9 - adds r0, r2, r3 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x3F - bgt _080D4072 - b _080D3F28 -_080D4072: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D4084: .4byte 0xffff0000 - thumb_func_end BT_GenerateCircle - - thumb_func_start BT_DiagonalSegment_InitParams -BT_DiagonalSegment_InitParams: @ 80D4088 - push {r4-r7,lr} - adds r6, r0, 0 - ldr r0, [sp, 0x14] - ldr r5, [sp, 0x18] - ldr r4, [sp, 0x1C] - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - lsrs r0, 16 - adds r7, r0, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - strh r1, [r6] - strh r2, [r6, 0x2] - strh r1, [r6, 0x4] - strh r2, [r6, 0x6] - strh r3, [r6, 0x8] - strh r7, [r6, 0xA] - strh r5, [r6, 0xC] - strh r4, [r6, 0xE] - lsls r3, 16 - asrs r3, 16 - lsls r1, 16 - asrs r1, 16 - subs r3, r1 - strh r3, [r6, 0x10] - lsls r0, r3, 16 - cmp r0, 0 - bge _080D40DA - negs r0, r3 - strh r0, [r6, 0x10] - lsls r0, r5, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r6, 0xC] -_080D40DA: - lsls r0, r7, 16 - asrs r0, 16 - lsls r1, r2, 16 - asrs r1, 16 - subs r1, r0, r1 - strh r1, [r6, 0x12] - lsls r0, r1, 16 - cmp r0, 0 - bge _080D40F8 - negs r0, r1 - strh r0, [r6, 0x12] - lsls r0, r4, 16 - asrs r0, 16 - negs r0, r0 - strh r0, [r6, 0xE] -_080D40F8: - movs r0, 0 - strh r0, [r6, 0x14] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end BT_DiagonalSegment_InitParams - - thumb_func_start BT_DiagonalSegment_ComputePointOnSegment -BT_DiagonalSegment_ComputePointOnSegment: @ 80D4104 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r3, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - ldrh r0, [r3, 0x10] - mov r8, r0 - movs r1, 0x10 - ldrsh r6, [r3, r1] - ldrh r2, [r3, 0x12] - mov r12, r2 - movs r4, 0x12 - ldrsh r5, [r3, r4] - cmp r6, r5 - ble _080D4154 - ldrh r0, [r3, 0xC] - ldrh r2, [r3, 0x4] - adds r1, r0, r2 - strh r1, [r3, 0x4] - ldrh r2, [r3, 0x14] - add r2, r12 - strh r2, [r3, 0x14] - lsls r1, r2, 16 - asrs r1, 16 - adds r4, r0, 0 - ldrh r7, [r3, 0xE] - cmp r1, r6 - ble _080D417A - ldrh r1, [r3, 0x6] - adds r0, r7, r1 - strh r0, [r3, 0x6] - mov r1, r8 - b _080D4176 -_080D4154: - ldrh r0, [r3, 0xE] - ldrh r2, [r3, 0x6] - adds r1, r0, r2 - strh r1, [r3, 0x6] - ldrh r2, [r3, 0x14] - add r2, r8 - strh r2, [r3, 0x14] - lsls r1, r2, 16 - asrs r1, 16 - ldrh r4, [r3, 0xC] - adds r7, r0, 0 - cmp r1, r5 - ble _080D417A - ldrh r1, [r3, 0x4] - adds r0, r4, r1 - strh r0, [r3, 0x4] - mov r1, r12 -_080D4176: - subs r0, r2, r1 - strh r0, [r3, 0x14] -_080D417A: - movs r5, 0 - lsls r0, r4, 16 - asrs r2, r0, 16 - cmp r2, 0 - ble _080D4192 - movs r4, 0x4 - ldrsh r1, [r3, r4] - movs r4, 0x8 - ldrsh r0, [r3, r4] - ldrh r4, [r3, 0x8] - cmp r1, r0 - bge _080D41A4 -_080D4192: - cmp r2, 0 - bge _080D41B2 - movs r0, 0x4 - ldrsh r1, [r3, r0] - movs r2, 0x8 - ldrsh r0, [r3, r2] - ldrh r4, [r3, 0x8] - cmp r1, r0 - bgt _080D41B2 -_080D41A4: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r9 - cmp r0, 0 - beq _080D41B2 - strh r4, [r3, 0x4] -_080D41B2: - lsls r0, r7, 16 - asrs r2, r0, 16 - cmp r2, 0 - ble _080D41C8 - movs r4, 0x6 - ldrsh r1, [r3, r4] - movs r4, 0xA - ldrsh r0, [r3, r4] - ldrh r4, [r3, 0xA] - cmp r1, r0 - bge _080D41DA -_080D41C8: - cmp r2, 0 - bge _080D41E8 - movs r0, 0x6 - ldrsh r1, [r3, r0] - movs r2, 0xA - ldrsh r0, [r3, r2] - ldrh r4, [r3, 0xA] - cmp r1, r0 - bgt _080D41E8 -_080D41DA: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r10 - cmp r0, 0 - beq _080D41E8 - strh r4, [r3, 0x6] -_080D41E8: - cmp r5, 0x2 - beq _080D41F0 - movs r0, 0 - b _080D41F2 -_080D41F0: - movs r0, 0x1 -_080D41F2: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end BT_DiagonalSegment_ComputePointOnSegment - - .align 2, 0 @ Don't pad with nop. diff --git a/graphics/battle_transitions/grid_square_tilemap.bin b/graphics/battle_transitions/grid_square_tilemap.bin deleted file mode 100644 index 7f67463eb394909323c1ac2e8a0bd14da1f4f8cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcma)%0S*8W5Ci?d|9|NRwAffeSCcx)bR?IOPDRvW@`BB^ijy%J?yZB4^Mmu9t%v_) ceFqmmy6R=ShrGa_HOGGy<1WKxRU&@44FlFGUH||9 diff --git a/graphics/battle_transitions/grid_square_tileset.png b/graphics/battle_transitions/grid_square_tileset.png new file mode 100644 index 0000000000000000000000000000000000000000..fb8a9e6fdc9ff0256641a381d7b274b0800e4730 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^96(&b0wfspw=qr!QVyOjjv*QolYj8D@VE#hI5h3z zXW>w~qR3$1(LLFLS!KmxKY@jO+6>+c1T7dZzOq{&;IiT{{}1~E97+ruUl}kmtState; task->tTheta += 12; task->tAmplitude -= 384; - // Assign a very high frequency value so that 2 adjacent values in gScanlineEffectRegBuffers[0] have different sign + // Assign a very high frequency value so that 2 adjacent values in gScanlineEffectRegBuffers[0] will have different sign. BT_LoadWaveIntoBuffer(gScanlineEffectRegBuffers[0], 0, task->tTheta, 132, task->tAmplitude >> 8, 160); ++sTransitionStructPtr->vblankDma; return FALSE; @@ -996,7 +971,7 @@ bool8 BT_Phase2BigPokeball_CircleEffect(struct Task *task) sTransitionStructPtr->vblankDma = FALSE; if (task->tDeltaRadius < 2048) task->tDeltaRadius += 256; - if (task->tRadius != 0) + if (task->tRadius) { task->tRadius -= (task->tDeltaRadius >> 8); if (task->tRadius < 0) @@ -1034,13 +1009,13 @@ void BT_VBStopDma0SyncSrcBufferSetLcdRegs(void) void VBCB_BT_Phase2BigPokeball1(void) { BT_VBStopDma0SyncSrcBufferSetLcdRegs(); - DmaSet(0, gScanlineEffectRegBuffers[1], ®_BG0HOFS, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_BG0HOFS, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_16BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); } void VBCB_BT_Phase2BigPokeball2(void) { BT_VBStopDma0SyncSrcBufferSetLcdRegs(); - DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_16BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); } #undef tRadius @@ -1354,7 +1329,7 @@ void VBCB_BT_Phase2ClockwiseBlackFade(void) SetGpuReg(REG_OFFSET_WINOUT, sTransitionStructPtr->winOut); SetGpuReg(REG_OFFSET_WIN0V, sTransitionStructPtr->win0V); SetGpuReg(REG_OFFSET_WIN0H, gScanlineEffectRegBuffers[1][0]); - DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_16BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); } #undef trStartPtX @@ -1405,6 +1380,7 @@ bool8 BT_Phase2FullScreenWave_UpdateWave(struct Task *task) for (i = 0; i < 160; ++i, theta += frequency) { s16 var = theta >> 8; + #ifndef NONMATCHING asm(""); #endif @@ -1430,7 +1406,8 @@ void VBCB_BT_Phase2FullScreenWave(void) void HBCB_BT_Phase2FullScreenWave(void) { - u16 offset = gScanlineEffectRegBuffers[1][REG_VCOUNT]; + s16 offset = gScanlineEffectRegBuffers[1][REG_VCOUNT]; + REG_BG1VOFS = offset; REG_BG2VOFS = offset; REG_BG3VOFS = offset; @@ -1522,4 +1499,2007 @@ void BT_Phase2AntiClockwiseSpiral(u8 taskId) while (sBT_Phase2AntiClockwiseSpiralFuncs[gTasks[taskId].tState](&gTasks[taskId])); } +#ifdef NONMATCHING +void sub_80D1F64(s16 a1, s16 a2, bool8 a3) +{ + s16 elem; + for (elem = 320; elem < NELEMS(gScanlineEffectRegBuffers[1]); ++elem) + gScanlineEffectRegBuffers[1][elem] = 120; + WILL DO IT LATER + LET ME RESOLVE OTHER STUFF FIRST + +} +#else +NAKED +void sub_80D1F64(s16 a1, s16 a2, bool8 a3) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp]\n\ + lsls r1, 16\n\ + lsrs r5, r1, 16\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + str r2, [sp, 0x4]\n\ + movs r0, 0\n\ + mov r10, r0\n\ + movs r1, 0xA0\n\ + lsls r1, 17\n\ + ldr r4, _080D1FD8 @ =gScanlineEffectRegBuffers + 0x780\n\ + ldr r3, _080D1FDC @ =0x000003bf\n\ + movs r2, 0x78\n\ + _080D1F8E:\n\ + asrs r0, r1, 16\n\ + lsls r1, r0, 1\n\ + adds r1, r4\n\ + strh r2, [r1]\n\ + adds r0, 0x1\n\ + lsls r1, r0, 16\n\ + asrs r0, r1, 16\n\ + cmp r0, r3\n\ + ble _080D1F8E\n\ + lsls r0, r5, 16\n\ + movs r1, 0\n\ + mov r9, r1\n\ + str r0, [sp, 0xC]\n\ + cmp r0, 0\n\ + bgt _080D1FAE\n\ + b _080D221A\n\ + _080D1FAE:\n\ + mov r3, r10\n\ + lsrs r2, r3, 3\n\ + ldr r4, [sp]\n\ + adds r0, r2, r4\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + mov r0, r10\n\ + adds r0, 0x1\n\ + asrs r1, r0, 3\n\ + str r0, [sp, 0x8]\n\ + cmp r2, r1\n\ + beq _080D1FE0\n\ + lsls r1, r3, 16\n\ + movs r6, 0x80\n\ + lsls r6, 9\n\ + adds r0, r1, r6\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + adds r0, r1, 0\n\ + b _080D1FE6\n\ + .align 2, 0\n\ + _080D1FD8: .4byte gScanlineEffectRegBuffers + 0x780\n\ + _080D1FDC: .4byte 0x000003bf\n\ + _080D1FE0:\n\ + lsls r0, r3, 16\n\ + lsrs r1, r0, 16\n\ + mov r8, r1\n\ + _080D1FE6:\n\ + asrs r4, r0, 16\n\ + mov r0, r10\n\ + adds r1, r4, 0\n\ + bl Sin\n\ + movs r5, 0x50\n\ + subs r0, r5, r0\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + mov r0, r10\n\ + adds r1, r4, 0\n\ + str r2, [sp, 0x10]\n\ + bl Cos\n\ + adds r0, 0x78\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + ldr r6, [sp, 0x8]\n\ + mov r3, r8\n\ + lsls r4, r3, 16\n\ + asrs r4, 16\n\ + adds r0, r6, 0\n\ + adds r1, r4, 0\n\ + bl Sin\n\ + subs r5, r0\n\ + lsls r5, 16\n\ + lsrs r5, 16\n\ + adds r0, r6, 0\n\ + adds r1, r4, 0\n\ + bl Cos\n\ + adds r0, 0x78\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + ldr r2, [sp, 0x10]\n\ + lsls r0, r2, 16\n\ + asrs r1, r0, 16\n\ + cmp r1, 0\n\ + bge _080D203E\n\ + lsls r0, r5, 16\n\ + cmp r0, 0\n\ + bge _080D203E\n\ + b _080D21F8\n\ + _080D203E:\n\ + cmp r1, 0x9F\n\ + ble _080D204C\n\ + lsls r0, r5, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x9F\n\ + ble _080D204C\n\ + b _080D21F8\n\ + _080D204C:\n\ + cmp r1, 0\n\ + bge _080D2052\n\ + movs r2, 0\n\ + _080D2052:\n\ + lsls r0, r2, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x9F\n\ + ble _080D205C\n\ + movs r2, 0x9F\n\ + _080D205C:\n\ + lsls r0, r7, 16\n\ + cmp r0, 0\n\ + bge _080D2064\n\ + movs r7, 0\n\ + _080D2064:\n\ + lsls r0, r7, 16\n\ + asrs r0, 16\n\ + cmp r0, 0xFF\n\ + ble _080D206E\n\ + movs r7, 0xFF\n\ + _080D206E:\n\ + lsls r0, r5, 16\n\ + cmp r0, 0\n\ + bge _080D2076\n\ + movs r5, 0\n\ + _080D2076:\n\ + lsls r0, r5, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x9F\n\ + ble _080D2080\n\ + movs r5, 0x9F\n\ + _080D2080:\n\ + lsls r0, r3, 16\n\ + cmp r0, 0\n\ + bge _080D2088\n\ + movs r3, 0\n\ + _080D2088:\n\ + lsls r0, r3, 16\n\ + asrs r0, 16\n\ + cmp r0, 0xFF\n\ + ble _080D2092\n\ + movs r3, 0xFF\n\ + _080D2092:\n\ + lsls r0, r5, 16\n\ + asrs r0, 16\n\ + lsls r1, r2, 16\n\ + asrs r2, r1, 16\n\ + subs r0, r2\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + mov r0, r10\n\ + subs r0, 0x40\n\ + lsls r0, 24\n\ + adds r6, r1, 0\n\ + cmp r0, 0\n\ + blt _080D2158\n\ + movs r4, 0xA0\n\ + lsls r4, 1\n\ + adds r0, r2, r4\n\ + lsls r0, 1\n\ + ldr r1, _080D20E8 @ =gScanlineEffectRegBuffers + 0x780\n\ + adds r0, r1\n\ + strh r7, [r0]\n\ + lsls r0, r5, 16\n\ + adds r4, r0, 0\n\ + cmp r4, 0\n\ + bne _080D20C4\n\ + b _080D21F8\n\ + _080D20C4:\n\ + lsls r0, r3, 16\n\ + asrs r0, 16\n\ + lsls r1, r7, 16\n\ + asrs r2, r1, 16\n\ + subs r0, r2\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + asrs r0, 16\n\ + mov r8, r0\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + cmp r8, r0\n\ + bge _080D20EC\n\ + cmp r2, 0x1\n\ + ble _080D20EC\n\ + subs r0, r2, 0x1\n\ + b _080D20FC\n\ + .align 2, 0\n\ + _080D20E8: .4byte gScanlineEffectRegBuffers + 0x780\n\ + _080D20EC:\n\ + lsls r0, r3, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x1\n\ + ble _080D2100\n\ + asrs r0, r1, 16\n\ + cmp r0, 0xFE\n\ + bgt _080D2100\n\ + adds r0, 0x1\n\ + _080D20FC:\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + _080D2100:\n\ + adds r0, r4, 0\n\ + asrs r1, r0, 16\n\ + cmp r1, 0\n\ + bge _080D212C\n\ + asrs r2, r6, 16\n\ + ldr r3, _080D2128 @ =gScanlineEffectRegBuffers + 0x780\n\ + _080D210C:\n\ + asrs r1, r0, 16\n\ + adds r0, r2, r1\n\ + movs r4, 0xA0\n\ + lsls r4, 1\n\ + adds r0, r4\n\ + lsls r0, 1\n\ + adds r0, r3\n\ + strh r7, [r0]\n\ + adds r1, 0x1\n\ + lsls r0, r1, 16\n\ + cmp r0, 0\n\ + blt _080D210C\n\ + b _080D21F8\n\ + .align 2, 0\n\ + _080D2128: .4byte gScanlineEffectRegBuffers + 0x780\n\ + _080D212C:\n\ + cmp r1, 0\n\ + ble _080D21F8\n\ + asrs r2, r6, 16\n\ + ldr r3, _080D2154 @ =gScanlineEffectRegBuffers + 0x780\n\ + _080D2134:\n\ + lsls r1, r5, 16\n\ + asrs r1, 16\n\ + adds r0, r2, r1\n\ + movs r6, 0xA0\n\ + lsls r6, 1\n\ + adds r0, r6\n\ + lsls r0, 1\n\ + adds r0, r3\n\ + strh r7, [r0]\n\ + subs r1, 0x1\n\ + lsls r1, 16\n\ + lsrs r5, r1, 16\n\ + cmp r1, 0\n\ + bgt _080D2134\n\ + b _080D21F8\n\ + .align 2, 0\n\ + _080D2154: .4byte gScanlineEffectRegBuffers + 0x780\n\ + _080D2158:\n\ + movs r1, 0xF0\n\ + lsls r1, 1\n\ + adds r0, r2, r1\n\ + lsls r0, 1\n\ + ldr r2, _080D2190 @ =gScanlineEffectRegBuffers + 0x780\n\ + adds r0, r2\n\ + strh r7, [r0]\n\ + lsls r0, r5, 16\n\ + adds r4, r0, 0\n\ + cmp r4, 0\n\ + beq _080D21F8\n\ + lsls r0, r3, 16\n\ + asrs r0, 16\n\ + lsls r1, r7, 16\n\ + asrs r2, r1, 16\n\ + subs r0, r2\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + asrs r0, 16\n\ + mov r8, r0\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + cmp r8, r0\n\ + bge _080D2194\n\ + cmp r2, 0x1\n\ + ble _080D2194\n\ + subs r0, r2, 0x1\n\ + b _080D21A4\n\ + .align 2, 0\n\ + _080D2190: .4byte gScanlineEffectRegBuffers + 0x780\n\ + _080D2194:\n\ + lsls r0, r3, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x1\n\ + ble _080D21A8\n\ + asrs r0, r1, 16\n\ + cmp r0, 0xFE\n\ + bgt _080D21A8\n\ + adds r0, 0x1\n\ + _080D21A4:\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + _080D21A8:\n\ + adds r0, r4, 0\n\ + asrs r1, r0, 16\n\ + cmp r1, 0\n\ + bge _080D21D4\n\ + asrs r2, r6, 16\n\ + ldr r3, _080D21D0 @ =gScanlineEffectRegBuffers + 0x780\n\ + _080D21B4:\n\ + asrs r1, r0, 16\n\ + adds r0, r2, r1\n\ + movs r4, 0xF0\n\ + lsls r4, 1\n\ + adds r0, r4\n\ + lsls r0, 1\n\ + adds r0, r3\n\ + strh r7, [r0]\n\ + adds r1, 0x1\n\ + lsls r0, r1, 16\n\ + cmp r0, 0\n\ + blt _080D21B4\n\ + b _080D21F8\n\ + .align 2, 0\n\ + _080D21D0: .4byte gScanlineEffectRegBuffers + 0x780\n\ + _080D21D4:\n\ + cmp r1, 0\n\ + ble _080D21F8\n\ + asrs r2, r6, 16\n\ + ldr r3, _080D2270 @ =gScanlineEffectRegBuffers + 0x780\n\ + _080D21DC:\n\ + lsls r1, r5, 16\n\ + asrs r1, 16\n\ + adds r0, r2, r1\n\ + movs r6, 0xF0\n\ + lsls r6, 1\n\ + adds r0, r6\n\ + lsls r0, 1\n\ + adds r0, r3\n\ + strh r7, [r0]\n\ + subs r1, 0x1\n\ + lsls r1, 16\n\ + lsrs r5, r1, 16\n\ + cmp r1, 0\n\ + bgt _080D21DC\n\ + _080D21F8:\n\ + mov r1, r9\n\ + lsls r0, r1, 16\n\ + movs r2, 0x80\n\ + lsls r2, 9\n\ + adds r0, r2\n\ + ldr r3, [sp, 0x8]\n\ + lsls r1, r3, 24\n\ + lsrs r1, 24\n\ + mov r10, r1\n\ + lsrs r4, r0, 16\n\ + mov r9, r4\n\ + asrs r0, 16\n\ + ldr r6, [sp, 0xC]\n\ + asrs r1, r6, 12\n\ + cmp r0, r1\n\ + bge _080D221A\n\ + b _080D1FAE\n\ + _080D221A:\n\ + ldr r0, [sp, 0x4]\n\ + cmp r0, 0\n\ + beq _080D222C\n\ + movs r0, 0xC0\n\ + lsls r0, 10\n\ + ldr r1, [sp, 0xC]\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080D2274\n\ + _080D222C:\n\ + movs r2, 0\n\ + mov r9, r2\n\ + ldr r4, _080D2270 @ =gScanlineEffectRegBuffers + 0x780\n\ + movs r5, 0xA0\n\ + lsls r5, 1\n\ + _080D2236:\n\ + mov r3, r9\n\ + lsls r1, r3, 16\n\ + asrs r1, 16\n\ + lsls r3, r1, 1\n\ + ldr r6, [sp, 0x4]\n\ + adds r3, r6\n\ + lsls r3, 1\n\ + adds r3, r4\n\ + adds r0, r1, r5\n\ + lsls r0, 1\n\ + adds r0, r4\n\ + ldrh r2, [r0]\n\ + lsls r2, 8\n\ + movs r6, 0xF0\n\ + lsls r6, 1\n\ + adds r0, r1, r6\n\ + lsls r0, 1\n\ + adds r0, r4\n\ + ldrh r0, [r0]\n\ + orrs r2, r0\n\ + strh r2, [r3]\n\ + adds r1, 0x1\n\ + lsls r1, 16\n\ + lsrs r0, r1, 16\n\ + mov r9, r0\n\ + asrs r1, 16\n\ + cmp r1, 0x9F\n\ + ble _080D2236\n\ + b _080D251C\n\ + .align 2, 0\n\ + _080D2270: .4byte gScanlineEffectRegBuffers + 0x780\n\ + _080D2274:\n\ + ldr r1, [sp, 0xC]\n\ + asrs r4, r1, 16\n\ + lsls r0, r4, 20\n\ + asrs r0, 16\n\ + lsls r5, r4, 1\n\ + ldr r2, [sp]\n\ + lsls r1, r2, 16\n\ + asrs r1, 16\n\ + adds r1, r5\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + bl Sin\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r4, 0\n\ + bge _080D2298\n\ + adds r4, 0x3\n\ + _080D2298:\n\ + asrs r0, r4, 2\n\ + cmp r0, 0x1\n\ + beq _080D234C\n\ + cmp r0, 0x1\n\ + bgt _080D22A8\n\ + cmp r0, 0\n\ + beq _080D22B6\n\ + b _080D24DA\n\ + _080D22A8:\n\ + cmp r0, 0x2\n\ + bne _080D22AE\n\ + b _080D23CC\n\ + _080D22AE:\n\ + cmp r0, 0x3\n\ + bne _080D22B4\n\ + b _080D2466\n\ + _080D22B4:\n\ + b _080D24DA\n\ + _080D22B6:\n\ + lsls r0, r2, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x50\n\ + ble _080D22C0\n\ + movs r2, 0x50\n\ + _080D22C0:\n\ + mov r9, r2\n\ + lsls r1, r2, 16\n\ + cmp r1, 0\n\ + bgt _080D22CA\n\ + b _080D24DA\n\ + _080D22CA:\n\ + ldr r0, _080D2320 @ =gUnknown_83FA444\n\ + adds r0, r5, r0\n\ + movs r3, 0\n\ + ldrsh r4, [r0, r3]\n\ + ldr r6, _080D2324 @ =gScanlineEffectRegBuffers + 0x780\n\ + _080D22D4:\n\ + ldr r0, _080D2328 @ =sTransitionStructPtr\n\ + ldr r5, [r0]\n\ + asrs r2, r1, 16\n\ + adds r0, r2, 0\n\ + muls r0, r4\n\ + asrs r0, 8\n\ + adds r0, 0x78\n\ + lsls r1, r0, 16\n\ + lsrs r7, r1, 16\n\ + strh r0, [r5, 0x28]\n\ + lsls r1, r7, 16\n\ + lsrs r0, r1, 16\n\ + cmp r0, 0xFF\n\ + bhi _080D2334\n\ + movs r3, 0xC8\n\ + lsls r3, 1\n\ + adds r0, r3, 0\n\ + subs r0, r2\n\ + strh r0, [r5, 0x14]\n\ + adds r0, r3, 0\n\ + subs r0, r2\n\ + lsls r0, 1\n\ + adds r3, r0, r6\n\ + ldrh r0, [r3]\n\ + strh r0, [r5, 0x38]\n\ + movs r0, 0x8C\n\ + lsls r0, 2\n\ + subs r0, r2\n\ + lsls r0, 1\n\ + adds r2, r0, r6\n\ + ldrh r0, [r2]\n\ + asrs r1, 16\n\ + cmp r0, r1\n\ + bge _080D232C\n\ + movs r0, 0x78\n\ + strh r0, [r2]\n\ + b _080D2334\n\ + .align 2, 0\n\ + _080D2320: .4byte gUnknown_83FA444\n\ + _080D2324: .4byte gScanlineEffectRegBuffers + 0x780\n\ + _080D2328: .4byte sTransitionStructPtr\n\ + _080D232C:\n\ + ldrh r0, [r3]\n\ + cmp r0, r1\n\ + bge _080D2334\n\ + strh r7, [r3]\n\ + _080D2334:\n\ + mov r1, r9\n\ + lsls r0, r1, 16\n\ + ldr r2, _080D2348 @ =0xffff0000\n\ + adds r0, r2\n\ + lsrs r0, 16\n\ + mov r9, r0\n\ + lsls r1, r0, 16\n\ + cmp r1, 0\n\ + bgt _080D22D4\n\ + b _080D24DA\n\ + .align 2, 0\n\ + _080D2348: .4byte 0xffff0000\n\ + _080D234C:\n\ + lsls r0, r2, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x50\n\ + ble _080D2356\n\ + movs r2, 0x50\n\ + _080D2356:\n\ + mov r9, r2\n\ + lsls r1, r2, 16\n\ + cmp r1, 0\n\ + bgt _080D2360\n\ + b _080D24DA\n\ + _080D2360:\n\ + ldr r0, _080D23BC @ =gUnknown_83FA444\n\ + adds r0, r5, r0\n\ + movs r3, 0\n\ + ldrsh r4, [r0, r3]\n\ + ldr r6, _080D23C0 @ =gScanlineEffectRegBuffers + 0x780\n\ + _080D236A:\n\ + ldr r0, _080D23C4 @ =sTransitionStructPtr\n\ + ldr r3, [r0]\n\ + asrs r2, r1, 16\n\ + adds r0, r2, 0\n\ + muls r0, r4\n\ + asrs r0, 8\n\ + adds r0, 0x78\n\ + lsls r1, r0, 16\n\ + lsrs r7, r1, 16\n\ + strh r0, [r3, 0x28]\n\ + lsls r5, r7, 16\n\ + lsrs r0, r5, 16\n\ + cmp r0, 0xFF\n\ + bhi _080D23A6\n\ + movs r1, 0xC8\n\ + lsls r1, 1\n\ + adds r0, r1, 0\n\ + subs r0, r2\n\ + strh r0, [r3, 0x14]\n\ + adds r0, r1, 0\n\ + subs r0, r2\n\ + lsls r0, 1\n\ + adds r2, r0, r6\n\ + ldrh r0, [r2]\n\ + strh r0, [r3, 0x38]\n\ + ldrh r1, [r2]\n\ + asrs r0, r5, 16\n\ + cmp r1, r0\n\ + bge _080D23A6\n\ + strh r7, [r2]\n\ + _080D23A6:\n\ + mov r2, r9\n\ + lsls r0, r2, 16\n\ + ldr r3, _080D23C8 @ =0xffff0000\n\ + adds r0, r3\n\ + lsrs r0, 16\n\ + mov r9, r0\n\ + lsls r1, r0, 16\n\ + cmp r1, 0\n\ + bgt _080D236A\n\ + b _080D24DA\n\ + .align 2, 0\n\ + _080D23BC: .4byte gUnknown_83FA444\n\ + _080D23C0: .4byte gScanlineEffectRegBuffers + 0x780\n\ + _080D23C4: .4byte sTransitionStructPtr\n\ + _080D23C8: .4byte 0xffff0000\n\ + _080D23CC:\n\ + lsls r0, r2, 16\n\ + asrs r0, 16\n\ + movs r1, 0x4F\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + bge _080D23DA\n\ + ldr r2, _080D2438 @ =0x0000ffb1\n\ + _080D23DA:\n\ + mov r9, r2\n\ + lsls r1, r2, 16\n\ + cmp r1, 0\n\ + bgt _080D24DA\n\ + ldr r0, _080D243C @ =gUnknown_83FA444\n\ + adds r0, r5, r0\n\ + movs r6, 0\n\ + ldrsh r4, [r0, r6]\n\ + ldr r6, _080D2440 @ =gScanlineEffectRegBuffers + 0x780\n\ + _080D23EC:\n\ + ldr r0, _080D2444 @ =sTransitionStructPtr\n\ + ldr r5, [r0]\n\ + asrs r2, r1, 16\n\ + adds r0, r2, 0\n\ + muls r0, r4\n\ + asrs r0, 8\n\ + adds r0, 0x78\n\ + lsls r1, r0, 16\n\ + lsrs r7, r1, 16\n\ + strh r0, [r5, 0x28]\n\ + lsls r1, r7, 16\n\ + lsrs r0, r1, 16\n\ + cmp r0, 0xFF\n\ + bhi _080D2450\n\ + movs r3, 0x8C\n\ + lsls r3, 2\n\ + adds r0, r3, 0\n\ + subs r0, r2\n\ + strh r0, [r5, 0x14]\n\ + adds r0, r3, 0\n\ + subs r0, r2\n\ + lsls r0, 1\n\ + adds r3, r0, r6\n\ + ldrh r0, [r3]\n\ + strh r0, [r5, 0x38]\n\ + movs r0, 0xC8\n\ + lsls r0, 1\n\ + subs r0, r2\n\ + lsls r0, 1\n\ + adds r2, r0, r6\n\ + ldrh r0, [r2]\n\ + asrs r1, 16\n\ + cmp r0, r1\n\ + blt _080D2448\n\ + movs r0, 0x78\n\ + strh r0, [r2]\n\ + b _080D2450\n\ + .align 2, 0\n\ + _080D2438: .4byte 0x0000ffb1\n\ + _080D243C: .4byte gUnknown_83FA444\n\ + _080D2440: .4byte gScanlineEffectRegBuffers + 0x780\n\ + _080D2444: .4byte sTransitionStructPtr\n\ + _080D2448:\n\ + ldrh r0, [r3]\n\ + cmp r0, r1\n\ + ble _080D2450\n\ + strh r7, [r3]\n\ + _080D2450:\n\ + mov r1, r9\n\ + lsls r0, r1, 16\n\ + movs r2, 0x80\n\ + lsls r2, 9\n\ + adds r0, r2\n\ + lsrs r0, 16\n\ + mov r9, r0\n\ + lsls r1, r0, 16\n\ + cmp r1, 0\n\ + ble _080D23EC\n\ + b _080D24DA\n\ + _080D2466:\n\ + lsls r0, r2, 16\n\ + asrs r0, 16\n\ + movs r1, 0x4F\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + bge _080D2474\n\ + ldr r2, _080D252C @ =0x0000ffb1\n\ + _080D2474:\n\ + mov r9, r2\n\ + lsls r1, r2, 16\n\ + cmp r1, 0\n\ + bgt _080D24DA\n\ + ldr r0, _080D2530 @ =gUnknown_83FA444\n\ + adds r0, r5, r0\n\ + movs r3, 0\n\ + ldrsh r4, [r0, r3]\n\ + ldr r6, _080D2534 @ =sTransitionStructPtr\n\ + mov r8, r6\n\ + ldr r6, _080D2538 @ =gScanlineEffectRegBuffers + 0x780\n\ + _080D248A:\n\ + mov r0, r8\n\ + ldr r3, [r0]\n\ + asrs r2, r1, 16\n\ + adds r0, r2, 0\n\ + muls r0, r4\n\ + asrs r0, 8\n\ + adds r0, 0x78\n\ + lsls r1, r0, 16\n\ + lsrs r7, r1, 16\n\ + strh r0, [r3, 0x28]\n\ + lsls r5, r7, 16\n\ + lsrs r0, r5, 16\n\ + cmp r0, 0xFF\n\ + bhi _080D24C6\n\ + movs r1, 0x8C\n\ + lsls r1, 2\n\ + adds r0, r1, 0\n\ + subs r0, r2\n\ + strh r0, [r3, 0x14]\n\ + adds r0, r1, 0\n\ + subs r0, r2\n\ + lsls r0, 1\n\ + adds r2, r0, r6\n\ + ldrh r0, [r2]\n\ + strh r0, [r3, 0x38]\n\ + ldrh r1, [r2]\n\ + asrs r0, r5, 16\n\ + cmp r1, r0\n\ + ble _080D24C6\n\ + strh r7, [r2]\n\ + _080D24C6:\n\ + mov r2, r9\n\ + lsls r0, r2, 16\n\ + movs r3, 0x80\n\ + lsls r3, 9\n\ + adds r0, r3\n\ + lsrs r0, 16\n\ + mov r9, r0\n\ + lsls r1, r0, 16\n\ + cmp r1, 0\n\ + ble _080D248A\n\ + _080D24DA:\n\ + movs r4, 0\n\ + mov r9, r4\n\ + ldr r4, _080D2538 @ =gScanlineEffectRegBuffers + 0x780\n\ + movs r5, 0xA0\n\ + lsls r5, 1\n\ + _080D24E4:\n\ + mov r6, r9\n\ + lsls r1, r6, 16\n\ + asrs r1, 16\n\ + lsls r3, r1, 1\n\ + ldr r0, [sp, 0x4]\n\ + adds r3, r0\n\ + lsls r3, 1\n\ + adds r3, r4\n\ + adds r0, r1, r5\n\ + lsls r0, 1\n\ + adds r0, r4\n\ + ldrh r2, [r0]\n\ + lsls r2, 8\n\ + movs r6, 0xF0\n\ + lsls r6, 1\n\ + adds r0, r1, r6\n\ + lsls r0, 1\n\ + adds r0, r4\n\ + ldrh r0, [r0]\n\ + orrs r2, r0\n\ + strh r2, [r3]\n\ + adds r1, 0x1\n\ + lsls r1, 16\n\ + lsrs r0, r1, 16\n\ + mov r9, r0\n\ + asrs r1, 16\n\ + cmp r1, 0x9F\n\ + ble _080D24E4\n\ + _080D251C:\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ + _080D252C: .4byte 0x0000ffb1\n\ + _080D2530: .4byte gUnknown_83FA444\n\ + _080D2534: .4byte sTransitionStructPtr\n\ + _080D2538: .4byte gScanlineEffectRegBuffers + 0x780\n\ + "); +} +#endif + +bool8 BT_Phase2AntiClockwiseSpiral_Init(struct Task *task) +{ + BT_InitCtrlBlk(); + ScanlineEffect_Clear(); + sTransitionStructPtr->winIn = 0; + sTransitionStructPtr->winOut = 0x3F; + sTransitionStructPtr->win0H = 0x7878; + sTransitionStructPtr->win0V = 0x3070; + sTransitionStructPtr->win1V = 0x1090; + sTransitionStructPtr->counter = 0; + sub_80D1F64(0, 0, FALSE); + sub_80D1F64(0, 0, TRUE); + DmaCopy16(3, gScanlineEffectRegBuffers[1], gScanlineEffectRegBuffers[0], 640); + SetVBlankCallback(VBCB_BT_Phase2AntiClockwiseBlackFade); + ++task->tState; + task->data[1] = 0; + task->data[2] = 0; + return FALSE; +} + +bool8 BT_Phase2AntiClockwiseSpiral_Update(struct Task *task) +{ + s16 v0, v1; + + sub_80D1F64(task->data[2], task->data[1], TRUE); + sTransitionStructPtr->vblankDma |= TRUE; + if (++task->data[1] == 17) + { + sub_80D1F64(task->data[2], 16, FALSE); + v0 = 48 - task->data[2]; + if (v0 < 0) + v0 = 0; + v1 = task->data[2] + 112; + if (v1 > 255) + v1 = 255; + sTransitionStructPtr->win0V = v0 | v1; + task->data[2] += 32; + task->data[1] = 0; + sub_80D1F64(task->data[2], 0, TRUE); + v0 = 48 - task->data[2]; + if (v0 < 0) + v0 = 0; + v1 = task->data[2] + 112; + if (v1 > 255) + v1 = 255; + sTransitionStructPtr->win1V = v0 | v1; + sTransitionStructPtr->vblankDma |= TRUE; + if (task->data[2] > 159) + { + sTransitionStructPtr->counter = 1; + BT_BlendPalettesToBlack(); + } + } + return FALSE; +} + +void VBCB_BT_Phase2AntiClockwiseBlackFade(void) +{ + DmaStop(0); + BT_VBSyncOamAndPltt(); + if (sTransitionStructPtr->counter) + { + DestroyTask(FindTaskIdByFunc(BT_Phase2AntiClockwiseSpiral)); + } + else + { + if (sTransitionStructPtr->vblankDma) + { + DmaCopy16(3, gScanlineEffectRegBuffers[1], gScanlineEffectRegBuffers[0], 640); + sTransitionStructPtr->vblankDma = FALSE; + } + SetGpuReg(REG_OFFSET_WININ, sTransitionStructPtr->winIn); + SetGpuReg(REG_OFFSET_WINOUT, sTransitionStructPtr->winOut); + SetGpuReg(REG_OFFSET_WIN0V, sTransitionStructPtr->win0V); + SetGpuReg(REG_OFFSET_WIN1V, sTransitionStructPtr->win1V); + SetGpuReg(REG_OFFSET_WIN0H, gScanlineEffectRegBuffers[0][0]); + SetGpuReg(REG_OFFSET_WIN1H, gScanlineEffectRegBuffers[0][1]); + DmaSet(0, gScanlineEffectRegBuffers[0], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); + } +} + +#define tTheta data[1] +#define tbg0HOfsOpponent data[2] +#define tbg0HOfsPlayer data[3] +#define tCounter data[3] +#define tHalfBandwidth data[4] +#define tOpponentSpriteId data[13] +#define tPlayerSpriteId data[14] +#define tWhichMugshot data[15] + +#define spState data[0] +#define spSpeed data[1] +#define spAbsAcc data[2] +#define sphasSlideFinished data[6] +#define spOpponentOrPlayer data[7] + +void BT_Phase2StartLoreleiMugshot(u8 taskId) +{ + gTasks[taskId].tWhichMugshot = MUGSHOT_LORELEI; + BT_Phase2Mugshot(taskId); +} + +void BT_Phase2StartBrunoMugshot(u8 taskId) +{ + gTasks[taskId].tWhichMugshot = MUGSHOT_BRUNO; + BT_Phase2Mugshot(taskId); +} + +void BT_Phase2StartAgathaMugshot(u8 taskId) +{ + gTasks[taskId].tWhichMugshot = MUGSHOT_AGATHA; + BT_Phase2Mugshot(taskId); +} + +void BT_Phase2StartLanceMugshot(u8 taskId) +{ + gTasks[taskId].tWhichMugshot = MUGSHOT_LANCE; + BT_Phase2Mugshot(taskId); +} + +void BT_Phase2StartBlueMugshot(u8 taskId) +{ + gTasks[taskId].tWhichMugshot = MUGSHOT_BLUE; + BT_Phase2Mugshot(taskId); +} + +void BT_Phase2Mugshot(u8 taskId) +{ + while (sBT_Phase2MugshotFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2Mugshot_Init(struct Task *task) +{ + u8 i; + + BT_InitCtrlBlk(); + ScanlineEffect_Clear(); + BT_Phase2Mugshots_CreateSprites(task); + task->tTheta = 0; + task->tbg0HOfsOpponent = 1; + task->tbg0HOfsPlayer = 239; + sTransitionStructPtr->winIn = 0x3F; + sTransitionStructPtr->winOut = 0x3E; + sTransitionStructPtr->win0V = 160; + for (i = 0; i < 160; ++i) + gScanlineEffectRegBuffers[1][i] = 0xF0F1; + SetVBlankCallback(VBCB_BT_Phase2Mugshot1_Slide); + ++task->tState; + return FALSE; +} + +bool8 BT_Phase2Mugshot_LoadGfx(struct Task *task) +{ + s16 i, j; + u16 *tilemapAddr, *tilesetAddr; + const u16 *mugshotsMap = sVsBarTilemap; + + BT_GetBg0TilemapAndTilesetBase(&tilemapAddr, &tilesetAddr); + CpuSet(sVsBarTileset, tilesetAddr, 0xF0); + LoadPalette(sVsBarOpponentPalettes[task->tWhichMugshot], 0xF0, 0x20); + LoadPalette(sVsBarPlayerPalettes[gSaveBlock2Ptr->playerGender], 0xFA, 0xC); + for (i = 0; i < 20; ++i) + for (j = 0; j < 32; ++j, ++mugshotsMap) + tilemapAddr[i * 32 + j] = *mugshotsMap | 0xF000; // use palette #15 + EnableInterrupts(INTR_FLAG_HBLANK); + SetHBlankCallback(HBCB_BT_Phase2Mugshot); + ++task->tState; + return FALSE; +} + +bool8 BT_Phase2Mugshot_VsBarsSlideIn(struct Task *task) +{ + u8 i, theta; + u16* toStore; + s16 value; + s32 mergedBg0hOfs; + + sTransitionStructPtr->vblankDma = FALSE; + + toStore = gScanlineEffectRegBuffers[0]; + theta = task->tTheta; + task->tTheta += 0x10; + for (i = 0; i < 80; ++i, ++toStore, theta += 0x10) + { + value = task->tbg0HOfsOpponent + Sin(theta, 0x10); + if (value < 0) + value = 1; + if (value > 0xF0) + value = 0xF0; + *toStore = value; + } + for (; i < 160; ++i, ++toStore, theta += 0x10) + { + value = task->tCounter - Sin(theta, 0x10); + if (value < 0) + value = 0; + if (value > 0xEF) + value = 0xEF; + *toStore = (value << 8) | (0xF0); + } + task->tbg0HOfsOpponent += 8; + task->tCounter -= 8; + if (task->tbg0HOfsOpponent > 0xF0) + task->tbg0HOfsOpponent = 0xF0; + if (task->tCounter < 0) + task->tCounter = 0; + mergedBg0hOfs = *(s32*)(&task->tbg0HOfsOpponent); + if (mergedBg0hOfs == 0x00F0) + ++task->tState; + sTransitionStructPtr->bg0HOfsOpponent -= 8; + sTransitionStructPtr->bg0HOfsPlayer += 8; + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2Mugshot_StartSpriteSlide(struct Task *task) +{ + u8 i; + u16* toStore; + + sTransitionStructPtr->vblankDma = FALSE; + for (i = 0, toStore = gScanlineEffectRegBuffers[0]; i < 160; ++i, ++toStore) + *toStore = 0xF0; + ++task->tState; + task->tTheta = 0; + task->tbg0HOfsOpponent = 0; + task->tbg0HOfsPlayer = 0; + sTransitionStructPtr->bg0HOfsOpponent -= 8; + sTransitionStructPtr->bg0HOfsPlayer += 8; + BT_SetSpriteAsOpponentOrPlayer(task->tOpponentSpriteId, FALSE); + BT_SetSpriteAsOpponentOrPlayer(task->tPlayerSpriteId, TRUE); + BT_StartSpriteSlide(task->tOpponentSpriteId); + PlaySE(SE_C_MAKU_U); + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2Mugshot_WaitForOpponentInPlace(struct Task *task) +{ + sTransitionStructPtr->bg0HOfsOpponent -= 8; + sTransitionStructPtr->bg0HOfsPlayer += 8; + if (BT_IsSpriteSlideFinished(task->tOpponentSpriteId)) + { + ++task->tState; + BT_StartSpriteSlide(task->tPlayerSpriteId); + } + return FALSE; +} + +bool8 BT_Phase2Mugshot_WaitForPlayerInPlace(struct Task *task) +{ + sTransitionStructPtr->bg0HOfsOpponent -= 8; + sTransitionStructPtr->bg0HOfsPlayer += 8; + if (BT_IsSpriteSlideFinished(task->tPlayerSpriteId)) + { + sTransitionStructPtr->vblankDma = FALSE; + SetVBlankCallback(NULL); + DmaStop(0); + memset(gScanlineEffectRegBuffers[0], 0, 320); + memset(gScanlineEffectRegBuffers[1], 0, 320); + SetGpuReg(REG_OFFSET_WIN0H, 0xF0); + SetGpuReg(REG_OFFSET_BLDY, 0); + ++task->tState; + task->tCounter = 0; + task->tHalfBandwidth = 0; + sTransitionStructPtr->bldCnt = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_LIGHTEN; + SetVBlankCallback(VBCB_BT_Phase2Mugshot2_WhiteFade); + } + return FALSE; +} + +bool8 BT_Phase2Mugshot_ExpandWhiteBand(struct Task *task) +{ + bool32 nextFunc; + + sTransitionStructPtr->vblankDma = FALSE; + nextFunc = TRUE; + sTransitionStructPtr->bg0HOfsOpponent -= 8; + sTransitionStructPtr->bg0HOfsPlayer += 8; + if (task->tHalfBandwidth < 80) + task->tHalfBandwidth += 2; + if (task->tHalfBandwidth > 80) + task->tHalfBandwidth = 80; + if (++task->tCounter & 1) + { + s16 i; + + for (i = 0, nextFunc = FALSE; i <= task->tHalfBandwidth; ++i) + { + s16 y1 = 80 - i; + s16 y2 = 80 + i; + + if (gScanlineEffectRegBuffers[0][y1] <= 15) + { + nextFunc = TRUE; + ++gScanlineEffectRegBuffers[0][y1]; + } + if (gScanlineEffectRegBuffers[0][y2] <= 15) + { + nextFunc = TRUE; + ++gScanlineEffectRegBuffers[0][y2]; + } + } + } + if (task->tHalfBandwidth == 80 && !nextFunc) + ++task->tState; + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2Mugshot_StartBlackFade(struct Task *task) +{ + sTransitionStructPtr->vblankDma = FALSE; + BlendPalettes(0xFFFFFFFF, 0x10, RGB_WHITE); + sTransitionStructPtr->bldCnt = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN; + task->tCounter = 0; + ++task->tState; + return TRUE; +} + +bool8 BT_Phase2Mugshot_WaitForBlackFade(struct Task *task) +{ + sTransitionStructPtr->vblankDma = FALSE; + ++task->tCounter; + memset(gScanlineEffectRegBuffers[0], task->tCounter, 320); + if (task->tCounter > 15) + ++task->tState; + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2Mugshot_End(struct Task *task) +{ + DmaStop(0); + BT_BlendPalettesToBlack(); + DestroyTask(FindTaskIdByFunc(task->func)); + return FALSE; +} + +void VBCB_BT_Phase2Mugshot1_Slide(void) +{ + DmaStop(0); + BT_VBSyncOamAndPltt(); + if (sTransitionStructPtr->vblankDma) + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); + SetGpuReg(REG_OFFSET_BG0VOFS, sTransitionStructPtr->bg0VOfs); + SetGpuReg(REG_OFFSET_WININ, sTransitionStructPtr->winIn); + SetGpuReg(REG_OFFSET_WINOUT, sTransitionStructPtr->winOut); + SetGpuReg(REG_OFFSET_WIN0V, sTransitionStructPtr->win0V); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); +} + +void VBCB_BT_Phase2Mugshot2_WhiteFade(void) +{ + DmaStop(0); + BT_VBSyncOamAndPltt(); + if (sTransitionStructPtr->vblankDma) + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); + SetGpuReg(REG_OFFSET_BLDCNT, sTransitionStructPtr->bldCnt); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_BLDY, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); +} + +void HBCB_BT_Phase2Mugshot(void) +{ + if (REG_VCOUNT < 80) + REG_BG0HOFS = sTransitionStructPtr->bg0HOfsOpponent; + else + REG_BG0HOFS = sTransitionStructPtr->bg0HOfsPlayer; +} + + +void BT_Phase2Mugshots_CreateSprites(struct Task *task) +{ + struct Sprite *opponentSprite, *playerSprite; + s16 mugshotId; + + gReservedSpritePaletteCount = 10; + mugshotId = task->tWhichMugshot; + task->tOpponentSpriteId = CreateTrainerSprite(sMugshotsTrainerPicIDsTable[mugshotId], sMugshotsOpponentCoords[mugshotId][0] - 32, sMugshotsOpponentCoords[mugshotId][1] + 42, 0, gDecompressionBuffer); + task->tPlayerSpriteId = CreateTrainerSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, TRUE), 272, 106, 0, gDecompressionBuffer); + gReservedSpritePaletteCount = 12; + opponentSprite = &gSprites[task->tOpponentSpriteId]; + playerSprite = &gSprites[task->tPlayerSpriteId]; + opponentSprite->callback = SpriteCB_BT_Phase2Mugshots; + playerSprite->callback = SpriteCB_BT_Phase2Mugshots; + opponentSprite->oam.affineMode = 3; + playerSprite->oam.affineMode = 3; + opponentSprite->oam.matrixNum = AllocOamMatrix(); + playerSprite->oam.matrixNum = AllocOamMatrix(); + opponentSprite->oam.shape = 1; + playerSprite->oam.shape = 1; + opponentSprite->oam.size = 3; + playerSprite->oam.size = 3; + CalcCenterToCornerVec(opponentSprite, 1, 3, 3); + CalcCenterToCornerVec(playerSprite, 1, 3, 3); + SetOamMatrixRotationScaling(opponentSprite->oam.matrixNum, sMugshotsOpponentRotationScales[mugshotId][0], sMugshotsOpponentRotationScales[mugshotId][1], 0); + SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 512, 0); +} + +void SpriteCB_BT_Phase2Mugshots(struct Sprite *sprite) +{ + while (sBT_Phase2MugshotSpriteFuncs[sprite->spState](sprite)); +} + +bool8 BT_Phase2MugshotsSpriteFuncs_Wait(struct Sprite *sprite) +{ + return FALSE; +} + +bool8 BT_Phase2MugshotsSpriteFuncs_InitParams(struct Sprite *sprite) +{ + s16 arr0[2]; + s16 arr1[2]; + + memcpy(arr0, sMugShotSlideVelocity, sizeof(sMugShotSlideVelocity)); + memcpy(arr1, sMugShotSlideDeceleration, sizeof(sMugShotSlideDeceleration)); + ++sprite->spState; + sprite->spSpeed = arr0[sprite->spOpponentOrPlayer]; + sprite->spAbsAcc = arr1[sprite->spOpponentOrPlayer]; + return TRUE; +} + +bool8 BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn(struct Sprite *sprite) +{ + sprite->pos1.x += sprite->spSpeed; + if (sprite->spOpponentOrPlayer && sprite->pos1.x < 133) + ++sprite->spState; + else if (!sprite->spOpponentOrPlayer && sprite->pos1.x > 103) + ++sprite->spState; + return FALSE; +} + +bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite(struct Sprite *sprite) +{ + sprite->spSpeed += sprite->spAbsAcc; + sprite->pos1.x += sprite->spSpeed; + if (sprite->spSpeed == 0) + { + ++sprite->spState; + sprite->spAbsAcc = -sprite->spAbsAcc; + sprite->sphasSlideFinished = 1; + } + return FALSE; +} + +// not used +bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2(struct Sprite *sprite) +{ + sprite->spSpeed += sprite->spAbsAcc; + sprite->pos1.x += sprite->spSpeed; + if (sprite->pos1.x < -31 || sprite->pos1.x > 271) + ++sprite->spState; + return FALSE; +} + +void BT_SetSpriteAsOpponentOrPlayer(s16 spriteId, bool16 value) +{ + gSprites[spriteId].spOpponentOrPlayer = value; +} + +void BT_StartSpriteSlide(s16 spriteId) +{ + ++gSprites[spriteId].spState; +} + +s16 BT_IsSpriteSlideFinished(s16 spriteId) +{ + return gSprites[spriteId].sphasSlideFinished; +} + +#undef tTheta +#undef tbg0HOfsOpponent +#undef tbg0HOfsPlayer +#undef tCounter +#undef tHalfBandwidth +#undef tOpponentSpriteId +#undef tPlayerSpriteId +#undef tWhichMugshot + +#undef spState +#undef spSpeed +#undef spAbsAcc +#undef sphasSlideFinished +#undef spOpponentOrPlayer + +#define tSpeed data[1] +#define tAcc data[2] +#define tJerk data[3] + +void BT_Phase2SlicedScreen(u8 taskId) +{ + while (sBT_Phase2SlicedScreenFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2SlicedScreen_Init(struct Task *task) +{ + u16 i; + + BT_InitCtrlBlk(); + ScanlineEffect_Clear(); + task->tAcc = 256; + task->tJerk = 1; + sTransitionStructPtr->winIn = 0x3F; + sTransitionStructPtr->winOut = 0; + sTransitionStructPtr->win0V = 160; + for (i = 0; i < 160; ++i) + { + gScanlineEffectRegBuffers[1][i] = sTransitionStructPtr->bg123HOfs; + gScanlineEffectRegBuffers[1][160 + i] = 0xF0; + } + EnableInterrupts(INTR_FLAG_HBLANK); + SetVBlankCallback(VBCB_BT_Phase2SlicedScreen); + SetHBlankCallback(HBCB_BT_Phase2SlicedScreen); + ++task->tState; + return TRUE; +} + +bool8 BT_Phase2SlicedScreen_UpdateOffsets(struct Task *task) +{ + u16 i; + + sTransitionStructPtr->vblankDma = FALSE; + task->tSpeed += (task->tAcc >> 8); + if (task->tSpeed > 0xF0) + task->tSpeed = 0xF0; + if (task->tAcc <= 0xFFF) + task->tAcc += task->tJerk; + if (task->tJerk < 128) + task->tJerk <<= 1; + for (i = 0; i < 160; ++i) + { + u16 *ofsBuffer = &gScanlineEffectRegBuffers[0][i]; + u16 *win0HBuffer = &gScanlineEffectRegBuffers[0][i + 160]; + if (i & 1) + { + *ofsBuffer = sTransitionStructPtr->bg123HOfs + task->tSpeed; + *win0HBuffer = 0xF0 - task->tSpeed; + } + else + { + *ofsBuffer = sTransitionStructPtr->bg123HOfs - task->tSpeed; + *win0HBuffer = (task->tSpeed << 8) | 0xF1; + } + } + if (task->tSpeed > 0xEF) + ++task->tState; + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2SlicedScreen_End(struct Task *task) +{ + DmaStop(0); + BT_BlendPalettesToBlack(); + DestroyTask(FindTaskIdByFunc(BT_Phase2SlicedScreen)); + return FALSE; +} + +void VBCB_BT_Phase2SlicedScreen(void) +{ + DmaStop(0); + BT_VBSyncOamAndPltt(); + SetGpuReg(REG_OFFSET_WININ, sTransitionStructPtr->winIn); + SetGpuReg(REG_OFFSET_WINOUT, sTransitionStructPtr->winOut); + SetGpuReg(REG_OFFSET_WIN0V, sTransitionStructPtr->win0V); + if (sTransitionStructPtr->vblankDma) + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640); + DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_16BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); +} + +void HBCB_BT_Phase2SlicedScreen(void) +{ + s16 offset = gScanlineEffectRegBuffers[1][REG_VCOUNT]; + + REG_BG1HOFS = offset; + REG_BG2HOFS = offset; + REG_BG3HOFS = offset; +} + +#undef tSpeed +#undef tAcc +#undef tJerk + +#define spBldyCounter data[0] +#define spFinished data[1] +#define spAltDelay data[2] +#define spDelay data[5] +#define spLastSprite data[6] + +void BT_Phase2WhiteFadeInStripes(u8 taskId) +{ + while (sBT_Phase2WhiteFadeInStripesFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2WhiteFadeInStripes_Init(struct Task *task) +{ + u16 i; + + BT_InitCtrlBlk(); + ScanlineEffect_Clear(); + sTransitionStructPtr->bldCnt = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_LIGHTEN; + sTransitionStructPtr->bldY = 0; + sTransitionStructPtr->winIn = 0x1E; + sTransitionStructPtr->winOut = 0x3F; + sTransitionStructPtr->win0V = 160; + for (i = 0; i < 160; ++i) + { + gScanlineEffectRegBuffers[1][i] = 0; + gScanlineEffectRegBuffers[1][i + 160] = 0xF0; + } + EnableInterrupts(INTR_FLAG_HBLANK); + SetHBlankCallback(HBCB_BT_Phase2WhiteFadeInStripes); + SetVBlankCallback(VBCB_BT_Phase2WhiteFadeInStripes1); + ++task->tState; + return FALSE; +} + +bool8 BT_Phase2WhiteFadeInStripes_SetupSprites(struct Task *task) +{ + s16 i, posY; + s16 buffer[NELEMS(sWhiteStripeDelay)]; + struct Sprite *sprite; + + memcpy(buffer, sWhiteStripeDelay, sizeof(sWhiteStripeDelay)); + for (i = 0, posY = 0; i < 6; ++i, posY += 0x1B) + { + sprite = &gSprites[CreateInvisibleSprite(SpriteCB_BT_Phase2WhiteFadeInStripes)]; + sprite->pos1.x = 0xF0; + sprite->pos1.y = posY; + sprite->spDelay = buffer[i]; + } + ++sprite->spLastSprite; + ++task->tState; + return FALSE; +} + +bool8 BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone(struct Task *task) +{ + sTransitionStructPtr->vblankDma = FALSE; + if (sTransitionStructPtr->counter > 5) + { + BlendPalettes(0xFFFFFFFF, 0x10, RGB_WHITE); + ++task->tState; + } + return FALSE; +} + +bool8 BT_Phase2WhiteFadeInStripes_Stop(struct Task *task) +{ + sTransitionStructPtr->vblankDma = FALSE; + DmaStop(0); + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); + sTransitionStructPtr->win0H = 240; + sTransitionStructPtr->bldY = 0; + sTransitionStructPtr->bldCnt = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN; + sTransitionStructPtr->winIn = 0x3F; + sTransitionStructPtr->counter = 0; + SetVBlankCallback(VBCB_BT_Phase2WhiteFadeInStripes2); + ++task->tState; + return FALSE; +} + +bool8 BT_Phase2WhiteFadeInStripes_IsDone(struct Task *task) +{ + sTransitionStructPtr->counter += 480; + sTransitionStructPtr->bldY = sTransitionStructPtr->counter >> 8; + if (sTransitionStructPtr->bldY > 16) + { + BT_BlendPalettesToBlack(); + DestroyTask(FindTaskIdByFunc(BT_Phase2WhiteFadeInStripes)); + } + return FALSE; +} + +void VBCB_BT_Phase2WhiteFadeInStripes1(void) +{ + DmaStop(0); + BT_VBSyncOamAndPltt(); + SetGpuReg(REG_OFFSET_BLDCNT, sTransitionStructPtr->bldCnt); + SetGpuReg(REG_OFFSET_WININ, sTransitionStructPtr->winIn); + SetGpuReg(REG_OFFSET_WINOUT, sTransitionStructPtr->winOut); + SetGpuReg(REG_OFFSET_WIN0V, sTransitionStructPtr->win0H); // BUG: This should obviously be sTransitionStructPtr->win0V + if (sTransitionStructPtr->vblankDma) + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640); + DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_16BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); +} + +void VBCB_BT_Phase2WhiteFadeInStripes2(void) +{ + BT_VBSyncOamAndPltt(); + SetGpuReg(REG_OFFSET_BLDY, sTransitionStructPtr->bldY); + SetGpuReg(REG_OFFSET_BLDCNT, sTransitionStructPtr->bldCnt); + SetGpuReg(REG_OFFSET_WININ, sTransitionStructPtr->winIn); + SetGpuReg(REG_OFFSET_WINOUT, sTransitionStructPtr->winOut); + SetGpuReg(REG_OFFSET_WIN0H, sTransitionStructPtr->win0H); + SetGpuReg(REG_OFFSET_WIN0V, sTransitionStructPtr->win0V); +} + + +void HBCB_BT_Phase2WhiteFadeInStripes(void) +{ + vu16 index = REG_VCOUNT; + + if (index == 227) + index = 0; + REG_BLDY = gScanlineEffectRegBuffers[1][index]; +} + +void SpriteCB_BT_Phase2WhiteFadeInStripes(struct Sprite *sprite) +{ + if (sprite->spDelay) + { + --sprite->spDelay; + if (sprite->spLastSprite) + sTransitionStructPtr->vblankDma = TRUE; + } + else + { + u16 i; + u16* bldY = &gScanlineEffectRegBuffers[0][sprite->pos1.y]; + u16* win0H = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160]; + u32 stripeWidth = sprite->spLastSprite ? 0x19 : 0x1B; + + for (i = 0; i < stripeWidth; ++i) + { + bldY[i] = sprite->spBldyCounter >> 8; + win0H[i] = (u8)(sprite->pos1.x); + } + if (sprite->pos1.x == 0 && sprite->spBldyCounter == 0x1000) + sprite->spFinished = 1; + sprite->pos1.x -= 24; + sprite->spBldyCounter += 192; + if (sprite->pos1.x < 0) + sprite->pos1.x = 0; + if (sprite->spBldyCounter > 0x1000) + sprite->spBldyCounter = 0x1000; + if (sprite->spLastSprite) + sTransitionStructPtr->vblankDma = TRUE; + if (sprite->spFinished) + { + if (sprite->spLastSprite == FALSE || (sTransitionStructPtr->counter > 4)) + { + ++sTransitionStructPtr->counter; + DestroySprite(sprite); + } + } + } +} + +#undef spBldyCounter +#undef spFinished +#undef spAltDelay +#undef spDelay +#undef spLastSprite + +#define tDelay data[1] +#define tWhichGrid data[2] + +void BT_Phase2GridSquares(u8 taskId) +{ + while (sBT_Phase2GridSquaresFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2GridSquares_LoadGfx(struct Task *task) +{ + u16 *tilemapAddr, *tilesetAddr; + + BT_GetBg0TilemapAndTilesetBase(&tilemapAddr, &tilesetAddr); + CpuSet(sGridSquareTileset, tilesetAddr, 0x10); + CpuFill16(0xF000, tilemapAddr, 0x800); + LoadPalette(sSlidingPokeballBigPokeballPalette, 0xF0, 0x20); + ++task->tState; + return FALSE; +} + +bool8 BT_Phase2GridSquares_UpdateTileset(struct Task *task) +{ + u16* tilesetAddr; + + if (task->tDelay == 0) + { + BT_GetBg0TilesetBase(&tilesetAddr); + task->tDelay = 3; + ++task->tWhichGrid; + CpuSet(sGridSquareTileset + (task->tWhichGrid * 8), tilesetAddr, 0x10); + if (task->tWhichGrid > 0xD) + { + ++task->tState; + task->tDelay = 16; + } + } + --task->tDelay; + return FALSE; +} + +bool8 BT_Phase2GridSquares_IsDone(struct Task *task) +{ + if (--task->tDelay == 0) + { + BT_BlendPalettesToBlack(); + DestroyTask(FindTaskIdByFunc(BT_Phase2GridSquares)); + } + return FALSE; +} + +#undef tDelay +#undef tWhichGrid + +#define tWhichBrush data[1] +#define tWhichSide data[2] +#define tDelay data[3] + +#define trCurrentPtX data[2] +#define trCurrentPtY data[3] + +void BT_Phase2BlackDoodles(u8 taskId) +{ + while (sBT_Phase2BlackDoodlesFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase2BlackDoodles_Init(struct Task *task) +{ + u16 i; + + BT_InitCtrlBlk(); + ScanlineEffect_Clear(); + sTransitionStructPtr->winIn = 0x3F; + sTransitionStructPtr->winOut = 0; + sTransitionStructPtr->win0V = 0xA0; + for (i = 0; i < 160; ++i) + gScanlineEffectRegBuffers[0][i] = 0x00F0; + CpuSet(gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 160); + SetVBlankCallback(VBCB_BT_Phase2BlackDoodles); + ++task->tState; + return TRUE; +} + +bool8 BT_Phase2BlackDoodles_InitSingleBrush(struct Task *task) +{ + BT_DiagonalSegment_InitParams(sTransitionStructPtr->data, sBlackDoodlesSegments[task->tWhichBrush][0], sBlackDoodlesSegments[task->tWhichBrush][1], sBlackDoodlesSegments[task->tWhichBrush][2], sBlackDoodlesSegments[task->tWhichBrush][3], 1, 1); + task->tWhichSide = sBlackDoodlesSegments[task->tWhichBrush][4]; + ++task->tState; + return TRUE; +} + +bool8 BT_Phase2BlackDoodles_DrawSingleBrush(struct Task *task) +{ + s16 i; + bool8 nextFunc; + + sTransitionStructPtr->vblankDma = FALSE; + for (i = 0, nextFunc = FALSE; i < 16; ++i) + { + s16 left = gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] >> 8; + s16 right = gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] & 0xFF; + if (task->tWhichSide == 0) + { + if (left < sTransitionStructPtr->trCurrentPtX) + left = sTransitionStructPtr->trCurrentPtX; + if (left > right) + left = right; + } + else + { + if (right > sTransitionStructPtr->trCurrentPtX) + right = sTransitionStructPtr->trCurrentPtX; + if (right <= left) + right = left; + } + gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = right | (left << 8); + if (nextFunc) + { + ++task->tState; + break; + } + else + nextFunc = BT_DiagonalSegment_ComputePointOnSegment(sTransitionStructPtr->data, TRUE, TRUE); + } + ++sTransitionStructPtr->vblankDma; + return FALSE; +} + +bool8 BT_Phase2BlackDoodles_IsDone(struct Task *task) +{ + if (++task->tWhichBrush < 7) + { + ++task->tState; + task->tDelay = sBlackDoodlesDelay[task->tWhichBrush - 1]; + return TRUE; + } + else + { + DmaStop(0); + BT_BlendPalettesToBlack(); + DestroyTask(FindTaskIdByFunc(BT_Phase2BlackDoodles)); + return FALSE; + } +} + +bool8 BT_Phase2BlackDoodles_NextBrush(struct Task *task) +{ + if (--task->tDelay == 0) + { + task->tState = 1; + return TRUE; + } + else + return FALSE; +} + +void VBCB_BT_Phase2BlackDoodles(void) +{ + DmaStop(0); + BT_VBSyncOamAndPltt(); + if (sTransitionStructPtr->vblankDma) + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); + SetGpuReg(REG_OFFSET_WININ, sTransitionStructPtr->winIn); + SetGpuReg(REG_OFFSET_WINOUT, sTransitionStructPtr->winOut); + SetGpuReg(REG_OFFSET_WIN0V, sTransitionStructPtr->win0V); + SetGpuReg(REG_OFFSET_WIN0H, gScanlineEffectRegBuffers[1][0]); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_16BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); +} + +#undef tWhichBrush +#undef tWhichSide +#undef tDelay + +#undef trCurrentPtX +#undef trCurrentPtY + +#define tFadeOutDelay data[1] +#define tFadeInDelay data[2] +#define tBlinkTimes data[3] +#define tFadeOutSpeed data[4] +#define tFadeInSpeed data[5] +#define tDelayCounter data[6] +#define tCoeff data[7] + +void BT_CreatePhase1SubTask(s16 fadeOutDelay, s16 fadeInDelay, s16 blinkTimes, s16 fadeOutSpeed, s16 fadeInSpeed) +{ + u8 taskId = CreateTask(BT_Phase1SubTask, 3); + gTasks[taskId].tFadeOutDelay = fadeOutDelay; + gTasks[taskId].tFadeInDelay = fadeInDelay; + gTasks[taskId].tBlinkTimes = blinkTimes; + gTasks[taskId].tFadeOutSpeed = fadeOutSpeed; + gTasks[taskId].tFadeInSpeed = fadeInSpeed; + gTasks[taskId].tDelayCounter = fadeOutDelay; +} + +bool8 BT_IsPhase1Done(void) +{ + if (FindTaskIdByFunc(BT_Phase1SubTask) == TASK_NONE) + return TRUE; + else + return FALSE; +} + +void BT_Phase1SubTask(u8 taskId) +{ + while (sBT_Phase1FadeFuncs[gTasks[taskId].tState](&gTasks[taskId])); +} + +bool8 BT_Phase1_FadeOut(struct Task *task) +{ + if (task->tDelayCounter == 0 || --task->tDelayCounter == 0) + { + task->tDelayCounter = task->tFadeOutDelay; + task->tCoeff += task->tFadeOutSpeed; + if (task->tCoeff > 16) + task->tCoeff = 16; + BlendPalettes(-1, task->tCoeff, RGB(11, 11, 11)); + } + if (task->tCoeff > 15) + { + ++task->tState; + task->tDelayCounter = task->tFadeInDelay; + } + return FALSE; +} + +bool8 BT_Phase1_FadeIn(struct Task *task) +{ + if (task->tDelayCounter == 0 || --task->tDelayCounter == 0) + { + task->tDelayCounter = task->tFadeInDelay; + task->tCoeff -= task->tFadeInSpeed; + if (task->tCoeff < 0) + task->tCoeff = 0; + BlendPalettes(0xFFFFFFFF, task->tCoeff, RGB(11, 11, 11)); + } + if (task->tCoeff == 0) + { + if (--task->tBlinkTimes == 0) + { + DestroyTask(FindTaskIdByFunc(BT_Phase1SubTask)); + } + else + { + task->tDelayCounter = task->tFadeOutDelay; + task->tState = 0; + } + } + return FALSE; +} + +#undef tFadeOutDelay +#undef tFadeInDelay +#undef tBlinkTimes +#undef tFadeOutSpeed +#undef tFadeInSpeed +#undef tDelayCounter +#undef tCoeff + +void BT_InitCtrlBlk(void) +{ + memset(sTransitionStructPtr, 0, sizeof(*sTransitionStructPtr)); + sub_805A658(&sTransitionStructPtr->bg123HOfs, &sTransitionStructPtr->bg123VOfs); +} + +void BT_VBSyncOamAndPltt(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void BT_GetBg0TilesetBase(u16 **tilesetPtr) +{ + u16 charBase; + + charBase = GetGpuReg(REG_OFFSET_BG0CNT) >> 2; + charBase <<= 0xE; + *tilesetPtr = (u16*)(VRAM + charBase); +} + +void BT_GetBg0TilemapAndTilesetBase(u16 **tilemapPtr, u16 **tilesetPtr) +{ + u16 screenBase, charBase; + + screenBase = (GetGpuReg(REG_OFFSET_BG0CNT) >> 8) & 0x1F; + charBase = GetGpuReg(REG_OFFSET_BG0CNT) >> 2; + screenBase <<= 0xB; + charBase <<= 0xE; + *tilemapPtr = (u16*)(VRAM + screenBase); + *tilesetPtr = (u16*)(VRAM + charBase); +} + +void BT_BlendPalettesToBlack(void) +{ + BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); +} + +void BT_LoadWaveIntoBuffer(s16 *buffer, s16 offset, s16 theta, s16 frequency, s16 amplitude, s16 bufSize) +{ + u8 i; + + for (i = 0; bufSize > 0; --bufSize, ++i, theta += frequency) + buffer[i] = offset + Sin(0xFF & theta, amplitude); +} + +void BT_GenerateCircle(s16 *buffer, s16 x, s16 y, s16 radius) +{ + s16 i; + + memset(buffer, 0xA, 320); + // 64 iterations because we only want to cover [0, Ï€/2) discretely. + for (i = 0; i < 64; ++i) + { + s16 sinResult, cosResult, leftX, topY, bottomY, nextTopY, nextBottomY, winVal; + + // The loop variable i here does not stand for rotation angle, + // but is the angle between segment (center, pointOnCircle) + // and vertical line. + sinResult = Sin(i, radius); + cosResult = Cos(i, radius); + leftX = x - sinResult; + winVal = x + sinResult; + topY = y - cosResult; + bottomY = y + cosResult; + if (leftX < 0) + leftX = 0; + if (winVal > 240) + winVal = 240; + if (topY < 0) + topY = 0; + if (bottomY > 159) + bottomY = 159; + winVal |= (leftX << 8); + buffer[topY] = winVal; + buffer[bottomY] = winVal; + cosResult = Cos(i + 1, radius); + nextTopY = y - cosResult; + nextBottomY = y + cosResult; + if (nextTopY < 0) + nextTopY = 0; + if (nextBottomY > 159) + nextBottomY = 159; + // fill everything in between with the same WIN0H value + while (topY > nextTopY) + buffer[--topY] = winVal; + while (topY < nextTopY) + buffer[++topY] = winVal; + while (bottomY > nextBottomY) + buffer[--bottomY] = winVal; + while (bottomY < nextBottomY) + buffer[++bottomY] = winVal; + } +} + +#define trStartPtX data[0] +#define trStartPtY data[1] +#define trCurrentPtX data[2] +#define trCurrentPtY data[3] +#define trEndPtX data[4] +#define trEndPtY data[5] +#define trStepX data[6] +#define trStepY data[7] +#define trAbsDeltaX data[8] +#define trAbsDeltaY data[9] +#define trAccum data[10] // track one dimension based on slope + +void BT_DiagonalSegment_InitParams(s16 *data, s16 startPtX, s16 startPtY, s16 endPtX, s16 endPtY, s16 stepX, s16 stepY) +{ + trStartPtX = startPtX; + trStartPtY = startPtY; + trCurrentPtX = startPtX; + trCurrentPtY = startPtY; + trEndPtX = endPtX; + trEndPtY = endPtY; + trStepX = stepX; + trStepY = stepY; + trAbsDeltaX = endPtX - startPtX; + if (trAbsDeltaX < 0) + { + trAbsDeltaX = -trAbsDeltaX; + trStepX = -stepX; + } + trAbsDeltaY = endPtY - startPtY; + if (trAbsDeltaY < 0) + { + trAbsDeltaY = -trAbsDeltaY; + trStepY = -stepY; + } + trAccum = 0; +} + +bool8 BT_DiagonalSegment_ComputePointOnSegment(s16 *data, bool8 checkBoundary1, bool8 checkBoundary2) +{ + u8 finish; + + if (trAbsDeltaX > trAbsDeltaY) + { + trCurrentPtX += trStepX; + trAccum += trAbsDeltaY; + if (trAccum > trAbsDeltaX) + { + trCurrentPtY += trStepY; + trAccum -= trAbsDeltaX; + } + } + else + { + trCurrentPtY += trStepY; + trAccum += trAbsDeltaX; + if (trAccum > trAbsDeltaY) + { + trCurrentPtX += trStepX; + trAccum -= trAbsDeltaY; + } + } + finish = 0; + if ((trStepX > 0 && trCurrentPtX >= trEndPtX) || (trStepX < 0 && trCurrentPtX <= trEndPtX)) + { + ++finish; + if (checkBoundary1) + trCurrentPtX = trEndPtX; + } + if ((trStepY > 0 && trCurrentPtY >= trEndPtY) || (trStepY < 0 && trCurrentPtY <= trEndPtY)) + { + ++finish; + if (checkBoundary2) + trCurrentPtY = trEndPtY; + } + if (finish == 2) + return TRUE; + else + return FALSE; +} + +#undef trStartPtX +#undef trStartPtY +#undef trCurrentPtX +#undef trCurrentPtY +#undef trEndPtX +#undef trEndPtY +#undef trStepX +#undef trStepY +#undef trAbsDeltaX +#undef trAbsDeltaY +#undef trAccum From 1260e40aa307479e978a85483abb9d50ba5c37c2 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 25 Jul 2019 14:51:50 +0800 Subject: [PATCH 24/38] marked everything as static and trivial fixes --- src/battle_transition.c | 692 ++++++++++++++++++++-------------------- 1 file changed, 346 insertions(+), 346 deletions(-) diff --git a/src/battle_transition.c b/src/battle_transition.c index 1ef54a925..71296c67f 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -43,155 +43,155 @@ struct TransitionData s16 data[11]; // for multiple purposes }; -EWRAM_DATA struct TransitionData *sTransitionStructPtr = NULL; +static EWRAM_DATA struct TransitionData *sTransitionStructPtr = NULL; // TODO: Move this declaration to include/event_object_movement.h extern const struct OamData gEventObjectBaseOam_32x32; -bool8 BT_Phase1_FadeOut(struct Task *task); -bool8 BT_Phase1_FadeIn(struct Task *task); -bool8 BT_Phase2BlackDoodles_Init(struct Task *task); -bool8 BT_Phase2BlackDoodles_InitSingleBrush(struct Task *task); -bool8 BT_Phase2BlackDoodles_DrawSingleBrush(struct Task *task); -bool8 BT_Phase2BlackDoodles_IsDone(struct Task *task); -bool8 BT_Phase2BlackDoodles_NextBrush(struct Task *task); -bool8 BT_Phase2GridSquares_LoadGfx(struct Task *task); -bool8 BT_Phase2GridSquares_UpdateTileset(struct Task *task); -bool8 BT_Phase2GridSquares_IsDone(struct Task *task); -bool8 BT_Phase2WhiteFadeInStripes_Init(struct Task *task); -bool8 BT_Phase2WhiteFadeInStripes_SetupSprites(struct Task *task); -bool8 BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone(struct Task *task); -bool8 BT_Phase2WhiteFadeInStripes_Stop(struct Task *task); -bool8 BT_Phase2WhiteFadeInStripes_IsDone(struct Task *task); -bool8 BT_Phase2SlicedScreen_Init(struct Task *task); -bool8 BT_Phase2SlicedScreen_UpdateOffsets(struct Task *task); -bool8 BT_Phase2SlicedScreen_End(struct Task *task); -bool8 BT_Phase2Mugshot_Init(struct Task *task); -bool8 BT_Phase2Mugshot_LoadGfx(struct Task *task); -bool8 BT_Phase2Mugshot_VsBarsSlideIn(struct Task *task); -bool8 BT_Phase2Mugshot_StartSpriteSlide(struct Task *task); -bool8 BT_Phase2Mugshot_WaitForOpponentInPlace(struct Task *task); -bool8 BT_Phase2Mugshot_WaitForPlayerInPlace(struct Task *task); -bool8 BT_Phase2Mugshot_ExpandWhiteBand(struct Task *task); -bool8 BT_Phase2Mugshot_StartBlackFade(struct Task *task); -bool8 BT_Phase2Mugshot_WaitForBlackFade(struct Task *task); -bool8 BT_Phase2Mugshot_End(struct Task *task); -bool8 BT_Phase2AntiClockwiseSpiral_Init(struct Task *task); -bool8 BT_Phase2AntiClockwiseSpiral_Update(struct Task *task); -bool8 BT_Phase2BlackWaveToRight_Init(struct Task *task); -bool8 BT_Phase2BlackWaveToRight_UpdateWave(struct Task *task); -bool8 BT_Phase2BlackWaveToRight_End(struct Task *task); -bool8 BT_Phase2FullScreenWave_Init(struct Task *task); -bool8 BT_Phase2FullScreenWave_UpdateWave(struct Task *task); -bool8 BT_Phase2ClockwiseBlackFade_Init(struct Task *task); -bool8 BT_Phase2ClockwiseBlackFade_Step1(struct Task *task); -bool8 BT_Phase2ClockwiseBlackFade_Step2(struct Task *task); -bool8 BT_Phase2ClockwiseBlackFade_Step3(struct Task *task); -bool8 BT_Phase2ClockwiseBlackFade_Step4(struct Task *task); -bool8 BT_Phase2ClockwiseBlackFade_Step5(struct Task *task); -bool8 BT_Phase2ClockwiseBlackFade_End(struct Task *task); -bool8 BT_Phase2SlidingPokeballs_LoadBgGfx(struct Task *task); -bool8 BT_Phase2SlidingPokeballs_SetupFldeffArgs(struct Task *task); -bool8 BT_Phase2SlidingPokeballs_IsDone(struct Task *task); -bool8 BT_Phase2BigPokeball_Init(struct Task *task); -bool8 BT_Phase2BigPokeball_LoadTilemapAndWave(struct Task *task); -bool8 BT_Phase2BigPokeball_UpdateWave1IncEva(struct Task *task); -bool8 BT_Phase2BigPokeball_UpdateWave2DecEvb(struct Task *task); -bool8 BT_Phase2BigPokeball_UpdateWave3(struct Task *task); -bool8 BT_Phase2BigPokeball_CircleEffect(struct Task *task); -bool8 BT_Phase2HorizontalCorrugate_Init(struct Task *task); -bool8 BT_Phase2HorizontalCorrugate_UpdateWave(struct Task *task); -bool8 BT_Phase2DistortedWave_InitWave(struct Task *task); -bool8 BT_Phase2DistortedWave_UpdateWave(struct Task *task); -bool8 BT_Phase2Blur_InitBgMosaic(struct Task *task); -bool8 BT_Phase2Blur_Anim(struct Task *task); -bool8 BT_Phase2Blur_IsDone(struct Task *task); -bool8 BT_Phase1Blink(struct Task *task); -bool8 BT_WaitForPhase1(struct Task *task); -bool8 BT_Phase2LaunchAnimTask(struct Task *task); -bool8 BT_WaitForPhase2(struct Task *task); +static bool8 BT_Phase1_FadeOut(struct Task *task); +static bool8 BT_Phase1_FadeIn(struct Task *task); +static bool8 BT_Phase2BlackDoodles_Init(struct Task *task); +static bool8 BT_Phase2BlackDoodles_InitSingleBrush(struct Task *task); +static bool8 BT_Phase2BlackDoodles_DrawSingleBrush(struct Task *task); +static bool8 BT_Phase2BlackDoodles_IsDone(struct Task *task); +static bool8 BT_Phase2BlackDoodles_NextBrush(struct Task *task); +static bool8 BT_Phase2GridSquares_LoadGfx(struct Task *task); +static bool8 BT_Phase2GridSquares_UpdateTileset(struct Task *task); +static bool8 BT_Phase2GridSquares_IsDone(struct Task *task); +static bool8 BT_Phase2WhiteFadeInStripes_Init(struct Task *task); +static bool8 BT_Phase2WhiteFadeInStripes_SetupSprites(struct Task *task); +static bool8 BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone(struct Task *task); +static bool8 BT_Phase2WhiteFadeInStripes_Stop(struct Task *task); +static bool8 BT_Phase2WhiteFadeInStripes_IsDone(struct Task *task); +static bool8 BT_Phase2SlicedScreen_Init(struct Task *task); +static bool8 BT_Phase2SlicedScreen_UpdateOffsets(struct Task *task); +static bool8 BT_Phase2SlicedScreen_End(struct Task *task); +static bool8 BT_Phase2Mugshot_Init(struct Task *task); +static bool8 BT_Phase2Mugshot_LoadGfx(struct Task *task); +static bool8 BT_Phase2Mugshot_VsBarsSlideIn(struct Task *task); +static bool8 BT_Phase2Mugshot_StartSpriteSlide(struct Task *task); +static bool8 BT_Phase2Mugshot_WaitForOpponentInPlace(struct Task *task); +static bool8 BT_Phase2Mugshot_WaitForPlayerInPlace(struct Task *task); +static bool8 BT_Phase2Mugshot_ExpandWhiteBand(struct Task *task); +static bool8 BT_Phase2Mugshot_StartBlackFade(struct Task *task); +static bool8 BT_Phase2Mugshot_WaitForBlackFade(struct Task *task); +static bool8 BT_Phase2Mugshot_End(struct Task *task); +static bool8 BT_Phase2AntiClockwiseSpiral_Init(struct Task *task); +static bool8 BT_Phase2AntiClockwiseSpiral_Update(struct Task *task); +static bool8 BT_Phase2BlackWaveToRight_Init(struct Task *task); +static bool8 BT_Phase2BlackWaveToRight_UpdateWave(struct Task *task); +static bool8 BT_Phase2BlackWaveToRight_End(struct Task *task); +static bool8 BT_Phase2FullScreenWave_Init(struct Task *task); +static bool8 BT_Phase2FullScreenWave_UpdateWave(struct Task *task); +static bool8 BT_Phase2ClockwiseBlackFade_Init(struct Task *task); +static bool8 BT_Phase2ClockwiseBlackFade_Step1(struct Task *task); +static bool8 BT_Phase2ClockwiseBlackFade_Step2(struct Task *task); +static bool8 BT_Phase2ClockwiseBlackFade_Step3(struct Task *task); +static bool8 BT_Phase2ClockwiseBlackFade_Step4(struct Task *task); +static bool8 BT_Phase2ClockwiseBlackFade_Step5(struct Task *task); +static bool8 BT_Phase2ClockwiseBlackFade_End(struct Task *task); +static bool8 BT_Phase2SlidingPokeballs_LoadBgGfx(struct Task *task); +static bool8 BT_Phase2SlidingPokeballs_SetupFldeffArgs(struct Task *task); +static bool8 BT_Phase2SlidingPokeballs_IsDone(struct Task *task); +static bool8 BT_Phase2BigPokeball_Init(struct Task *task); +static bool8 BT_Phase2BigPokeball_LoadTilemapAndWave(struct Task *task); +static bool8 BT_Phase2BigPokeball_UpdateWave1IncEva(struct Task *task); +static bool8 BT_Phase2BigPokeball_UpdateWave2DecEvb(struct Task *task); +static bool8 BT_Phase2BigPokeball_UpdateWave3(struct Task *task); +static bool8 BT_Phase2BigPokeball_CircleEffect(struct Task *task); +static bool8 BT_Phase2HorizontalCorrugate_Init(struct Task *task); +static bool8 BT_Phase2HorizontalCorrugate_UpdateWave(struct Task *task); +static bool8 BT_Phase2DistortedWave_InitWave(struct Task *task); +static bool8 BT_Phase2DistortedWave_UpdateWave(struct Task *task); +static bool8 BT_Phase2Blur_InitBgMosaic(struct Task *task); +static bool8 BT_Phase2Blur_Anim(struct Task *task); +static bool8 BT_Phase2Blur_IsDone(struct Task *task); +static bool8 BT_Phase1Blink(struct Task *task); +static bool8 BT_WaitForPhase1(struct Task *task); +static bool8 BT_Phase2LaunchAnimTask(struct Task *task); +static bool8 BT_WaitForPhase2(struct Task *task); -void BT_Phase2Blur(u8 taskId); -void BT_Phase2DistortedWave(u8 taskId); -void BT_Phase2HorizontalCorrugate(u8 taskId); -void BT_Phase2BigPokeball(u8 taskId); -void BT_Phase2SlidingPokeballs(u8 taskId); -void BT_Phase2ClockwiseBlackFade(u8 taskId); -void BT_Phase2FullScreenWave(u8 taskId); -void BT_Phase2BlackWaveToRight(u8 taskId); -void BT_Phase2SlicedScreen(u8 taskId); -void BT_Phase2WhiteFadeInStripes(u8 taskId); -void BT_Phase2GridSquares(u8 taskId); -void BT_Phase2BlackDoodles(u8 taskId); -void BT_Phase2StartLoreleiMugshot(u8 taskId); -void BT_Phase2StartBrunoMugshot(u8 taskId); -void BT_Phase2StartAgathaMugshot(u8 taskId); -void BT_Phase2StartLanceMugshot(u8 taskId); -void BT_Phase2StartBlueMugshot(u8 taskId); -void BT_Phase2AntiClockwiseSpiral(u8 taskId); -void BT_Phase1Task(u8 taskId); -void BT_Phase2Mugshot(u8 taskId); -void BT_Phase1SubTask(u8 taskId); +static void BT_Phase2Blur(u8 taskId); +static void BT_Phase2DistortedWave(u8 taskId); +static void BT_Phase2HorizontalCorrugate(u8 taskId); +static void BT_Phase2BigPokeball(u8 taskId); +static void BT_Phase2SlidingPokeballs(u8 taskId); +static void BT_Phase2ClockwiseBlackFade(u8 taskId); +static void BT_Phase2FullScreenWave(u8 taskId); +static void BT_Phase2BlackWaveToRight(u8 taskId); +static void BT_Phase2SlicedScreen(u8 taskId); +static void BT_Phase2WhiteFadeInStripes(u8 taskId); +static void BT_Phase2GridSquares(u8 taskId); +static void BT_Phase2BlackDoodles(u8 taskId); +static void BT_Phase2StartLoreleiMugshot(u8 taskId); +static void BT_Phase2StartBrunoMugshot(u8 taskId); +static void BT_Phase2StartAgathaMugshot(u8 taskId); +static void BT_Phase2StartLanceMugshot(u8 taskId); +static void BT_Phase2StartBlueMugshot(u8 taskId); +static void BT_Phase2AntiClockwiseSpiral(u8 taskId); +static void BT_Phase1Task(u8 taskId); +static void BT_Phase2Mugshot(u8 taskId); +static void BT_Phase1SubTask(u8 taskId); -void SpriteCB_BT_Phase2Mugshots(struct Sprite *sprite); -void SpriteCB_BT_Phase2SlidingPokeballs(struct Sprite *sprite); -void SpriteCB_BT_Phase2WhiteFadeInStripes(struct Sprite *sprite); +static void SpriteCB_BT_Phase2Mugshots(struct Sprite *sprite); +static void SpriteCB_BT_Phase2SlidingPokeballs(struct Sprite *sprite); +static void SpriteCB_BT_Phase2WhiteFadeInStripes(struct Sprite *sprite); -bool8 BT_Phase2MugshotsSpriteFuncs_Wait(struct Sprite *sprite); -bool8 BT_Phase2MugshotsSpriteFuncs_InitParams(struct Sprite *sprite); -bool8 BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn(struct Sprite *sprite); -bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite(struct Sprite *sprite); -bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2(struct Sprite *sprite); +static bool8 BT_Phase2MugshotsSpriteFuncs_Wait(struct Sprite *sprite); +static bool8 BT_Phase2MugshotsSpriteFuncs_InitParams(struct Sprite *sprite); +static bool8 BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn(struct Sprite *sprite); +static bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite(struct Sprite *sprite); +static bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2(struct Sprite *sprite); -void VBCB_BT_Phase2DistortedWave(void); -void HBCB_BT_Phase2DistortedWave(void); -void VBCB_BT_Phase2HorizontalCorrugate(void); -void HBCB_BT_Phase2HorizontalCorrugate(void); -void VBCB_BT_Phase2BigPokeball1(void); -void VBCB_BT_Phase2BigPokeball2(void); -void HBCB_BT_Phase2BigPokeball(void); -void VBCB_BT_Phase2ClockwiseBlackFade(void); -void VBCB_BT_Phase2FullScreenWave(void); -void HBCB_BT_Phase2FullScreenWave(void); -void VBCB_BT_Phase2BlackWaveToRight(void); -void VBCB_BT_Phase2AntiClockwiseBlackFade(void); -void VBCB_BT_Phase2Mugshot1_Slide(void); -void VBCB_BT_Phase2Mugshot2_WhiteFade(void); -void HBCB_BT_Phase2Mugshot(void); -void VBCB_BT_Phase2SlicedScreen(void); -void HBCB_BT_Phase2SlicedScreen(void); -void VBCB_BT_Phase2WhiteFadeInStripes1(void); -void VBCB_BT_Phase2WhiteFadeInStripes2(void); -void HBCB_BT_Phase2WhiteFadeInStripes(void); -void VBCB_BT_Phase2BlackDoodles(void); +static void VBCB_BT_Phase2DistortedWave(void); +static void HBCB_BT_Phase2DistortedWave(void); +static void VBCB_BT_Phase2HorizontalCorrugate(void); +static void HBCB_BT_Phase2HorizontalCorrugate(void); +static void VBCB_BT_Phase2BigPokeball1(void); +static void VBCB_BT_Phase2BigPokeball2(void); +static void HBCB_BT_Phase2BigPokeball(void); +static void VBCB_BT_Phase2ClockwiseBlackFade(void); +static void VBCB_BT_Phase2FullScreenWave(void); +static void HBCB_BT_Phase2FullScreenWave(void); +static void VBCB_BT_Phase2BlackWaveToRight(void); +static void VBCB_BT_Phase2AntiClockwiseBlackFade(void); +static void VBCB_BT_Phase2Mugshot1_Slide(void); +static void VBCB_BT_Phase2Mugshot2_WhiteFade(void); +static void HBCB_BT_Phase2Mugshot(void); +static void VBCB_BT_Phase2SlicedScreen(void); +static void HBCB_BT_Phase2SlicedScreen(void); +static void VBCB_BT_Phase2WhiteFadeInStripes1(void); +static void VBCB_BT_Phase2WhiteFadeInStripes2(void); +static void HBCB_BT_Phase2WhiteFadeInStripes(void); +static void VBCB_BT_Phase2BlackDoodles(void); -void BT_LaunchTask(u8 transitionId); -void BT_TaskMain(u8 taskId); -void BT_InitCtrlBlk(void); -void BT_CreatePhase1SubTask(s16 fadeOutDelay, s16 fadeInDelay, s16 blinkTimes, s16 fadeOutSpeed, s16 fadeInSpeed); -bool8 BT_IsPhase1Done(void); -void BT_VBSyncOamAndPltt(void); -void BT_GetBg0TilesetBase(u16 **tilesetPtr); -void BT_GetBg0TilemapAndTilesetBase(u16 **tilemapPtr, u16 **tilesetPtr); -void BT_LoadWaveIntoBuffer(s16 *buffer, s16 offset, s16 theta, s16 frequency, s16 amplitude, s16 bufSize); -void BT_GenerateCircle(s16 *buffer, s16 x, s16 y, s16 radius); -void BT_BlendPalettesToBlack(void); -void BT_DiagonalSegment_InitParams(s16 *data, s16 startPtX, s16 startPtY, s16 endPtX, s16 endPtY, s16 stepX, s16 stepY); -bool8 BT_DiagonalSegment_ComputePointOnSegment(s16 *data, bool8 checkBoundary1, bool8 checkBoundary2); -void BT_SetSpriteAsOpponentOrPlayer(s16 spriteId, bool16 value); -void BT_StartSpriteSlide(s16 spriteId); -s16 BT_IsSpriteSlideFinished(s16 spriteId); -void BT_Phase2Mugshots_CreateSprites(struct Task *task); +static void BT_LaunchTask(u8 transitionId); +static void BT_TaskMain(u8 taskId); +static void BT_InitCtrlBlk(void); +static void BT_CreatePhase1SubTask(s16 fadeOutDelay, s16 fadeInDelay, s16 blinkTimes, s16 fadeOutSpeed, s16 fadeInSpeed); +static bool8 BT_IsPhase1Done(void); +static void BT_VBSyncOamAndPltt(void); +static void BT_GetBg0TilesetBase(u16 **tilesetPtr); +static void BT_GetBg0TilemapAndTilesetBase(u16 **tilemapPtr, u16 **tilesetPtr); +static void BT_LoadWaveIntoBuffer(s16 *buffer, s16 offset, s16 theta, s16 frequency, s16 amplitude, s16 bufSize); +static void BT_GenerateCircle(s16 *buffer, s16 x, s16 y, s16 radius); +static void BT_BlendPalettesToBlack(void); +static void BT_DiagonalSegment_InitParams(s16 *data, s16 startPtX, s16 startPtY, s16 endPtX, s16 endPtY, s16 stepX, s16 stepY); +static bool8 BT_DiagonalSegment_ComputePointOnSegment(s16 *data, bool8 checkBoundary1, bool8 checkBoundary2); +static void BT_SetSpriteAsOpponentOrPlayer(s16 spriteId, bool16 value); +static void BT_StartSpriteSlide(s16 spriteId); +static s16 BT_IsSpriteSlideFinished(s16 spriteId); +static void BT_Phase2Mugshots_CreateSprites(struct Task *task); -const u32 sBigPokeballTileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball_tileset.4bpp"); -const u32 sSlidingPokeballTilemap[] = INCBIN_U32("graphics/battle_transitions/sliding_pokeball_tilemap.bin"); -const u8 sSpriteImage_SlidingPokeball[] = INCBIN_U8("graphics/battle_transitions/sliding_pokeball.4bpp"); -const u32 sVsBarTileset[] = INCBIN_U32("graphics/battle_transitions/vsbar_tileset.4bpp"); -const u8 sSpriteImage_UnusedBrendan[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp"); -const u8 sSpriteImage_UnusedLass[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp"); -const u32 sGridSquareTileset[] = INCBIN_U32("graphics/battle_transitions/grid_square_tileset.4bpp"); +static const u32 sBigPokeballTileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball_tileset.4bpp"); +static const u32 sSlidingPokeballTilemap[] = INCBIN_U32("graphics/battle_transitions/sliding_pokeball_tilemap.bin"); +static const u8 sSpriteImage_SlidingPokeball[] = INCBIN_U8("graphics/battle_transitions/sliding_pokeball.4bpp"); +static const u32 sVsBarTileset[] = INCBIN_U32("graphics/battle_transitions/vsbar_tileset.4bpp"); +static const u8 sSpriteImage_UnusedBrendan[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp"); +static const u8 sSpriteImage_UnusedLass[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp"); +static const u32 sGridSquareTileset[] = INCBIN_U32("graphics/battle_transitions/grid_square_tileset.4bpp"); -const TaskFunc sBT_Phase1Tasks[] = +static const TaskFunc sBT_Phase1Tasks[] = { BT_Phase1Task, BT_Phase1Task, @@ -213,7 +213,7 @@ const TaskFunc sBT_Phase1Tasks[] = BT_Phase1Task, }; -const TaskFunc sBT_Phase2Tasks[] = +static const TaskFunc sBT_Phase2Tasks[] = { BT_Phase2Blur, BT_Phase2DistortedWave, @@ -235,7 +235,7 @@ const TaskFunc sBT_Phase2Tasks[] = BT_Phase2AntiClockwiseSpiral, }; -const TransitionStateFunc sBT_MainPhases[] = +static const TransitionStateFunc sBT_MainPhases[] = { BT_Phase1Blink, BT_WaitForPhase1, @@ -243,26 +243,26 @@ const TransitionStateFunc sBT_MainPhases[] = BT_WaitForPhase2, }; -const TransitionStateFunc sBT_Phase2BlurFuncs[] = +static const TransitionStateFunc sBT_Phase2BlurFuncs[] = { BT_Phase2Blur_InitBgMosaic, BT_Phase2Blur_Anim, BT_Phase2Blur_IsDone, }; -const TransitionStateFunc sBT_Phase2DistortedWaveFuncs[] = +static const TransitionStateFunc sBT_Phase2DistortedWaveFuncs[] = { BT_Phase2DistortedWave_InitWave, BT_Phase2DistortedWave_UpdateWave, }; -const TransitionStateFunc sBT_Phase2HorizontalCorrugateFuncs[] = +static const TransitionStateFunc sBT_Phase2HorizontalCorrugateFuncs[] = { BT_Phase2HorizontalCorrugate_Init, BT_Phase2HorizontalCorrugate_UpdateWave, }; -const TransitionStateFunc sBT_Phase2BigPokeballFuncs[] = +static const TransitionStateFunc sBT_Phase2BigPokeballFuncs[] = { BT_Phase2BigPokeball_Init, BT_Phase2BigPokeball_LoadTilemapAndWave, @@ -272,20 +272,20 @@ const TransitionStateFunc sBT_Phase2BigPokeballFuncs[] = BT_Phase2BigPokeball_CircleEffect, }; -const TransitionStateFunc sBT_Phase2SlidingPokeballsFuncs[] = +static const TransitionStateFunc sBT_Phase2SlidingPokeballsFuncs[] = { BT_Phase2SlidingPokeballs_LoadBgGfx, BT_Phase2SlidingPokeballs_SetupFldeffArgs, BT_Phase2SlidingPokeballs_IsDone, }; -const s16 gUnknown_83FA400[] = { -16, 256 }; +static const s16 gUnknown_83FA400[] = { -16, 256 }; -const s16 gUnknown_83FA404[] = { 0, 16, 32, 8, 24 }; +static const s16 gUnknown_83FA404[] = { 0, 16, 32, 8, 24 }; -const s16 gUnknown_83FA40E[] = { 8, -8 }; +static const s16 gUnknown_83FA40E[] = { 8, -8 }; -const TransitionStateFunc sBT_Phase2ClockwiseBlackFadeFuncs[] = +static const TransitionStateFunc sBT_Phase2ClockwiseBlackFadeFuncs[] = { BT_Phase2ClockwiseBlackFade_Init, BT_Phase2ClockwiseBlackFade_Step1, @@ -296,19 +296,19 @@ const TransitionStateFunc sBT_Phase2ClockwiseBlackFadeFuncs[] = BT_Phase2ClockwiseBlackFade_End, }; -const TransitionStateFunc sBT_Phase2FullScreenWaveFuncs[] = +static const TransitionStateFunc sBT_Phase2FullScreenWaveFuncs[] = { BT_Phase2FullScreenWave_Init, BT_Phase2FullScreenWave_UpdateWave, }; -const TransitionStateFunc sBT_Phase2BlackWaveToRightFuncs[] = +static const TransitionStateFunc sBT_Phase2BlackWaveToRightFuncs[] = { BT_Phase2BlackWaveToRight_Init, BT_Phase2BlackWaveToRight_UpdateWave, BT_Phase2BlackWaveToRight_End, }; -const s16 gUnknown_83FA444[] = +static const s16 gUnknown_83FA444[] = { 0x0, 0x26E, 0x100, 0x69, @@ -320,13 +320,13 @@ const s16 gUnknown_83FA444[] = -0x100, -0x266E, }; -const TransitionStateFunc sBT_Phase2AntiClockwiseSpiralFuncs[] = +static const TransitionStateFunc sBT_Phase2AntiClockwiseSpiralFuncs[] = { BT_Phase2AntiClockwiseSpiral_Init, BT_Phase2AntiClockwiseSpiral_Update, }; -const TransitionStateFunc sBT_Phase2MugshotFuncs[] = +static const TransitionStateFunc sBT_Phase2MugshotFuncs[] = { BT_Phase2Mugshot_Init, BT_Phase2Mugshot_LoadGfx, @@ -340,13 +340,13 @@ const TransitionStateFunc sBT_Phase2MugshotFuncs[] = BT_Phase2Mugshot_End, }; -const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_COUNT] = +static const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_COUNT] = { // TODO: document these with macro 0x70, 0x71, 0x72, 0x73, 0x7D }; -const s16 sMugshotsOpponentRotationScales[MUGSHOTS_COUNT][2] = +static const s16 sMugshotsOpponentRotationScales[MUGSHOTS_COUNT][2] = { {0x200, 0x200}, {0x200, 0x200}, @@ -355,7 +355,7 @@ const s16 sMugshotsOpponentRotationScales[MUGSHOTS_COUNT][2] = {0x200, 0x200}, }; -const s16 sMugshotsOpponentCoords[MUGSHOTS_COUNT][2] = +static const s16 sMugshotsOpponentCoords[MUGSHOTS_COUNT][2] = { { -8, 0 }, { -10, 0 }, @@ -364,7 +364,7 @@ const s16 sMugshotsOpponentCoords[MUGSHOTS_COUNT][2] = { 0, 0 }, }; -const TransitionSpriteCallback sBT_Phase2MugshotSpriteFuncs[] = +static const TransitionSpriteCallback sBT_Phase2MugshotSpriteFuncs[] = { BT_Phase2MugshotsSpriteFuncs_Wait, BT_Phase2MugshotsSpriteFuncs_InitParams, @@ -375,18 +375,18 @@ const TransitionSpriteCallback sBT_Phase2MugshotSpriteFuncs[] = BT_Phase2MugshotsSpriteFuncs_Wait, }; -const s16 sMugShotSlideVelocity[] = { 12, -12 }; +static const s16 sMugShotSlideVelocity[] = { 12, -12 }; -const s16 sMugShotSlideDeceleration[] = { -1, 1 }; +static const s16 sMugShotSlideDeceleration[] = { -1, 1 }; -const TransitionStateFunc sBT_Phase2SlicedScreenFuncs[] = +static const TransitionStateFunc sBT_Phase2SlicedScreenFuncs[] = { BT_Phase2SlicedScreen_Init, BT_Phase2SlicedScreen_UpdateOffsets, BT_Phase2SlicedScreen_End, }; -const TransitionStateFunc sBT_Phase2WhiteFadeInStripesFuncs[] = +static const TransitionStateFunc sBT_Phase2WhiteFadeInStripesFuncs[] = { BT_Phase2WhiteFadeInStripes_Init, BT_Phase2WhiteFadeInStripes_SetupSprites, @@ -395,16 +395,16 @@ const TransitionStateFunc sBT_Phase2WhiteFadeInStripesFuncs[] = BT_Phase2WhiteFadeInStripes_IsDone, }; -const u16 sWhiteStripeDelay[] = { 0, 9, 15, 6, 12, 3 }; +static const u16 sWhiteStripeDelay[] = { 0, 9, 15, 6, 12, 3 }; -const TransitionStateFunc sBT_Phase2GridSquaresFuncs[] = +static const TransitionStateFunc sBT_Phase2GridSquaresFuncs[] = { BT_Phase2GridSquares_LoadGfx, BT_Phase2GridSquares_UpdateTileset, BT_Phase2GridSquares_IsDone, }; -const TransitionStateFunc sBT_Phase2BlackDoodlesFuncs[] = +static const TransitionStateFunc sBT_Phase2BlackDoodlesFuncs[] = { BT_Phase2BlackDoodles_Init, BT_Phase2BlackDoodles_InitSingleBrush, @@ -413,7 +413,7 @@ const TransitionStateFunc sBT_Phase2BlackDoodlesFuncs[] = BT_Phase2BlackDoodles_NextBrush, }; -const s16 sBlackDoodlesSegments[][5] = +static const s16 sBlackDoodlesSegments[][5] = { { 0x38, 0x00, 0x00, 0xA0, 0 }, { 0x68, 0xA0, 0xF0, 0x58, 1 }, @@ -424,15 +424,15 @@ const s16 sBlackDoodlesSegments[][5] = { 0xA8, 0xA0, 0x30, 0x00, 1 }, }; -const s16 sBlackDoodlesDelay[] = { 1, 1, 1, 1, 1, 1, 0 }; +static const s16 sBlackDoodlesDelay[] = { 1, 1, 1, 1, 1, 1, 0 }; -const TransitionStateFunc sBT_Phase1FadeFuncs[] = +static const TransitionStateFunc sBT_Phase1FadeFuncs[] = { BT_Phase1_FadeOut, BT_Phase1_FadeIn, }; -const struct SpriteFrameImage sSpriteImageTable_SlidingPokeball[] = +static const struct SpriteFrameImage sSpriteImageTable_SlidingPokeball[] = { { .data = sSpriteImage_SlidingPokeball, @@ -440,33 +440,33 @@ const struct SpriteFrameImage sSpriteImageTable_SlidingPokeball[] = }, }; -const union AnimCmd sSpriteAnim_SlidingPokeball[] = +static const union AnimCmd sSpriteAnim_SlidingPokeball[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -const union AnimCmd *const sSpriteAnimTable_SlidingPokeball[] = { sSpriteAnim_SlidingPokeball }; +static const union AnimCmd *const sSpriteAnimTable_SlidingPokeball[] = { sSpriteAnim_SlidingPokeball }; -const union AffineAnimCmd sSpriteAffineAnim_SlidingPokeball1[] = +static const union AffineAnimCmd sSpriteAffineAnim_SlidingPokeball1[] = { AFFINEANIMCMD_FRAME(0, 0, -4, 1), AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd sSpriteAffineAnim_SlidingPokeball2[] = +static const union AffineAnimCmd sSpriteAffineAnim_SlidingPokeball2[] = { AFFINEANIMCMD_FRAME(0, 0, 4, 1), AFFINEANIMCMD_JUMP(0), }; -const union AffineAnimCmd *const sSpriteAffineAnimTable_SlidingPokeball[] = +static const union AffineAnimCmd *const sSpriteAffineAnimTable_SlidingPokeball[] = { sSpriteAffineAnim_SlidingPokeball1, sSpriteAffineAnim_SlidingPokeball2, }; -const struct SpriteTemplate sSpriteTemplate_SlidingPokeball = +static const struct SpriteTemplate sSpriteTemplate_SlidingPokeball = { .tileTag = SPRITE_INVALID_TAG, .paletteTag = 0x1009, @@ -477,7 +477,7 @@ const struct SpriteTemplate sSpriteTemplate_SlidingPokeball = .callback = SpriteCB_BT_Phase2SlidingPokeballs, }; -const struct OamData sOamData_Unused = +static const struct OamData sOamData_Unused = { .y = 0, .affineMode = 0, @@ -494,7 +494,7 @@ const struct OamData sOamData_Unused = .affineParam = 0, }; -const struct SpriteFrameImage sSpriteImageTable_UnusedBrendan[] = +static const struct SpriteFrameImage sSpriteImageTable_UnusedBrendan[] = { { .data = sSpriteImage_UnusedBrendan, @@ -502,7 +502,7 @@ const struct SpriteFrameImage sSpriteImageTable_UnusedBrendan[] = }, }; -const struct SpriteFrameImage sSpriteImageTable_UnusedLass[] = +static const struct SpriteFrameImage sSpriteImageTable_UnusedLass[] = { { .data = sSpriteImage_UnusedLass, @@ -510,15 +510,15 @@ const struct SpriteFrameImage sSpriteImageTable_UnusedLass[] = }, }; -const union AnimCmd sSpriteAnim_Unused[] = +static const union AnimCmd sSpriteAnim_Unused[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -const union AnimCmd *const sSpriteAnimTable_Unused[] = { sSpriteAnim_Unused }; +static const union AnimCmd *const sSpriteAnimTable_Unused[] = { sSpriteAnim_Unused }; -const struct SpriteTemplate sSpriteTemplateTable_Unused[] = +static const struct SpriteTemplate sSpriteTemplateTable_Unused[] = { { .tileTag = SPRITE_INVALID_TAG, @@ -541,23 +541,23 @@ const struct SpriteTemplate sSpriteTemplateTable_Unused[] = }; // this palette is shared by big pokeball and sliding pokeball -const u16 sSlidingPokeballBigPokeballPalette[] = INCBIN_U16("graphics/battle_transitions/sliding_pokeball.gbapal"); +static const u16 sSlidingPokeballBigPokeballPalette[] = INCBIN_U16("graphics/battle_transitions/sliding_pokeball.gbapal"); -const struct SpritePalette sSpritePalette_SlidingPokeball = +static const struct SpritePalette sSpritePalette_SlidingPokeball = { .data = sSlidingPokeballBigPokeballPalette, .tag = 0x1009, }; -const u16 sVsBarLoreleiPalette[] = INCBIN_U16("graphics/battle_transitions/lorelei_bg.gbapal"); -const u16 sVsBarBrunoPalette[] = INCBIN_U16("graphics/battle_transitions/bruno_bg.gbapal"); -const u16 sVsBarAgathaPalette[] = INCBIN_U16("graphics/battle_transitions/agatha_bg.gbapal"); -const u16 sVsBarLancePalette[] = INCBIN_U16("graphics/battle_transitions/lance_bg.gbapal"); -const u16 sVsBarBluePalette[] = INCBIN_U16("graphics/battle_transitions/blue_bg.gbapal"); -const u16 sVsBarMalePlayerPalette[] = INCBIN_U16("graphics/battle_transitions/red_bg.gbapal"); -const u16 sVsBarFemalePlayerPalette[] = INCBIN_U16("graphics/battle_transitions/green_bg.gbapal"); +static const u16 sVsBarLoreleiPalette[] = INCBIN_U16("graphics/battle_transitions/lorelei_bg.gbapal"); +static const u16 sVsBarBrunoPalette[] = INCBIN_U16("graphics/battle_transitions/bruno_bg.gbapal"); +static const u16 sVsBarAgathaPalette[] = INCBIN_U16("graphics/battle_transitions/agatha_bg.gbapal"); +static const u16 sVsBarLancePalette[] = INCBIN_U16("graphics/battle_transitions/lance_bg.gbapal"); +static const u16 sVsBarBluePalette[] = INCBIN_U16("graphics/battle_transitions/blue_bg.gbapal"); +static const u16 sVsBarMalePlayerPalette[] = INCBIN_U16("graphics/battle_transitions/red_bg.gbapal"); +static const u16 sVsBarFemalePlayerPalette[] = INCBIN_U16("graphics/battle_transitions/green_bg.gbapal"); -const u16 *const sVsBarOpponentPalettes[MUGSHOTS_COUNT] = +static const u16 *const sVsBarOpponentPalettes[MUGSHOTS_COUNT] = { sVsBarLoreleiPalette, sVsBarBrunoPalette, @@ -566,22 +566,22 @@ const u16 *const sVsBarOpponentPalettes[MUGSHOTS_COUNT] = sVsBarBluePalette, }; -const u16 *const sVsBarPlayerPalettes[] = +static const u16 *const sVsBarPlayerPalettes[] = { sVsBarMalePlayerPalette, sVsBarFemalePlayerPalette, }; -const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal"); +static const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal"); -const struct SpritePalette sSpritePalette_UnusedTrainer = +static const struct SpritePalette sSpritePalette_UnusedTrainer = { .data = sUnusedTrainerPalette, .tag = 0x100A, }; -const u16 sBigPokeballTilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_tilemap.bin"); -const u16 sVsBarTilemap[] = INCBIN_U16("graphics/battle_transitions/vsbar_tilemap.bin"); +static const u16 sBigPokeballTilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_tilemap.bin"); +static const u16 sVsBarTilemap[] = INCBIN_U16("graphics/battle_transitions/vsbar_tilemap.bin"); void BT_StartOnField(u8 transitionId) { @@ -616,18 +616,18 @@ bool8 BT_IsDone(void) } } -void BT_LaunchTask(u8 transitionId) +static void BT_LaunchTask(u8 transitionId) { u8 taskId = CreateTask(BT_TaskMain, 2); gTasks[taskId].tTransitionId = transitionId; } -void BT_TaskMain(u8 taskId) +static void BT_TaskMain(u8 taskId) { while (sBT_MainPhases[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase1Blink(struct Task *task) +static bool8 BT_Phase1Blink(struct Task *task) { SetWeatherScreenFadeOut(); CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); @@ -644,7 +644,7 @@ bool8 BT_Phase1Blink(struct Task *task) } } -bool8 BT_WaitForPhase1(struct Task *task) +static bool8 BT_WaitForPhase1(struct Task *task) { if (FindTaskIdByFunc(sBT_Phase1Tasks[task->tTransitionId]) == TASK_NONE) { @@ -657,14 +657,14 @@ bool8 BT_WaitForPhase1(struct Task *task) } } -bool8 BT_Phase2LaunchAnimTask(struct Task *task) +static bool8 BT_Phase2LaunchAnimTask(struct Task *task) { CreateTask(sBT_Phase2Tasks[task->tTransitionId], 0); ++task->tState; return FALSE; } -bool8 BT_WaitForPhase2(struct Task *task) +static bool8 BT_WaitForPhase2(struct Task *task) { task->tTransitionDone = FALSE; if (FindTaskIdByFunc(sBT_Phase2Tasks[task->tTransitionId]) == TASK_NONE) @@ -672,7 +672,7 @@ bool8 BT_WaitForPhase2(struct Task *task) return FALSE; } -void BT_Phase1Task(u8 taskId) +static void BT_Phase1Task(u8 taskId) { if (!gTasks[taskId].tState) { @@ -688,12 +688,12 @@ void BT_Phase1Task(u8 taskId) #define tInterval data[1] #define tMosaicSize data[2] -void BT_Phase2Blur(u8 taskId) +static void BT_Phase2Blur(u8 taskId) { while (sBT_Phase2BlurFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2Blur_InitBgMosaic(struct Task *task) +static bool8 BT_Phase2Blur_InitBgMosaic(struct Task *task) { SetGpuReg(REG_OFFSET_MOSAIC, 0); SetGpuRegBits(REG_OFFSET_BG1CNT, BGCNT_MOSAIC); @@ -703,7 +703,7 @@ bool8 BT_Phase2Blur_InitBgMosaic(struct Task *task) return TRUE; } -bool8 BT_Phase2Blur_Anim(struct Task *task) +static bool8 BT_Phase2Blur_Anim(struct Task *task) { if (task->tInterval) { @@ -722,7 +722,7 @@ bool8 BT_Phase2Blur_Anim(struct Task *task) return FALSE; } -bool8 BT_Phase2Blur_IsDone(struct Task *task) +static bool8 BT_Phase2Blur_IsDone(struct Task *task) { if (!gPaletteFade.active) DestroyTask(FindTaskIdByFunc(BT_Phase2Blur)); @@ -735,12 +735,12 @@ bool8 BT_Phase2Blur_IsDone(struct Task *task) #define tTheta data[1] #define tAmplitude data[2] -void BT_Phase2DistortedWave(u8 taskId) +static void BT_Phase2DistortedWave(u8 taskId) { while (sBT_Phase2DistortedWaveFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2DistortedWave_InitWave(struct Task *task) +static bool8 BT_Phase2DistortedWave_InitWave(struct Task *task) { BT_InitCtrlBlk(); ScanlineEffect_Clear(); @@ -753,7 +753,7 @@ bool8 BT_Phase2DistortedWave_InitWave(struct Task *task) return FALSE; } -bool8 BT_Phase2DistortedWave_UpdateWave(struct Task *task) +static bool8 BT_Phase2DistortedWave_UpdateWave(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; task->tTheta += 4; @@ -765,14 +765,14 @@ bool8 BT_Phase2DistortedWave_UpdateWave(struct Task *task) return FALSE; } -void VBCB_BT_Phase2DistortedWave(void) +static void VBCB_BT_Phase2DistortedWave(void) { BT_VBSyncOamAndPltt(); if (sTransitionStructPtr->vblankDma) DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } -void HBCB_BT_Phase2DistortedWave(void) +static void HBCB_BT_Phase2DistortedWave(void) { s16 offset = gScanlineEffectRegBuffers[1][REG_VCOUNT]; @@ -781,12 +781,12 @@ void HBCB_BT_Phase2DistortedWave(void) REG_BG3HOFS = offset; } -void BT_Phase2HorizontalCorrugate(u8 taskId) +static void BT_Phase2HorizontalCorrugate(u8 taskId) { while (sBT_Phase2HorizontalCorrugateFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2HorizontalCorrugate_Init(struct Task *task) +static bool8 BT_Phase2HorizontalCorrugate_Init(struct Task *task) { BT_InitCtrlBlk(); ScanlineEffect_Clear(); @@ -799,7 +799,7 @@ bool8 BT_Phase2HorizontalCorrugate_Init(struct Task *task) return FALSE; } -bool8 BT_Phase2HorizontalCorrugate_UpdateWave(struct Task *task) +static bool8 BT_Phase2HorizontalCorrugate_UpdateWave(struct Task *task) { u8 i; u16 theta, amplitude; @@ -817,14 +817,14 @@ bool8 BT_Phase2HorizontalCorrugate_UpdateWave(struct Task *task) return FALSE; } -void VBCB_BT_Phase2HorizontalCorrugate(void) +static void VBCB_BT_Phase2HorizontalCorrugate(void) { BT_VBSyncOamAndPltt(); if (sTransitionStructPtr->vblankDma) DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } -void HBCB_BT_Phase2HorizontalCorrugate(void) +static void HBCB_BT_Phase2HorizontalCorrugate(void) { s16 offset = gScanlineEffectRegBuffers[1][REG_VCOUNT]; @@ -842,12 +842,12 @@ void HBCB_BT_Phase2HorizontalCorrugate(void) #define tTheta data[4] #define tAmplitude data[5] -void BT_Phase2BigPokeball(u8 taskId) +static void BT_Phase2BigPokeball(u8 taskId) { while (sBT_Phase2BigPokeballFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2BigPokeball_Init(struct Task *task) +static bool8 BT_Phase2BigPokeball_Init(struct Task *task) { u16 i, *tilemapAddr, *tilesetAddr; @@ -874,7 +874,7 @@ bool8 BT_Phase2BigPokeball_Init(struct Task *task) return FALSE; } -bool8 BT_Phase2BigPokeball_LoadTilemapAndWave(struct Task *task) +static bool8 BT_Phase2BigPokeball_LoadTilemapAndWave(struct Task *task) { s16 i, j; u16 *tilemapAddr, *tilesetAddr; @@ -889,7 +889,7 @@ bool8 BT_Phase2BigPokeball_LoadTilemapAndWave(struct Task *task) return TRUE; } -bool8 BT_Phase2BigPokeball_UpdateWave1IncEva(struct Task *task) +static bool8 BT_Phase2BigPokeball_UpdateWave1IncEva(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; if (task->tInterval == 0 || --task->tInterval == 0) @@ -909,7 +909,7 @@ bool8 BT_Phase2BigPokeball_UpdateWave1IncEva(struct Task *task) return FALSE; } -bool8 BT_Phase2BigPokeball_UpdateWave2DecEvb(struct Task *task) +static bool8 BT_Phase2BigPokeball_UpdateWave2DecEvb(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; if (task->tInterval == 0 || --task->tInterval == 0) @@ -942,7 +942,7 @@ bool8 BT_Phase2BigPokeball_UpdateWave2DecEvb(struct Task *task) #define tDeltaRadius data[2] #define tKeepVBCB data[3] -bool8 BT_Phase2BigPokeball_UpdateWave3(struct Task *task) +static bool8 BT_Phase2BigPokeball_UpdateWave3(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; if (task->tAmplitude > 0) @@ -966,7 +966,7 @@ bool8 BT_Phase2BigPokeball_UpdateWave3(struct Task *task) return FALSE; } -bool8 BT_Phase2BigPokeball_CircleEffect(struct Task *task) +static bool8 BT_Phase2BigPokeball_CircleEffect(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; if (task->tDeltaRadius < 2048) @@ -993,7 +993,7 @@ bool8 BT_Phase2BigPokeball_CircleEffect(struct Task *task) return FALSE; } -void BT_VBStopDma0SyncSrcBufferSetLcdRegs(void) +static void BT_VBStopDma0SyncSrcBufferSetLcdRegs(void) { DmaStop(0); BT_VBSyncOamAndPltt(); @@ -1006,13 +1006,13 @@ void BT_VBStopDma0SyncSrcBufferSetLcdRegs(void) SetGpuReg(REG_OFFSET_BLDALPHA, sTransitionStructPtr->bldAlpha); } -void VBCB_BT_Phase2BigPokeball1(void) +static void VBCB_BT_Phase2BigPokeball1(void) { BT_VBStopDma0SyncSrcBufferSetLcdRegs(); DmaSet(0, gScanlineEffectRegBuffers[1], ®_BG0HOFS, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_16BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); } -void VBCB_BT_Phase2BigPokeball2(void) +static void VBCB_BT_Phase2BigPokeball2(void) { BT_VBStopDma0SyncSrcBufferSetLcdRegs(); DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_16BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); @@ -1025,12 +1025,12 @@ void VBCB_BT_Phase2BigPokeball2(void) #undef tAmplitude // TODO: Document this effect after knowing more about field effects. -void BT_Phase2SlidingPokeballs(u8 taskId) +static void BT_Phase2SlidingPokeballs(u8 taskId) { while (sBT_Phase2SlidingPokeballsFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2SlidingPokeballs_LoadBgGfx(struct Task *task) +static bool8 BT_Phase2SlidingPokeballs_LoadBgGfx(struct Task *task) { u16 *tilemapAddr, *tilesetAddr; @@ -1042,7 +1042,7 @@ bool8 BT_Phase2SlidingPokeballs_LoadBgGfx(struct Task *task) return FALSE; } -bool8 BT_Phase2SlidingPokeballs_SetupFldeffArgs(struct Task *task) +static bool8 BT_Phase2SlidingPokeballs_SetupFldeffArgs(struct Task *task) { s16 i, rand; s16 arr0[NELEMS(gUnknown_83FA400)]; @@ -1063,7 +1063,7 @@ bool8 BT_Phase2SlidingPokeballs_SetupFldeffArgs(struct Task *task) return FALSE; } -bool8 BT_Phase2SlidingPokeballs_IsDone(struct Task *task) +static bool8 BT_Phase2SlidingPokeballs_IsDone(struct Task *task) { if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) { @@ -1093,7 +1093,7 @@ bool8 FldEff_Pokeball(void) ptr[index] = toStore; \ } -void SpriteCB_BT_Phase2SlidingPokeballs(struct Sprite *sprite) +static void SpriteCB_BT_Phase2SlidingPokeballs(struct Sprite *sprite) { s16 arr0[NELEMS(gUnknown_83FA40E)]; @@ -1136,12 +1136,12 @@ void SpriteCB_BT_Phase2SlidingPokeballs(struct Sprite *sprite) #define trEndPtX data[4] #define trEndPtY data[5] -void BT_Phase2ClockwiseBlackFade(u8 taskId) +static void BT_Phase2ClockwiseBlackFade(u8 taskId) { while (sBT_Phase2ClockwiseBlackFadeFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2ClockwiseBlackFade_Init(struct Task *task) +static bool8 BT_Phase2ClockwiseBlackFade_Init(struct Task *task) { u16 i; @@ -1161,7 +1161,7 @@ bool8 BT_Phase2ClockwiseBlackFade_Init(struct Task *task) return TRUE; } -bool8 BT_Phase2ClockwiseBlackFade_Step1(struct Task *task) +static bool8 BT_Phase2ClockwiseBlackFade_Step1(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; BT_DiagonalSegment_InitParams(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->trEndPtX, -1, 1, 1); @@ -1181,7 +1181,7 @@ bool8 BT_Phase2ClockwiseBlackFade_Step1(struct Task *task) return FALSE; } -bool8 BT_Phase2ClockwiseBlackFade_Step2(struct Task *task) +static bool8 BT_Phase2ClockwiseBlackFade_Step2(struct Task *task) { s16 left, right; vu8 finished = FALSE; @@ -1217,7 +1217,7 @@ bool8 BT_Phase2ClockwiseBlackFade_Step2(struct Task *task) return FALSE; } -bool8 BT_Phase2ClockwiseBlackFade_Step3(struct Task *task) +static bool8 BT_Phase2ClockwiseBlackFade_Step3(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; BT_DiagonalSegment_InitParams(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->trEndPtX, 160, 1, 1); @@ -1248,7 +1248,7 @@ bool8 BT_Phase2ClockwiseBlackFade_Step3(struct Task *task) * of WIN0 (see variables left and right), which will sometimes cause right * to be smaller than left. In this way, garbage data will be written to WIN0H. */ -bool8 BT_Phase2ClockwiseBlackFade_Step4(struct Task *task) +static bool8 BT_Phase2ClockwiseBlackFade_Step4(struct Task *task) { s16 right, left; u16 win0H; @@ -1286,7 +1286,7 @@ bool8 BT_Phase2ClockwiseBlackFade_Step4(struct Task *task) return FALSE; } -bool8 BT_Phase2ClockwiseBlackFade_Step5(struct Task *task) +static bool8 BT_Phase2ClockwiseBlackFade_Step5(struct Task *task) { s16 left, right; @@ -1311,7 +1311,7 @@ bool8 BT_Phase2ClockwiseBlackFade_Step5(struct Task *task) return FALSE; } -bool8 BT_Phase2ClockwiseBlackFade_End(struct Task *task) +static bool8 BT_Phase2ClockwiseBlackFade_End(struct Task *task) { DmaStop(0); BT_BlendPalettesToBlack(); @@ -1319,7 +1319,7 @@ bool8 BT_Phase2ClockwiseBlackFade_End(struct Task *task) return FALSE; } -void VBCB_BT_Phase2ClockwiseBlackFade(void) +static void VBCB_BT_Phase2ClockwiseBlackFade(void) { DmaStop(0); BT_VBSyncOamAndPltt(); @@ -1344,12 +1344,12 @@ void VBCB_BT_Phase2ClockwiseBlackFade(void) #define tDelayForFade data[3] #define tStartFade data[4] -void BT_Phase2FullScreenWave(u8 taskId) +static void BT_Phase2FullScreenWave(u8 taskId) { while (sBT_Phase2FullScreenWaveFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2FullScreenWave_Init(struct Task *task) +static bool8 BT_Phase2FullScreenWave_Init(struct Task *task) { u8 i; @@ -1364,7 +1364,7 @@ bool8 BT_Phase2FullScreenWave_Init(struct Task *task) return TRUE; } -bool8 BT_Phase2FullScreenWave_UpdateWave(struct Task *task) +static bool8 BT_Phase2FullScreenWave_UpdateWave(struct Task *task) { u8 i; s16 amplitude; @@ -1397,14 +1397,14 @@ bool8 BT_Phase2FullScreenWave_UpdateWave(struct Task *task) return FALSE; } -void VBCB_BT_Phase2FullScreenWave(void) +static void VBCB_BT_Phase2FullScreenWave(void) { BT_VBSyncOamAndPltt(); if (sTransitionStructPtr->vblankDma) DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } -void HBCB_BT_Phase2FullScreenWave(void) +static void HBCB_BT_Phase2FullScreenWave(void) { s16 offset = gScanlineEffectRegBuffers[1][REG_VCOUNT]; @@ -1421,12 +1421,12 @@ void HBCB_BT_Phase2FullScreenWave(void) #define tOffset data[1] #define tTheta data[2] -void BT_Phase2BlackWaveToRight(u8 taskId) +static void BT_Phase2BlackWaveToRight(u8 taskId) { while (sBT_Phase2BlackWaveToRightFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2BlackWaveToRight_Init(struct Task *task) +static bool8 BT_Phase2BlackWaveToRight_Init(struct Task *task) { u8 i; @@ -1443,25 +1443,25 @@ bool8 BT_Phase2BlackWaveToRight_Init(struct Task *task) return TRUE; } -bool8 BT_Phase2BlackWaveToRight_UpdateWave(struct Task *task) +static bool8 BT_Phase2BlackWaveToRight_UpdateWave(struct Task *task) { u8 i, theta; - u16* toStore; + u16 *winVal; bool8 nextFunc; sTransitionStructPtr->vblankDma = FALSE; - toStore = gScanlineEffectRegBuffers[0]; + winVal = gScanlineEffectRegBuffers[0]; theta = task->tTheta; task->tTheta += 16; task->tOffset += 8; - for (i = 0, nextFunc = TRUE; i < 160; ++i, theta += 4, ++toStore) + for (i = 0, nextFunc = TRUE; i < 160; ++i, theta += 4, ++winVal) { s16 left = task->tOffset + Sin(theta, 40); if (left < 0) left = 0; if (left > 240) left = 240; - *toStore = (left << 8) | (0xF1); + *winVal = (left << 8) | (0xF1); if (left < 240) nextFunc = FALSE; } @@ -1471,7 +1471,7 @@ bool8 BT_Phase2BlackWaveToRight_UpdateWave(struct Task *task) return FALSE; } -bool8 BT_Phase2BlackWaveToRight_End(struct Task *task) +static bool8 BT_Phase2BlackWaveToRight_End(struct Task *task) { DmaStop(0); BT_BlendPalettesToBlack(); @@ -1479,7 +1479,7 @@ bool8 BT_Phase2BlackWaveToRight_End(struct Task *task) return FALSE; } -void VBCB_BT_Phase2BlackWaveToRight(void) +static void VBCB_BT_Phase2BlackWaveToRight(void) { DmaStop(0); BT_VBSyncOamAndPltt(); @@ -1494,13 +1494,13 @@ void VBCB_BT_Phase2BlackWaveToRight(void) #undef tOffset #undef tTheta -void BT_Phase2AntiClockwiseSpiral(u8 taskId) +static void BT_Phase2AntiClockwiseSpiral(u8 taskId) { while (sBT_Phase2AntiClockwiseSpiralFuncs[gTasks[taskId].tState](&gTasks[taskId])); } #ifdef NONMATCHING -void sub_80D1F64(s16 a1, s16 a2, bool8 a3) +static void sub_80D1F64(s16 a1, s16 a2, bool8 a3) { s16 elem; @@ -1512,7 +1512,7 @@ void sub_80D1F64(s16 a1, s16 a2, bool8 a3) } #else NAKED -void sub_80D1F64(s16 a1, s16 a2, bool8 a3) +static void sub_80D1F64(s16 a1, s16 a2, bool8 a3) { asm_unified("\n\ push {r4-r7,lr}\n\ @@ -2302,7 +2302,7 @@ void sub_80D1F64(s16 a1, s16 a2, bool8 a3) } #endif -bool8 BT_Phase2AntiClockwiseSpiral_Init(struct Task *task) +static bool8 BT_Phase2AntiClockwiseSpiral_Init(struct Task *task) { BT_InitCtrlBlk(); ScanlineEffect_Clear(); @@ -2322,7 +2322,7 @@ bool8 BT_Phase2AntiClockwiseSpiral_Init(struct Task *task) return FALSE; } -bool8 BT_Phase2AntiClockwiseSpiral_Update(struct Task *task) +static bool8 BT_Phase2AntiClockwiseSpiral_Update(struct Task *task) { s16 v0, v1; @@ -2358,7 +2358,7 @@ bool8 BT_Phase2AntiClockwiseSpiral_Update(struct Task *task) return FALSE; } -void VBCB_BT_Phase2AntiClockwiseBlackFade(void) +static void VBCB_BT_Phase2AntiClockwiseBlackFade(void) { DmaStop(0); BT_VBSyncOamAndPltt(); @@ -2398,42 +2398,42 @@ void VBCB_BT_Phase2AntiClockwiseBlackFade(void) #define sphasSlideFinished data[6] #define spOpponentOrPlayer data[7] -void BT_Phase2StartLoreleiMugshot(u8 taskId) +static void BT_Phase2StartLoreleiMugshot(u8 taskId) { gTasks[taskId].tWhichMugshot = MUGSHOT_LORELEI; BT_Phase2Mugshot(taskId); } -void BT_Phase2StartBrunoMugshot(u8 taskId) +static void BT_Phase2StartBrunoMugshot(u8 taskId) { gTasks[taskId].tWhichMugshot = MUGSHOT_BRUNO; BT_Phase2Mugshot(taskId); } -void BT_Phase2StartAgathaMugshot(u8 taskId) +static void BT_Phase2StartAgathaMugshot(u8 taskId) { gTasks[taskId].tWhichMugshot = MUGSHOT_AGATHA; BT_Phase2Mugshot(taskId); } -void BT_Phase2StartLanceMugshot(u8 taskId) +static void BT_Phase2StartLanceMugshot(u8 taskId) { gTasks[taskId].tWhichMugshot = MUGSHOT_LANCE; BT_Phase2Mugshot(taskId); } -void BT_Phase2StartBlueMugshot(u8 taskId) +static void BT_Phase2StartBlueMugshot(u8 taskId) { gTasks[taskId].tWhichMugshot = MUGSHOT_BLUE; BT_Phase2Mugshot(taskId); } -void BT_Phase2Mugshot(u8 taskId) +static void BT_Phase2Mugshot(u8 taskId) { while (sBT_Phase2MugshotFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2Mugshot_Init(struct Task *task) +static bool8 BT_Phase2Mugshot_Init(struct Task *task) { u8 i; @@ -2453,7 +2453,7 @@ bool8 BT_Phase2Mugshot_Init(struct Task *task) return FALSE; } -bool8 BT_Phase2Mugshot_LoadGfx(struct Task *task) +static bool8 BT_Phase2Mugshot_LoadGfx(struct Task *task) { s16 i, j; u16 *tilemapAddr, *tilesetAddr; @@ -2472,35 +2472,35 @@ bool8 BT_Phase2Mugshot_LoadGfx(struct Task *task) return FALSE; } -bool8 BT_Phase2Mugshot_VsBarsSlideIn(struct Task *task) +static bool8 BT_Phase2Mugshot_VsBarsSlideIn(struct Task *task) { u8 i, theta; - u16* toStore; + u16 *winVal; s16 value; s32 mergedBg0hOfs; sTransitionStructPtr->vblankDma = FALSE; - toStore = gScanlineEffectRegBuffers[0]; + winVal = gScanlineEffectRegBuffers[0]; theta = task->tTheta; task->tTheta += 0x10; - for (i = 0; i < 80; ++i, ++toStore, theta += 0x10) + for (i = 0; i < 80; ++i, ++winVal, theta += 0x10) { value = task->tbg0HOfsOpponent + Sin(theta, 0x10); if (value < 0) value = 1; if (value > 0xF0) value = 0xF0; - *toStore = value; + *winVal = value; } - for (; i < 160; ++i, ++toStore, theta += 0x10) + for (; i < 160; ++i, ++winVal, theta += 0x10) { value = task->tCounter - Sin(theta, 0x10); if (value < 0) value = 0; if (value > 0xEF) value = 0xEF; - *toStore = (value << 8) | (0xF0); + *winVal = (value << 8) | (0xF0); } task->tbg0HOfsOpponent += 8; task->tCounter -= 8; @@ -2517,14 +2517,14 @@ bool8 BT_Phase2Mugshot_VsBarsSlideIn(struct Task *task) return FALSE; } -bool8 BT_Phase2Mugshot_StartSpriteSlide(struct Task *task) +static bool8 BT_Phase2Mugshot_StartSpriteSlide(struct Task *task) { u8 i; - u16* toStore; + u16 *winVal; sTransitionStructPtr->vblankDma = FALSE; - for (i = 0, toStore = gScanlineEffectRegBuffers[0]; i < 160; ++i, ++toStore) - *toStore = 0xF0; + for (i = 0, winVal = gScanlineEffectRegBuffers[0]; i < 160; ++i, ++winVal) + *winVal = 0xF0; ++task->tState; task->tTheta = 0; task->tbg0HOfsOpponent = 0; @@ -2539,7 +2539,7 @@ bool8 BT_Phase2Mugshot_StartSpriteSlide(struct Task *task) return FALSE; } -bool8 BT_Phase2Mugshot_WaitForOpponentInPlace(struct Task *task) +static bool8 BT_Phase2Mugshot_WaitForOpponentInPlace(struct Task *task) { sTransitionStructPtr->bg0HOfsOpponent -= 8; sTransitionStructPtr->bg0HOfsPlayer += 8; @@ -2551,7 +2551,7 @@ bool8 BT_Phase2Mugshot_WaitForOpponentInPlace(struct Task *task) return FALSE; } -bool8 BT_Phase2Mugshot_WaitForPlayerInPlace(struct Task *task) +static bool8 BT_Phase2Mugshot_WaitForPlayerInPlace(struct Task *task) { sTransitionStructPtr->bg0HOfsOpponent -= 8; sTransitionStructPtr->bg0HOfsPlayer += 8; @@ -2573,7 +2573,7 @@ bool8 BT_Phase2Mugshot_WaitForPlayerInPlace(struct Task *task) return FALSE; } -bool8 BT_Phase2Mugshot_ExpandWhiteBand(struct Task *task) +static bool8 BT_Phase2Mugshot_ExpandWhiteBand(struct Task *task) { bool32 nextFunc; @@ -2612,7 +2612,7 @@ bool8 BT_Phase2Mugshot_ExpandWhiteBand(struct Task *task) return FALSE; } -bool8 BT_Phase2Mugshot_StartBlackFade(struct Task *task) +static bool8 BT_Phase2Mugshot_StartBlackFade(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; BlendPalettes(0xFFFFFFFF, 0x10, RGB_WHITE); @@ -2622,7 +2622,7 @@ bool8 BT_Phase2Mugshot_StartBlackFade(struct Task *task) return TRUE; } -bool8 BT_Phase2Mugshot_WaitForBlackFade(struct Task *task) +static bool8 BT_Phase2Mugshot_WaitForBlackFade(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; ++task->tCounter; @@ -2633,7 +2633,7 @@ bool8 BT_Phase2Mugshot_WaitForBlackFade(struct Task *task) return FALSE; } -bool8 BT_Phase2Mugshot_End(struct Task *task) +static bool8 BT_Phase2Mugshot_End(struct Task *task) { DmaStop(0); BT_BlendPalettesToBlack(); @@ -2641,7 +2641,7 @@ bool8 BT_Phase2Mugshot_End(struct Task *task) return FALSE; } -void VBCB_BT_Phase2Mugshot1_Slide(void) +static void VBCB_BT_Phase2Mugshot1_Slide(void) { DmaStop(0); BT_VBSyncOamAndPltt(); @@ -2654,7 +2654,7 @@ void VBCB_BT_Phase2Mugshot1_Slide(void) DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); } -void VBCB_BT_Phase2Mugshot2_WhiteFade(void) +static void VBCB_BT_Phase2Mugshot2_WhiteFade(void) { DmaStop(0); BT_VBSyncOamAndPltt(); @@ -2664,7 +2664,7 @@ void VBCB_BT_Phase2Mugshot2_WhiteFade(void) DmaSet(0, gScanlineEffectRegBuffers[1], ®_BLDY, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); } -void HBCB_BT_Phase2Mugshot(void) +static void HBCB_BT_Phase2Mugshot(void) { if (REG_VCOUNT < 80) REG_BG0HOFS = sTransitionStructPtr->bg0HOfsOpponent; @@ -2673,7 +2673,7 @@ void HBCB_BT_Phase2Mugshot(void) } -void BT_Phase2Mugshots_CreateSprites(struct Task *task) +static void BT_Phase2Mugshots_CreateSprites(struct Task *task) { struct Sprite *opponentSprite, *playerSprite; s16 mugshotId; @@ -2701,17 +2701,17 @@ void BT_Phase2Mugshots_CreateSprites(struct Task *task) SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 512, 0); } -void SpriteCB_BT_Phase2Mugshots(struct Sprite *sprite) +static void SpriteCB_BT_Phase2Mugshots(struct Sprite *sprite) { while (sBT_Phase2MugshotSpriteFuncs[sprite->spState](sprite)); } -bool8 BT_Phase2MugshotsSpriteFuncs_Wait(struct Sprite *sprite) +static bool8 BT_Phase2MugshotsSpriteFuncs_Wait(struct Sprite *sprite) { return FALSE; } -bool8 BT_Phase2MugshotsSpriteFuncs_InitParams(struct Sprite *sprite) +static bool8 BT_Phase2MugshotsSpriteFuncs_InitParams(struct Sprite *sprite) { s16 arr0[2]; s16 arr1[2]; @@ -2724,7 +2724,7 @@ bool8 BT_Phase2MugshotsSpriteFuncs_InitParams(struct Sprite *sprite) return TRUE; } -bool8 BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn(struct Sprite *sprite) +static bool8 BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn(struct Sprite *sprite) { sprite->pos1.x += sprite->spSpeed; if (sprite->spOpponentOrPlayer && sprite->pos1.x < 133) @@ -2734,7 +2734,7 @@ bool8 BT_Phase2MugshotsSpriteFuncs_SlideSpriteIn(struct Sprite *sprite) return FALSE; } -bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite(struct Sprite *sprite) +static bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite(struct Sprite *sprite) { sprite->spSpeed += sprite->spAbsAcc; sprite->pos1.x += sprite->spSpeed; @@ -2748,7 +2748,7 @@ bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite(struct Sprite *sprite) } // not used -bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2(struct Sprite *sprite) +static bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2(struct Sprite *sprite) { sprite->spSpeed += sprite->spAbsAcc; sprite->pos1.x += sprite->spSpeed; @@ -2757,17 +2757,17 @@ bool8 BT_Phase2MugshotsSpriteFuncs_DecelerateSprite2(struct Sprite *sprite) return FALSE; } -void BT_SetSpriteAsOpponentOrPlayer(s16 spriteId, bool16 value) +static void BT_SetSpriteAsOpponentOrPlayer(s16 spriteId, bool16 value) { gSprites[spriteId].spOpponentOrPlayer = value; } -void BT_StartSpriteSlide(s16 spriteId) +static void BT_StartSpriteSlide(s16 spriteId) { ++gSprites[spriteId].spState; } -s16 BT_IsSpriteSlideFinished(s16 spriteId) +static s16 BT_IsSpriteSlideFinished(s16 spriteId) { return gSprites[spriteId].sphasSlideFinished; } @@ -2791,12 +2791,12 @@ s16 BT_IsSpriteSlideFinished(s16 spriteId) #define tAcc data[2] #define tJerk data[3] -void BT_Phase2SlicedScreen(u8 taskId) +static void BT_Phase2SlicedScreen(u8 taskId) { while (sBT_Phase2SlicedScreenFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2SlicedScreen_Init(struct Task *task) +static bool8 BT_Phase2SlicedScreen_Init(struct Task *task) { u16 i; @@ -2819,7 +2819,7 @@ bool8 BT_Phase2SlicedScreen_Init(struct Task *task) return TRUE; } -bool8 BT_Phase2SlicedScreen_UpdateOffsets(struct Task *task) +static bool8 BT_Phase2SlicedScreen_UpdateOffsets(struct Task *task) { u16 i; @@ -2852,7 +2852,7 @@ bool8 BT_Phase2SlicedScreen_UpdateOffsets(struct Task *task) return FALSE; } -bool8 BT_Phase2SlicedScreen_End(struct Task *task) +static bool8 BT_Phase2SlicedScreen_End(struct Task *task) { DmaStop(0); BT_BlendPalettesToBlack(); @@ -2860,7 +2860,7 @@ bool8 BT_Phase2SlicedScreen_End(struct Task *task) return FALSE; } -void VBCB_BT_Phase2SlicedScreen(void) +static void VBCB_BT_Phase2SlicedScreen(void) { DmaStop(0); BT_VBSyncOamAndPltt(); @@ -2872,7 +2872,7 @@ void VBCB_BT_Phase2SlicedScreen(void) DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_16BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); } -void HBCB_BT_Phase2SlicedScreen(void) +static void HBCB_BT_Phase2SlicedScreen(void) { s16 offset = gScanlineEffectRegBuffers[1][REG_VCOUNT]; @@ -2891,12 +2891,12 @@ void HBCB_BT_Phase2SlicedScreen(void) #define spDelay data[5] #define spLastSprite data[6] -void BT_Phase2WhiteFadeInStripes(u8 taskId) +static void BT_Phase2WhiteFadeInStripes(u8 taskId) { while (sBT_Phase2WhiteFadeInStripesFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2WhiteFadeInStripes_Init(struct Task *task) +static bool8 BT_Phase2WhiteFadeInStripes_Init(struct Task *task) { u16 i; @@ -2919,7 +2919,7 @@ bool8 BT_Phase2WhiteFadeInStripes_Init(struct Task *task) return FALSE; } -bool8 BT_Phase2WhiteFadeInStripes_SetupSprites(struct Task *task) +static bool8 BT_Phase2WhiteFadeInStripes_SetupSprites(struct Task *task) { s16 i, posY; s16 buffer[NELEMS(sWhiteStripeDelay)]; @@ -2938,7 +2938,7 @@ bool8 BT_Phase2WhiteFadeInStripes_SetupSprites(struct Task *task) return FALSE; } -bool8 BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone(struct Task *task) +static bool8 BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; if (sTransitionStructPtr->counter > 5) @@ -2949,7 +2949,7 @@ bool8 BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone(struct Task *task) return FALSE; } -bool8 BT_Phase2WhiteFadeInStripes_Stop(struct Task *task) +static bool8 BT_Phase2WhiteFadeInStripes_Stop(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; DmaStop(0); @@ -2965,7 +2965,7 @@ bool8 BT_Phase2WhiteFadeInStripes_Stop(struct Task *task) return FALSE; } -bool8 BT_Phase2WhiteFadeInStripes_IsDone(struct Task *task) +static bool8 BT_Phase2WhiteFadeInStripes_IsDone(struct Task *task) { sTransitionStructPtr->counter += 480; sTransitionStructPtr->bldY = sTransitionStructPtr->counter >> 8; @@ -2977,7 +2977,7 @@ bool8 BT_Phase2WhiteFadeInStripes_IsDone(struct Task *task) return FALSE; } -void VBCB_BT_Phase2WhiteFadeInStripes1(void) +static void VBCB_BT_Phase2WhiteFadeInStripes1(void) { DmaStop(0); BT_VBSyncOamAndPltt(); @@ -2990,7 +2990,7 @@ void VBCB_BT_Phase2WhiteFadeInStripes1(void) DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_16BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 1); } -void VBCB_BT_Phase2WhiteFadeInStripes2(void) +static void VBCB_BT_Phase2WhiteFadeInStripes2(void) { BT_VBSyncOamAndPltt(); SetGpuReg(REG_OFFSET_BLDY, sTransitionStructPtr->bldY); @@ -3002,7 +3002,7 @@ void VBCB_BT_Phase2WhiteFadeInStripes2(void) } -void HBCB_BT_Phase2WhiteFadeInStripes(void) +static void HBCB_BT_Phase2WhiteFadeInStripes(void) { vu16 index = REG_VCOUNT; @@ -3011,7 +3011,7 @@ void HBCB_BT_Phase2WhiteFadeInStripes(void) REG_BLDY = gScanlineEffectRegBuffers[1][index]; } -void SpriteCB_BT_Phase2WhiteFadeInStripes(struct Sprite *sprite) +static void SpriteCB_BT_Phase2WhiteFadeInStripes(struct Sprite *sprite) { if (sprite->spDelay) { @@ -3022,8 +3022,8 @@ void SpriteCB_BT_Phase2WhiteFadeInStripes(struct Sprite *sprite) else { u16 i; - u16* bldY = &gScanlineEffectRegBuffers[0][sprite->pos1.y]; - u16* win0H = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160]; + u16 *bldY = &gScanlineEffectRegBuffers[0][sprite->pos1.y]; + u16 *win0H = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160]; u32 stripeWidth = sprite->spLastSprite ? 0x19 : 0x1B; for (i = 0; i < stripeWidth; ++i) @@ -3061,12 +3061,12 @@ void SpriteCB_BT_Phase2WhiteFadeInStripes(struct Sprite *sprite) #define tDelay data[1] #define tWhichGrid data[2] -void BT_Phase2GridSquares(u8 taskId) +static void BT_Phase2GridSquares(u8 taskId) { while (sBT_Phase2GridSquaresFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2GridSquares_LoadGfx(struct Task *task) +static bool8 BT_Phase2GridSquares_LoadGfx(struct Task *task) { u16 *tilemapAddr, *tilesetAddr; @@ -3078,9 +3078,9 @@ bool8 BT_Phase2GridSquares_LoadGfx(struct Task *task) return FALSE; } -bool8 BT_Phase2GridSquares_UpdateTileset(struct Task *task) +static bool8 BT_Phase2GridSquares_UpdateTileset(struct Task *task) { - u16* tilesetAddr; + u16 *tilesetAddr; if (task->tDelay == 0) { @@ -3098,7 +3098,7 @@ bool8 BT_Phase2GridSquares_UpdateTileset(struct Task *task) return FALSE; } -bool8 BT_Phase2GridSquares_IsDone(struct Task *task) +static bool8 BT_Phase2GridSquares_IsDone(struct Task *task) { if (--task->tDelay == 0) { @@ -3118,12 +3118,12 @@ bool8 BT_Phase2GridSquares_IsDone(struct Task *task) #define trCurrentPtX data[2] #define trCurrentPtY data[3] -void BT_Phase2BlackDoodles(u8 taskId) +static void BT_Phase2BlackDoodles(u8 taskId) { while (sBT_Phase2BlackDoodlesFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase2BlackDoodles_Init(struct Task *task) +static bool8 BT_Phase2BlackDoodles_Init(struct Task *task) { u16 i; @@ -3140,7 +3140,7 @@ bool8 BT_Phase2BlackDoodles_Init(struct Task *task) return TRUE; } -bool8 BT_Phase2BlackDoodles_InitSingleBrush(struct Task *task) +static bool8 BT_Phase2BlackDoodles_InitSingleBrush(struct Task *task) { BT_DiagonalSegment_InitParams(sTransitionStructPtr->data, sBlackDoodlesSegments[task->tWhichBrush][0], sBlackDoodlesSegments[task->tWhichBrush][1], sBlackDoodlesSegments[task->tWhichBrush][2], sBlackDoodlesSegments[task->tWhichBrush][3], 1, 1); task->tWhichSide = sBlackDoodlesSegments[task->tWhichBrush][4]; @@ -3148,7 +3148,7 @@ bool8 BT_Phase2BlackDoodles_InitSingleBrush(struct Task *task) return TRUE; } -bool8 BT_Phase2BlackDoodles_DrawSingleBrush(struct Task *task) +static bool8 BT_Phase2BlackDoodles_DrawSingleBrush(struct Task *task) { s16 i; bool8 nextFunc; @@ -3185,7 +3185,7 @@ bool8 BT_Phase2BlackDoodles_DrawSingleBrush(struct Task *task) return FALSE; } -bool8 BT_Phase2BlackDoodles_IsDone(struct Task *task) +static bool8 BT_Phase2BlackDoodles_IsDone(struct Task *task) { if (++task->tWhichBrush < 7) { @@ -3202,7 +3202,7 @@ bool8 BT_Phase2BlackDoodles_IsDone(struct Task *task) } } -bool8 BT_Phase2BlackDoodles_NextBrush(struct Task *task) +static bool8 BT_Phase2BlackDoodles_NextBrush(struct Task *task) { if (--task->tDelay == 0) { @@ -3213,7 +3213,7 @@ bool8 BT_Phase2BlackDoodles_NextBrush(struct Task *task) return FALSE; } -void VBCB_BT_Phase2BlackDoodles(void) +static void VBCB_BT_Phase2BlackDoodles(void) { DmaStop(0); BT_VBSyncOamAndPltt(); @@ -3241,7 +3241,7 @@ void VBCB_BT_Phase2BlackDoodles(void) #define tDelayCounter data[6] #define tCoeff data[7] -void BT_CreatePhase1SubTask(s16 fadeOutDelay, s16 fadeInDelay, s16 blinkTimes, s16 fadeOutSpeed, s16 fadeInSpeed) +static void BT_CreatePhase1SubTask(s16 fadeOutDelay, s16 fadeInDelay, s16 blinkTimes, s16 fadeOutSpeed, s16 fadeInSpeed) { u8 taskId = CreateTask(BT_Phase1SubTask, 3); gTasks[taskId].tFadeOutDelay = fadeOutDelay; @@ -3252,7 +3252,7 @@ void BT_CreatePhase1SubTask(s16 fadeOutDelay, s16 fadeInDelay, s16 blinkTimes, s gTasks[taskId].tDelayCounter = fadeOutDelay; } -bool8 BT_IsPhase1Done(void) +static bool8 BT_IsPhase1Done(void) { if (FindTaskIdByFunc(BT_Phase1SubTask) == TASK_NONE) return TRUE; @@ -3260,12 +3260,12 @@ bool8 BT_IsPhase1Done(void) return FALSE; } -void BT_Phase1SubTask(u8 taskId) +static void BT_Phase1SubTask(u8 taskId) { while (sBT_Phase1FadeFuncs[gTasks[taskId].tState](&gTasks[taskId])); } -bool8 BT_Phase1_FadeOut(struct Task *task) +static bool8 BT_Phase1_FadeOut(struct Task *task) { if (task->tDelayCounter == 0 || --task->tDelayCounter == 0) { @@ -3283,7 +3283,7 @@ bool8 BT_Phase1_FadeOut(struct Task *task) return FALSE; } -bool8 BT_Phase1_FadeIn(struct Task *task) +static bool8 BT_Phase1_FadeIn(struct Task *task) { if (task->tDelayCounter == 0 || --task->tDelayCounter == 0) { @@ -3316,29 +3316,29 @@ bool8 BT_Phase1_FadeIn(struct Task *task) #undef tDelayCounter #undef tCoeff -void BT_InitCtrlBlk(void) +static void BT_InitCtrlBlk(void) { memset(sTransitionStructPtr, 0, sizeof(*sTransitionStructPtr)); sub_805A658(&sTransitionStructPtr->bg123HOfs, &sTransitionStructPtr->bg123VOfs); } -void BT_VBSyncOamAndPltt(void) +static void BT_VBSyncOamAndPltt(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void BT_GetBg0TilesetBase(u16 **tilesetPtr) +static void BT_GetBg0TilesetBase(u16 **tilesetPtr) { u16 charBase; charBase = GetGpuReg(REG_OFFSET_BG0CNT) >> 2; charBase <<= 0xE; - *tilesetPtr = (u16*)(VRAM + charBase); + *tilesetPtr = (u16 *)(VRAM + charBase); } -void BT_GetBg0TilemapAndTilesetBase(u16 **tilemapPtr, u16 **tilesetPtr) +static void BT_GetBg0TilemapAndTilesetBase(u16 **tilemapPtr, u16 **tilesetPtr) { u16 screenBase, charBase; @@ -3346,16 +3346,16 @@ void BT_GetBg0TilemapAndTilesetBase(u16 **tilemapPtr, u16 **tilesetPtr) charBase = GetGpuReg(REG_OFFSET_BG0CNT) >> 2; screenBase <<= 0xB; charBase <<= 0xE; - *tilemapPtr = (u16*)(VRAM + screenBase); - *tilesetPtr = (u16*)(VRAM + charBase); + *tilemapPtr = (u16 *)(VRAM + screenBase); + *tilesetPtr = (u16 *)(VRAM + charBase); } -void BT_BlendPalettesToBlack(void) +static void BT_BlendPalettesToBlack(void) { BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); } -void BT_LoadWaveIntoBuffer(s16 *buffer, s16 offset, s16 theta, s16 frequency, s16 amplitude, s16 bufSize) +static void BT_LoadWaveIntoBuffer(s16 *buffer, s16 offset, s16 theta, s16 frequency, s16 amplitude, s16 bufSize) { u8 i; @@ -3363,7 +3363,7 @@ void BT_LoadWaveIntoBuffer(s16 *buffer, s16 offset, s16 theta, s16 frequency, s1 buffer[i] = offset + Sin(0xFF & theta, amplitude); } -void BT_GenerateCircle(s16 *buffer, s16 x, s16 y, s16 radius) +static void BT_GenerateCircle(s16 *buffer, s16 x, s16 y, s16 radius) { s16 i; @@ -3424,7 +3424,7 @@ void BT_GenerateCircle(s16 *buffer, s16 x, s16 y, s16 radius) #define trAbsDeltaY data[9] #define trAccum data[10] // track one dimension based on slope -void BT_DiagonalSegment_InitParams(s16 *data, s16 startPtX, s16 startPtY, s16 endPtX, s16 endPtY, s16 stepX, s16 stepY) +static void BT_DiagonalSegment_InitParams(s16 *data, s16 startPtX, s16 startPtY, s16 endPtX, s16 endPtY, s16 stepX, s16 stepY) { trStartPtX = startPtX; trStartPtY = startPtY; @@ -3449,7 +3449,7 @@ void BT_DiagonalSegment_InitParams(s16 *data, s16 startPtX, s16 startPtY, s16 en trAccum = 0; } -bool8 BT_DiagonalSegment_ComputePointOnSegment(s16 *data, bool8 checkBoundary1, bool8 checkBoundary2) +static bool8 BT_DiagonalSegment_ComputePointOnSegment(s16 *data, bool8 checkBoundary1, bool8 checkBoundary2) { u8 finish; From d4ace1162fd85d0531da5bf2296102bf1f503073 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 27 Jul 2019 07:19:36 +0800 Subject: [PATCH 25/38] current progress for sub_80D1F64 --- src/battle_transition.c | 239 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 231 insertions(+), 8 deletions(-) diff --git a/src/battle_transition.c b/src/battle_transition.c index 71296c67f..0fd92d631 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -1500,19 +1500,242 @@ static void BT_Phase2AntiClockwiseSpiral(u8 taskId) } #ifdef NONMATCHING -static void sub_80D1F64(s16 a1, s16 a2, bool8 a3) +static void sub_80D1F64(s16 a1, s16 a2, u8 a3) { - s16 elem; + s16 i, j; - for (elem = 320; elem < NELEMS(gScanlineEffectRegBuffers[1]); ++elem) - gScanlineEffectRegBuffers[1][elem] = 120; - WILL DO IT LATER - LET ME RESOLVE OTHER STUFF FIRST + u8 theta = 0; + for (i = 320; i < 960; ++i) + gScanlineEffectRegBuffers[1][i] = 120; + for (i = 0; i < (a2 << 4); ++i, ++theta) + { + s16 res1, res2, res3, res4, diff, r8, r0; + + // PROBLEM #1: + // (around line 50 in ASM) + // This part completely doesn't match. + // It's also not tail merge. + if ((theta >> 3) != ((theta + 1) >> 3)) + { + r8 = (theta >> 3) + a1; + ++r8; + r0 = (theta >> 3) + a1; + } + else + { + r0 = (theta >> 3) + a1; + r8 = (theta >> 3) + a1; + } + res1 = 80 - Sin(theta, r0); + res2 = Cos(theta, r0) + 120; + res3 = 80 - Sin(theta + 1, r8); + res4 = Cos(theta + 1, r8) + 120; + if ((res1 >= 0 || res3 >= 0) && (res1 <= 159 || res3 <= 159)) + { + if (res1 < 0) + res1 = 0; + if (res1 > 159) + res1 = 159; + if (res2 < 0) + res2 = 0; + if (res2 > 255) + res2 = 255; + if (res3 < 0) + res3 = 0; + if (res3 > 159) + res3 = 159; + if (res4 < 0) + res4 = 0; + if (res4 > 255) + res4 = 255; + diff = res3 - res1; + if (theta - 64 >= 0) + { + gScanlineEffectRegBuffers[1][res1 + 320] = res2; + if (diff) + { + s16 diff2 = res4 - res2; + + if (diff2 < -1 && res2 > 1) + --res2; + else if (diff2 > 1 && res2 <= 254) + ++res2; + // PROBLEM #2: + // (around line 300 in ASM) + // The current version matched the control flow, + // but it looks too weird and some shift doesn't match + // functional equivalent: + // for (j = diff; j < 0; ++j) + // gScanlineEffectRegBuffers[1][res1 + j + 480] = res2; + // for (j = diff; j > 0; --j) + // gScanlineEffectRegBuffers[1][res1 + j + 480] = res2; + if ((j = diff) < 0) + do + gScanlineEffectRegBuffers[1][res1 + j + 320] = res2; + while (++j < 0); + else + while (j > 0) + { + gScanlineEffectRegBuffers[1][res1 + j + 320] = res2; + ++j; + } + } + } + else + { + gScanlineEffectRegBuffers[1][res1 + 480] = res2; + if (diff) + { + s16 diff2 = res4 - res2; + + if (diff2 < -1 && res2 > 1) + --res2; + else if (diff2 > 1 && res2 <= 254) + ++res2; + // same as PROBLEM #2 + for (j = diff; j < 0; ++j) + gScanlineEffectRegBuffers[1][res1 + j + 480] = res2; + for (j = diff; j > 0; --j) + gScanlineEffectRegBuffers[1][res1 + j + 480] = res2; + } + } + } + } + // PROBLEM #3: We need (a2 << 16) & 0x30000 here. + // Is it because the programmer declared a s32 var to + // hold the value of a2 and then cast the result to s16? + // Currently I have to write it explicitly. + // (around line 460 in ASM) + if (!a3 || !((a2 << 16) & 0x30000)) + { + for (i = 0; i < 160; ++i) + gScanlineEffectRegBuffers[1][i * 2 + a3] = (gScanlineEffectRegBuffers[1][i + 320] << 8) | gScanlineEffectRegBuffers[1][i + 480]; + } + else + { + s16 res = Sin(a2 * 16, a1 + a2 * 2); + + switch (a2 / 4) + { + case 0: + if (res > 80) + res = 80; + // PROBLEM #4: + // (around line 550 in ASM) + // Case 0-3 are very similar, so it's very likely + // that they have the same problem. + // The code is definitely functional equivalent, + // but the vanilla game used some extra shifts and + // used unsigned comparison. Another difference is + // that I can't figure out a way to make gUnknown_83FA444[a2] + // happen outside the loop body. + // It seems that sTransitionStructPtr->data[2] need + // to be used in the first statement so that the + // struct pointer sTransitionStructPtr will be loaded + // early enough. + // + // Logically the generated code is following if + do-while structure. + // But it seems that it can only make the situation even worse. + /* + i = res; + if (i > 0) + { + // This happens before loop body. + s16 unk = gUnknown_83FA444[a2]; + + do + { + sTransitionStructPtr->data[2] = ((i * unk) >> 8) + 120; + if (sTransitionStructPtr->data[2] <= 255) + { + sTransitionStructPtr->bg123HOfs = 400 - i; + sTransitionStructPtr->data[10] = gScanlineEffectRegBuffers[1][400 - i]; + if (gScanlineEffectRegBuffers[1][560 - i] < sTransitionStructPtr->data[2]) + gScanlineEffectRegBuffers[1][560 - i] = 120; + else if (gScanlineEffectRegBuffers[1][400 - i] < sTransitionStructPtr->data[2]) + gScanlineEffectRegBuffers[1][400 - i] = sTransitionStructPtr->data[2]; + } + } + while (--i > 0); + } + */ + for (i = res; i > 0; --i) + { + sTransitionStructPtr->data[2] = ((i * gUnknown_83FA444[a2]) >> 8) + 120; + if (sTransitionStructPtr->data[2] <= 255) + { + sTransitionStructPtr->bg123HOfs = 400 - i; + sTransitionStructPtr->data[10] = gScanlineEffectRegBuffers[1][400 - i]; + if (gScanlineEffectRegBuffers[1][560 - i] < sTransitionStructPtr->data[2]) + gScanlineEffectRegBuffers[1][560 - i] = 120; + else if (gScanlineEffectRegBuffers[1][400 - i] < sTransitionStructPtr->data[2]) + gScanlineEffectRegBuffers[1][400 - i] = sTransitionStructPtr->data[2]; + } + } + break; + case 1: + if (res > 80) + res = 80; + // same as PROBLEM #4 + for (i = res; i > 0; --i) + { + s16 unkVal; + + sTransitionStructPtr->data[2] = ((i * gUnknown_83FA444[a2]) >> 8) + 120; + if (sTransitionStructPtr->data[2] <= 255) + { + sTransitionStructPtr->bg123HOfs = 400 - i; + sTransitionStructPtr->data[10] = gScanlineEffectRegBuffers[1][400 - i]; + if (gScanlineEffectRegBuffers[1][400 - i] < sTransitionStructPtr->data[2]) + gScanlineEffectRegBuffers[1][400 - i] = sTransitionStructPtr->data[2]; + } + } + break; + case 2: + if (res < -79) + res = -79; + // same as PROBLEM #4 + for (i = res; i <= 0; ++i) + { + sTransitionStructPtr->data[2] = ((i * gUnknown_83FA444[a2]) >> 8) + 120; + if (sTransitionStructPtr->data[2] <= 255) + { + sTransitionStructPtr->bg123HOfs = 560 - i; + sTransitionStructPtr->data[10] = gScanlineEffectRegBuffers[1][560 - i]; + if (gScanlineEffectRegBuffers[1][400 - i] >= sTransitionStructPtr->data[2]) + gScanlineEffectRegBuffers[1][400 - i] = 120; + else if (gScanlineEffectRegBuffers[1][560 - i] > sTransitionStructPtr->data[2]) + gScanlineEffectRegBuffers[1][560 - i] = sTransitionStructPtr->data[2]; + } + } + break; + case 3: + if (res < -79) + res = -79; + // same as PROBLEM #4 + for (i = res; i <= 0; ++i) + { + sTransitionStructPtr->data[2] = ((i * gUnknown_83FA444[a2]) >> 8) + 120; + if (sTransitionStructPtr->data[2] <= 255) + { + sTransitionStructPtr->bg123HOfs = 560 - i; + sTransitionStructPtr->data[10] = gScanlineEffectRegBuffers[1][560 - i]; + if (gScanlineEffectRegBuffers[1][560 - i] > sTransitionStructPtr->data[2]) + gScanlineEffectRegBuffers[1][560 - i] = sTransitionStructPtr->data[2]; + } + } + break; + default: + break; + } + for (i = 0; i < 160; ++i) + gScanlineEffectRegBuffers[1][2 * i + a3] = (gScanlineEffectRegBuffers[1][i + 320] << 8) | gScanlineEffectRegBuffers[1][i + 480]; + } } #else NAKED -static void sub_80D1F64(s16 a1, s16 a2, bool8 a3) +static void sub_80D1F64(s16 a1, s16 a2, u8 a3) { asm_unified("\n\ push {r4-r7,lr}\n\ @@ -2508,7 +2731,7 @@ static bool8 BT_Phase2Mugshot_VsBarsSlideIn(struct Task *task) task->tbg0HOfsOpponent = 0xF0; if (task->tCounter < 0) task->tCounter = 0; - mergedBg0hOfs = *(s32*)(&task->tbg0HOfsOpponent); + mergedBg0hOfs = *(s32 *)(&task->tbg0HOfsOpponent); if (mergedBg0hOfs == 0x00F0) ++task->tState; sTransitionStructPtr->bg0HOfsOpponent -= 8; From ef4c86fbfdd18b78700f61b629907a85579197c0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 29 Jul 2019 20:50:06 -0400 Subject: [PATCH 26/38] slot_machine: through sub_81418C4 --- asm/slot_machine.s | 161 -------------------------------------------- data/slot_machine.s | 26 ------- include/menu.h | 1 + src/slot_machine.c | 85 +++++++++++++++++++++++ 4 files changed, 86 insertions(+), 187 deletions(-) diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 5dbf01acc..028457d86 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -5,167 +5,6 @@ .text - thumb_func_start sub_81417E4 -sub_81417E4: @ 81417E4 - push {r4,lr} - sub sp, 0x14 - adds r4, r0, 0 - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x1 - movs r2, 0xF - bl DrawTextBorderOuter - movs r1, 0x2 - str r1, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r0, 0x1 - str r0, [sp, 0xC] - str r1, [sp, 0x10] - movs r0, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_812E62C - add sp, 0x14 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81417E4 - - thumb_func_start sub_8141828 -sub_8141828: @ 8141828 - push {lr} - movs r0, 0 - bl rbox_fill_rectangle - pop {r0} - bx r0 - thumb_func_end sub_8141828 - - thumb_func_start sub_8141834 -sub_8141834: @ 8141834 - push {r4,lr} - adds r4, r0, 0 - bl sub_8140BEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081418B4 - cmp r0, 0x1 - bgt _0814184E - cmp r0, 0 - beq _08141858 - b _081418BE -_0814184E: - cmp r0, 0x2 - beq _081418A0 - cmp r0, 0x3 - beq _0814188C - b _081418BE -_08141858: - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x4 - bl sub_81418C4 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x4 - bl sub_81418C4 - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0x4 - bl sub_81418C4 - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0x4 - bl sub_81418C4 - adds r0, r4, 0 - movs r1, 0x4 - movs r2, 0x4 - bl sub_81418C4 - b _081418BE -_0814188C: - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x5 - bl sub_81418C4 - adds r0, r4, 0 - movs r1, 0x4 - movs r2, 0x5 - bl sub_81418C4 -_081418A0: - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x5 - bl sub_81418C4 - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0x5 - bl sub_81418C4 -_081418B4: - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0x5 - bl sub_81418C4 -_081418BE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8141834 - - thumb_func_start sub_81418C4 -sub_81418C4: @ 81418C4 - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 16 - ldr r3, _08141914 @ =gUnknown_8466C0C - lsrs r1, 13 - adds r0, r1, r3 - ldr r4, [r0] - lsls r2, 28 - lsrs r7, r2, 16 - movs r5, 0 - adds r3, 0x4 - adds r1, r3 - ldr r1, [r1] - cmp r5, r1 - bcs _0814190C - ldr r0, _08141918 @ =0x00000fff - mov r12, r0 - adds r3, r1, 0 -_081418E8: - ldrh r1, [r4] - lsls r1, 1 - adds r1, r6 - ldrh r2, [r1] - mov r0, r12 - ands r0, r2 - strh r0, [r1] - ldrh r1, [r4] - lsls r1, 1 - adds r1, r6 - ldrh r2, [r1] - adds r0, r7, 0 - orrs r0, r2 - strh r0, [r1] - adds r4, 0x2 - adds r5, 0x1 - cmp r5, r3 - bcc _081418E8 -_0814190C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08141914: .4byte gUnknown_8466C0C -_08141918: .4byte 0x00000fff - thumb_func_end sub_81418C4 - thumb_func_start sub_814191C sub_814191C: @ 814191C push {r4,r5,lr} diff --git a/data/slot_machine.s b/data/slot_machine.s index 5c95ae7bf..1ff90742f 100644 --- a/data/slot_machine.s +++ b/data/slot_machine.s @@ -2,34 +2,8 @@ .include "constants/constants.inc" .section .rodata -gUnknown_8466B38:: - .2byte 0x00a4, 0x00a5, 0x00a6, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00e7, 0x012c, 0x014c, 0x0191, 0x01b1, 0x01f6, 0x0216, 0x0217, 0x0218 - .2byte 0x0219, 0x0237, 0x0238, 0x0239 - -gUnknown_8466B60:: - .2byte 0x00e4, 0x00e5, 0x00e6, 0x00f7, 0x00f8, 0x00f9, 0x0104, 0x0105, 0x0106, 0x0107, 0x010c, 0x0111, 0x0116, 0x0117, 0x0118, 0x0119 - .2byte 0x0124, 0x0125, 0x0126, 0x0137, 0x0138, 0x0139 - -gUnknown_8466B8C:: - .2byte 0x0144, 0x0145, 0x0146, 0x0157, 0x0158, 0x0159, 0x0164, 0x0165, 0x0166, 0x0167, 0x016c, 0x0171, 0x0176, 0x0177, 0x0178, 0x0179 - .2byte 0x0184, 0x0185, 0x0186, 0x0197, 0x0198, 0x0199 - -gUnknown_8466BB8:: - .2byte 0x01a4, 0x01a5, 0x01a6, 0x01b7, 0x01b8, 0x01b9, 0x01c4, 0x01c5, 0x01c6, 0x01c7, 0x01cc, 0x01d1, 0x01d6, 0x01d7, 0x01d8, 0x01d9 - .2byte 0x01e4, 0x01e5, 0x01e6, 0x01f7, 0x01f8, 0x01f9 - -gUnknown_8466BE4:: - .2byte 0x0204, 0x0205, 0x0206, 0x0224, 0x0225, 0x0226, 0x01e7, 0x0207, 0x018c, 0x01ac, 0x0131, 0x0151, 0x00d6, 0x00f6, 0x00b7, 0x00b8 - .2byte 0x00b9, 0x00d7, 0x00d8, 0x00d9 .align 2 -gUnknown_8466C0C:: @ 8466C0C - .4byte gUnknown_8466B38, 0x14 - .4byte gUnknown_8466B60, 0x16 - .4byte gUnknown_8466B8C, 0x16 - .4byte gUnknown_8466BB8, 0x16 - .4byte gUnknown_8466BE4, 0x14 - gUnknown_8466C34:: @ 8466C34 .byte 0x02, 0x04 diff --git a/include/menu.h b/include/menu.h index 40c7ffc12..172944064 100644 --- a/include/menu.h +++ b/include/menu.h @@ -50,5 +50,6 @@ void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_st bool8 IsBlendTaskActive(void); void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8); void sub_810F260(u8 windowId, u8 a1); +void sub_812E62C(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing); #endif // GUARD_MENU_H diff --git a/src/slot_machine.c b/src/slot_machine.c index 93714311c..bc3baf621 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -74,6 +74,12 @@ struct SlotMachineSetupTaskData u8 field_205C[0x800]; }; // size: 285C +struct UnkStruct_8466C0C +{ + const u16 * tiles; + u32 count; +}; + EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL; EWRAM_DATA struct SlotMachineGfxManager * sSlotMachineGfxManager = NULL; @@ -129,6 +135,7 @@ bool8 sub_8141764(u8 *, struct SlotMachineSetupTaskData *); void sub_81417E4(const u8 * str); void sub_8141828(void); void sub_8141834(u16 * bgTilemapBuffer); +void sub_81418C4(u16 * bgTilemapBuffer, u16 a0, u16 a1); void sub_814191C(u8 taskId); void sub_8141AB0(void); void sub_8141AD8(u8 a0); @@ -585,6 +592,34 @@ const struct WindowTemplate gUnknown_8466B20[] = { DUMMY_WIN_TEMPLATE }; +const u16 gUnknown_8466B38[] = { + 0x00a4, 0x00a5, 0x00a6, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00e7, 0x012c, 0x014c, 0x0191, 0x01b1, 0x01f6, 0x0216, 0x0217, 0x0218, 0x0219, 0x0237, 0x0238, 0x0239 +}; + +const u16 gUnknown_8466B60[] = { + 0x00e4, 0x00e5, 0x00e6, 0x00f7, 0x00f8, 0x00f9, 0x0104, 0x0105, 0x0106, 0x0107, 0x010c, 0x0111, 0x0116, 0x0117, 0x0118, 0x0119, 0x0124, 0x0125, 0x0126, 0x0137, 0x0138, 0x0139 +}; + +const u16 gUnknown_8466B8C[] = { + 0x0144, 0x0145, 0x0146, 0x0157, 0x0158, 0x0159, 0x0164, 0x0165, 0x0166, 0x0167, 0x016c, 0x0171, 0x0176, 0x0177, 0x0178, 0x0179, 0x0184, 0x0185, 0x0186, 0x0197, 0x0198, 0x0199 +}; + +const u16 gUnknown_8466BB8[] = { + 0x01a4, 0x01a5, 0x01a6, 0x01b7, 0x01b8, 0x01b9, 0x01c4, 0x01c5, 0x01c6, 0x01c7, 0x01cc, 0x01d1, 0x01d6, 0x01d7, 0x01d8, 0x01d9, 0x01e4, 0x01e5, 0x01e6, 0x01f7, 0x01f8, 0x01f9 +}; + +const u16 gUnknown_8466BE4[] = { + 0x0204, 0x0205, 0x0206, 0x0224, 0x0225, 0x0226, 0x01e7, 0x0207, 0x018c, 0x01ac, 0x0131, 0x0151, 0x00d6, 0x00f6, 0x00b7, 0x00b8, 0x00b9, 0x00d7, 0x00d8, 0x00d9 +}; + +const struct UnkStruct_8466C0C gUnknown_8466C0C[] = { + { gUnknown_8466B38, NELEMS(gUnknown_8466B38) }, + { gUnknown_8466B60, NELEMS(gUnknown_8466B60) }, + { gUnknown_8466B8C, NELEMS(gUnknown_8466B8C) }, + { gUnknown_8466BB8, NELEMS(gUnknown_8466BB8) }, + { gUnknown_8466BE4, NELEMS(gUnknown_8466BE4) } +}; + void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) { ResetTasks(); @@ -2637,3 +2672,53 @@ bool8 sub_8141764(u8 * state, struct SlotMachineSetupTaskData * ptr) } return TRUE; } + +void sub_81417E4(const u8 * str) +{ + FillWindowPixelBuffer(0, 0x11); + PutWindowTilemap(0); + DrawTextBorderOuter(0, 0x001, 15); + sub_812E62C(0, 2, str, 1, 2, -1, NULL, 1, 2); +} + +void sub_8141828(void) +{ + rbox_fill_rectangle(0); +} + +void sub_8141834(u16 * bgTilemapBuffer) +{ + switch (sub_8140BEC()) + { + case 0: + sub_81418C4(bgTilemapBuffer, 0, 4); + sub_81418C4(bgTilemapBuffer, 1, 4); + sub_81418C4(bgTilemapBuffer, 2, 4); + sub_81418C4(bgTilemapBuffer, 3, 4); + sub_81418C4(bgTilemapBuffer, 4, 4); + break; + case 3: + sub_81418C4(bgTilemapBuffer, 0, 5); + sub_81418C4(bgTilemapBuffer, 4, 5); + case 2: + sub_81418C4(bgTilemapBuffer, 1, 5); + sub_81418C4(bgTilemapBuffer, 3, 5); + case 1: + sub_81418C4(bgTilemapBuffer, 2, 5); + break; + } +} + +void sub_81418C4(u16 * bgTilemapBuffer, u16 whichLine, u16 paletteNum) +{ + s32 i; + const u16 * tileIdxs = gUnknown_8466C0C[whichLine].tiles; + u16 palMask = (paletteNum & 0xF) << 12; + + for (i = 0; i < gUnknown_8466C0C[whichLine].count; i++) + { + bgTilemapBuffer[*tileIdxs] &= 0x0FFF; + bgTilemapBuffer[*tileIdxs] |= palMask; + tileIdxs++; + } +} From 8384ed7a25f2fed140786b90a9893f47f8379f9a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 29 Jul 2019 21:52:37 -0400 Subject: [PATCH 27/38] Finish slot_machine --- asm/slot_machine.s | 436 -------------------------------------------- data/slot_machine.s | 15 -- ld_script.txt | 2 - src/slot_machine.c | 173 +++++++++++++++++- 4 files changed, 169 insertions(+), 457 deletions(-) delete mode 100644 asm/slot_machine.s delete mode 100644 data/slot_machine.s diff --git a/asm/slot_machine.s b/asm/slot_machine.s deleted file mode 100644 index e5aa4ff05..000000000 --- a/asm/slot_machine.s +++ /dev/null @@ -1,436 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_814191C -sub_814191C: @ 814191C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08141940 @ =gTasks+0x8 - adds r5, r0, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _08141984 - cmp r0, 0x1 - bgt _08141944 - cmp r0, 0 - beq _08141952 - b _08141AA8 - .align 2, 0 -_08141940: .4byte gTasks+0x8 -_08141944: - cmp r0, 0x2 - bne _0814194A - b _08141A58 -_0814194A: - cmp r0, 0x3 - bne _08141950 - b _08141A98 -_08141950: - b _08141AA8 -_08141952: - ldr r0, _08141980 @ =gUnknown_84664BC - movs r1, 0x60 - movs r2, 0x20 - bl LoadPalette - movs r4, 0 -_0814195E: - adds r0, r4, 0 - bl sub_8140BF8 - cmp r0, 0 - beq _08141978 - movs r0, 0x2 - bl GetBgTilemapBuffer - lsls r1, r4, 16 - lsrs r1, 16 - movs r2, 0x6 - bl sub_81418C4 -_08141978: - adds r4, 0x1 - cmp r4, 0x4 - ble _0814195E - b _08141A84 - .align 2, 0 -_08141980: .4byte gUnknown_84664BC -_08141984: - ldrh r1, [r5, 0x2] - movs r2, 0x2 - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _081419C4 - ldr r1, _081419BC @ =gSineTable - movs r2, 0x4 - ldrsh r0, [r5, r2] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 23 - lsls r0, 16 - lsrs r0, 11 - ldr r1, _081419C0 @ =gUnknown_84664DC - adds r0, r1 - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r5, 0x4] - adds r0, 0x20 - movs r1, 0x7F - ands r0, r1 - strh r0, [r5, 0x4] - movs r0, 0x8 - b _081419C6 - .align 2, 0 -_081419BC: .4byte gSineTable -_081419C0: .4byte gUnknown_84664DC -_081419C4: - subs r0, r1, 0x1 -_081419C6: - strh r0, [r5, 0x2] - movs r1, 0x6 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08141A00 - ldrh r0, [r5, 0x8] - adds r0, 0x8 - movs r1, 0x7F - ands r0, r1 - strh r0, [r5, 0x8] - ldr r1, _081419FC @ =gSineTable - movs r2, 0x8 - ldrsh r0, [r5, r2] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - lsls r1, 16 - asrs r1, 21 - strh r1, [r5, 0xA] - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x40 - movs r2, 0 - bl BlendPalettes - b _08141A2C - .align 2, 0 -_081419FC: .4byte gSineTable -_08141A00: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08141A2C - movs r0, 0 - strh r0, [r5, 0x8] - ldrh r0, [r5, 0xA] - adds r0, 0x1 - movs r1, 0x1 - ands r0, r1 - strh r0, [r5, 0xA] - movs r0, 0xA - ldrsh r1, [r5, r0] - lsls r1, 27 - lsrs r1, 24 - movs r0, 0x40 - movs r2, 0 - bl BlendPalettes -_08141A2C: - movs r4, 0 - ldr r5, _08141A4C @ =gPlttBufferFaded - ldr r3, _08141A50 @ =gUnknown_8466C34 - ldr r2, _08141A54 @ =gPlttBufferUnfaded -_08141A34: - adds r0, r4, r3 - ldrb r0, [r0] - adds r0, 0x60 - lsls r0, 1 - adds r1, r0, r5 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - adds r4, 0x1 - cmp r4, 0x1 - bls _08141A34 - b _08141AA8 - .align 2, 0 -_08141A4C: .4byte gPlttBufferFaded -_08141A50: .4byte gUnknown_8466C34 -_08141A54: .4byte gPlttBufferUnfaded -_08141A58: - movs r4, 0 -_08141A5A: - adds r0, r4, 0 - bl sub_8140BF8 - cmp r0, 0 - beq _08141A74 - movs r0, 0x2 - bl GetBgTilemapBuffer - lsls r1, r4, 16 - lsrs r1, 16 - movs r2, 0x4 - bl sub_81418C4 -_08141A74: - adds r4, 0x1 - cmp r4, 0x4 - ble _08141A5A - ldr r0, _08141A94 @ =gUnknown_8465950 - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette -_08141A84: - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - b _08141AA8 - .align 2, 0 -_08141A94: .4byte gUnknown_8465950 -_08141A98: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08141AA8 - adds r0, r4, 0 - bl DestroyTask -_08141AA8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_814191C - - thumb_func_start sub_8141AB0 -sub_8141AB0: @ 8141AB0 - push {lr} - ldr r0, _08141AD0 @ =sub_814191C - bl FindTaskIdByFunc - ldr r2, _08141AD4 @ =gTasks - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x2 - strh r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_08141AD0: .4byte sub_814191C -_08141AD4: .4byte gTasks - thumb_func_end sub_8141AB0 - - thumb_func_start sub_8141AD8 -sub_8141AD8: @ 8141AD8 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08141B14 @ =gUnknown_8466C38 - movs r1, 0xA - str r1, [sp] - movs r1, 0xD - str r1, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl CreateYesNoMenu - lsls r4, 24 - asrs r4, 24 - adds r0, r4, 0 - bl Menu_MoveCursorNoWrapAround - bl sub_814112C - movs r1, 0x1 - str r1, [r0, 0x28] - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08141B14: .4byte gUnknown_8466C38 - thumb_func_end sub_8141AD8 - - thumb_func_start sub_8141B18 -sub_8141B18: @ 8141B18 - push {r4,lr} - bl sub_814112C - adds r4, r0, 0 - ldr r0, [r4, 0x28] - cmp r0, 0 - beq _08141B2E - bl DestroyYesNoMenu - movs r0, 0 - str r0, [r4, 0x28] -_08141B2E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8141B18 - - thumb_func_start sub_8141B34 -sub_8141B34: @ 8141B34 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - bl sub_814112C - adds r4, r0, 0 - movs r0, 0x2 - bl GetBgTilemapBuffer - mov r12, r0 - movs r1, 0 - movs r0, 0x44 - adds r0, r4 - mov r8, r0 - adds r7, r4, 0 - adds r7, 0x2C - ldr r0, _08141B9C @ =gUnknown_8466C40 - mov r9, r0 -_08141B5A: - movs r5, 0 - lsls r0, r1, 3 - adds r6, r1, 0x1 - mov r1, r8 - adds r4, r0, r1 - mov r1, r9 - adds r3, r0, r1 - adds r2, r0, 0 -_08141B6A: - ldrh r0, [r3] - lsls r0, 1 - add r0, r12 - ldrh r0, [r0] - strh r0, [r4] - adds r1, r7, r2 - adds r0, r5, 0 - adds r0, 0xC0 - strh r0, [r1] - adds r4, 0x2 - adds r3, 0x2 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _08141B6A - adds r1, r6, 0 - cmp r1, 0x2 - ble _08141B5A - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08141B9C: .4byte gUnknown_8466C40 - thumb_func_end sub_8141B34 - - thumb_func_start sub_8141BA0 -sub_8141BA0: @ 8141BA0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bhi _08141BD8 - bl sub_814112C - adds r4, r0, 0 - movs r0, 0x2 - bl GetBgTilemapBuffer - adds r6, r0, 0 - lsls r0, r5, 3 - ldr r1, _08141BE0 @ =gUnknown_8466C40 - adds r4, 0x2C - adds r3, r0, r4 - adds r2, r0, r1 - movs r4, 0x3 -_08141BC4: - ldrh r0, [r2] - lsls r0, 1 - adds r0, r6 - ldrh r1, [r3] - strh r1, [r0] - adds r3, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08141BC4 -_08141BD8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08141BE0: .4byte gUnknown_8466C40 - thumb_func_end sub_8141BA0 - - thumb_func_start sub_8141BE4 -sub_8141BE4: @ 8141BE4 - push {r4-r7,lr} - bl sub_814112C - adds r4, r0, 0 - movs r0, 0x2 - bl GetBgTilemapBuffer - adds r6, r0, 0 - movs r1, 0 - adds r7, r4, 0 - adds r7, 0x44 - ldr r0, _08141C2C @ =gUnknown_8466C40 - mov r12, r0 -_08141BFE: - lsls r0, r1, 3 - adds r5, r1, 0x1 - adds r3, r0, r7 - mov r1, r12 - adds r2, r0, r1 - movs r4, 0x3 -_08141C0A: - ldrh r0, [r2] - lsls r0, 1 - adds r0, r6 - ldrh r1, [r3] - strh r1, [r0] - adds r3, 0x2 - adds r2, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08141C0A - adds r1, r5, 0 - cmp r1, 0x2 - ble _08141BFE - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08141C2C: .4byte gUnknown_8466C40 - thumb_func_end sub_8141BE4 - - thumb_func_start sub_8141C30 -sub_8141C30: @ 8141C30 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - bl sub_814112C - adds r0, 0x20 - strb r4, [r0] - movs r0, 0xC - adds r1, r5, 0 - bl sub_8141148 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8141C30 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/slot_machine.s b/data/slot_machine.s deleted file mode 100644 index 1ff90742f..000000000 --- a/data/slot_machine.s +++ /dev/null @@ -1,15 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_8466C34:: @ 8466C34 - .byte 0x02, 0x04 - - .align 2 -gUnknown_8466C38:: @ 8466C38 - window_template 0x00, 0x13, 0x09, 0x06, 0x04, 0x0f, 0x009f - -gUnknown_8466C40:: @ 8466C40 - .2byte 0x0229, 0x022a, 0x0249, 0x024a, 0x022e, 0x022f, 0x024e, 0x024f, 0x0233, 0x0234, 0x0253, 0x0254 diff --git a/ld_script.txt b/ld_script.txt index 0fcc799e3..faa82e34e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -255,7 +255,6 @@ SECTIONS { asm/itemfinder.o(.text); src/buy_menu_helpers.o(.text); src/slot_machine.o(.text); - asm/slot_machine.o(.text); src/roamer.o(.text); src/mystery_gift_menu.o(.text); src/mevent.o(.text); @@ -454,7 +453,6 @@ SECTIONS { data/itemfinder.o(.rodata); src/buy_menu_helpers.o(.rodata); src/slot_machine.o(.rodata); - data/slot_machine.o(.rodata); src/roamer.o(.rodata); src/mystery_gift_menu.o(.rodata); src/mevent.o(.rodata); diff --git a/src/slot_machine.c b/src/slot_machine.c index 5b4020a5f..6d0db130d 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -16,6 +16,7 @@ #include "new_menu_helpers.h" #include "text_window.h" #include "random.h" +#include "trig.h" #include "constants/songs.h" extern const u8 gUnknown_841B747[]; @@ -67,7 +68,9 @@ struct SlotMachineSetupTaskData // align 2 s32 field_0024; u32 field_0028; - u8 filler_002C[0x830]; + u16 field_002C[3][4]; + u16 field_0044[3][4]; + u8 field_005C[0x800]; u8 field_085C[0x800]; u8 field_105C[0x800]; u8 field_185C[0x800]; @@ -525,9 +528,7 @@ const u16 gUnknown_84659B0[] = INCBIN_U16("graphics/slot_machine/unk_84659b0.gba const u32 gUnknown_84659D0[] = INCBIN_U32("graphics/slot_machine/unk_84659d0.4bpp.lz"); const u32 gUnknown_84661D4[] = INCBIN_U32("graphics/slot_machine/unk_84661d4.bin.lz"); const u16 gUnknown_84664BC[] = INCBIN_U16("graphics/slot_machine/unk_84664bc.gbapal"); -const u16 gUnknown_84664DC[] = INCBIN_U16("graphics/slot_machine/unk_84664dc.gbapal"); -const u16 gUnknown_84664FC[] = INCBIN_U16("graphics/slot_machine/unk_84664fc.gbapal"); -const u16 gUnknown_846651C[] = INCBIN_U16("graphics/slot_machine/unk_846651c.gbapal"); +const u16 gUnknown_84664DC[] = INCBIN_U16("graphics/slot_machine/unk_84664dc.gbapal","graphics/slot_machine/unk_84664fc.gbapal", "graphics/slot_machine/unk_846651c.gbapal"); const u32 gUnknown_846653C[] = INCBIN_U32("graphics/slot_machine/unk_846653c.4bpp.lz"); const u16 gUnknown_84665C0[] = INCBIN_U16("graphics/slot_machine/unk_84665c0.gbapal"); const u16 gUnknown_84665E0[] = INCBIN_U16("graphics/slot_machine/unk_84665e0.gbapal"); @@ -620,6 +621,24 @@ const struct UnkStruct_8466C0C gUnknown_8466C0C[] = { { gUnknown_8466BE4, NELEMS(gUnknown_8466BE4) } }; +const u8 gUnknown_8466C34[2] = {2, 4}; + +const struct WindowTemplate gUnknown_8466C38 = { + .bg = 0, + .tilemapLeft = 19, + .tilemapTop = 9, + .width = 6, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x9F +}; + +const u16 gUnknown_8466C40[][4] = { + {0x0229, 0x022a, 0x0249, 0x024a}, + {0x022e, 0x022f, 0x024e, 0x024f}, + {0x0233, 0x0234, 0x0253, 0x0254} +}; + void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) { ResetTasks(); @@ -2722,3 +2741,149 @@ void sub_81418C4(u16 * bgTilemapBuffer, u16 whichLine, u16 paletteNum) tileIdxs++; } } + +void sub_814191C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + s32 i; + + switch (data[0]) + { + case 0: + LoadPalette(gUnknown_84664BC, 0x60, 0x20); + for (i = 0; i < 5; i++) + { + if (sub_8140BF8(i)) + sub_81418C4(GetBgTilemapBuffer(2), i, 6); + } + CopyBgTilemapBufferToVram(2); + data[0]++; + break; + case 1: + if (data[1] == 0) + { + u16 y = gSineTable[data[2]] >> 7; + LoadPalette(&gUnknown_84664DC[16 * y], 0x10, 0x20); + data[2] += 32; + data[2] &= 0x7F; + data[1] = 8; + } + else + data[1]--; + + if (data[3] == 0) + { + data[4] += 8; + data[4] &= 0x7F; + data[5] = gSineTable[data[4]] >> 5; + BlendPalettes(0x00000040, data[5], RGB_BLACK); + } + else + { + data[4]++; + if (data[4] > 1) + { + data[4] = 0; + data[5]++; + data[5] &= 1; + BlendPalettes(0x00000040, data[5] * 8, RGB_BLACK); + } + } + + for (i = 0; i < NELEMS(gUnknown_8466C34); i++) + { + gPlttBufferFaded[gUnknown_8466C34[i] + 0x60] = gPlttBufferUnfaded[gUnknown_8466C34[i] + 0x60]; + } + break; + case 2: + for (i = 0; i < 5; i++) + { + if (sub_8140BF8(i)) + sub_81418C4(GetBgTilemapBuffer(2), i, 4); + } + LoadPalette(gUnknown_8465950, 0x10, 0x20); + CopyBgTilemapBufferToVram(2); + data[0]++; + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + DestroyTask(taskId); + break; + } +} + +void sub_8141AB0(void) +{ + gTasks[FindTaskIdByFunc(sub_814191C)].data[0] = 2; +} + +void sub_8141AD8(u8 cursorPos) +{ + CreateYesNoMenu(&gUnknown_8466C38, 2, 0, 2, 10, 13, cursorPos); + Menu_MoveCursorNoWrapAround(cursorPos); + sub_814112C()->field_0028 = TRUE; +} + +void sub_8141B18(void) +{ + struct SlotMachineSetupTaskData * data = sub_814112C(); + if (data->field_0028) + { + DestroyYesNoMenu(); + data->field_0028 = FALSE; + } +} + +void sub_8141B34(void) +{ + s32 i, j; + struct SlotMachineSetupTaskData * data = sub_814112C(); + u16 * buffer = GetBgTilemapBuffer(2); + + for (i = 0; i < 3; i++) + { + for (j = 0; j < 4; j++) + { + u16 idx = gUnknown_8466C40[i][j]; + data->field_0044[i][j] = buffer[idx]; + data->field_002C[i][j] = j + 0xC0; + } + } +} + +void sub_8141BA0(u8 reel) +{ + if (reel < 3) + { + s32 i; + struct SlotMachineSetupTaskData * data = sub_814112C(); + u16 * buffer = GetBgTilemapBuffer(2); + for (i = 0; i < 4; i++) + { + u16 idx = gUnknown_8466C40[reel][i]; + buffer[idx] = data->field_002C[reel][i]; + } + } +} + +void sub_8141BE4(void) +{ + s32 i, j; + struct SlotMachineSetupTaskData * data = sub_814112C(); + u16 * buffer = GetBgTilemapBuffer(2); + + for (i = 0; i < 3; i++) + { + for (j = 0; j < 4; j++) + { + u16 idx = gUnknown_8466C40[i][j]; + buffer[idx] = data->field_0044[i][j]; + } + } +} + +void sub_8141C30(u8 a0, u8 a1) +{ + sub_814112C()->field_0020 = a0; + sub_8141148(12, a1); +} From a74d770de1bd0b989350f8f4833ec92f48139bf8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 29 Jul 2019 21:56:42 -0400 Subject: [PATCH 28/38] Move string decls to strings.h --- data/strings.s | 6 +++--- include/strings.h | 5 +++++ src/slot_machine.c | 17 +++++++---------- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/data/strings.s b/data/strings.s index e1804aae0..4f6b40d85 100644 --- a/data/strings.s +++ b/data/strings.s @@ -3067,13 +3067,13 @@ gText_HatchedFromEgg:: @ 841B6FD gText_NickHatchPrompt:: @ 841B716 .string "Would you like to nickname the newly\nhatched {STR_VAR_1}?$" -gUnknown_841B747:: @ 841B747 +gString_OutOfCoins:: @ 841B747 .string "You've run out of COINS.\nGame over!$" -gUnknown_841B76B:: @ 841B76B +gString_QuitPlaying:: @ 841B76B .string "Quit playing?$" -gUnknown_841B779:: @ 841B779 +gString_SlotMachineControls:: @ 841B779 .string "{KEYGFX_DPAD_LEFT_RIGHT}COMBOS {KEYGFX_DPAD_DOWN}WAGER {KEYGFX_A_BUTTON}STOP {KEYGFX_B_BUTTON}EXIT$" gUnknown_841B798:: @ 0x841B798 diff --git a/include/strings.h b/include/strings.h index 85b67ed57..97c120ff3 100644 --- a/include/strings.h +++ b/include/strings.h @@ -203,4 +203,9 @@ extern const u8 gString_BattleRecords_ColumnHeaders[]; extern const u8 gString_BattleRecords_7Dashes[]; extern const u8 gString_BattleRecords_4Dashes[]; +// slot_machine +extern const u8 gString_OutOfCoins[]; +extern const u8 gString_QuitPlaying[]; +extern const u8 gString_SlotMachineControls[]; + #endif //GUARD_STRINGS_H diff --git a/src/slot_machine.c b/src/slot_machine.c index 6d0db130d..98270cf37 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -17,12 +17,9 @@ #include "text_window.h" #include "random.h" #include "trig.h" +#include "strings.h" #include "constants/songs.h" -extern const u8 gUnknown_841B747[]; -extern const u8 gUnknown_841B76B[]; -extern const u8 gUnknown_841B779[]; - struct SlotMachineState { MainCallback savedCallback; @@ -2127,11 +2124,11 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) FillWindowPixelBuffer(1, 0xFF); PutWindowTilemap(1); - x = 0xEC - GetStringWidth(0, gUnknown_841B779, 0); + x = 0xEC - GetStringWidth(0, gString_SlotMachineControls, 0); textColor.fgColor = 15; textColor.bgColor = 1; textColor.shadowColor = 2; - AddTextPrinterParameterized3(1, 0, x, 0, &textColor, 0, gUnknown_841B779); + AddTextPrinterParameterized3(1, 0, x, 0, &textColor, 0, gString_SlotMachineControls); CopyBgTilemapBufferToVram(0); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | 0x20 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); @@ -2339,7 +2336,7 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) "\tbl FillWindowPixelBuffer\n" "\tmovs r0, 0x1\n" "\tbl PutWindowTilemap\n" - "\tldr r4, _081413D8 @ =gUnknown_841B779\n" + "\tldr r4, _081413D8 @ =gString_SlotMachineControls\n" "\tmovs r0, 0\n" "\tadds r1, r4, 0\n" "\tmovs r2, 0\n" @@ -2401,7 +2398,7 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) "_081413CC: .4byte 0x0000085c\n" "_081413D0: .4byte gUnknown_8466620\n" "_081413D4: .4byte gUnknown_8466998\n" - "_081413D8: .4byte gUnknown_841B779\n" + "_081413D8: .4byte gString_SlotMachineControls\n" "_081413DC: .4byte sub_8141118\n" "_081413E0: .4byte sub_8140E40\n" "_081413E4:\n" @@ -2550,7 +2547,7 @@ bool8 sub_8141584(u8 * state, struct SlotMachineSetupTaskData * ptr) switch (*state) { case 0: - sub_81417E4(gUnknown_841B747); + sub_81417E4(gString_OutOfCoins); CopyWindowToVram(0, 3); (*state)++; break; @@ -2567,7 +2564,7 @@ bool8 sub_81415C8(u8 * state, struct SlotMachineSetupTaskData * ptr) switch (*state) { case 0: - sub_81417E4(gUnknown_841B76B); + sub_81417E4(gString_QuitPlaying); sub_8141AD8(0); CopyWindowToVram(0, 3); (*state)++; From 9b3b3244f7dad9c0a1d6335a8786da1fdfedd870 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 30 Jul 2019 19:20:41 -0400 Subject: [PATCH 29/38] Suppress IDE errors when incbinning multiple files --- include/global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/global.h b/include/global.h index e1f63213a..9a398354d 100644 --- a/include/global.h +++ b/include/global.h @@ -17,7 +17,7 @@ // Get the IDE to stfu // We define it this way to fool preproc. -#define INCBIN(x) {0} +#define INCBIN(...) {0} #define INCBIN_U8 INCBIN #define INCBIN_U16 INCBIN #define INCBIN_U32 INCBIN From 23d917f7c89c1256f1e935a57d490816fd916f55 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 30 Jul 2019 19:50:52 -0400 Subject: [PATCH 30/38] Quieter `make tools` --- tools/aif2pcm/Makefile | 5 ++++- tools/bin2c/Makefile | 5 ++++- tools/gbafix/Makefile | 5 ++++- tools/jsonproc/Makefile | 2 +- tools/mapjson/Makefile | 5 ++++- tools/preproc/Makefile | 5 ++++- tools/ramscrgen/Makefile | 5 ++++- tools/rsfont/Makefile | 5 ++++- tools/scaninc/Makefile | 5 ++++- 9 files changed, 33 insertions(+), 9 deletions(-) diff --git a/tools/aif2pcm/Makefile b/tools/aif2pcm/Makefile index e5cb6ad31..af7d19fe9 100644 --- a/tools/aif2pcm/Makefile +++ b/tools/aif2pcm/Makefile @@ -6,7 +6,10 @@ LIBS = -lm SRCS = main.c extended.c -.PHONY: clean +.PHONY: all clean + +all: aif2pcm + @: aif2pcm: $(SRCS) $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS) diff --git a/tools/bin2c/Makefile b/tools/bin2c/Makefile index 73f78980e..ab11e1b61 100644 --- a/tools/bin2c/Makefile +++ b/tools/bin2c/Makefile @@ -2,10 +2,13 @@ CC = gcc CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -.PHONY: clean +.PHONY: all clean SRCS = bin2c.c +all: bin2c + @: + bin2c: $(SRCS) $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) diff --git a/tools/gbafix/Makefile b/tools/gbafix/Makefile index f12c8cc4f..5b410da08 100644 --- a/tools/gbafix/Makefile +++ b/tools/gbafix/Makefile @@ -1,8 +1,11 @@ CC = gcc -.PHONY: clean +.PHONY: all clean SRCS = gbafix.c +all: gbafix + @: + gbafix: $(SRCS) $(CC) $(SRCS) -o $@ $(LDFLAGS) diff --git a/tools/jsonproc/Makefile b/tools/jsonproc/Makefile index b415e7b41..721da1025 100644 --- a/tools/jsonproc/Makefile +++ b/tools/jsonproc/Makefile @@ -8,7 +8,7 @@ SRCS := jsonproc.cpp HEADERS := jsonproc.h inja.hpp nlohmann/json.hpp -.PHONY: clean +.PHONY: all clean all: jsonproc @: diff --git a/tools/mapjson/Makefile b/tools/mapjson/Makefile index d09acad50..9a49be506 100644 --- a/tools/mapjson/Makefile +++ b/tools/mapjson/Makefile @@ -6,7 +6,10 @@ SRCS := json11.cpp mapjson.cpp HEADERS := mapjson.h -.PHONY: clean +.PHONY: all clean + +all: mapjson + @: mapjson: $(SRCS) $(HEADERS) $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) diff --git a/tools/preproc/Makefile b/tools/preproc/Makefile index 3d3275819..63dedda1f 100644 --- a/tools/preproc/Makefile +++ b/tools/preproc/Makefile @@ -8,7 +8,10 @@ SRCS := asm_file.cpp c_file.cpp charmap.cpp preproc.cpp string_parser.cpp \ HEADERS := asm_file.h c_file.h char_util.h charmap.h preproc.h string_parser.h \ utf8.h -.PHONY: clean +.PHONY: all clean + +all: preproc + @: preproc: $(SRCS) $(HEADERS) $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) diff --git a/tools/ramscrgen/Makefile b/tools/ramscrgen/Makefile index 9aa309aa1..858db1a77 100644 --- a/tools/ramscrgen/Makefile +++ b/tools/ramscrgen/Makefile @@ -6,7 +6,10 @@ SRCS := main.cpp sym_file.cpp elf.cpp HEADERS := ramscrgen.h sym_file.h elf.h char_util.h -.PHONY: clean +.PHONY: all clean + +all: ramscrgen + @: ramscrgen: $(SRCS) $(HEADERS) $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) diff --git a/tools/rsfont/Makefile b/tools/rsfont/Makefile index 582be7b88..abe1cab51 100644 --- a/tools/rsfont/Makefile +++ b/tools/rsfont/Makefile @@ -6,7 +6,10 @@ LIBS = -lpng -lz SRCS = main.c convert_png.c util.c font.c -.PHONY: clean +.PHONY: all clean + +all: rsfont + @: rsfont: $(SRCS) convert_png.h gfx.h global.h util.h font.h $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS) diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile index 53c9d0060..1516f159c 100644 --- a/tools/scaninc/Makefile +++ b/tools/scaninc/Makefile @@ -6,7 +6,10 @@ SRCS = scaninc.cpp c_file.cpp asm_file.cpp source_file.cpp HEADERS := scaninc.h asm_file.h c_file.h source_file.h -.PHONY: clean +.PHONY: all clean + +all: scaninc + @: scaninc: $(SRCS) $(HEADERS) $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) From ea8f529f2d5bb520b83d5b7721dc47ba1b489d45 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 30 Jul 2019 22:07:15 -0400 Subject: [PATCH 31/38] title_screen: data and code thru sub_8078C9C --- asm/title_screen.s | 462 --------------------- data/field_weather.s | 3 + data/graphics.s | 5 +- data/graphics/title_screen/unk_83BF58C.png | Bin 0 -> 78 bytes data/graphics/title_screen/unk_83BF5A8.bin | 1 + data/graphics/title_screen/unk_83bf64c.png | Bin 0 -> 188 bytes data/graphics/title_screen/unk_83bf79c.png | Bin 0 -> 539 bytes data/graphics/title_screen/unk_83bfa14.png | Bin 0 -> 150 bytes data/title_screen.s | 80 +++- graphics/title_screen/unk_8eae4a8.png | Bin 0 -> 148 bytes include/main.h | 1 + ld_script.txt | 2 + src/title_screen.c | 192 +++++++++ 13 files changed, 269 insertions(+), 477 deletions(-) create mode 100644 data/graphics/title_screen/unk_83BF58C.png create mode 100644 data/graphics/title_screen/unk_83BF5A8.bin create mode 100644 data/graphics/title_screen/unk_83bf64c.png create mode 100644 data/graphics/title_screen/unk_83bf79c.png create mode 100644 data/graphics/title_screen/unk_83bfa14.png create mode 100644 graphics/title_screen/unk_8eae4a8.png create mode 100644 src/title_screen.c diff --git a/asm/title_screen.s b/asm/title_screen.s index e62cc9a9f..293a289ce 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -5,468 +5,6 @@ .text - thumb_func_start CB2_InitTitleScreen -CB2_InitTitleScreen: @ 8078914 - push {r4-r6,lr} - sub sp, 0xC - ldr r0, _08078930 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r6, [r0] - cmp r6, 0x1 - beq _080789F0 - cmp r6, 0x1 - bgt _08078934 - cmp r6, 0 - beq _08078946 - b _0807893A - .align 2, 0 -_08078930: .4byte gMain -_08078934: - cmp r6, 0x2 - bne _0807893A - b _08078AC0 -_0807893A: - ldr r0, _080789D0 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_08078946: - movs r0, 0 - bl SetVBlankCallback - bl StartTimer1 - ldr r0, _080789D4 @ =gHeap - movs r1, 0xE0 - lsls r1, 9 - bl InitHeap - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetPaletteFade - bl sub_8078B34 - add r1, sp, 0x4 - movs r0, 0 - strh r0, [r1] - ldr r1, _080789D8 @ =0x040000d4 - add r0, sp, 0x4 - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080789DC @ =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0 - str r2, [sp, 0x8] - add r0, sp, 0x8 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080789E0 @ =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x4 - strh r2, [r0] - str r0, [r1] - movs r0, 0xA0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080789E4 @ =0x81000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _080789E8 @ =gUnknown_83BFB74 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _080789EC @ =gUnknown_2037F30 - movs r0, 0xFF - strb r0, [r1] - b _08078B18 - .align 2, 0 -_080789D0: .4byte gMain -_080789D4: .4byte gHeap -_080789D8: .4byte 0x040000d4 -_080789DC: .4byte 0x8100c000 -_080789E0: .4byte 0x85000100 -_080789E4: .4byte 0x81000200 -_080789E8: .4byte gUnknown_83BFB74 -_080789EC: .4byte gUnknown_2037F30 -_080789F0: - ldr r0, _08078A94 @ =gUnknown_8EAB6C4 - movs r2, 0xD0 - lsls r2, 1 - movs r1, 0 - bl LoadPalette - ldr r1, _08078A98 @ =gUnknown_8EAB8C4 - movs r4, 0 - str r4, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _08078A9C @ =gUnknown_8EAD390 - str r6, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r0, _08078AA0 @ =gUnknown_8EAD5E8 - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _08078AA4 @ =gUnknown_8EAD608 - str r4, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _08078AA8 @ =gUnknown_8EADEE4 - str r6, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r5, _08078AAC @ =gUnknown_8EAE094 - adds r0, r5, 0 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _08078AB0 @ =gUnknown_8EAE0B4 - str r4, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _08078AB4 @ =gUnknown_8EAE374 - str r6, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - adds r0, r5, 0 - movs r1, 0xE0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _08078AB8 @ =gUnknown_83BF58C - str r4, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _08078ABC @ =gUnknown_83BF5A8 - str r6, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - bl sub_8079708 - b _08078B18 - .align 2, 0 -_08078A94: .4byte gUnknown_8EAB6C4 -_08078A98: .4byte gUnknown_8EAB8C4 -_08078A9C: .4byte gUnknown_8EAD390 -_08078AA0: .4byte gUnknown_8EAD5E8 -_08078AA4: .4byte gUnknown_8EAD608 -_08078AA8: .4byte gUnknown_8EADEE4 -_08078AAC: .4byte gUnknown_8EAE094 -_08078AB0: .4byte gUnknown_8EAE0B4 -_08078AB4: .4byte gUnknown_8EAE374 -_08078AB8: .4byte gUnknown_83BF58C -_08078ABC: .4byte gUnknown_83BF5A8 -_08078AC0: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - cmp r0, 0 - bne _08078B26 - ldr r0, _08078B00 @ =0x0000ffff - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - ldr r0, _08078B04 @ =sub_8078C24 - movs r1, 0x4 - bl CreateTask - ldr r0, _08078B08 @ =sub_8078BEC - movs r1, 0x2 - bl CreateTask - ldr r1, _08078B0C @ =gUnknown_2037F30 - strb r0, [r1] - ldr r0, _08078B10 @ =sub_8078BB4 - bl SetVBlankCallback - ldr r0, _08078B14 @ =sub_8078B9C - bl SetMainCallback2 - movs r0, 0x8B - lsls r0, 1 - bl m4aSongNumStart - b _08078B26 - .align 2, 0 -_08078B00: .4byte 0x0000ffff -_08078B04: .4byte sub_8078C24 -_08078B08: .4byte sub_8078BEC -_08078B0C: .4byte gUnknown_2037F30 -_08078B10: .4byte sub_8078BB4 -_08078B14: .4byte sub_8078B9C -_08078B18: - ldr r1, _08078B30 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08078B26: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08078B30: .4byte gMain - thumb_func_end CB2_InitTitleScreen - - thumb_func_start sub_8078B34 -sub_8078B34: @ 8078B34 - push {lr} - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r0, 0x18 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1A - movs r1, 0 - bl SetGpuReg - movs r0, 0x1C - movs r1, 0 - bl SetGpuReg - movs r0, 0x1E - movs r1, 0 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_8078B34 - - thumb_func_start sub_8078B9C -sub_8078B9C: @ 8078B9C - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8078B9C - - thumb_func_start sub_8078BB4 -sub_8078BB4: @ 8078BB4 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl ScanlineEffect_InitHBlankDmaTransfer - ldr r1, _08078BE4 @ =gUnknown_2037F30 - ldrb r0, [r1] - cmp r0, 0xFF - beq _08078BE0 - ldr r2, _08078BE8 @ =gTasks - adds r1, r0, 0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] -_08078BE0: - pop {r0} - bx r0 - .align 2, 0 -_08078BE4: .4byte gUnknown_2037F30 -_08078BE8: .4byte gTasks - thumb_func_end sub_8078BB4 - - thumb_func_start sub_8078BEC -sub_8078BEC: @ 8078BEC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _08078C18 @ =gTasks+0x8 - adds r0, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, _08078C1C @ =0x00000a8b - cmp r1, r0 - ble _08078C12 - ldr r1, _08078C20 @ =gUnknown_2037F30 - movs r0, 0xFF - strb r0, [r1] - adds r0, r2, 0 - bl DestroyTask -_08078C12: - pop {r0} - bx r0 - .align 2, 0 -_08078C18: .4byte gTasks+0x8 -_08078C1C: .4byte 0x00000a8b -_08078C20: .4byte gUnknown_2037F30 - thumb_func_end sub_8078BEC - - thumb_func_start sub_8078C24 -sub_8078C24: @ 8078C24 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08078C6C @ =gTasks+0x8 - adds r4, r1, r0 - ldr r0, _08078C70 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xB - ands r0, r1 - cmp r0, 0 - beq _08078C74 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x3 - beq _08078C74 - cmp r0, 0x4 - beq _08078C74 - cmp r0, 0x5 - beq _08078C74 - bl sub_8079620 - bl sub_8079648 - movs r2, 0xA - ldrsh r0, [r4, r2] - bl sub_8079A10 - adds r0, r4, 0 - movs r1, 0x3 - bl sub_8078C90 - b _08078C86 - .align 2, 0 -_08078C6C: .4byte gTasks+0x8 -_08078C70: .4byte gMain -_08078C74: - ldr r0, _08078C8C @ =gUnknown_83BFB84 - movs r2, 0 - ldrsh r1, [r4, r2] - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - adds r0, r4, 0 - bl _call_via_r1 -_08078C86: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08078C8C: .4byte gUnknown_83BFB84 - thumb_func_end sub_8078C24 - - thumb_func_start sub_8078C90 -sub_8078C90: @ 8078C90 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - strh r2, [r0, 0x2] - strh r1, [r0] - bx lr - thumb_func_end sub_8078C90 - - thumb_func_start sub_8078C9C -sub_8078C9C: @ 8078C9C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x10 - mov r8, r0 - movs r0, 0 - bl HideBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - ldr r0, _08078D14 @ =0x04000054 - str r0, [sp] - ldr r0, _08078D18 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r5, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r5, [r0, 0x9] - add r0, sp, 0xC - strh r5, [r0] - ldr r4, _08078D1C @ =gScanlineEffectRegBuffers - ldr r6, _08078D20 @ =0x010000a0 - adds r1, r4, 0 - adds r2, r6, 0 - bl CpuSet - mov r0, sp - adds r0, 0xE - strh r5, [r0] - movs r1, 0xF0 - lsls r1, 3 - adds r4, r1 - adds r1, r4, 0 - adds r2, r6, 0 - bl CpuSet - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl ScanlineEffect_SetParams - mov r0, r8 - movs r1, 0x1 - bl sub_8078C90 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08078D14: .4byte 0x04000054 -_08078D18: .4byte 0xa2600001 -_08078D1C: .4byte gScanlineEffectRegBuffers -_08078D20: .4byte 0x010000a0 - thumb_func_end sub_8078C9C - thumb_func_start sub_8078D24 sub_8078D24: @ 8078D24 push {r4,lr} diff --git a/data/field_weather.s b/data/field_weather.s index a25e44344..517480d9a 100644 --- a/data/field_weather.s +++ b/data/field_weather.s @@ -1,6 +1,9 @@ .section .rodata .align 2 +gUnknown_83BFBE4:: @ 83BFBE4 + .incbin "baserom.gba", 0x3BFBE4, 0x2FD8 + gUnknown_83C2BBC:: @ 83C2BBC .incbin "baserom.gba", 0x3C2BBC, 0x4 diff --git a/data/graphics.s b/data/graphics.s index 83d14001d..f62234529 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16379,11 +16379,12 @@ gUnknown_8EAE0B4:: @ 8EAE0B4 gUnknown_8EAE374:: @ 8EAE374 .incbin "baserom.gba", 0xEAE374, 0x114 + @ title_screen gUnknown_8EAE488:: @ 8EAE488 - .incbin "baserom.gba", 0xEAE488, 0x20 @UNKNOWN + .incbin "graphics/title_screen/unk_8eae488.gbapal" gUnknown_8EAE4A8:: @ 8EAE4A8 - .incbin "baserom.gba", 0xEAE4A8, 0x80 + .incbin "graphics/title_screen/unk_8eae4a8.4bpp.lz" gUnknown_8EAE528:: @ 8EAE528 .incbin "baserom.gba", 0xEAE528, 0x20 @UNKNOWN diff --git a/data/graphics/title_screen/unk_83BF58C.png b/data/graphics/title_screen/unk_83BF58C.png new file mode 100644 index 0000000000000000000000000000000000000000..895457c3cbf45e8ae4075dfbbf1cb77ecc83f9e8 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV0wfsDXLs`gDN#=s#}JO0$q5QVXIPj{af&M_ abTTlgpV5(2Z2kyR$KdJe=d#Wzp$PyKMi1=( literal 0 HcmV?d00001 diff --git a/data/graphics/title_screen/unk_83BF5A8.bin b/data/graphics/title_screen/unk_83BF5A8.bin new file mode 100644 index 000000000..375fbeb7a --- /dev/null +++ b/data/graphics/title_screen/unk_83BF5A8.bin @@ -0,0 +1 @@ +àààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààà \ No newline at end of file diff --git a/data/graphics/title_screen/unk_83bf64c.png b/data/graphics/title_screen/unk_83bf64c.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9b7630d1d497bf1d2494ea565af24d8554cbf3 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|eg8-ip*PydofXx5@_x}IZ{r{@t z|1}Ipmlzgr=}y`^C+g@DpcFCyDrS8$^*2z6u_VYZn8D%MjWi&~%G1R$#G^Ag!GX1> zDd0c@vp@*LWbp+vnDkUfrrFc5`D7#!smmbn1J93Wau?*gc4LY*${mf0?4 za@)1XGY$}>NO?l?r}=#h0D!0fC2FlQ6+s8cv{%T4S92hQ5)dhlECBSPt*mi!rd1u6 zX(b{k*h(0FH6}CT`&HTni^*#UHM%ymv@A;;kkzIV2*wL*Dvvn1$}0SO4*=D^9kBG~ zaRa~)oh98TOWPL?ONP3R;0+;^-Ugno6cMx#!r+}0RGQ$F;h7+hpdf!UHVkCU+DL8F zSQi4VG0iDJ_+`t`ECE^*i+pk0Vol?9iqP5!oy|{p12^OjcR7eq;I~rY=p|!CZ@XA) z$>HFk3(&8?VGUImofr1^gG2C<0aJYky>l@WmlcI07h5ySkQ>*=0!#$wiEcTL1m_t+ za!L+!1UO3`?0EDu0z}1(_Wz!A`(&VrF9Pb2=KZYA+Znyge9t5cdp4@f(5B^fg*z@@r(z54q d+y2tNp?__&Y+JPpAVB~C002ovPDHLkV1gBA=BNMw literal 0 HcmV?d00001 diff --git a/data/graphics/title_screen/unk_83bfa14.png b/data/graphics/title_screen/unk_83bfa14.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f030a5b39ae3f023f4a511f3c8c383a46868e5 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0zkZgg&9bG7yqaZqznRlLR^E+ZUHj?|KI!nTlfE~ zj{ny%99?2qyrny7@0_TkOMp_y0H~Pt$<*IKA;yv*zhDN3XE)M-91%|!#}JF&9GB9Jl&@Ck7ZI=f}>(X&gItf_8p zzIyfE|8HLZuPQ8QmiV?rqB%++D=Es+QuA4mz*$X(ZVrxb-@Z)= 2700) + { + gUnknown_2037F30 = 0xFF; + DestroyTask(taskId); + } +} + +void sub_8078C24(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (JOY_NEW(A_BUTTON | B_BUTTON | START_BUTTON) + && data[0] != 3 && data[0] != 4 && data[0] != 5) + { + sub_8079620(); + sub_8079648(); + sub_8079A10(data[5]); + sub_8078C90(data, 3); + } + else + { + gUnknown_83BFB84[data[0]](data); + } +} + +void sub_8078C90(s16 * data, u8 a1) +{ + data[1] = 0; + data[0] = a1; +} + +void sub_8078C9C(s16 * data) +{ + struct ScanlineEffectParams params; + + HideBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + + params.dmaDest = (volatile void *)REG_ADDR_BLDY; + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.initState = 1; + params.unused9 = 0; + + CpuFill16(0, gScanlineEffectRegBuffers[0], 0x140); + CpuFill16(0, gScanlineEffectRegBuffers[1], 0x140); + + ScanlineEffect_SetParams(params); + + sub_8078C90(data, 1); +} From e96ecee460c5cd0c3139432ebbb191a36ad31912 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 31 Jul 2019 12:32:57 -0400 Subject: [PATCH 32/38] title_screen through sub_80791C0 --- asm/title_screen.s | 687 -------------------------------------------- data/title_screen.s | 88 ------ include/graphics.h | 13 + include/intro.h | 6 + include/main.h | 1 + include/main_menu.h | 6 + include/palette.h | 3 + ld_script.txt | 1 - src/title_screen.c | 466 +++++++++++++++++++++++++++++- 9 files changed, 480 insertions(+), 791 deletions(-) delete mode 100644 data/title_screen.s create mode 100644 include/intro.h create mode 100644 include/main_menu.h diff --git a/asm/title_screen.s b/asm/title_screen.s index 293a289ce..47a1b30a9 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -5,693 +5,6 @@ .text - thumb_func_start sub_8078D24 -sub_8078D24: @ 8078D24 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08078D5C - cmp r0, 0x1 - bgt _08078D3A - cmp r0, 0 - beq _08078D40 - b _08078D9C -_08078D3A: - cmp r0, 0x2 - beq _08078D84 - b _08078D9C -_08078D40: - movs r0, 0x50 - movs r1, 0x82 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - movs r0, 0x80 - strh r0, [r4, 0x4] - movs r0, 0x80 - bl sub_8079550 - b _08078D78 -_08078D5C: - ldrh r0, [r4, 0x4] - subs r0, 0x4 - strh r0, [r4, 0x4] - movs r1, 0x4 - ldrsh r0, [r4, r1] - bl sub_8079550 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _08078D9C - ldr r1, _08078D80 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] -_08078D78: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - b _08078D9C - .align 2, 0 -_08078D80: .4byte gScanlineEffect -_08078D84: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - movs r1, 0x2 - bl sub_8078C90 -_08078D9C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8078D24 - - thumb_func_start sub_8078DA4 -sub_8078DA4: @ 8078DA4 - push {r4-r7,lr} - sub sp, 0xC - adds r6, r0, 0 - movs r1, 0x2 - ldrsh r0, [r6, r1] - cmp r0, 0x9 - bls _08078DB4 - b _08078FB6 -_08078DB4: - lsls r0, 2 - ldr r1, _08078DC0 @ =_08078DC4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08078DC0: .4byte _08078DC4 - .align 2, 0 -_08078DC4: - .4byte _08078DEC - .4byte _08078DF2 - .4byte _08078E24 - .4byte _08078E40 - .4byte _08078E80 - .4byte _08078EA4 - .4byte _08078ED4 - .4byte _08078EF8 - .4byte _08078F24 - .4byte _08078F98 -_08078DEC: - movs r0, 0 - strh r0, [r6, 0x4] - b _08078F80 -_08078DF2: - ldrh r0, [r6, 0x4] - adds r0, 0x1 - strh r0, [r6, 0x4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bgt _08078E02 - b _08078FB6 -_08078E02: - ldr r0, _08078E20 @ =gPlttBufferUnfaded + 0x1A0 - movs r1, 0x10 - bl TintPalette_GrayScale2 - movs r0, 0x80 - lsls r0, 6 - movs r1, 0 - str r1, [sp] - movs r1, 0x9 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _08078F80 - .align 2, 0 -_08078E20: .4byte gPlttBufferUnfaded + 0x1A0 -_08078E24: - ldr r0, _08078E3C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08078E36 - b _08078FB6 -_08078E36: - strh r0, [r6, 0x4] - b _08078F80 - .align 2, 0 -_08078E3C: .4byte gPaletteFade -_08078E40: - ldrh r0, [r6, 0x4] - adds r0, 0x1 - strh r0, [r6, 0x4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x24 - bgt _08078E50 - b _08078FB6 -_08078E50: - ldr r0, _08078E78 @ =sub_80792C8 - movs r1, 0x3 - bl CreateTask - movs r0, 0x80 - lsls r0, 6 - movs r1, 0x4 - negs r1, r1 - ldr r2, _08078E7C @ =0x00007fde - str r2, [sp] - movs r4, 0 - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r2, 0x1 - movs r3, 0x10 - bl sub_80717A8 - strh r4, [r6, 0x4] - b _08078F80 - .align 2, 0 -_08078E78: .4byte sub_80792C8 -_08078E7C: .4byte 0x00007fde -_08078E80: - movs r0, 0 - bl sub_807185C - adds r3, r0, 0 - cmp r3, 0 - beq _08078E8E - b _08078FB6 -_08078E8E: - movs r0, 0x80 - lsls r0, 6 - movs r1, 0x4 - negs r1, r1 - ldr r2, _08078EA0 @ =0x00007fde - str r2, [sp] - str r3, [sp, 0x4] - str r3, [sp, 0x8] - b _08078F78 - .align 2, 0 -_08078EA0: .4byte 0x00007fde -_08078EA4: - ldrh r0, [r6, 0x4] - adds r0, 0x1 - strh r0, [r6, 0x4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bgt _08078EB4 - b _08078FB6 -_08078EB4: - movs r0, 0 - strh r0, [r6, 0x4] - movs r0, 0x80 - lsls r0, 6 - movs r1, 0x4 - negs r1, r1 - ldr r2, _08078ED0 @ =0x00007fde - str r2, [sp] - movs r2, 0 - str r2, [sp, 0x4] - str r2, [sp, 0x8] - movs r2, 0x1 - movs r3, 0x10 - b _08078F7C - .align 2, 0 -_08078ED0: .4byte 0x00007fde -_08078ED4: - movs r0, 0 - bl sub_807185C - adds r3, r0, 0 - cmp r3, 0 - bne _08078FB6 - movs r0, 0x80 - lsls r0, 6 - movs r1, 0x4 - negs r1, r1 - ldr r2, _08078EF4 @ =0x00007fde - str r2, [sp] - str r3, [sp, 0x4] - str r3, [sp, 0x8] - b _08078F78 - .align 2, 0 -_08078EF4: .4byte 0x00007fde -_08078EF8: - ldrh r0, [r6, 0x4] - adds r0, 0x1 - strh r0, [r6, 0x4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _08078FB6 - movs r0, 0 - strh r0, [r6, 0x4] - movs r0, 0x80 - lsls r0, 6 - movs r1, 0x3 - negs r1, r1 - ldr r2, _08078F20 @ =0x00007fde - str r2, [sp] - movs r2, 0 - str r2, [sp, 0x4] - str r2, [sp, 0x8] - movs r3, 0x10 - b _08078F7C - .align 2, 0 -_08078F20: .4byte 0x00007fde -_08078F24: - movs r0, 0 - bl sub_807185C - adds r7, r0, 0 - cmp r7, 0 - bne _08078FB6 - movs r0, 0x1 - strh r0, [r6, 0xA] - bl sub_80799F0 - movs r4, 0x80 - lsls r4, 9 - lsls r4, r0 - ldr r0, _08078F88 @ =0x00001fff - orrs r4, r0 - ldr r5, _08078F8C @ =0x00007fde - adds r0, r4, 0 - movs r1, 0x10 - adds r2, r5, 0 - bl BlendPalettes - str r5, [sp] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0 - bl ShowBg - ldr r0, _08078F90 @ =gUnknown_8EAD5E8 - ldr r1, _08078F94 @ =gPlttBufferUnfaded + 0x1A0 - movs r2, 0x10 - bl CpuSet - movs r0, 0x80 - lsls r0, 6 - str r5, [sp] - str r7, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x1 -_08078F78: - movs r2, 0xF - movs r3, 0 -_08078F7C: - bl sub_80717A8 -_08078F80: - ldrh r0, [r6, 0x2] - adds r0, 0x1 - strh r0, [r6, 0x2] - b _08078FB6 - .align 2, 0 -_08078F88: .4byte 0x00001fff -_08078F8C: .4byte 0x00007fde -_08078F90: .4byte gUnknown_8EAD5E8 -_08078F94: .4byte gPlttBufferUnfaded + 0x1A0 -_08078F98: - movs r0, 0 - bl sub_807185C - cmp r0, 0 - bne _08078FB6 - ldr r0, _08078FC0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08078FB6 - adds r0, r6, 0 - movs r1, 0x3 - bl sub_8078C90 -_08078FB6: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078FC0: .4byte gPaletteFade - thumb_func_end sub_8078DA4 - - thumb_func_start sub_8078FC4 -sub_8078FC4: @ 8078FC4 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08078FD6 - cmp r0, 0x1 - beq _08079004 - b _08079094 -_08078FD6: - movs r0, 0x1 - bl HelpSystem_SetSomeVariable2 - ldr r0, _0807902C @ =sub_807941C - movs r1, 0 - bl CreateTask - ldr r0, _08079030 @ =sub_8079840 - movs r1, 0x5 - bl CreateTask - bl sub_80790A0 - bl sub_8079A40 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xC] - bl sub_812B484 - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] -_08079004: - ldr r2, _08079034 @ =gMain - ldrh r1, [r2, 0x2C] - movs r0, 0x46 - ands r0, r1 - cmp r0, 0x46 - bne _08079040 - ldrb r0, [r4, 0xC] - bl sub_8079A88 - ldr r0, _08079038 @ =sub_8078C24 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r0, _0807903C @ =sub_80796CC - bl SetMainCallback2 - b _08079094 - .align 2, 0 -_0807902C: .4byte sub_807941C -_08079030: .4byte sub_8079840 -_08079034: .4byte gMain -_08079038: .4byte sub_8078C24 -_0807903C: .4byte sub_80796CC -_08079040: - movs r0, 0x6 - ands r0, r1 - cmp r0, 0x6 - bne _0807906C - ldrb r0, [r4, 0xC] - bl sub_8079A88 - ldr r0, _08079064 @ =sub_8078C24 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r0, _08079068 @ =sub_80796E8 - bl SetMainCallback2 - b _08079094 - .align 2, 0 -_08079064: .4byte sub_8078C24 -_08079068: .4byte sub_80796E8 -_0807906C: - ldrh r1, [r2, 0x2E] - movs r0, 0x9 - ands r0, r1 - cmp r0, 0 - beq _08079080 - adds r0, r4, 0 - movs r1, 0x5 - bl sub_8078C90 - b _08079094 -_08079080: - ldr r0, _0807909C @ =sub_8078BEC - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08079094 - adds r0, r4, 0 - movs r1, 0x4 - bl sub_8078C90 -_08079094: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807909C: .4byte sub_8078BEC - thumb_func_end sub_8078FC4 - - thumb_func_start sub_80790A0 -sub_80790A0: @ 80790A0 - push {lr} - movs r1, 0x80 - lsls r1, 8 - movs r0, 0 - bl SetGpuRegBits - ldr r1, _080790C8 @ =0x00003f1f - movs r0, 0x4A - bl SetGpuReg - movs r0, 0x50 - movs r1, 0x81 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0xD - bl SetGpuReg - pop {r0} - bx r0 - .align 2, 0 -_080790C8: .4byte 0x00003f1f - thumb_func_end sub_80790A0 - - thumb_func_start sub_80790CC -sub_80790CC: @ 80790CC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bhi _080791B0 - lsls r0, 2 - ldr r1, _080790E4 @ =_080790E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080790E4: .4byte _080790E8 - .align 2, 0 -_080790E8: - .4byte _080790FC - .4byte _08079104 - .4byte _0807913C - .4byte _08079170 - .4byte _08079198 -_080790FC: - ldrb r0, [r4, 0xC] - bl sub_8079A88 - b _0807918C -_08079104: - ldr r0, _08079138 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080791B0 - ldrb r0, [r4, 0xC] - bl sub_8079AA8 - adds r5, r0, 0 - cmp r5, 0 - bne _080791B0 - movs r0, 0xA - bl FadeOutMapMusic - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - movs r1, 0x3 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl sub_8079528 - b _0807918C - .align 2, 0 -_08079138: .4byte gPaletteFade -_0807913C: - bl IsNotWaitingForBGMStop - lsls r0, 24 - cmp r0, 0 - beq _080791B0 - ldr r0, _08079168 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080791B0 - ldr r0, _0807916C @ =sub_807941C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - strh r5, [r4, 0x4] - b _0807918C - .align 2, 0 -_08079168: .4byte gPaletteFade -_0807916C: .4byte sub_807941C -_08079170: - ldrh r0, [r4, 0x4] - adds r0, 0x1 - strh r0, [r4, 0x4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080791B0 - ldr r0, _08079194 @ =sub_807941C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0807918C: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - b _080791B0 - .align 2, 0 -_08079194: .4byte sub_807941C -_08079198: - bl sub_812B478 - ldr r0, _080791B8 @ =sub_8078C24 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r0, _080791BC @ =sub_80EC864 - bl SetMainCallback2 -_080791B0: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080791B8: .4byte sub_8078C24 -_080791BC: .4byte sub_80EC864 - thumb_func_end sub_80790CC - - thumb_func_start sub_80791C0 -sub_80791C0: @ 80791C0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08079204 - cmp r0, 0x1 - bgt _080791D8 - cmp r0, 0 - beq _080791DE - b _080792A6 -_080791D8: - cmp r0, 0x2 - beq _08079248 - b _080792A6 -_080791DE: - ldr r0, _08079200 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080792A6 - .ifdef FIRERED - movs r0, 0x6 @ CHARIZARD - .else - movs r0, 0x3 @ VENUSAUR - .endif - movs r1, 0 - bl PlayCry1 - ldrb r0, [r4, 0xC] - bl sub_8079A88 - strh r5, [r4, 0x4] - b _08079238 - .align 2, 0 -_08079200: .4byte gPaletteFade -_08079204: - ldrh r1, [r4, 0x4] - movs r2, 0x4 - ldrsh r0, [r4, r2] - cmp r0, 0x59 - bgt _08079214 - adds r0, r1, 0x1 - strh r0, [r4, 0x4] - b _080792A6 -_08079214: - ldrb r0, [r4, 0xC] - bl sub_8079AA8 - cmp r0, 0 - bne _080792A6 - ldr r0, _08079240 @ =0x0fffffff - ldr r1, _08079244 @ =0x00007fff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl sub_8079528 - movs r0, 0x4 - bl FadeOutBGM -_08079238: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - b _080792A6 - .align 2, 0 -_08079240: .4byte 0x0fffffff -_08079244: .4byte 0x00007fff -_08079248: - ldr r0, _080792B0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080792A6 - bl SeedRngAndSetTrainerId - bl SetSaveBlocksPointers - bl ResetMenuAndMonGlobals - bl Save_ResetSaveCounters - movs r0, 0 - bl Save_LoadGameData - ldr r0, _080792B4 @ =gSaveFileStatus - ldrh r0, [r0] - cmp r0, 0 - beq _08079276 - cmp r0, 0x2 - bne _0807927A -_08079276: - bl Sav2_ClearSetDefault -_0807927A: - ldr r0, _080792B8 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x15] - lsls r0, 31 - lsrs r0, 31 - bl SetPokemonCryStereo - ldr r0, _080792BC @ =gHeap - movs r1, 0xE0 - lsls r1, 9 - bl InitHeap - ldr r0, _080792C0 @ =sub_800C300 - bl SetMainCallback2 - ldr r0, _080792C4 @ =sub_8078C24 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_080792A6: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080792B0: .4byte gPaletteFade -_080792B4: .4byte gSaveFileStatus -_080792B8: .4byte gSaveBlock2Ptr -_080792BC: .4byte gHeap -_080792C0: .4byte sub_800C300 -_080792C4: .4byte sub_8078C24 - thumb_func_end sub_80791C0 - thumb_func_start sub_80792C8 sub_80792C8: @ 80792C8 push {r4,r5,lr} diff --git a/data/title_screen.s b/data/title_screen.s deleted file mode 100644 index e0186afe3..000000000 --- a/data/title_screen.s +++ /dev/null @@ -1,88 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 -gUnknown_83BF64C:: @ 83BF64C - .incbin "data/graphics/title_screen/unk_83bf64c.4bpp.lz" - -gUnknown_83BF77C:: - .incbin "data/graphics/title_screen/unk_83bf77c.gbapal" - -gUnknown_83BF79C:: - .incbin "data/graphics/title_screen/unk_83bf79c.4bpp.lz" - -gUnknown_83BFA14:: - .incbin "data/graphics/title_screen/unk_83bfa14.4bpp.lz" - -gOamData_83BFAB4:: - .4byte 0x40000000, 0x00000c00 - -gSpriteAnims_83BFABC:: - obj_image_anim_frame 0x0, 0x3 - obj_image_anim_frame 0x4, 0x6 - obj_image_anim_frame 0x8, 0x6 - obj_image_anim_frame 0xc, 0x6 - obj_image_anim_frame 0x10, 0x6 - obj_image_anim_frame 0x14, 0x6 - obj_image_anim_frame 0x18, 0x6 - obj_image_anim_frame 0x1c, 0x6 - obj_image_anim_frame 0x20, 0x6 - obj_image_anim_frame 0x24, 0x6 - obj_image_anim_end - -gSpriteAnims_83BFAE8:: - obj_image_anim_frame 0x18, 0x6 - obj_image_anim_frame 0x1c, 0x6 - obj_image_anim_frame 0x20, 0x6 - obj_image_anim_frame 0x24, 0x6 - obj_image_anim_end - -gSpriteAnimTable_83BFAFC:: - .4byte gSpriteAnims_83BFABC - .4byte gSpriteAnims_83BFAE8 - -gUnknown_83BFB04:: @ 83BFB04 - spr_template 0, 0, gOamData_83BFAB4, gSpriteAnimTable_83BFAFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83BFB1C:: @ 83BFB1C - spr_template 1, 0, gOamData_83BFAB4, gSpriteAnimTable_83BFAFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gOamData_83BFB34:: - .4byte 0xc0008000, 0x00000000 - -gUnknown_83BFB3C:: @ 83BFB3C - spr_template 2, 2, gOamData_83BFB34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gOamData_83BFB54:: - .4byte 0xc0000800, 0x00000000 - -gUnknown_83BFB5C:: @ 83BFB5C - spr_template 3, 2, gOamData_83BFB54, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83BFB74:: @ 83BFB74 - .4byte 0x000009f0 - .4byte 0x000011e5 - .4byte 0x000021da - .4byte 0x000031cf - -gUnknown_83BFB84:: @ 83BFB84 - .4byte sub_8078C9C - .4byte sub_8078D24 - .4byte sub_8078DA4 - .4byte sub_8078FC4 - .4byte sub_80790CC - .4byte sub_80791C0 - -gUnknown_83BFB9C:: @ 83BFB9C - obj_tiles gUnknown_83BF79C, 0x500, 0 - obj_tiles gUnknown_83BFA14, 0x500, 1 - obj_tiles gUnknown_8EAE4A8, 0x400, 2 - obj_tiles gUnknown_83BF64C, 0x800, 3 - -gUnknown_83BFBBC:: @ 83BFBBC - obj_pal gUnknown_83BF77C, 0 - obj_pal gUnknown_8EAE488, 2 - null_obj_pal - -gUnknown_83BFBD4:: @ 83BFBD4 - .incbin "baserom.gba", 0x3BFBD4, 0xF diff --git a/include/graphics.h b/include/graphics.h index e8503609e..bd25f4d1a 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -961,4 +961,17 @@ extern const u8 gFile_graphics_items_icon_palettes_sapphire_palette[]; extern const u8 gFile_graphics_items_icons_return_to_field_arrow_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_return_to_field_arrow_palette[]; +// title_screen +extern const u16 gUnknown_8EAB6C4[]; +extern const u8 gUnknown_8EAB8C4[]; +extern const u8 gUnknown_8EAD390[]; +extern const u16 gUnknown_8EAD5E8[]; +extern const u8 gUnknown_8EAD608[]; +extern const u8 gUnknown_8EADEE4[]; +extern const u16 gUnknown_8EAE094[]; +extern const u8 gUnknown_8EAE0B4[]; +extern const u8 gUnknown_8EAE374[]; +extern const u16 gUnknown_8EAE488[]; +extern const u8 gUnknown_8EAE4A8[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/intro.h b/include/intro.h new file mode 100644 index 000000000..f01c81a9e --- /dev/null +++ b/include/intro.h @@ -0,0 +1,6 @@ +#ifndef GUARD_INTRO_H +#define GUARD_INTRO_H + +void sub_80EC864(void); + +#endif //GUARD_INTRO_H diff --git a/include/main.h b/include/main.h index b66ff04d8..d326909ff 100644 --- a/include/main.h +++ b/include/main.h @@ -66,6 +66,7 @@ void RestoreSerialTimer3IntrHandlers(void); void SetVBlankCounter1Ptr(u32 *ptr); void DisableVBlankCounter1(void); void StartTimer1(void); +void SeedRngAndSetTrainerId(void); extern const char RomHeaderGameCode[4]; extern const char RomHeaderSoftwareVersion; diff --git a/include/main_menu.h b/include/main_menu.h new file mode 100644 index 000000000..2a0cd81d5 --- /dev/null +++ b/include/main_menu.h @@ -0,0 +1,6 @@ +#ifndef GUARD_MAIN_MENU_H +#define GUARD_MAIN_MENU_H + +void sub_800C300(void); + +#endif //GUARD_MAIN_MENU_H diff --git a/include/palette.h b/include/palette.h index 06b9b1f6f..feac1f11f 100644 --- a/include/palette.h +++ b/include/palette.h @@ -71,7 +71,10 @@ void BlendPalettes(u32, u8, u16); void BlendPalettesUnfaded(u32, u8, u16); void sub_80716F8(const u16 *, u16 *, u16, u8); void TintPalette_GrayScale(u16 *, u16); +void TintPalette_GrayScale2(u16 *, u16); void TintPalette_SepiaTone(u16 *, u16); +void sub_80717A8(u32, s8, u8, u8, u16, u8, u8); +bool32 sub_807185C(u8); extern struct PaletteFadeControl gPaletteFade; diff --git a/ld_script.txt b/ld_script.txt index 20e1db897..48e59a76a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -407,7 +407,6 @@ SECTIONS { data/map_events.o(.rodata); data/battle_anim_status_effects.o(.rodata); src/title_screen.o(.rodata); - data/title_screen.o(.rodata); data/field_weather.o(.rodata); data/data_835B488.o(.rodata); src/item_menu_icons.o(.rodata); diff --git a/src/title_screen.c b/src/title_screen.c index 9e779bb7b..32324ec7a 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -8,7 +8,32 @@ #include "new_menu_helpers.h" #include "m4a.h" #include "scanline_effect.h" +#include "graphics.h" +#include "help_system.h" +#include "intro.h" +#include "load_save.h" +#include "sound.h" +#include "new_game.h" +#include "save.h" +#include "main_menu.h" #include "constants/songs.h" +#include "constants/species.h" + +enum TitleScreenScene +{ + TITLESCREENSCENE_INIT = 0, + TITLESCREENSCENE_FLASHSPRITE, + TITLESCREENSCENE_FADEIN, + TITLESCREENSCENE_RUN, + TITLESCREENSCEEN_RESTART, + TITLESCREENSCENE_CRY +}; + +#if defined(FIRERED) +#define TITLE_SPECIES SPECIES_CHARIZARD +#elif defined(LEAFGREEN) +#define TITLE_SPECIES SPECIES_VENUSAUR +#endif EWRAM_DATA u8 gUnknown_2037F30 = 0; @@ -22,28 +47,190 @@ void sub_8078C9C(s16 * data); void sub_8078D24(s16 * data); void sub_8078DA4(s16 * data); void sub_8078FC4(s16 * data); +void sub_80790A0(void); void sub_80790CC(s16 * data); void sub_80791C0(s16 * data); -void sub_8079708(void); +void sub_80792C8(u8 taskId); +void sub_807941C(u8 taskId); +void sub_8079528(void); +void sub_8079550(s16 a0); void sub_8079620(void); void sub_8079648(void); +void sub_80796CC(void); +void sub_80796E8(void); +void sub_8079708(void); +void sub_8079840(u8 taskId); +u32 sub_80799F0(void); void sub_8079A10(s16 a0); +u8 sub_8079A40(void); +void sub_8079A88(u8 spriteId); +bool32 sub_8079AA8(u8 spriteId); +// bg3 const u8 gUnknown_83BF58C[] = INCBIN_U8("data/graphics/title_screen/unk_83BF58C.4bpp.lz"); const u8 gUnknown_83BF5A8[] = INCBIN_U8("data/graphics/title_screen/unk_83BF5A8.bin.lz"); -extern const struct BgTemplate gUnknown_83BFB74[4]; -extern const void (*const gUnknown_83BFB84[])(s16 * data); -/*graphics.h*/ -extern const u16 gUnknown_8EAB6C4[]; -extern const u8 gUnknown_8EAB8C4[]; -extern const u8 gUnknown_8EAD390[]; -extern const u16 gUnknown_8EAD5E8[]; -extern const u8 gUnknown_8EAD608[]; -extern const u8 gUnknown_8EADEE4[]; -extern const u16 gUnknown_8EAE094[]; -extern const u8 gUnknown_8EAE0B4[]; -extern const u8 gUnknown_8EAE374[]; +//sprites +const u8 gUnknown_83BF64C[] = INCBIN_U8("data/graphics/title_screen/unk_83bf64c.4bpp.lz"); +const u16 gUnknown_83BF77C[] = INCBIN_U16("data/graphics/title_screen/unk_83bf77c.gbapal"); +const u8 gUnknown_83BF79C[] = INCBIN_U8("data/graphics/title_screen/unk_83bf79c.4bpp.lz"); +const u8 gUnknown_83BFA14[] = INCBIN_U8("data/graphics/title_screen/unk_83bfa14.4bpp.lz"); + +const struct OamData gOamData_83BFAB4 = { + .objMode = ST_OAM_OBJ_NORMAL, + .shape = ST_OAM_SQUARE, + .size = ST_OAM_SIZE_1, + .tileNum = 0, + .priority = 3, + .paletteNum = 0 +}; + +const union AnimCmd gSpriteAnims_83BFABC[] = { + ANIMCMD_FRAME(0x00, 3), + ANIMCMD_FRAME(0x04, 6), + ANIMCMD_FRAME(0x08, 6), + ANIMCMD_FRAME(0x0c, 6), + ANIMCMD_FRAME(0x10, 6), + ANIMCMD_FRAME(0x14, 6), + ANIMCMD_FRAME(0x18, 6), + ANIMCMD_FRAME(0x1c, 6), + ANIMCMD_FRAME(0x20, 6), + ANIMCMD_FRAME(0x24, 6), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnims_83BFAE8[] = { + ANIMCMD_FRAME(0x18, 6), + ANIMCMD_FRAME(0x1c, 6), + ANIMCMD_FRAME(0x20, 6), + ANIMCMD_FRAME(0x24, 6), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83BFAFC[] = { + gSpriteAnims_83BFABC, + gSpriteAnims_83BFAE8 +}; + +const struct SpriteTemplate gUnknown_83BFB04 = { + .tileTag = 0, + .paletteTag = 0, + .oam = &gOamData_83BFAB4, + .anims = gSpriteAnimTable_83BFAFC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct SpriteTemplate gUnknown_83BFB1C = { + .tileTag = 1, + .paletteTag = 0, + .oam = &gOamData_83BFAB4, + .anims = gSpriteAnimTable_83BFAFC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct OamData gOamData_83BFB34 = { + .objMode = ST_OAM_OBJ_NORMAL, + .shape = ST_OAM_V_RECTANGLE, + .size = ST_OAM_SIZE_3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0 +}; + +const struct SpriteTemplate gUnknown_83BFB3C = { + .tileTag = 2, + .paletteTag = 2, + .oam = &gOamData_83BFB34, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct OamData gOamData_83BFB54 = { + .objMode = ST_OAM_OBJ_WINDOW, + .shape = ST_OAM_SQUARE, + .size = ST_OAM_SIZE_3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0 +}; + +const struct SpriteTemplate gUnknown_83BFB5C = { + .tileTag = 3, + .paletteTag = 2, + .oam = &gOamData_83BFB54, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct BgTemplate gUnknown_83BFB74[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 1, // 8bpp + .priority = 0, + .baseTile = 0 + }, { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, // 4bpp + .priority = 1, + .baseTile = 0 + }, { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, // 4bpp + .priority = 2, + .baseTile = 0 + }, { + .bg = 3, + .charBaseIndex = 3, + .mapBaseIndex = 28, + .screenSize = 0, + .paletteMode = 0, // 4bpp + .priority = 3, + .baseTile = 0 + } +}; + +void (*const gUnknown_83BFB84[])(s16 * data) = { + sub_8078C9C, + sub_8078D24, + sub_8078DA4, + sub_8078FC4, + sub_80790CC, + sub_80791C0 +}; + +const struct CompressedSpriteSheet gUnknown_83BFB9C[] = { + {(const void *)gUnknown_83BF79C, 0x500, 0}, + {(const void *)gUnknown_83BFA14, 0x500, 1}, + {(const void *)gUnknown_8EAE4A8, 0x400, 2}, + {(const void *)gUnknown_83BF64C, 0x800, 3} +}; + +const struct SpritePalette gUnknown_83BFBBC[] = { + {gUnknown_83BF77C, 0}, + {gUnknown_8EAE488, 2}, + {} +}; + +const u8 gUnknown_83BFBD4[] = { + 0x04, 0x10, 0x1a, 0x20, 0x30, 0xc8, 0xd8, 0xe0, 0xe8, 0x3c, 0x4c, 0x5c, 0x6c, 0x80, 0x90 +}; void CB2_InitTitleScreen(void) { @@ -155,7 +342,7 @@ void sub_8078C24(u8 taskId) sub_8079620(); sub_8079648(); sub_8079A10(data[5]); - sub_8078C90(data, 3); + sub_8078C90(data, TITLESCREENSCENE_RUN); } else { @@ -188,5 +375,254 @@ void sub_8078C9C(s16 * data) ScanlineEffect_SetParams(params); - sub_8078C90(data, 1); + sub_8078C90(data, TITLESCREENSCENE_FLASHSPRITE); +} + +void sub_8078D24(s16 * data) +{ + switch (data[1]) + { + case 0: + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_LIGHTEN); + SetGpuReg(REG_OFFSET_BLDY, 0); + data[2] = 0x80; + sub_8079550(0x80); + data[1]++; + break; + case 1: + data[2] -= 4; + sub_8079550(data[2]); + if (data[2] < 0) + { + gScanlineEffect.state = 3; + data[1]++; + } + break; + case 2: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + sub_8078C90(data, TITLESCREENSCENE_FADEIN); + } +} + +void sub_8078DA4(s16 * data) +{ + u32 r4; + switch (data[1]) + { + case 0: + data[2] = 0; + data[1]++; + break; + case 1: + data[2]++; + if (data[2] > 10) + { + TintPalette_GrayScale2(gPlttBufferUnfaded + 0xD0, 0x10); + BeginNormalPaletteFade(0x00002000, 9, 0x10, 0, RGB_BLACK); + data[1]++; + } + break; + case 2: + if (!gPaletteFade.active) + { + data[2] = 0; + data[1]++; + } + break; + case 3: + data[2]++; + if (data[2] > 36) + { + CreateTask(sub_80792C8, 3); + sub_80717A8(0x2000, -4, 0x01, 0x10, RGB(30, 30, 31), 0, 0); + data[2] = 0; + data[1]++; + } + break; + case 4: + if (!sub_807185C(0)) + { + sub_80717A8(0x2000, -4, 0x0F, 0x00, RGB(30, 30, 31), 0, 0); + data[1]++; + } + break; + case 5: + data[2]++; + if (data[2] > 20) + { + data[2] = 0; + sub_80717A8(0x2000, -4, 0x01, 0x10, RGB(30, 30, 31), 0, 0); + data[1]++; + } + break; + case 6: + if (!sub_807185C(0)) + { + sub_80717A8(0x2000, -4, 0x0F, 0x00, RGB(30, 30, 31), 0, 0); + data[1]++; + } + break; + case 7: + data[2]++; + if (data[2] > 20) + { + data[2] = 0; + sub_80717A8(0x2000, -3, 0x00, 0x10, RGB(30, 30, 31), 0, 0); + data[1]++; + } + break; + case 8: + if (!sub_807185C(0)) + { + data[5] = 1; + r4 = (0x10000 << sub_80799F0()) | 0x00001FFF; + BlendPalettes(r4, 0x10, RGB(30, 30, 31)); + BeginNormalPaletteFade(r4, 1, 0x10, 0x00, RGB(30, 30, 31)); + ShowBg(0); + CpuCopy16(gUnknown_8EAD5E8, gPlttBufferUnfaded + 0xD0, 0x20); + sub_80717A8(0x2000, 1, 0x0F, 0x00, RGB(30, 30, 31), 0, 0); + data[1]++; + } + break; + case 9: + if (!sub_807185C(0) && !gPaletteFade.active) + { + sub_8078C90(data, TITLESCREENSCENE_RUN); + } + break; + } +} + +#define KEYSTROKE_DELSAVE (B_BUTTON | SELECT_BUTTON | DPAD_UP) +#define KEYSTROKE_BERRY_FIX (B_BUTTON | SELECT_BUTTON) + +void sub_8078FC4(s16 * data) +{ + switch (data[1]) + { + case 0: + HelpSystem_SetSomeVariable2(1); + CreateTask(sub_807941C, 0); + CreateTask(sub_8079840, 5); + sub_80790A0(); + data[6] = sub_8079A40(); + sub_812B484(); + data[1]++; + // fallthrough + case 1: + if (JOY_HELD(KEYSTROKE_DELSAVE) == KEYSTROKE_DELSAVE) + { + sub_8079A88(data[6]); + DestroyTask(FindTaskIdByFunc(sub_8078C24)); + SetMainCallback2(sub_80796CC); + } + else if (JOY_HELD(KEYSTROKE_BERRY_FIX) == KEYSTROKE_BERRY_FIX) + { + sub_8079A88(data[6]); + DestroyTask(FindTaskIdByFunc(sub_8078C24)); + SetMainCallback2(sub_80796E8); + } + else if (JOY_NEW(A_BUTTON | START_BUTTON)) + { + sub_8078C90(data, TITLESCREENSCENE_CRY); + } + else if (!FuncIsActiveTask(sub_8078BEC)) + { + sub_8078C90(data, TITLESCREENSCEEN_RESTART); + } + break; + } +} + +void sub_80790A0(void) +{ + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); + SetGpuReg(REG_OFFSET_WINOUT, WIN_RANGE(0x3F, 0x1F)); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_LIGHTEN); + SetGpuReg(REG_OFFSET_BLDY, 13); +} + +void sub_80790CC(s16 * data) +{ + switch (data[1]) + { + case 0: + sub_8079A88(data[6]); + data[1]++; + break; + case 1: + if (!gPaletteFade.active && !sub_8079AA8(data[6])) + { + FadeOutMapMusic(10); + BeginNormalPaletteFade(0xFFFFFFFF, 3, 0, 0x10, RGB_BLACK); + sub_8079528(); + data[1]++; + } + break; + case 2: + if (IsNotWaitingForBGMStop() && !gPaletteFade.active) + { + DestroyTask(FindTaskIdByFunc(sub_807941C)); + data[2] = 0; + data[1]++; + } + break; + case 3: + data[2]++; + if (data[2] >= 20) + { + DestroyTask(FindTaskIdByFunc(sub_807941C)); + data[1]++; + } + break; + case 4: + sub_812B478(); + DestroyTask(FindTaskIdByFunc(sub_8078C24)); + SetMainCallback2(sub_80EC864); + break; + } +} + +void sub_80791C0(s16 * data) +{ + switch (data[1]) + { + case 0: + if (!gPaletteFade.active) + { + PlayCry1(TITLE_SPECIES, 0); + sub_8079A88(data[6]); + data[2] = 0; + data[1]++; + } + break; + case 1: + if (data[2] < 90) + data[2]++; + else if (!sub_8079AA8(data[6])) + { + BeginNormalPaletteFade(0x0FFFFFFF, 0, 0, 0x10, RGB_WHITE); + sub_8079528(); + FadeOutBGM(4); + data[1]++; + } + break; + case 2: + if (!gPaletteFade.active) + { + SeedRngAndSetTrainerId(); + SetSaveBlocksPointers(); + ResetMenuAndMonGlobals(); + Save_ResetSaveCounters(); + Save_LoadGameData(0); + if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID) + Sav2_ClearSetDefault(); + SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); + InitHeap(gHeap, HEAP_SIZE); + SetMainCallback2(sub_800C300); + DestroyTask(FindTaskIdByFunc(sub_8078C24)); + } + break; + } } From c3f95c1cbb7827c09d86fa0a6b481ae0fa3c37d5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 31 Jul 2019 13:50:47 -0400 Subject: [PATCH 33/38] title_screen: through sub_8079730 --- asm/title_screen.s | 636 ------------------------------- include/berry_fix_program.h | 6 + include/clear_save_data_screen.h | 6 + include/graphics.h | 2 +- include/palette.h | 1 + src/title_screen.c | 231 +++++++++++ 6 files changed, 245 insertions(+), 637 deletions(-) create mode 100644 include/berry_fix_program.h create mode 100644 include/clear_save_data_screen.h diff --git a/asm/title_screen.s b/asm/title_screen.s index 47a1b30a9..686ecbbcd 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -5,642 +5,6 @@ .text - thumb_func_start sub_80792C8 -sub_80792C8: @ 80792C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080792EC @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bls _080792E2 - b _08079414 -_080792E2: - lsls r0, 2 - ldr r1, _080792F0 @ =_080792F4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080792EC: .4byte gTasks+0x8 -_080792F0: .4byte _080792F4 - .align 2, 0 -_080792F4: - .4byte _0807930C - .4byte _08079344 - .4byte _08079368 - .4byte _0807937C - .4byte _080793BC - .4byte _08079404 -_0807930C: - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl SetGpuRegBits - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x37 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0xA0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x80 - lsls r0, 7 - movs r1, 0 - movs r2, 0 - bl BlendPalettes - b _080793AA -_08079344: - movs r1, 0xC0 - lsls r1, 1 - adds r0, r1, 0 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x4] - cmp r0, 0xEF - ble _08079364 - movs r0, 0xF0 - strh r0, [r4, 0x4] - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_08079364: - ldrh r1, [r4, 0x4] - b _080793F6 -_08079368: - ldrh r0, [r4, 0x6] - adds r0, 0x1 - strh r0, [r4, 0x6] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - ble _08079414 - movs r0, 0 - strh r0, [r4, 0x6] - b _080793AA -_0807937C: - movs r0, 0x4A - movs r1, 0x3B - bl SetGpuReg - ldr r1, _080793B4 @ =0x0000f0f0 - movs r0, 0x40 - bl SetGpuReg - ldr r1, _080793B8 @ =0xffff1000 - movs r0, 0x2 - movs r2, 0 - bl ChangeBgX - movs r0, 0x80 - lsls r0, 8 - movs r1, 0 - movs r2, 0 - bl BlendPalettes - movs r1, 0xF0 - lsls r1, 4 - adds r0, r1, 0 - strh r0, [r4, 0x2] -_080793AA: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _08079414 - .align 2, 0 -_080793B4: .4byte 0x0000f0f0 -_080793B8: .4byte 0xffff1000 -_080793BC: - ldr r1, _08079400 @ =0xfffffe80 - adds r0, r1, 0 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x4] - cmp r0, 0 - bgt _080793DA - movs r0, 0 - strh r0, [r4, 0x4] - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_080793DA: - movs r0, 0x4 - ldrsh r1, [r4, r0] - negs r1, r1 - lsls r1, 8 - movs r0, 0x2 - movs r2, 0 - bl ChangeBgX - ldrh r1, [r4, 0x4] - lsls r1, 8 - movs r0, 0xF0 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 -_080793F6: - movs r0, 0x40 - bl SetGpuReg - b _08079414 - .align 2, 0 -_08079400: .4byte 0xfffffe80 -_08079404: - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl ClearGpuRegBits - adds r0, r5, 0 - bl DestroyTask -_08079414: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80792C8 - - thumb_func_start sub_807941C -sub_807941C: @ 807941C - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _08079460 @ =gTasks+0x8 - adds r5, r0, r1 - movs r1, 0x1E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08079444 - ldr r0, _08079464 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08079444 - movs r0, 0x1 - strh r0, [r5, 0x1C] -_08079444: - movs r3, 0x1C - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _08079468 - ldr r0, _08079464 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08079468 - adds r0, r2, 0 - bl DestroyTask - b _08079510 - .align 2, 0 -_08079460: .4byte gTasks+0x8 -_08079464: .4byte gPaletteFade -_08079468: - movs r1, 0x2 - ldrsh r0, [r5, r1] - ldrh r2, [r5, 0x2] - cmp r0, 0 - bne _08079476 - movs r0, 0x3C - b _08079478 -_08079476: - movs r0, 0x1E -_08079478: - strh r0, [r5, 0x4] - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x4 - ldrsh r1, [r5, r3] - cmp r0, r1 - blt _08079510 - movs r0, 0 - strh r0, [r5] - movs r0, 0x1 - eors r0, r2 - strh r0, [r5, 0x2] - lsls r0, 16 - cmp r0, 0 - beq _080794CC - ldr r2, _080794C0 @ =gPlttBufferUnfaded - ldr r4, _080794C4 @ =gUnknown_8EAE094 - ldr r1, _080794C8 @ =gPlttBufferFaded - movs r0, 0xF1 - lsls r0, 1 - adds r1, r0 - adds r2, r0 - movs r3, 0x4 -_080794AC: - ldrh r0, [r4, 0xC] - strh r0, [r2] - ldrh r0, [r4, 0xC] - strh r0, [r1] - adds r1, 0x2 - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080794AC - b _080794F2 - .align 2, 0 -_080794C0: .4byte gPlttBufferUnfaded -_080794C4: .4byte gUnknown_8EAE094 -_080794C8: .4byte gPlttBufferFaded -_080794CC: - movs r3, 0 - ldr r2, _08079518 @ =gPlttBufferUnfaded - ldr r0, _0807951C @ =gUnknown_8EAE094 - ldr r1, _08079520 @ =gPlttBufferFaded - adds r4, r0, 0x2 - movs r0, 0xF1 - lsls r0, 1 - adds r1, r0 - adds r2, r0 -_080794DE: - ldrh r0, [r4] - strh r0, [r2] - ldrh r0, [r4] - strh r0, [r1] - adds r4, 0x2 - adds r1, 0x2 - adds r2, 0x2 - adds r3, 0x1 - cmp r3, 0x4 - ble _080794DE -_080794F2: - movs r1, 0x1C - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08079510 - movs r0, 0x80 - lsls r0, 8 - ldr r2, _08079524 @ =gPaletteFade - ldrh r1, [r2, 0x4] - lsls r1, 21 - lsrs r1, 27 - ldrh r2, [r2, 0x6] - lsls r2, 17 - lsrs r2, 17 - bl BlendPalettes -_08079510: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08079518: .4byte gPlttBufferUnfaded -_0807951C: .4byte gUnknown_8EAE094 -_08079520: .4byte gPlttBufferFaded -_08079524: .4byte gPaletteFade - thumb_func_end sub_807941C - - thumb_func_start sub_8079528 -sub_8079528: @ 8079528 - push {lr} - ldr r0, _08079548 @ =sub_807941C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0807954C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x1 - strh r0, [r1, 0x26] - pop {r0} - bx r0 - .align 2, 0 -_08079548: .4byte sub_807941C -_0807954C: .4byte gTasks - thumb_func_end sub_8079528 - - thumb_func_start sub_8079550 -sub_8079550: @ 8079550 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r5, r0, 16 - asrs r4, r5, 16 - cmp r4, 0 - blt _08079574 - ldr r3, _08079618 @ =gScanlineEffectRegBuffers - lsls r2, r4, 1 - ldr r0, _0807961C @ =gScanlineEffect - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r3 - movs r0, 0x10 - strh r0, [r2] -_08079574: - movs r3, 0 - mov r8, r5 - adds r6, r4, 0 - ldr r0, _08079618 @ =gScanlineEffectRegBuffers - mov r12, r0 - ldr r7, _0807961C @ =gScanlineEffect - movs r5, 0xF - lsls r2, r6, 1 - adds r4, r2, 0 -_08079586: - adds r0, r6, r3 - cmp r0, 0 - blt _0807959A - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r0, r4, r0 - add r0, r12 - strh r5, [r0] -_0807959A: - subs r0, r6, r3 - cmp r0, 0 - blt _080795AE - ldrb r1, [r7, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r0, r2, r0 - add r0, r12 - strh r5, [r0] -_080795AE: - subs r5, 0x1 - subs r2, 0x2 - adds r4, 0x2 - adds r3, 0x1 - cmp r3, 0xF - ble _08079586 - mov r1, r8 - asrs r0, r1, 16 - adds r3, r0, 0 - adds r3, 0x10 - cmp r3, 0x9F - bgt _080795E6 - ldr r6, _08079618 @ =gScanlineEffectRegBuffers - ldr r5, _0807961C @ =gScanlineEffect - movs r4, 0 -_080795CC: - cmp r3, 0 - blt _080795E0 - lsls r2, r3, 1 - ldrb r1, [r5, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r6 - strh r4, [r2] -_080795E0: - adds r3, 0x1 - cmp r3, 0x9F - ble _080795CC -_080795E6: - mov r1, r8 - asrs r0, r1, 16 - adds r3, r0, 0 - subs r3, 0x10 - cmp r3, 0 - blt _0807960E - ldr r6, _08079618 @ =gScanlineEffectRegBuffers - ldr r5, _0807961C @ =gScanlineEffect - movs r4, 0 -_080795F8: - lsls r2, r3, 1 - ldrb r1, [r5, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r6 - strh r4, [r2] - subs r3, 0x1 - cmp r3, 0 - bge _080795F8 -_0807960E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08079618: .4byte gScanlineEffectRegBuffers -_0807961C: .4byte gScanlineEffect - thumb_func_end sub_8079550 - - thumb_func_start sub_8079620 -sub_8079620: @ 8079620 - push {lr} - ldr r1, _08079644 @ =gScanlineEffect - ldrb r0, [r1, 0x15] - cmp r0, 0 - beq _0807962E - movs r0, 0x3 - strb r0, [r1, 0x15] -_0807962E: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - pop {r0} - bx r0 - .align 2, 0 -_08079644: .4byte gScanlineEffect - thumb_func_end sub_8079620 - - thumb_func_start sub_8079648 -sub_8079648: @ 8079648 - push {r4,lr} - ldr r0, _080796BC @ =sub_80792C8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0807965C - bl DestroyTask -_0807965C: - bl sub_8071898 - bl ResetPaletteFadeControl - ldr r0, _080796C0 @ =gUnknown_8EAB6C4 - movs r2, 0xD0 - lsls r2, 1 - movs r1, 0 - bl LoadPalette - ldr r0, _080796C4 @ =gUnknown_8EAD5E8 - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - ldr r4, _080796C8 @ =gUnknown_8EAE094 - adds r0, r4, 0 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0xE0 - movs r2, 0x20 - bl LoadPalette - bl ResetBgPositions - movs r1, 0xE0 - lsls r1, 8 - movs r0, 0 - bl ClearGpuRegBits - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080796BC: .4byte sub_80792C8 -_080796C0: .4byte gUnknown_8EAB6C4 -_080796C4: .4byte gUnknown_8EAD5E8 -_080796C8: .4byte gUnknown_8EAE094 - thumb_func_end sub_8079648 - - thumb_func_start sub_80796CC -sub_80796CC: @ 80796CC - push {lr} - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _080796DE - ldr r0, _080796E4 @ =sub_80F55A0 - bl SetMainCallback2 -_080796DE: - pop {r0} - bx r0 - .align 2, 0 -_080796E4: .4byte sub_80F55A0 - thumb_func_end sub_80796CC - - thumb_func_start sub_80796E8 -sub_80796E8: @ 80796E8 - push {lr} - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _080796FE - bl m4aMPlayAllStop - ldr r0, _08079704 @ =mb_berry_fix_serve - bl SetMainCallback2 -_080796FE: - pop {r0} - bx r0 - .align 2, 0 -_08079704: .4byte mb_berry_fix_serve - thumb_func_end sub_80796E8 - - thumb_func_start sub_8079708 -sub_8079708: @ 8079708 - push {r4,r5,lr} - movs r5, 0 - ldr r4, _08079728 @ =gUnknown_83BFB9C -_0807970E: - adds r0, r4, 0 - bl LoadCompressedSpriteSheet - adds r4, 0x8 - adds r5, 0x1 - cmp r5, 0x3 - bls _0807970E - ldr r0, _0807972C @ =gUnknown_83BFBBC - bl LoadSpritePalettes - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08079728: .4byte gUnknown_83BFB9C -_0807972C: .4byte gUnknown_83BFBBC - thumb_func_end sub_8079708 - - thumb_func_start sub_8079730 -sub_8079730: @ 8079730 - push {r4,lr} - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x2E - ldrh r0, [r4, 0x2E] - ldrh r1, [r2, 0x2] - subs r0, r1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x20] - movs r1, 0x8 - negs r1, r1 - cmp r0, r1 - blt _08079774 - ldrh r0, [r2, 0x6] - ldrh r1, [r2, 0x4] - adds r0, r1 - strh r0, [r2, 0x4] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x22] - subs r0, 0x10 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB8 - bhi _08079774 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0807977C -_08079774: - adds r0, r4, 0 - bl DestroySprite - b _080797A6 -_0807977C: - ldrh r1, [r2, 0xE] - movs r3, 0xE - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _080797A6 - subs r0, r1, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _080797A6 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080797A6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8079730 - thumb_func_start sub_80797AC sub_80797AC: @ 80797AC push {r4-r7,lr} diff --git a/include/berry_fix_program.h b/include/berry_fix_program.h new file mode 100644 index 000000000..fc0748fd9 --- /dev/null +++ b/include/berry_fix_program.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BERRY_FIX_PROGRAM_H +#define GUARD_BERRY_FIX_PROGRAM_H + +void mb_berry_fix_serve(void); + +#endif //GUARD_BERRY_FIX_PROGRAM_H diff --git a/include/clear_save_data_screen.h b/include/clear_save_data_screen.h new file mode 100644 index 000000000..7edf7d03e --- /dev/null +++ b/include/clear_save_data_screen.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CLEAR_SAVE_DATA_SCREEN_H +#define GUARD_CLEAR_SAVE_DATA_SCREEN_H + +void sub_80F55A0(void); + +#endif //GUARD_CLEAR_SAVE_DATA_SCREEN_H diff --git a/include/graphics.h b/include/graphics.h index bd25f4d1a..dd91731b6 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -968,7 +968,7 @@ extern const u8 gUnknown_8EAD390[]; extern const u16 gUnknown_8EAD5E8[]; extern const u8 gUnknown_8EAD608[]; extern const u8 gUnknown_8EADEE4[]; -extern const u16 gUnknown_8EAE094[]; +extern u16 gUnknown_8EAE094[]; // If this is const, title_screen.c does not match extern const u8 gUnknown_8EAE0B4[]; extern const u8 gUnknown_8EAE374[]; extern const u16 gUnknown_8EAE488[]; diff --git a/include/palette.h b/include/palette.h index feac1f11f..300236d1e 100644 --- a/include/palette.h +++ b/include/palette.h @@ -75,6 +75,7 @@ void TintPalette_GrayScale2(u16 *, u16); void TintPalette_SepiaTone(u16 *, u16); void sub_80717A8(u32, s8, u8, u8, u16, u8, u8); bool32 sub_807185C(u8); +void sub_8071898(void); extern struct PaletteFadeControl gPaletteFade; diff --git a/src/title_screen.c b/src/title_screen.c index 32324ec7a..d4c861841 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -16,6 +16,9 @@ #include "new_game.h" #include "save.h" #include "main_menu.h" +#include "clear_save_data_screen.h" +#include "berry_fix_program.h" +#include "decompress.h" #include "constants/songs.h" #include "constants/species.h" @@ -626,3 +629,231 @@ void sub_80791C0(s16 * data) break; } } + +void sub_80792C8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + SetGpuReg(REG_OFFSET_WININ, WIN_RANGE(0x00, 0x3F)); + SetGpuReg(REG_OFFSET_WINOUT, WIN_RANGE(0x00, 0x37)); + SetGpuReg(REG_OFFSET_WIN0V, 0xA0); + SetGpuReg(REG_OFFSET_WIN0H, 0x00); + BlendPalettes(0x00004000, 0, RGB_BLACK); + data[0]++; + break; + case 1: + data[1] += 0x180; + data[2] = data[1] >> 4; + if (data[2] >= 0xF0) + { + data[2] = 0xF0; + data[0]++; + } + SetGpuReg(REG_OFFSET_WIN0H, data[2]); + break; + case 2: + data[3]++; + if (data[3] >= 10) + { + data[3] = 0; + data[0]++; + } + break; + case 3: + SetGpuReg(REG_OFFSET_WINOUT, WIN_RANGE(0, 0x3B)); + SetGpuReg(REG_OFFSET_WIN0H, 0xF0F0); + ChangeBgX(2, -0xF000, 0); + BlendPalettes(0x00008000, 0, RGB_BLACK); + data[1] = 0xF00; + data[0]++; + break; + case 4: + data[1] -= 0x180; + data[2] = data[1] >> 4; + if (data[2] <= 0) + { + data[2] = 0; + data[0]++; + } + ChangeBgX(2, -data[2] << 8, 0); + SetGpuReg(REG_OFFSET_WIN0H, (data[2] << 8) | 0xF0); + break; + case 5: + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + DestroyTask(taskId); + break; + } +} + +void sub_807941C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + s32 i; + + if (data[15] && gPaletteFade.active) + data[14] = 1; + if (data[14] && !gPaletteFade.active) + DestroyTask(taskId); + else + { + if (!data[1]) + data[2] = 60; + else + data[2] = 30; + data[0]++; + if (data[0] >= data[2]) + { + data[0] = 0; + data[1] ^= 1; + if (data[1]) + { + for (i = 0; i < 5; i++) + { + gPlttBufferUnfaded[0xF1 + i] = gUnknown_8EAE094[6]; + gPlttBufferFaded[0xF1 + i] = gUnknown_8EAE094[6]; + } + } + else + { + for (i = 0; i < 5; i++) + { + gPlttBufferUnfaded[0xF1 + i] = gUnknown_8EAE094[1 + i]; + gPlttBufferFaded[0xF1 + i] = gUnknown_8EAE094[1 + i]; + } + } + if (data[14]) + { + BlendPalettes(0x00008000, gPaletteFade.y, gPaletteFade.blendColor); + } + } + } +} + +void sub_8079528(void) +{ + u8 taskId = FindTaskIdByFunc(sub_807941C); + gTasks[taskId].data[15] = TRUE; +} + +void sub_8079550(s16 a0) +{ + s32 i; + + if (a0 >= 0) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][a0] = 16; + } + + for (i = 0; i < 16; i++) + { + if (a0 + i >= 0) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][a0 + i] = 15 - i; + } + if (a0 - i >= 0) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][a0 - i] = 15 - i; + } + } + for (i = a0 + 16; i < 160; i++) + { + if (i >= 0) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = 0; + } + } + for (i = a0 - 16; i >= 0; i--) + { + if (i >= 0) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = 0; + } + } +} + +void sub_8079620(void) +{ + if (gScanlineEffect.state) + gScanlineEffect.state = 3; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); +} + +void sub_8079648(void) +{ + u8 taskId; + + taskId = FindTaskIdByFunc(sub_80792C8); + if (taskId != 0xFF) + DestroyTask(taskId); + + sub_8071898(); + ResetPaletteFadeControl(); + LoadPalette(gUnknown_8EAB6C4, 0x00, 0x1A0); + LoadPalette(gUnknown_8EAD5E8, 0xD0, 0x20); + LoadPalette(gUnknown_8EAE094, 0xF0, 0x20); + LoadPalette(gUnknown_8EAE094, 0xE0, 0x20); + ResetBgPositions(); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON); + ShowBg(1); + ShowBg(2); + ShowBg(0); + ShowBg(3); +} + +void sub_80796CC(void) +{ + if (!UpdatePaletteFade()) + SetMainCallback2(sub_80F55A0); +} + +void sub_80796E8(void) +{ + if (!UpdatePaletteFade()) + { + m4aMPlayAllStop(); + SetMainCallback2(mb_berry_fix_serve); + } +} + +void sub_8079708(void) +{ + s32 i; + + for (i = 0; i < NELEMS(gUnknown_83BFB9C); i++) + LoadCompressedSpriteSheet(&gUnknown_83BFB9C[i]); + LoadSpritePalettes(gUnknown_83BFBBC); +} + +void sub_8079730(struct Sprite * sprite) +{ + s16 * data = sprite->data; + sprite->data[0] -= data[1]; + sprite->pos1.x = sprite->data[0] >> 4; + if (sprite->pos1.x < -8) + { + DestroySprite(sprite); + return; + } + data[2] += data[3]; + sprite->pos1.y = data[2] >> 4; + if (sprite->pos1.y < 0x10 || sprite->pos1.y > 0xc8) + { + DestroySprite(sprite); + return; + } + if (sprite->animEnded) + { + DestroySprite(sprite); + return; + } + if (data[7] != 0 && --data[7] == 0) + { + StartSpriteAnim(sprite, 0); + sprite->invisible = FALSE; + } +} From 11dd5fa23f44a6666a43b1f8ad5a2cb264117460 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 31 Jul 2019 15:08:46 -0400 Subject: [PATCH 34/38] finish title_screen; frlg split in sub_8079730 --- asm/title_screen.s | 525 --------------------------------------------- ld_script.txt | 1 - src/title_screen.c | 199 ++++++++++++++++- 3 files changed, 198 insertions(+), 527 deletions(-) delete mode 100644 asm/title_screen.s diff --git a/asm/title_screen.s b/asm/title_screen.s deleted file mode 100644 index 686ecbbcd..000000000 --- a/asm/title_screen.s +++ /dev/null @@ -1,525 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80797AC -sub_80797AC: @ 80797AC - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - adds r5, r1, 0 - mov r8, r2 - adds r7, r3, 0 - ldr r0, [sp, 0x18] - cmp r0, 0 - beq _080797C8 - ldr r0, _080797C4 @ =gUnknown_83BFB04 - b _080797CA - .align 2, 0 -_080797C4: .4byte gUnknown_83BFB04 -_080797C8: - ldr r0, _08079828 @ =gUnknown_83BFB1C -_080797CA: - lsls r1, r4, 16 - asrs r1, 16 - lsls r2, r5, 16 - asrs r2, 16 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _08079834 - ldr r0, _0807982C @ =gSprites - mov r12, r0 - lsls r0, r1, 4 - adds r0, r1 - lsls r6, r0, 2 - mov r1, r12 - adds r2, r6, r1 - lsls r0, r4, 4 - movs r1, 0 - strh r0, [r2, 0x2E] - mov r0, r8 - strh r0, [r2, 0x30] - lsls r0, r5, 4 - strh r0, [r2, 0x32] - strh r7, [r2, 0x34] - strh r1, [r2, 0x36] - mov r3, r8 - muls r3, r7 - adds r0, r3, 0 - cmp r3, 0 - bge _0807980C - adds r0, 0xF -_0807980C: - asrs r0, 4 - lsls r0, 4 - subs r0, r3, r0 - strh r0, [r2, 0x38] - mov r1, sp - ldrh r1, [r1, 0x18] - strh r1, [r2, 0x3A] - mov r0, r12 - adds r0, 0x1C - adds r0, r6, r0 - ldr r1, _08079830 @ =sub_8079730 - str r1, [r0] - movs r0, 0x1 - b _08079836 - .align 2, 0 -_08079828: .4byte gUnknown_83BFB1C -_0807982C: .4byte gSprites -_08079830: .4byte sub_8079730 -_08079834: - movs r0, 0 -_08079836: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80797AC - - thumb_func_start sub_8079840 -sub_8079840: @ 8079840 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08079868 @ =gTasks+0x8 - adds r6, r0, r1 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _0807986C - cmp r0, 0x1 - beq _08079884 - b _0807998A - .align 2, 0 -_08079868: .4byte gTasks+0x8 -_0807986C: - ldr r2, _08079880 @ =0x00007878 - adds r0, r5, 0 - movs r1, 0x3 - bl sub_807999C - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - b _0807998A - .align 2, 0 -_08079880: .4byte 0x00007878 -_08079884: - ldrh r0, [r6, 0x2] - adds r0, 0x1 - strh r0, [r6, 0x2] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x4 - ldrsh r1, [r6, r2] - cmp r0, r1 - blt _0807998A - movs r0, 0 - strh r0, [r6, 0x2] - adds r0, r5, 0 - movs r1, 0x3 - bl sub_80799B4 - movs r0, 0x12 - strh r0, [r6, 0x4] - adds r0, r5, 0 - movs r1, 0x3 - bl sub_80799B4 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsrs r1, 16 - subs r1, 0x2 - mov r8, r1 - adds r0, r5, 0 - movs r1, 0x3 - bl sub_80799B4 - lsls r0, 16 - movs r1, 0xE0 - lsls r1, 11 - ands r1, r0 - lsrs r1, 16 - adds r7, r1, 0 - subs r7, 0x10 - adds r0, r5, 0 - movs r1, 0x3 - bl sub_80799B4 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - adds r0, 0x74 - mov r9, r0 - adds r0, r5, 0 - movs r1, 0x3 - bl sub_80799B4 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF0 - bl __umodsi3 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r5, 0 - movs r1, 0x3 - bl sub_80799B4 - movs r2, 0 - lsls r0, 16 - movs r1, 0xF0 - lsls r1, 12 - ands r1, r0 - lsrs r1, 16 - cmp r1, 0x7 - bls _0807991C - movs r2, 0x1 -_0807991C: - str r2, [sp] - adds r0, r4, 0 - mov r1, r9 - mov r2, r8 - adds r3, r7, 0 - bl sub_80797AC - movs r4, 0 -_0807992C: - ldr r1, _08079998 @ =gUnknown_83BFBD4 - adds r1, r4, r1 - movs r2, 0xA - ldrsh r0, [r6, r2] - ldrb r1, [r1] - adds r0, r1 - movs r1, 0x1 - str r1, [sp] - mov r1, r9 - mov r2, r8 - adds r3, r7, 0 - bl sub_80797AC - adds r0, r5, 0 - movs r1, 0x3 - bl sub_80799B4 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsrs r1, 16 - subs r1, 0x2 - mov r8, r1 - adds r0, r5, 0 - movs r1, 0x3 - bl sub_80799B4 - lsls r0, 16 - movs r1, 0xE0 - lsls r1, 11 - ands r1, r0 - lsrs r1, 16 - adds r7, r1, 0 - subs r7, 0x10 - adds r4, 0x1 - cmp r4, 0xE - ble _0807992C - ldrh r0, [r6, 0xA] - adds r0, 0x1 - strh r0, [r6, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _0807998A - movs r0, 0 - strh r0, [r6, 0xA] -_0807998A: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08079998: .4byte gUnknown_83BFBD4 - thumb_func_end sub_8079840 - - thumb_func_start sub_807999C -sub_807999C: @ 807999C - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 16 - lsrs r2, 16 - bl SetWordTaskArg - pop {r0} - bx r0 - thumb_func_end sub_807999C - - thumb_func_start sub_80799B4 -sub_80799B4: @ 80799B4 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl GetWordTaskArg - adds r6, r0, 0 - ldr r0, _080799E8 @ =0x41c64e6d - muls r0, r6 - ldr r1, _080799EC @ =0x00006073 - adds r6, r0, r1 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl SetWordTaskArg - lsrs r0, r6, 16 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080799E8: .4byte 0x41c64e6d -_080799EC: .4byte 0x00006073 - thumb_func_end sub_80799B4 - - thumb_func_start sub_80799F0 -sub_80799F0: @ 80799F0 - push {lr} - ldr r0, _08079A0C @ =gUnknown_83BFB3C - movs r1, 0x18 - movs r2, 0x90 - movs r3, 0 - bl CreateSprite - movs r0, 0x2 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08079A0C: .4byte gUnknown_83BFB3C - thumb_func_end sub_80799F0 - - thumb_func_start sub_8079A10 -sub_8079A10: @ 8079A10 - push {lr} - cmp r0, 0 - beq _08079A38 - movs r0, 0x2 - bl IndexOfSpritePaletteTag - adds r1, r0, 0 - lsls r1, 24 - ldr r0, _08079A34 @ =gUnknown_8EAE488 - lsrs r1, 4 - movs r2, 0x80 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - movs r2, 0x20 - bl LoadPalette - b _08079A3C - .align 2, 0 -_08079A34: .4byte gUnknown_8EAE488 -_08079A38: - bl sub_80799F0 -_08079A3C: - pop {r0} - bx r0 - thumb_func_end sub_8079A10 - - thumb_func_start sub_8079A40 -sub_8079A40: @ 8079A40 - push {r4,lr} - ldr r0, _08079A7C @ =gUnknown_83BFB5C - movs r1, 0x20 - negs r1, r1 - movs r2, 0x1B - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - adds r4, r1, 0 - cmp r1, 0x40 - beq _08079A74 - ldr r3, _08079A80 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r1, r0, r1 - ldr r2, _08079A84 @ =sub_8079AD8 - str r2, [r1] - adds r0, r3 - movs r1, 0x87 - lsls r1, 2 - strh r1, [r0, 0x30] -_08079A74: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08079A7C: .4byte gUnknown_83BFB5C -_08079A80: .4byte gSprites -_08079A84: .4byte sub_8079AD8 - thumb_func_end sub_8079A40 - - thumb_func_start sub_8079A88 -sub_8079A88: @ 8079A88 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _08079AA0 - ldr r0, _08079AA4 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x32] -_08079AA0: - pop {r0} - bx r0 - .align 2, 0 -_08079AA4: .4byte gSprites - thumb_func_end sub_8079A88 - - thumb_func_start sub_8079AA8 -sub_8079AA8: @ 8079AA8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - bne _08079AB6 - movs r0, 0 - b _08079ACE -_08079AB6: - ldr r1, _08079AD4 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r2, 0x2E - ldrsh r1, [r0, r2] - movs r0, 0x2 - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 -_08079ACE: - pop {r1} - bx r1 - .align 2, 0 -_08079AD4: .4byte gSprites - thumb_func_end sub_8079AA8 - - thumb_func_start sub_8079AD8 -sub_8079AD8: @ 8079AD8 - push {lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0x1 - beq _08079B24 - cmp r0, 0x1 - bgt _08079B74 - cmp r0, 0 - bne _08079B74 - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r0, 0 - beq _08079B04 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x2 - strh r0, [r2, 0x2E] -_08079B04: - ldrh r0, [r2, 0x30] - subs r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _08079B74 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r3] - movs r0, 0x1 - strh r0, [r2, 0x2E] - b _08079B74 -_08079B24: - ldrh r0, [r2, 0x20] - adds r0, 0x9 - strh r0, [r2, 0x20] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x43 - bne _08079B38 - ldrh r0, [r2, 0x22] - subs r0, 0x7 - strh r0, [r2, 0x22] -_08079B38: - movs r0, 0x20 - ldrsh r1, [r2, r0] - cmp r1, 0x94 - bne _08079B46 - ldrh r0, [r2, 0x22] - adds r0, 0x7 - strh r0, [r2, 0x22] -_08079B46: - movs r0, 0x88 - lsls r0, 1 - cmp r1, r0 - ble _08079B74 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x32 - ldrsh r1, [r2, r0] - cmp r1, 0 - beq _08079B68 - movs r0, 0x2 - strh r0, [r2, 0x2E] - b _08079B74 -_08079B68: - ldr r0, _08079B78 @ =0x0000ffe0 - strh r0, [r2, 0x20] - movs r0, 0x87 - lsls r0, 2 - strh r0, [r2, 0x30] - strh r1, [r2, 0x2E] -_08079B74: - pop {r0} - bx r0 - .align 2, 0 -_08079B78: .4byte 0x0000ffe0 - thumb_func_end sub_8079AD8 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 48e59a76a..682d7d123 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -116,7 +116,6 @@ SECTIONS { asm/reshow_battle_screen.o(.text); asm/battle_anim_status_effects.o(.text); src/title_screen.o(.text); - asm/title_screen.o(.text); src/reset_save_heap.o(.text); asm/field_weather.o(.text); asm/field_weather_effects.o(.text); diff --git a/src/title_screen.c b/src/title_screen.c index d4c861841..492f0e378 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -63,11 +63,14 @@ void sub_80796CC(void); void sub_80796E8(void); void sub_8079708(void); void sub_8079840(u8 taskId); +void sub_807999C(u8 taskId, u8 field, u16 seed); +u16 sub_80799B4(u8 taskId, u8 field); u32 sub_80799F0(void); -void sub_8079A10(s16 a0); +void sub_8079A10(bool32 a0); u8 sub_8079A40(void); void sub_8079A88(u8 spriteId); bool32 sub_8079AA8(u8 spriteId); +void sub_8079AD8(struct Sprite * sprite); // bg3 const u8 gUnknown_83BF58C[] = INCBIN_U8("data/graphics/title_screen/unk_83BF58C.4bpp.lz"); @@ -846,6 +849,7 @@ void sub_8079730(struct Sprite * sprite) DestroySprite(sprite); return; } +#if defined(FIRERED) if (sprite->animEnded) { DestroySprite(sprite); @@ -856,4 +860,197 @@ void sub_8079730(struct Sprite * sprite) StartSpriteAnim(sprite, 0); sprite->invisible = FALSE; } +#elif defined(LEAFGREEN) + if (!data[5]) + { + s32 r2; + s32 r1; + data[6]++; + r2 = data[1] * data[6]; + r1 = data[6] * data[3]; + r2 = (r2 * r2) >> 4; + r1 = (r1 * r1) >> 4; + if (r2 + r1 >= 0x510) + data[5] = TRUE; + } +#endif +} + +bool32 sub_80797AC(s32 x, s32 y, s32 xspeed, s32 yspeed, bool32 templateId) +{ + u8 spriteId; + if (templateId) + { + spriteId = CreateSprite(&gUnknown_83BFB04, x, y, 0); + } + else + { + spriteId = CreateSprite(&gUnknown_83BFB1C, x, y, 0); + } + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = x << 4; + gSprites[spriteId].data[1] = xspeed; + gSprites[spriteId].data[2] = y << 4; + gSprites[spriteId].data[3] = yspeed; + gSprites[spriteId].data[4] = 0; + gSprites[spriteId].data[5] = (xspeed * yspeed) % 16; + gSprites[spriteId].data[6] = templateId; + gSprites[spriteId].callback = sub_8079730; + return TRUE; + } + return FALSE; +} + +void sub_8079840(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + s32 x, y, xspeed, yspeed, templateId; + s32 i; + + switch (data[0]) + { + case 0: + sub_807999C(taskId, 3, 0x7878); + data[0]++; + break; + case 1: + data[1]++; + if (data[1] >= data[2]) + { + data[1] = 0; + sub_80799B4(taskId, 3); + data[2] = 18; + xspeed = (sub_80799B4(taskId, 3) % 4) - 2; + yspeed = (sub_80799B4(taskId, 3) % 8) - 16; + y = (sub_80799B4(taskId, 3) % 3) + 0x74; + x = sub_80799B4(taskId, 3) % 240; + sub_80797AC( + x, + y, + xspeed, + yspeed, + (sub_80799B4(taskId, 3) % 16) < 8 ? 0 : 1 + ); + for (i = 0; i < 15; i++) + { + sub_80797AC( + data[5] + gUnknown_83BFBD4[i], + y, + xspeed, + yspeed, + 1 + ); + xspeed = (sub_80799B4(taskId, 3) % 4) - 2; + yspeed = (sub_80799B4(taskId, 3) % 8) - 16; + } + data[5]++; + if (data[5] > 3) + data[5] = 0; + } + } +} + +void sub_807999C(u8 taskId, u8 field, u16 seed) +{ + SetWordTaskArg(taskId, field, seed); +} + +u16 sub_80799B4(u8 taskId, u8 field) +{ + u32 rngval; + + rngval = GetWordTaskArg(taskId, field); + rngval = rngval * 1103515245 + 24691; + SetWordTaskArg(taskId, field, rngval); + return rngval >> 16; +} + +u32 sub_80799F0(void) +{ + CreateSprite(&gUnknown_83BFB3C, 0x18, 0x90, 0); + return IndexOfSpritePaletteTag(2); +} + +void sub_8079A10(bool32 mode) +{ + u32 palIdx; + + if (mode) + { + palIdx = IndexOfSpritePaletteTag(2); + LoadPalette(gUnknown_8EAE488, palIdx * 16 + 0x100, 0x20); + } + else + sub_80799F0(); +} + +u8 sub_8079A40(void) +{ + u8 spriteId = CreateSprite(&gUnknown_83BFB5C, -0x20, 0x1B, 1); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].callback = sub_8079AD8; + gSprites[spriteId].data[1] = 540; + } + return spriteId; +} + +void sub_8079A88(u8 spriteId) +{ + if (spriteId != MAX_SPRITES) + gSprites[spriteId].data[2] = TRUE; +} + +bool32 sub_8079AA8(u8 spriteId) +{ + if (spriteId != MAX_SPRITES) + return gSprites[spriteId].data[0] ^ 2 ? TRUE : FALSE; + else + return FALSE; +} + +void sub_8079AD8(struct Sprite * sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (sprite->data[2]) + { + sprite->invisible = TRUE; + sprite->data[0] = 2; + } + sprite->data[1]--; + if (sprite->data[1] == 0) + { + sprite->invisible = FALSE; + sprite->data[0] = 1; + } + break; + case 1: + sprite->pos1.x += 9; + if (sprite->pos1.x == 67) + { + sprite->pos1.y -= 7; + } + if (sprite->pos1.x == 148) + { + sprite->pos1.y += 7; + } + if (sprite->pos1.x > 272) + { + sprite->invisible = TRUE; + if (sprite->data[2]) + sprite->data[0] = 2; + else + { + sprite->pos1.x = -0x20; + sprite->data[1] = 540; + sprite->data[0] = 0; + } + } + break; + case 2: + break; + } } From e2c552f1df045719652e1d91fb6a6ad67d00a045 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 31 Jul 2019 16:11:20 -0400 Subject: [PATCH 35/38] Static decl/def; gfx dump --- asm/clear_save_data_screen.s | 6 +- data/graphics.s | 20 +- data/graphics/title_screen/unk_83bf64c.png | Bin 188 -> 188 bytes data/graphics/title_screen/unk_83bf77c.pal | 19 ++ data/graphics/title_screen/unk_83bf79c.png | Bin 539 -> 539 bytes graphics/title_screen/unk_8eab6c4.pal | 259 +++++++++++++++++ graphics/title_screen/unk_8eab8c4.png | Bin 0 -> 5614 bytes graphics/title_screen/unk_8ead390.bin | Bin 0 -> 1280 bytes graphics/title_screen/unk_8ead5e8.pal | 19 ++ graphics/title_screen/unk_8ead608.png | Bin 0 -> 1802 bytes graphics/title_screen/unk_8eadee4.bin | Bin 0 -> 1280 bytes graphics/title_screen/unk_8eae094.pal | 19 ++ graphics/title_screen/unk_8eae0b4.png | Bin 0 -> 597 bytes graphics/title_screen/unk_8eae374.bin | Bin 0 -> 1280 bytes graphics/title_screen/unk_8eae488.pal | 19 ++ graphics/title_screen/unk_8eae4a8.png | Bin 148 -> 148 bytes graphics_file_rules.mk | 4 + include/clear_save_data_screen.h | 2 +- src/title_screen.c | 312 ++++++++++----------- sym_ewram.txt | 5 +- 20 files changed, 512 insertions(+), 172 deletions(-) create mode 100644 data/graphics/title_screen/unk_83bf77c.pal create mode 100644 graphics/title_screen/unk_8eab6c4.pal create mode 100644 graphics/title_screen/unk_8eab8c4.png create mode 100644 graphics/title_screen/unk_8ead390.bin create mode 100644 graphics/title_screen/unk_8ead5e8.pal create mode 100644 graphics/title_screen/unk_8ead608.png create mode 100644 graphics/title_screen/unk_8eadee4.bin create mode 100644 graphics/title_screen/unk_8eae094.pal create mode 100644 graphics/title_screen/unk_8eae0b4.png create mode 100644 graphics/title_screen/unk_8eae374.bin create mode 100644 graphics/title_screen/unk_8eae488.pal diff --git a/asm/clear_save_data_screen.s b/asm/clear_save_data_screen.s index f6cd11410..5d9d2ac03 100644 --- a/asm/clear_save_data_screen.s +++ b/asm/clear_save_data_screen.s @@ -26,8 +26,8 @@ sub_80F558C: @ 80F558C bx r0 thumb_func_end sub_80F558C - thumb_func_start sub_80F55A0 -sub_80F55A0: @ 80F55A0 + thumb_func_start CB2_SaveClearScreen_Init +CB2_SaveClearScreen_Init: @ 80F55A0 push {r4,lr} ldr r4, _080F55D0 @ =gUnknown_203AB54 movs r0, 0x4 @@ -52,7 +52,7 @@ sub_80F55A0: @ 80F55A0 _080F55D0: .4byte gUnknown_203AB54 _080F55D4: .4byte sub_80F55DC _080F55D8: .4byte sub_80F5574 - thumb_func_end sub_80F55A0 + thumb_func_end CB2_SaveClearScreen_Init thumb_func_start sub_80F55DC sub_80F55DC: @ 80F55DC diff --git a/data/graphics.s b/data/graphics.s index f62234529..189826238 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16352,34 +16352,34 @@ gUnknown_8EAAB98:: @ 8EAAB98 gUnknown_8EAB30C:: @ 8EAB30C .incbin "baserom.gba", 0xEAB30C, 0x3B8 + @ title_screen gUnknown_8EAB6C4:: @ 8EAB6C4 - .incbin "baserom.gba", 0xEAB6C4, 0x200 @UNKNOWN + .incbin "graphics/title_screen/unk_8eab6c4.gbapal" gUnknown_8EAB8C4:: @ 8EAB8C4 - .incbin "baserom.gba", 0xEAB8C4, 0x1ACC + .incbin "graphics/title_screen/unk_8eab8c4.8bpp.lz" gUnknown_8EAD390:: @ 8EAD390 - .incbin "baserom.gba", 0xEAD390, 0x258 + .incbin "graphics/title_screen/unk_8ead390.bin.lz" gUnknown_8EAD5E8:: @ 8EAD5E8 - .incbin "baserom.gba", 0xEAD5E8, 0x20 @UNKNOWN + .incbin "graphics/title_screen/unk_8ead5e8.gbapal" gUnknown_8EAD608:: @ 8EAD608 - .incbin "baserom.gba", 0xEAD608, 0x8DC + .incbin "graphics/title_screen/unk_8ead608.4bpp.lz" gUnknown_8EADEE4:: @ 8EADEE4 - .incbin "baserom.gba", 0xEADEE4, 0x1B0 + .incbin "graphics/title_screen/unk_8eadee4.bin.lz" gUnknown_8EAE094:: @ 8EAE094 - .incbin "baserom.gba", 0xEAE094, 0x20 @UNKNOWN + .incbin "graphics/title_screen/unk_8eae094.gbapal" gUnknown_8EAE0B4:: @ 8EAE0B4 - .incbin "baserom.gba", 0xEAE0B4, 0x2C0 + .incbin "graphics/title_screen/unk_8eae0b4.4bpp.lz" gUnknown_8EAE374:: @ 8EAE374 - .incbin "baserom.gba", 0xEAE374, 0x114 + .incbin "graphics/title_screen/unk_8eae374.bin.lz" - @ title_screen gUnknown_8EAE488:: @ 8EAE488 .incbin "graphics/title_screen/unk_8eae488.gbapal" diff --git a/data/graphics/title_screen/unk_83bf64c.png b/data/graphics/title_screen/unk_83bf64c.png index 3c9b7630d1d497bf1d2494ea565af24d8554cbf3..260e00a01b6ed780516a948a570892bb1d2b5ce9 100644 GIT binary patch delta 59 zcmV-B0L1^i0lWc_EHS;s&7`EPdxL}3)!zU1O8?a$q=Ojtq!@!*5NcvtK{+YrQV`84 R0E-9+_V)IWRv3SgU0hFoM F@c;`O7sdbp diff --git a/data/graphics/title_screen/unk_83bf77c.pal b/data/graphics/title_screen/unk_83bf77c.pal new file mode 100644 index 000000000..815547f37 --- /dev/null +++ b/data/graphics/title_screen/unk_83bf77c.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +82 205 180 +0 0 0 +255 255 189 +255 246 139 +255 213 65 +255 172 0 +197 164 49 +115 180 139 +98 189 156 +90 197 164 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +82 205 180 diff --git a/data/graphics/title_screen/unk_83bf79c.png b/data/graphics/title_screen/unk_83bf79c.png index 246252bed50ec3b06752c410ddd0361c5a5037cb..66a57a89977e1f0516885e69090b64fad25688a0 100644 GIT binary patch delta 60 zcmbQuGMihF!Q G`xpThMi>eJ delta 60 zcmV-C0K@;A1e*kqEHS;s&7`EPdxL}3)!zU1O8?a$q=Ojtq!@!*5NcvtK{+YrQV`84 S0E-9+_V)IWRv3S=UA_UWr5#rQ diff --git a/graphics/title_screen/unk_8eab6c4.pal b/graphics/title_screen/unk_8eab6c4.pal new file mode 100644 index 000000000..48c794761 --- /dev/null +++ b/graphics/title_screen/unk_8eab6c4.pal @@ -0,0 +1,259 @@ +JASC-PAL +0100 +256 +0 255 41 +0 0 0 +255 238 16 +246 222 41 +246 238 246 +255 246 24 +246 246 41 +246 246 246 +246 255 255 +255 246 255 +32 0 255 +106 65 156 +32 0 238 +246 222 24 +246 222 32 +255 238 41 +255 238 49 +255 255 16 +255 255 24 +255 255 246 +255 255 255 +123 106 156 +24 41 32 +32 32 74 +32 0 230 +115 82 164 +16 0 246 +106 82 172 +246 238 32 +255 230 24 +246 230 41 +246 238 41 +246 230 49 +246 238 49 +255 246 32 +255 246 41 +255 255 32 +255 255 41 +32 24 32 +32 32 41 +197 156 41 +197 164 41 +156 156 156 +164 164 156 +172 172 172 +180 189 180 +41 0 230 +189 189 189 +197 189 189 +197 197 197 +205 205 213 +8 8 197 +246 230 24 +246 230 32 +255 238 24 +255 238 32 +32 32 32 +32 41 32 +41 32 32 +41 41 32 +49 32 32 +49 41 32 +41 32 41 +49 32 41 +24 41 41 +32 32 90 +16 24 106 +24 32 98 +41 32 82 +41 32 98 +41 41 82 +41 41 98 +0 0 115 +8 8 131 +32 24 115 +32 24 131 +32 41 115 +41 41 115 +32 41 131 +41 41 131 +57 41 41 +57 41 49 +57 49 41 +57 57 57 +65 41 41 +74 41 41 +65 57 57 +74 57 57 +57 74 74 +65 65 74 +82 74 82 +82 57 131 +82 90 82 +90 90 90 +90 98 98 +98 98 106 +115 106 106 +131 98 115 +139 98 106 +139 115 98 +180 139 57 +172 131 65 +156 115 90 +156 131 82 +115 82 139 +123 82 131 +115 98 131 +131 98 123 +115 123 123 +123 123 131 +139 131 139 +148 123 131 +205 172 24 +213 172 16 +205 164 32 +213 172 32 +222 189 24 +230 189 16 +213 189 32 +222 189 32 +230 205 24 +230 205 32 +230 213 32 +238 222 32 +180 148 57 +189 156 49 +180 148 74 +180 172 90 +156 148 123 +139 148 139 +164 148 115 +172 156 106 +197 156 49 +205 180 49 +197 172 90 +205 189 82 +222 205 49 +230 222 49 +205 205 74 +222 213 65 +49 0 230 +213 213 213 +222 230 230 +222 230 230 +255 0 246 +255 0 255 +16 8 197 +16 16 189 +32 16 164 +41 16 164 +32 16 180 +41 16 189 +8 8 205 +8 16 205 +24 8 213 +24 16 205 +41 8 213 +41 16 213 +49 8 213 +57 16 213 +16 8 230 +24 8 230 +24 16 230 +24 24 230 +8 8 246 +8 16 246 +16 8 246 +16 16 246 +32 8 230 +32 16 230 +32 8 238 +32 8 246 +41 8 230 +41 16 230 +49 16 230 +49 8 238 +32 32 156 +24 32 172 +41 41 156 +41 32 164 +74 49 180 +82 49 172 +82 65 164 +90 74 164 +24 32 189 +57 41 189 +41 32 213 +57 32 213 +74 41 189 +90 57 189 +74 49 197 +74 41 205 +49 49 49 +197 197 197 +189 189 189 +156 156 156 +172 172 172 +139 139 139 +115 115 115 +255 255 255 +16 16 16 +98 98 98 +246 246 246 +82 82 82 +230 230 230 +213 213 213 +0 0 0 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/title_screen/unk_8eab8c4.png b/graphics/title_screen/unk_8eab8c4.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9cd68f18f2081d419d547e253a9c45f4f36752 GIT binary patch literal 5614 zcmd5=i96Ka_kRzAAv9yDLGdQyZ69POgR&$vM1~@1LDsQ`EJH{iRJItqERl$hNW)0B zGLa0*PKK=WX&K5gzxnbik^z=}vGz6lD`M)6SMbWHH zwhP;d-9QKeF(8QfpABI^2+igo9*OorgPstGgV-9vL69c^5D*9=h$et&A_x&6hyX%F z2qNl1kRF85!$5j^dRPduh9In-o;90TTVt`-IBOhEkBGzL@N9Up;Y0B8A$k(hJbls# zp3P}`bwn(QfF}`g1YBAaj!5t%5|6%^D)(^~lzk9&3n-!C=_=VkeHBN_HO8($WY70=qDf zNF@9C*mZ=%;pp`L?f-ve#$vJc|0@&;s1*Q!P>q#2)-i&#;p%GV>XP&EN%h)Q!pUa) zQgLm5?%hj@6=QEcMHZR+h2OV75Xh3p@cPJnd1ypm099d&cb+*i5IpvzemG~Cr?9_# zhdZONbJTZ(&Hd<}{8w8B-A zp;&s;6PuHT+%IbTUM|(2kZA1`%wvv^tMR}>-Z&}Te0DL+zB;?9#^-5>qso|%i{2)G z98S>N9vc18Ci5Xl$qcra5y$#ZXYJrc2B2SjE_-+=Sf%)xmv5xp!~p)@zOglpFMDxO zkvOj~FkxR)ndY1X+a8a)F#C7%@)~3EoJq;aDBhgD6ldS-x`Q_|GB+5Gr+A%|0Mi=0 zih!X4h`#k5FP*I-j|uN!mf50rSY5AdJ^fv01^@g-jQX7URq060Iuvn9QPzd=dF3j1 zY>8Y(UbmFr-a7^E=T)EkY zupZCG!J=xfS{r!RM!Bi9i<8DT-HWZ}aFDgVzZTFHTX^6!8wk!Fjt+&}&+*ypeA@OD zSRmOsVdOOKBTi;(#V2H5vrge&uBdSPg9ieKHv-+vJ`fK&U1FnFQ1H@lYyP^~>f8H^m023bP&A`D?&eK3c-$`O zqQ>&<&Nyd0G39W?$3jMIqhAMs2zT73wF{uj*X|CC9qvTNi=XJ2`Ua9Q@3IZc?E9M* zoUb+WTsA@fs7{pYjdIegsM9+NK+gom_&Elmz6ci|w$DVG?6c;0fV10UR&x!T2Ruvu z$;J`*7U9*MD75rZW{Bi#iIahP{Axeir$hiln;e3bxlH%1OhX>vOH>)&0U-{4HR6Zo zxbtur+)daF+_u^N2engxG?4}kxbzmflVv%Fl4HfiHMTN6x?|cDqDqH2u|n~0@SBg$ zR0hvoK>-R_P15-rm%P0I^#@r5mw&6Zf4l!E5?Vd|U~5x=xDjJGkqPPs6~zi4H=K&R z{iJDgc>DnP@^8Klf}>|zN1Qt*E7$am*px{Xw+u>3;MjWEMru5T`F3Yw;xp>y7qIZ2 z+)J@vu_qCyYJNXF8+ZSkj3ZacnX?y?gL8VsqTU&%FRFy0-bAlGG=K|PZD!Sil3koYwvzwE{LdlqTVx{`3KDuBmUm+=fRw=otvHe)b> zz?ocq{BV;4oi}NLQ+k*0j!jNU2D(v3u@^;NtK&Y zdCUIZp?9Wv*TN=FZnHO1_UU?T;N1f;v;Hwtg+gp{@9oF!iT?h$AN~_dZ)mf#M#kJL zMi07qXB6yuuDmhXA{ok-uSe_Z*3D`yoR|!AolU%cE5ez-tSpf4XnqOkP12eaIakBq z>S|v_*33~})~tCSB>IzH9UR?qXl@T{{XPAWB0o_FnM#vqvVI6{0*_a>kqA*w7{?QMXKXucp zuO)`uEe~9(5kpLU5!mD2rhyN@8#Fjqp$oklqEefS(5y^KJ2a3`h8hM zETTM7DA0eh9AGp!7&pMJ;vD{}N-4-aEP>q~M7RVt#_}sZqzYBs7RyEWJGml>aoOaTujN8s^DfwUWL9ic0V{>yQ+f=l(5gDv4fgfOO&&C0 zcwz@6=6QvVYhE@uZx;BGyYSO$V%R99^Nm9^=Wo^v@9#+@;Yq;6#QV)kt*FrBp`g}; zJg@4$=lP8&)BN+Jx0^pKj^DzG%x?E^;LT#Ea96E!?Jsze%(+d37r#ML=xoW<~d zoho;D=K8VE{M*5=Jnm05#{8TjC++Fe)5lR$G7f&vSjrv-br zYXU$J$+*06I@3vZCt`kf+2ZEZv~4?;pThJxBZTSQD zEWJlakcT1v0RBE8q9b@lr2mYuIk`l?P`d1XwmxTVSo*YFFOOJ*?HLz)|!}O-U*5Wm_rxR7eFLy8j z%GJPykqAoutX%gT7WLJy`go2-VQF!hG7IDpPOFut{8;8TP0PajyCXOFf`|NYOR zE>mBnAkIYL$Yesn)o^9vs`@$Ju~=K-5-?NQ3b5pKug4FJYka@0;S61zuYUAM#|oAf z@}u<&+Rb9F+n9%V1+KuTkmk`h3f4?MWQG;AC0b~1-GK8{ct??)M@!S&!AT1{TgQY3 z1mlzKn6!cGrBf^7ktcPHh2Y&^UiIOUGcT!u9fzhf!s?GEU*~n}lNajn@HM%khQ!ai z@tvIyE;UArX6e=B_0l`vzd!T6EIcvLfah<#TuEaYhmQQs=83`n_s^hk;(}RJ8lHiZFmrfw!DAr~U{Pnz&{3Tj{bx)d) z9TRek(y4bE{_T3p^R>lh@wyWsB{Q(^LDj2^<6jpeweuJ^|lWn&Ci!rXVEnU6<*682egjN+Iu-yGXp3HOS1^WBHcnGkHY)i3>c z{b`Dn%hr)&f;UeaXBdU_mlvLo7=`D%wySeGZmWjXqLOEI5A`KD3nZBke=U<)(!P@k zp`I0TV;cVe*p&g1XXuOy@peO>AHR@6wRNw!>ydS)9q;#$qRx06Neo z#{a@Z*P^Oejj4<8S1Q^_XZ-xQwJ58lruA3tlLcq!KbzP1+ zs<`%d*|JqiqDzhU1=tEJwP>2ZJp}&X?Badvc#P8EQ>2GtXj~|({pzDM%sdB>bN8K5 zc0XT+Cj+i;L52hE#aGo=f7knCo`PDQUlXQG8k6(I?j>L{3NH-pJ%)qt@@L!N7b#)A z^@f}if~8#*xDtuw5m6@ziAwjvxpdShK@4a)lYopsB?Km0pkHvRBdoZ%kHL*DbIY|pqb6rbA!Rf@wBH0e_&-#9kGsY@95)RfcXNOd> zq%Q)kr-El}DN7uH2-^M-Y?Aa9)(5tvLMs7x;_HLZQBF=S?TkJyO*>IL%vhyDLlPs^ zq3iL5IbEPjcSlno-0;a0cTyA|^WtHu&A8|A0<&UHqI^@$ zT|$R#D!cj>;ff>*lbg$rD@1zg6Y5-DQsgNcevZYGfkRb{^Al-X0qUxCWy&Lg3aE4T z;^f`#4`DZ-t^|%`H{CL@I9;?mpTV_q~ zgSN$JTTgg<8x4v1qVI1|Py!JT=M1&}xuKd`oyzbRo z>iJjhkY{pH;17T^julDU)ew)2y}zbBU0%EVT#~@Qu2#8nZfkYOkdl`1gn`D!Pg(Y6z<_;~mW$m+E~8*i1XhQdYFn-ytbdn(cV#Vu$ek+E~uw2qwA$&La<>i|B*9s)Z#O_-jdV%by|xych>$r8F*iUcb@yd+?njj}}}LOSQg(52Pm@F)SW39C;`r`+%4pq*${q`ScOvs%-4@Z->rS@iu ze!Ld~#xprOw;tD0*GU=Wd$#S`sJ-CY-I$Hp$#yT_6o0b@365AQo4D0>qJDP%j*80l mVZqtlaaVq4X6EMPEX+vb*!ePtKkQE{0I)h^YhG{ak??<1a1^uv literal 0 HcmV?d00001 diff --git a/graphics/title_screen/unk_8ead390.bin b/graphics/title_screen/unk_8ead390.bin new file mode 100644 index 0000000000000000000000000000000000000000..2987c5cfa5183e27f56463f24737a7b4b7bea77d GIT binary patch literal 1280 zcmeIuMOT#p6a~<2U|<&**exn126lIMCw7b7-Gv=spkiPT0N|mfGs5tDgEAh}BRd zjm2rAsb-pMp=A))NoQSj)lGLj^wdjlee~5&e*+9O$Y4VZHO%lpKgncMOf}7PiDsB- zmf7Z*Yo7TQSZI;OmRKq&&~LEOCYx=s)i&Ghu+uKP?XlNB`yFu5A;}Iq66nu5=e!Hj zTy)80>8`lyn(H#$aMLZf-Er4F_XGU{4?XhO6Hh&p>A4rOy!6UzZ@l%+dmnuCNp_(B z?28;r0Km7E|Z+`-P=rLX^t+mlsf_B>Lpkrtpb{}D+QAQhM xtZ~MhU}9JkT3BYe6;@hhwKdjSXMJcKc0cNv<4!o~l+(^gks8+gFZ|md_zQqST)hAQ literal 0 HcmV?d00001 diff --git a/graphics/title_screen/unk_8ead5e8.pal b/graphics/title_screen/unk_8ead5e8.pal new file mode 100644 index 000000000..0832e8306 --- /dev/null +++ b/graphics/title_screen/unk_8ead5e8.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 255 +0 0 0 +82 205 180 +255 0 255 +255 0 255 +255 0 255 +32 0 0 +49 0 0 +65 0 0 +90 0 0 +123 32 0 +156 32 0 +180 49 0 +205 65 0 +222 90 0 +230 123 0 diff --git a/graphics/title_screen/unk_8ead608.png b/graphics/title_screen/unk_8ead608.png new file mode 100644 index 0000000000000000000000000000000000000000..a0baa966ca4ba2497951f17bd0310656486d1592 GIT binary patch literal 1802 zcmV+l2le=gP)z?+004U+0GuEIv@rn9K>*%b0OorD(K<`G000J+ zNkl6vyWj11@U+M4xb?sH#saCQ{1@2BTI!ncc-!eG2T5HN82oa*map zY@(bR89d?KROZ+=tzV?0(`(n-N8`do$3BC>`4pAiS74c5F!OV%&7T(Q%w-Mxw^RtJUfbA`hL0G^712 z+Q<&VgMds&tq`Q5lp05unE;HZ8+lgL2GD-CvDC^2Aon+y8eZmekg~HW5neVr1qp{F z_VR$-l=y0^o=;D*2j&ggZsbahzaCAesbshSJ;(mF8)=0C11|$K0CnoaPhuBp3B`Kk z$!;2>q9Lgc^1CpTbNaNTq4;VqKALz)HafYG{FWdXj`Vam7Ahi7wVhLX7Hrl3+)gc_RUtfln9^ zN7!U#$FO053N;ylQV-gkA~THPB0%dPk@B$+;DeDo!ZYi+?IIZ|(Kc5hTcsvRJSKp4 z8W*U`1){dWL)GP)D@nkR05>Zjj4!q3QfB~46aZZnyqgCGaPt7w6@ddGdP6qW7O)h& zlwAWrj0~t+1!+Ps&`JTZv_LBZ+&oZS>#RII+$ZC4pC2gUL*!t=eG;YVw1?FT8eCo} zxp)~c_IlLkJ|AMG?qJA(2~q;95&#nP#b7a{T_lqCwnr{Ex=(=83f~^wM$Jr@V+2kM z=jZr_vukCbG+>F778+Q=>#=14lZS8YSVLe40DYSlCo!&P_{f}50RmnZfNBw_;3-BY zObY02V8$nHm$z}X0En@Xpc)YXz1KQf-vdC6((W(U`XC3)Mk?1^0uoac1M~`a07QyF zbhQvIaW;dZ90+65BA^#yBnD8`2Y>+ps^udfQeb|b1K?Vv0^b`lKxuvrFE1=q1}NX_ zJG?dwPzm)yor@5F$>&1=qza@3$X-aylpbGwO4c{>NX(8D9N7oC)dHa}^?0?K>-k_L zpje*Q&jVryt~2ux-p6M%cu_>^2>RI;+oPiDf!_oGPYri(88`eAV1h#K#CdjK1Sf~Y@tR+vS*|^9=@k(;O@Ry-Q8%| z08&Rr!gaDifL^1$!CiJePM#1KcaycE3+c?J+sPB4Fvoei4A=!1fNxV%BOKZ54>HOt1bZEK03aP z0Nl(B@cN_9fOZ4d@x?X1A0Ph$T`TVV0eH&_rb>pn`A<0l>@Tep`Up;EvDr?qALGx-{Tasdb!Xn3_J zWNR#`k7gF?MI2>-)1_-Db+GLDXc*Ws_+GF;L-M}ctKe?%+?wDmlLB_^O?W? z&&}6`N~^72@ee|&Hnmn8UV{Qr)B02I1$^R>P)TL1t607*qoM6N<$fqQ!`HNnGd~UluPxq9j)&OK~-D;hI!wu1l98Q6Ot`PFnck9vXmDl?8dt<;`gN8zNhK(5Y&U<6VeK29tREWYy(`L+?GjG8s zpM9|y!bdDw_SH8lR;~H&ho7PRFY7k^wrR_@9lQR7@_+q1ncwr@z5|D$^x1#h5rCa5 AfB*mh literal 0 HcmV?d00001 diff --git a/graphics/title_screen/unk_8eae094.pal b/graphics/title_screen/unk_8eae094.pal new file mode 100644 index 000000000..f7f14d45d --- /dev/null +++ b/graphics/title_screen/unk_8eae094.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 139 +0 0 0 +123 123 123 +197 197 197 +222 222 222 +255 255 255 +0 0 0 +123 123 123 +197 197 197 +222 222 222 +255 255 255 +65 180 164 +139 0 0 +172 24 0 +213 57 0 +255 90 0 diff --git a/graphics/title_screen/unk_8eae0b4.png b/graphics/title_screen/unk_8eae0b4.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4e6901590cefe72d88629dbb18229dc4008680 GIT binary patch literal 597 zcmV-b0;>IqP)if&VQbas`pn03Q^<&$)oCTfi-Vbp=RnAS+P__lG*t#_o(C z35h}^Hv73p8GJIfN4DqKJ9#s9{{{Y$!2Cuefr(90<)6v;ex?Tbl={*jBcbPR3%_G* z-om4Z)G9=3eQXk_s_F-zfHGm5fXd4Nr4lv?oYem4aXKl0?QxTU*7~3`t+d~Lb|6*+ zmYyyIFb&fWUMONsfYzEv0ab{ohj_h$k8%8EI(&f9W;vn`Ufwpzdd^_jb;S$jf`ZVX=6pK?ZH~E01O7&o`db;46OZWI4OZrfk*UB5I{DQZa_4lCkagQ za2rWQ{x0a+y!d}t2Y>Y*ye|O5M?M(lMm{f@SY%u_;<^PB44=m9-XUJ_?y$2<&3K j7T^gKbv*r;uL%4Be~-qp_@Nol00000NkvXXu0mjfVU!U< literal 0 HcmV?d00001 diff --git a/graphics/title_screen/unk_8eae374.bin b/graphics/title_screen/unk_8eae374.bin new file mode 100644 index 0000000000000000000000000000000000000000..9bab57cc0507d2b5174996cf4e7c0a47feca2813 GIT binary patch literal 1280 zcmeIxH*P{<5Jh1!m}J5u*p&$;+L-7hd;i<{mVgj?uci2rXwWI9xknmZ%|xOg+QLW) z<4+j>?%W%=T?1j)e@(litEcbDvx84xzWw+O{Lf1pw#1}mWaZ=)6qP(EtEj4}d(_ZO ilCg1`F9`!fBV(^7re@|AmfpNu`LMRJwX;w1XY&YkAGs0$ literal 0 HcmV?d00001 diff --git a/graphics/title_screen/unk_8eae488.pal b/graphics/title_screen/unk_8eae488.pal new file mode 100644 index 000000000..7a29ab72c --- /dev/null +++ b/graphics/title_screen/unk_8eae488.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +82 205 180 +189 197 205 +164 164 172 +123 131 131 +213 213 222 +255 246 74 +255 213 32 +164 131 24 +246 164 24 +131 90 16 +106 98 90 +65 57 41 +230 82 16 +205 41 0 +139 8 8 +246 246 246 diff --git a/graphics/title_screen/unk_8eae4a8.png b/graphics/title_screen/unk_8eae4a8.png index d98563aef5cbdc5ea9bd4bc032f0e3d309567c5f..682c224323a44b4aca64afba080b8004fee8aa5c 100644 GIT binary patch delta 66 zcmbQjIE7KMGr-TCmrII^fq{Y7)59eQNGkxb0}C^d>|BsBccNmn1k)!51{Mbf#>@YW RR|16@JYD@<);T3K0RXQy4!i&W delta 66 zcmbQjIE7KMGr-TCmrII^fq{Y7)59eQNOLeSFfy<(16eh!T8R@Cqa~Uqax$<2MXzp- RP6G-vc)I$ztaD0e0swhX495Tf diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index dfe15881a..df3a46c59 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -22,6 +22,7 @@ TEXTWINDOWGFXDIR := graphics/text_window TEACHYTVGFXDIR := graphics/teachy_tv SSANNEGFXDIR := graphics/ss_anne ITEMPCGFXDIR := graphics/item_pc +TITLESCREENGFXDIR := graphics/title_screen types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark contest_types := cool beauty cute smart tough @@ -486,3 +487,6 @@ $(SSANNEGFXDIR)/unk_8479A38.4bpp: %.4bpp: %.png $(ITEMPCGFXDIR)/unk_8E85090.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 82 + +$(TITLESCREENGFXDIR)/unk_8ead608.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 135 diff --git a/include/clear_save_data_screen.h b/include/clear_save_data_screen.h index 7edf7d03e..d5d2665ae 100644 --- a/include/clear_save_data_screen.h +++ b/include/clear_save_data_screen.h @@ -1,6 +1,6 @@ #ifndef GUARD_CLEAR_SAVE_DATA_SCREEN_H #define GUARD_CLEAR_SAVE_DATA_SCREEN_H -void sub_80F55A0(void); +void CB2_SaveClearScreen_Init(void); #endif //GUARD_CLEAR_SAVE_DATA_SCREEN_H diff --git a/src/title_screen.c b/src/title_screen.c index 492f0e378..3e801c72f 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -38,51 +38,51 @@ enum TitleScreenScene #define TITLE_SPECIES SPECIES_VENUSAUR #endif -EWRAM_DATA u8 gUnknown_2037F30 = 0; +static EWRAM_DATA u8 sTitleScreenTimerTaskId = 0; -void sub_8078B34(void); -void sub_8078B9C(void); -void sub_8078BB4(void); -void sub_8078BEC(u8 taskId); -void sub_8078C24(u8 taskId); -void sub_8078C90(s16 * data, u8 a1); -void sub_8078C9C(s16 * data); -void sub_8078D24(s16 * data); -void sub_8078DA4(s16 * data); -void sub_8078FC4(s16 * data); -void sub_80790A0(void); -void sub_80790CC(s16 * data); -void sub_80791C0(s16 * data); -void sub_80792C8(u8 taskId); -void sub_807941C(u8 taskId); -void sub_8079528(void); -void sub_8079550(s16 a0); -void sub_8079620(void); -void sub_8079648(void); -void sub_80796CC(void); -void sub_80796E8(void); -void sub_8079708(void); -void sub_8079840(u8 taskId); -void sub_807999C(u8 taskId, u8 field, u16 seed); -u16 sub_80799B4(u8 taskId, u8 field); -u32 sub_80799F0(void); -void sub_8079A10(bool32 a0); -u8 sub_8079A40(void); -void sub_8079A88(u8 spriteId); -bool32 sub_8079AA8(u8 spriteId); -void sub_8079AD8(struct Sprite * sprite); +static void ResetGpuRegs(void); +static void CB2_TitleScreenRun(void); +static void VBlankCB(void); +static void Task_TitleScreenTimer(u8 taskId); +static void Task_TitleScreenMain(u8 taskId); +static void SetTitleScreenScene(s16 * data, u8 a1); +static void SetTitleScreenScene_Init(s16 * data); +static void SetTitleScreenScene_FlashSprite(s16 * data); +static void SetTitleScreenScene_FadeIn(s16 * data); +static void SetTitleScreenScene_Run(s16 * data); +static void SetGpuRegsForTitleScreenRun(void); +static void SetTitleScreenScene_Restart(s16 * data); +static void SetTitleScreenScene_Cry(s16 * data); +static void Task_TitleScreen_SlideWin0(u8 taskId); +static void Task_TitleScreen_PaletteSomething(u8 taskId); +static void SignalEndTitleScreenPaletteSomethingTask(void); +static void UpdateScanlineEffectRegBuffer(s16 a0); +static void ScheduleStopScanlineEffect(void); +static void LoadMainTitleScreenPalsAndResetBgs(void); +static void CB2_FadeOutTransitionToSaveClearScreen(void); +static void CB2_FadeOutTransitionToBerryFix(void); +static void LoadSpriteGfxAndPals(void); +static void Task_FlameOrLeafSpawner(u8 taskId); +static void TitleScreen_srand(u8 taskId, u8 field, u16 seed); +static u16 TitleScreen_rand(u8 taskId, u8 field); +static u32 CreateBlankSprite(void); +static void sub_8079A10(bool32 a0); +static u8 CreateSlashSprite(void); +static void ScheduleHideSlashSprite(u8 spriteId); +static bool32 IsSlashSpriteHidden(u8 spriteId); +static void SpriteCallback_Slash(struct Sprite * sprite); // bg3 -const u8 gUnknown_83BF58C[] = INCBIN_U8("data/graphics/title_screen/unk_83BF58C.4bpp.lz"); -const u8 gUnknown_83BF5A8[] = INCBIN_U8("data/graphics/title_screen/unk_83BF5A8.bin.lz"); +static const u8 gUnknown_83BF58C[] = INCBIN_U8("data/graphics/title_screen/unk_83BF58C.4bpp.lz"); +static const u8 gUnknown_83BF5A8[] = INCBIN_U8("data/graphics/title_screen/unk_83BF5A8.bin.lz"); //sprites -const u8 gUnknown_83BF64C[] = INCBIN_U8("data/graphics/title_screen/unk_83bf64c.4bpp.lz"); -const u16 gUnknown_83BF77C[] = INCBIN_U16("data/graphics/title_screen/unk_83bf77c.gbapal"); -const u8 gUnknown_83BF79C[] = INCBIN_U8("data/graphics/title_screen/unk_83bf79c.4bpp.lz"); -const u8 gUnknown_83BFA14[] = INCBIN_U8("data/graphics/title_screen/unk_83bfa14.4bpp.lz"); +static const u8 gUnknown_83BF64C[] = INCBIN_U8("data/graphics/title_screen/unk_83bf64c.4bpp.lz"); +static const u16 gUnknown_83BF77C[] = INCBIN_U16("data/graphics/title_screen/unk_83bf77c.gbapal"); +static const u8 gUnknown_83BF79C[] = INCBIN_U8("data/graphics/title_screen/unk_83bf79c.4bpp.lz"); +static const u8 gUnknown_83BFA14[] = INCBIN_U8("data/graphics/title_screen/unk_83bfa14.4bpp.lz"); -const struct OamData gOamData_83BFAB4 = { +static const struct OamData gOamData_83BFAB4 = { .objMode = ST_OAM_OBJ_NORMAL, .shape = ST_OAM_SQUARE, .size = ST_OAM_SIZE_1, @@ -91,7 +91,7 @@ const struct OamData gOamData_83BFAB4 = { .paletteNum = 0 }; -const union AnimCmd gSpriteAnims_83BFABC[] = { +static const union AnimCmd gSpriteAnims_83BFABC[] = { ANIMCMD_FRAME(0x00, 3), ANIMCMD_FRAME(0x04, 6), ANIMCMD_FRAME(0x08, 6), @@ -105,7 +105,7 @@ const union AnimCmd gSpriteAnims_83BFABC[] = { ANIMCMD_END }; -const union AnimCmd gSpriteAnims_83BFAE8[] = { +static const union AnimCmd gSpriteAnims_83BFAE8[] = { ANIMCMD_FRAME(0x18, 6), ANIMCMD_FRAME(0x1c, 6), ANIMCMD_FRAME(0x20, 6), @@ -113,12 +113,12 @@ const union AnimCmd gSpriteAnims_83BFAE8[] = { ANIMCMD_END }; -const union AnimCmd *const gSpriteAnimTable_83BFAFC[] = { +static const union AnimCmd *const gSpriteAnimTable_83BFAFC[] = { gSpriteAnims_83BFABC, gSpriteAnims_83BFAE8 }; -const struct SpriteTemplate gUnknown_83BFB04 = { +static const struct SpriteTemplate sSpriteTemplate_FlameOrLeaf_State1 = { .tileTag = 0, .paletteTag = 0, .oam = &gOamData_83BFAB4, @@ -128,7 +128,7 @@ const struct SpriteTemplate gUnknown_83BFB04 = { .callback = SpriteCallbackDummy }; -const struct SpriteTemplate gUnknown_83BFB1C = { +static const struct SpriteTemplate sSpriteTemplate_FlameOrLeaf_State0 = { .tileTag = 1, .paletteTag = 0, .oam = &gOamData_83BFAB4, @@ -138,7 +138,7 @@ const struct SpriteTemplate gUnknown_83BFB1C = { .callback = SpriteCallbackDummy }; -const struct OamData gOamData_83BFB34 = { +static const struct OamData gOamData_83BFB34 = { .objMode = ST_OAM_OBJ_NORMAL, .shape = ST_OAM_V_RECTANGLE, .size = ST_OAM_SIZE_3, @@ -147,7 +147,7 @@ const struct OamData gOamData_83BFB34 = { .paletteNum = 0 }; -const struct SpriteTemplate gUnknown_83BFB3C = { +static const struct SpriteTemplate sUnknownEmptySprite = { .tileTag = 2, .paletteTag = 2, .oam = &gOamData_83BFB34, @@ -157,7 +157,7 @@ const struct SpriteTemplate gUnknown_83BFB3C = { .callback = SpriteCallbackDummy }; -const struct OamData gOamData_83BFB54 = { +static const struct OamData gOamData_83BFB54 = { .objMode = ST_OAM_OBJ_WINDOW, .shape = ST_OAM_SQUARE, .size = ST_OAM_SIZE_3, @@ -166,7 +166,7 @@ const struct OamData gOamData_83BFB54 = { .paletteNum = 0 }; -const struct SpriteTemplate gUnknown_83BFB5C = { +static const struct SpriteTemplate sSlashSpriteTemplate = { .tileTag = 3, .paletteTag = 2, .oam = &gOamData_83BFB54, @@ -176,7 +176,7 @@ const struct SpriteTemplate gUnknown_83BFB5C = { .callback = SpriteCallbackDummy }; -const struct BgTemplate gUnknown_83BFB74[] = { +static const struct BgTemplate gUnknown_83BFB74[] = { { .bg = 0, .charBaseIndex = 0, @@ -212,29 +212,29 @@ const struct BgTemplate gUnknown_83BFB74[] = { } }; -void (*const gUnknown_83BFB84[])(s16 * data) = { - sub_8078C9C, - sub_8078D24, - sub_8078DA4, - sub_8078FC4, - sub_80790CC, - sub_80791C0 +static void (*const gUnknown_83BFB84[])(s16 * data) = { + SetTitleScreenScene_Init, + SetTitleScreenScene_FlashSprite, + SetTitleScreenScene_FadeIn, + SetTitleScreenScene_Run, + SetTitleScreenScene_Restart, + SetTitleScreenScene_Cry }; -const struct CompressedSpriteSheet gUnknown_83BFB9C[] = { +static const struct CompressedSpriteSheet gUnknown_83BFB9C[] = { {(const void *)gUnknown_83BF79C, 0x500, 0}, {(const void *)gUnknown_83BFA14, 0x500, 1}, {(const void *)gUnknown_8EAE4A8, 0x400, 2}, {(const void *)gUnknown_83BF64C, 0x800, 3} }; -const struct SpritePalette gUnknown_83BFBBC[] = { +static const struct SpritePalette gUnknown_83BFBBC[] = { {gUnknown_83BF77C, 0}, {gUnknown_8EAE488, 2}, {} }; -const u8 gUnknown_83BFBD4[] = { +static const u8 gUnknown_83BFBD4[] = { 0x04, 0x10, 0x1a, 0x20, 0x30, 0xc8, 0xd8, 0xe0, 0xe8, 0x3c, 0x4c, 0x5c, 0x6c, 0x80, 0x90 }; @@ -253,14 +253,14 @@ void CB2_InitTitleScreen(void) ResetSpriteData(); FreeAllSpritePalettes(); ResetPaletteFade(); - sub_8078B34(); + ResetGpuRegs(); DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); DmaFill32(3, 0, (void *)OAM, OAM_SIZE); DmaFill16(3, 0, (void *)PLTT, PLTT_SIZE); ResetBgsAndClearDma3BusyFlags(FALSE); InitBgsFromTemplates(0, gUnknown_83BFB74, NELEMS(gUnknown_83BFB74)); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); - gUnknown_2037F30 = 0xFF; + sTitleScreenTimerTaskId = 0xFF; break; case 1: LoadPalette(gUnknown_8EAB6C4, 0, 0x1A0); @@ -275,16 +275,16 @@ void CB2_InitTitleScreen(void) LoadPalette(gUnknown_8EAE094, 0xE0, 0x20); DecompressAndCopyTileDataToVram(3, gUnknown_83BF58C, 0, 0, 0); DecompressAndCopyTileDataToVram(3, gUnknown_83BF5A8, 0, 0, 1); - sub_8079708(); + LoadSpriteGfxAndPals(); break; case 2: if (!FreeTempTileDataBuffersIfPossible()) { BlendPalettes(0x0000FFFF, 0x10, RGB_BLACK); - CreateTask(sub_8078C24, 4); - gUnknown_2037F30 = CreateTask(sub_8078BEC, 2); - SetVBlankCallback(sub_8078BB4); - SetMainCallback2(sub_8078B9C); + CreateTask(Task_TitleScreenMain, 4); + sTitleScreenTimerTaskId = CreateTask(Task_TitleScreenTimer, 2); + SetVBlankCallback(VBlankCB); + SetMainCallback2(CB2_TitleScreenRun); m4aSongNumStart(BGM_FRLG_TITLE); } return; @@ -292,7 +292,7 @@ void CB2_InitTitleScreen(void) gMain.state++; } -void sub_8078B34(void) +static void ResetGpuRegs(void) { SetGpuReg(REG_OFFSET_DISPCNT, 0); SetGpuReg(REG_OFFSET_BLDCNT, 0); @@ -308,7 +308,7 @@ void sub_8078B34(void) SetGpuReg(REG_OFFSET_BG3VOFS, 0); } -void sub_8078B9C(void) +static void CB2_TitleScreenRun(void) { RunTasks(); AnimateSprites(); @@ -316,39 +316,39 @@ void sub_8078B9C(void) UpdatePaletteFade(); } -void sub_8078BB4(void) +static void VBlankCB(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); ScanlineEffect_InitHBlankDmaTransfer(); - if (gUnknown_2037F30 != 0xFF) - gTasks[gUnknown_2037F30].data[0]++; + if (sTitleScreenTimerTaskId != 0xFF) + gTasks[sTitleScreenTimerTaskId].data[0]++; } -void sub_8078BEC(u8 taskId) +static void Task_TitleScreenTimer(u8 taskId) { s16 * data = gTasks[taskId].data; if (data[0] >= 2700) { - gUnknown_2037F30 = 0xFF; + sTitleScreenTimerTaskId = 0xFF; DestroyTask(taskId); } } -void sub_8078C24(u8 taskId) +static void Task_TitleScreenMain(u8 taskId) { s16 * data = gTasks[taskId].data; if (JOY_NEW(A_BUTTON | B_BUTTON | START_BUTTON) && data[0] != 3 && data[0] != 4 && data[0] != 5) { - sub_8079620(); - sub_8079648(); + ScheduleStopScanlineEffect(); + LoadMainTitleScreenPalsAndResetBgs(); sub_8079A10(data[5]); - sub_8078C90(data, TITLESCREENSCENE_RUN); + SetTitleScreenScene(data, TITLESCREENSCENE_RUN); } else { @@ -356,13 +356,13 @@ void sub_8078C24(u8 taskId) } } -void sub_8078C90(s16 * data, u8 a1) +static void SetTitleScreenScene(s16 * data, u8 a1) { data[1] = 0; data[0] = a1; } -void sub_8078C9C(s16 * data) +static void SetTitleScreenScene_Init(s16 * data) { struct ScanlineEffectParams params; @@ -381,10 +381,10 @@ void sub_8078C9C(s16 * data) ScanlineEffect_SetParams(params); - sub_8078C90(data, TITLESCREENSCENE_FLASHSPRITE); + SetTitleScreenScene(data, TITLESCREENSCENE_FLASHSPRITE); } -void sub_8078D24(s16 * data) +static void SetTitleScreenScene_FlashSprite(s16 * data) { switch (data[1]) { @@ -392,12 +392,12 @@ void sub_8078D24(s16 * data) SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_LIGHTEN); SetGpuReg(REG_OFFSET_BLDY, 0); data[2] = 0x80; - sub_8079550(0x80); + UpdateScanlineEffectRegBuffer(data[2]); data[1]++; break; case 1: data[2] -= 4; - sub_8079550(data[2]); + UpdateScanlineEffectRegBuffer(data[2]); if (data[2] < 0) { gScanlineEffect.state = 3; @@ -407,11 +407,11 @@ void sub_8078D24(s16 * data) case 2: SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDY, 0); - sub_8078C90(data, TITLESCREENSCENE_FADEIN); + SetTitleScreenScene(data, TITLESCREENSCENE_FADEIN); } } -void sub_8078DA4(s16 * data) +static void SetTitleScreenScene_FadeIn(s16 * data) { u32 r4; switch (data[1]) @@ -440,7 +440,7 @@ void sub_8078DA4(s16 * data) data[2]++; if (data[2] > 36) { - CreateTask(sub_80792C8, 3); + CreateTask(Task_TitleScreen_SlideWin0, 3); sub_80717A8(0x2000, -4, 0x01, 0x10, RGB(30, 30, 31), 0, 0); data[2] = 0; data[1]++; @@ -482,7 +482,7 @@ void sub_8078DA4(s16 * data) if (!sub_807185C(0)) { data[5] = 1; - r4 = (0x10000 << sub_80799F0()) | 0x00001FFF; + r4 = (0x10000 << CreateBlankSprite()) | 0x00001FFF; BlendPalettes(r4, 0x10, RGB(30, 30, 31)); BeginNormalPaletteFade(r4, 1, 0x10, 0x00, RGB(30, 30, 31)); ShowBg(0); @@ -494,7 +494,7 @@ void sub_8078DA4(s16 * data) case 9: if (!sub_807185C(0) && !gPaletteFade.active) { - sub_8078C90(data, TITLESCREENSCENE_RUN); + SetTitleScreenScene(data, TITLESCREENSCENE_RUN); } break; } @@ -503,45 +503,45 @@ void sub_8078DA4(s16 * data) #define KEYSTROKE_DELSAVE (B_BUTTON | SELECT_BUTTON | DPAD_UP) #define KEYSTROKE_BERRY_FIX (B_BUTTON | SELECT_BUTTON) -void sub_8078FC4(s16 * data) +static void SetTitleScreenScene_Run(s16 * data) { switch (data[1]) { case 0: HelpSystem_SetSomeVariable2(1); - CreateTask(sub_807941C, 0); - CreateTask(sub_8079840, 5); - sub_80790A0(); - data[6] = sub_8079A40(); + CreateTask(Task_TitleScreen_PaletteSomething, 0); + CreateTask(Task_FlameOrLeafSpawner, 5); + SetGpuRegsForTitleScreenRun(); + data[6] = CreateSlashSprite(); sub_812B484(); data[1]++; // fallthrough case 1: if (JOY_HELD(KEYSTROKE_DELSAVE) == KEYSTROKE_DELSAVE) { - sub_8079A88(data[6]); - DestroyTask(FindTaskIdByFunc(sub_8078C24)); - SetMainCallback2(sub_80796CC); + ScheduleHideSlashSprite(data[6]); + DestroyTask(FindTaskIdByFunc(Task_TitleScreenMain)); + SetMainCallback2(CB2_FadeOutTransitionToSaveClearScreen); } else if (JOY_HELD(KEYSTROKE_BERRY_FIX) == KEYSTROKE_BERRY_FIX) { - sub_8079A88(data[6]); - DestroyTask(FindTaskIdByFunc(sub_8078C24)); - SetMainCallback2(sub_80796E8); + ScheduleHideSlashSprite(data[6]); + DestroyTask(FindTaskIdByFunc(Task_TitleScreenMain)); + SetMainCallback2(CB2_FadeOutTransitionToBerryFix); } else if (JOY_NEW(A_BUTTON | START_BUTTON)) { - sub_8078C90(data, TITLESCREENSCENE_CRY); + SetTitleScreenScene(data, TITLESCREENSCENE_CRY); } - else if (!FuncIsActiveTask(sub_8078BEC)) + else if (!FuncIsActiveTask(Task_TitleScreenTimer)) { - sub_8078C90(data, TITLESCREENSCEEN_RESTART); + SetTitleScreenScene(data, TITLESCREENSCEEN_RESTART); } break; } } -void sub_80790A0(void) +static void SetGpuRegsForTitleScreenRun(void) { SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); SetGpuReg(REG_OFFSET_WINOUT, WIN_RANGE(0x3F, 0x1F)); @@ -549,27 +549,27 @@ void sub_80790A0(void) SetGpuReg(REG_OFFSET_BLDY, 13); } -void sub_80790CC(s16 * data) +static void SetTitleScreenScene_Restart(s16 * data) { switch (data[1]) { case 0: - sub_8079A88(data[6]); + ScheduleHideSlashSprite(data[6]); data[1]++; break; case 1: - if (!gPaletteFade.active && !sub_8079AA8(data[6])) + if (!gPaletteFade.active && !IsSlashSpriteHidden(data[6])) { FadeOutMapMusic(10); BeginNormalPaletteFade(0xFFFFFFFF, 3, 0, 0x10, RGB_BLACK); - sub_8079528(); + SignalEndTitleScreenPaletteSomethingTask(); data[1]++; } break; case 2: if (IsNotWaitingForBGMStop() && !gPaletteFade.active) { - DestroyTask(FindTaskIdByFunc(sub_807941C)); + DestroyTask(FindTaskIdByFunc(Task_TitleScreen_PaletteSomething)); data[2] = 0; data[1]++; } @@ -578,19 +578,19 @@ void sub_80790CC(s16 * data) data[2]++; if (data[2] >= 20) { - DestroyTask(FindTaskIdByFunc(sub_807941C)); + DestroyTask(FindTaskIdByFunc(Task_TitleScreen_PaletteSomething)); data[1]++; } break; case 4: sub_812B478(); - DestroyTask(FindTaskIdByFunc(sub_8078C24)); + DestroyTask(FindTaskIdByFunc(Task_TitleScreenMain)); SetMainCallback2(sub_80EC864); break; } } -void sub_80791C0(s16 * data) +static void SetTitleScreenScene_Cry(s16 * data) { switch (data[1]) { @@ -598,7 +598,7 @@ void sub_80791C0(s16 * data) if (!gPaletteFade.active) { PlayCry1(TITLE_SPECIES, 0); - sub_8079A88(data[6]); + ScheduleHideSlashSprite(data[6]); data[2] = 0; data[1]++; } @@ -606,10 +606,10 @@ void sub_80791C0(s16 * data) case 1: if (data[2] < 90) data[2]++; - else if (!sub_8079AA8(data[6])) + else if (!IsSlashSpriteHidden(data[6])) { BeginNormalPaletteFade(0x0FFFFFFF, 0, 0, 0x10, RGB_WHITE); - sub_8079528(); + SignalEndTitleScreenPaletteSomethingTask(); FadeOutBGM(4); data[1]++; } @@ -627,13 +627,13 @@ void sub_80791C0(s16 * data) SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); InitHeap(gHeap, HEAP_SIZE); SetMainCallback2(sub_800C300); - DestroyTask(FindTaskIdByFunc(sub_8078C24)); + DestroyTask(FindTaskIdByFunc(Task_TitleScreenMain)); } break; } } -void sub_80792C8(u8 taskId) +static void Task_TitleScreen_SlideWin0(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -692,7 +692,7 @@ void sub_80792C8(u8 taskId) } } -void sub_807941C(u8 taskId) +static void Task_TitleScreen_PaletteSomething(u8 taskId) { s16 * data = gTasks[taskId].data; s32 i; @@ -736,13 +736,13 @@ void sub_807941C(u8 taskId) } } -void sub_8079528(void) +static void SignalEndTitleScreenPaletteSomethingTask(void) { - u8 taskId = FindTaskIdByFunc(sub_807941C); + u8 taskId = FindTaskIdByFunc(Task_TitleScreen_PaletteSomething); gTasks[taskId].data[15] = TRUE; } -void sub_8079550(s16 a0) +static void UpdateScanlineEffectRegBuffer(s16 a0) { s32 i; @@ -778,7 +778,7 @@ void sub_8079550(s16 a0) } } -void sub_8079620(void) +static void ScheduleStopScanlineEffect(void) { if (gScanlineEffect.state) gScanlineEffect.state = 3; @@ -786,11 +786,11 @@ void sub_8079620(void) SetGpuReg(REG_OFFSET_BLDY, 0); } -void sub_8079648(void) +static void LoadMainTitleScreenPalsAndResetBgs(void) { u8 taskId; - taskId = FindTaskIdByFunc(sub_80792C8); + taskId = FindTaskIdByFunc(Task_TitleScreen_SlideWin0); if (taskId != 0xFF) DestroyTask(taskId); @@ -808,13 +808,13 @@ void sub_8079648(void) ShowBg(3); } -void sub_80796CC(void) +static void CB2_FadeOutTransitionToSaveClearScreen(void) { if (!UpdatePaletteFade()) - SetMainCallback2(sub_80F55A0); + SetMainCallback2(CB2_SaveClearScreen_Init); } -void sub_80796E8(void) +static void CB2_FadeOutTransitionToBerryFix(void) { if (!UpdatePaletteFade()) { @@ -823,7 +823,7 @@ void sub_80796E8(void) } } -void sub_8079708(void) +static void LoadSpriteGfxAndPals(void) { s32 i; @@ -832,7 +832,7 @@ void sub_8079708(void) LoadSpritePalettes(gUnknown_83BFBBC); } -void sub_8079730(struct Sprite * sprite) +static void SpriteCallback_TitleScreenFlameOrLeaf(struct Sprite * sprite) { s16 * data = sprite->data; sprite->data[0] -= data[1]; @@ -876,16 +876,16 @@ void sub_8079730(struct Sprite * sprite) #endif } -bool32 sub_80797AC(s32 x, s32 y, s32 xspeed, s32 yspeed, bool32 templateId) +static bool32 CreateFlameOrLeafSprite(s32 x, s32 y, s32 xspeed, s32 yspeed, bool32 templateId) { u8 spriteId; if (templateId) { - spriteId = CreateSprite(&gUnknown_83BFB04, x, y, 0); + spriteId = CreateSprite(&sSpriteTemplate_FlameOrLeaf_State1, x, y, 0); } else { - spriteId = CreateSprite(&gUnknown_83BFB1C, x, y, 0); + spriteId = CreateSprite(&sSpriteTemplate_FlameOrLeaf_State0, x, y, 0); } if (spriteId != MAX_SPRITES) { @@ -896,13 +896,13 @@ bool32 sub_80797AC(s32 x, s32 y, s32 xspeed, s32 yspeed, bool32 templateId) gSprites[spriteId].data[4] = 0; gSprites[spriteId].data[5] = (xspeed * yspeed) % 16; gSprites[spriteId].data[6] = templateId; - gSprites[spriteId].callback = sub_8079730; + gSprites[spriteId].callback = SpriteCallback_TitleScreenFlameOrLeaf; return TRUE; } return FALSE; } -void sub_8079840(u8 taskId) +static void Task_FlameOrLeafSpawner(u8 taskId) { s16 * data = gTasks[taskId].data; s32 x, y, xspeed, yspeed, templateId; @@ -911,7 +911,7 @@ void sub_8079840(u8 taskId) switch (data[0]) { case 0: - sub_807999C(taskId, 3, 0x7878); + TitleScreen_srand(taskId, 3, 30840); data[0]++; break; case 1: @@ -919,30 +919,30 @@ void sub_8079840(u8 taskId) if (data[1] >= data[2]) { data[1] = 0; - sub_80799B4(taskId, 3); + TitleScreen_rand(taskId, 3); data[2] = 18; - xspeed = (sub_80799B4(taskId, 3) % 4) - 2; - yspeed = (sub_80799B4(taskId, 3) % 8) - 16; - y = (sub_80799B4(taskId, 3) % 3) + 0x74; - x = sub_80799B4(taskId, 3) % 240; - sub_80797AC( + xspeed = (TitleScreen_rand(taskId, 3) % 4) - 2; + yspeed = (TitleScreen_rand(taskId, 3) % 8) - 16; + y = (TitleScreen_rand(taskId, 3) % 3) + 0x74; + x = TitleScreen_rand(taskId, 3) % 240; + CreateFlameOrLeafSprite( x, y, xspeed, yspeed, - (sub_80799B4(taskId, 3) % 16) < 8 ? 0 : 1 + (TitleScreen_rand(taskId, 3) % 16) < 8 ? 0 : 1 ); for (i = 0; i < 15; i++) { - sub_80797AC( + CreateFlameOrLeafSprite( data[5] + gUnknown_83BFBD4[i], y, xspeed, yspeed, 1 ); - xspeed = (sub_80799B4(taskId, 3) % 4) - 2; - yspeed = (sub_80799B4(taskId, 3) % 8) - 16; + xspeed = (TitleScreen_rand(taskId, 3) % 4) - 2; + yspeed = (TitleScreen_rand(taskId, 3) % 8) - 16; } data[5]++; if (data[5] > 3) @@ -951,12 +951,12 @@ void sub_8079840(u8 taskId) } } -void sub_807999C(u8 taskId, u8 field, u16 seed) +static void TitleScreen_srand(u8 taskId, u8 field, u16 seed) { SetWordTaskArg(taskId, field, seed); } -u16 sub_80799B4(u8 taskId, u8 field) +static u16 TitleScreen_rand(u8 taskId, u8 field) { u32 rngval; @@ -966,13 +966,13 @@ u16 sub_80799B4(u8 taskId, u8 field) return rngval >> 16; } -u32 sub_80799F0(void) +static u32 CreateBlankSprite(void) { - CreateSprite(&gUnknown_83BFB3C, 0x18, 0x90, 0); + CreateSprite(&sUnknownEmptySprite, 0x18, 0x90, 0); return IndexOfSpritePaletteTag(2); } -void sub_8079A10(bool32 mode) +static void sub_8079A10(bool32 mode) { u32 palIdx; @@ -982,27 +982,27 @@ void sub_8079A10(bool32 mode) LoadPalette(gUnknown_8EAE488, palIdx * 16 + 0x100, 0x20); } else - sub_80799F0(); + CreateBlankSprite(); } -u8 sub_8079A40(void) +static u8 CreateSlashSprite(void) { - u8 spriteId = CreateSprite(&gUnknown_83BFB5C, -0x20, 0x1B, 1); + u8 spriteId = CreateSprite(&sSlashSpriteTemplate, -0x20, 0x1B, 1); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].callback = sub_8079AD8; + gSprites[spriteId].callback = SpriteCallback_Slash; gSprites[spriteId].data[1] = 540; } return spriteId; } -void sub_8079A88(u8 spriteId) +static void ScheduleHideSlashSprite(u8 spriteId) { if (spriteId != MAX_SPRITES) gSprites[spriteId].data[2] = TRUE; } -bool32 sub_8079AA8(u8 spriteId) +static bool32 IsSlashSpriteHidden(u8 spriteId) { if (spriteId != MAX_SPRITES) return gSprites[spriteId].data[0] ^ 2 ? TRUE : FALSE; @@ -1010,7 +1010,7 @@ bool32 sub_8079AA8(u8 spriteId) return FALSE; } -void sub_8079AD8(struct Sprite * sprite) +static void SpriteCallback_Slash(struct Sprite * sprite) { switch (sprite->data[0]) { diff --git a/sym_ewram.txt b/sym_ewram.txt index 3797720d5..c859d8eb9 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -769,9 +769,10 @@ gUnknown_2037F24: @ 2037F24 gUnknown_2037F28: @ 2037F28 .space 0x8 -gUnknown_2037F30: @ 2037F30 - .space 0x4 + .align 2 + .include "src/title_screen.o" + .align 2 gUnknown_2037F34: @ 2037F34 .space 0x200 From 6032159d1bc099d4ed112e5e387ebba1d35fe6a9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 31 Jul 2019 17:15:57 -0400 Subject: [PATCH 36/38] Name stuff --- data/graphics.s | 22 ++--- graphics/title_screen/unk_8ead608.png | Bin 1802 -> 1792 bytes include/graphics.h | 22 ++--- src/title_screen.c | 120 +++++++++++++------------- 4 files changed, 82 insertions(+), 82 deletions(-) diff --git a/data/graphics.s b/data/graphics.s index 189826238..4b00c1c4b 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16353,37 +16353,37 @@ gUnknown_8EAB30C:: @ 8EAB30C .incbin "baserom.gba", 0xEAB30C, 0x3B8 @ title_screen -gUnknown_8EAB6C4:: @ 8EAB6C4 +gGraphics_TitleScreen_PokemonFireRedLogoPals:: @ 8EAB6C4 .incbin "graphics/title_screen/unk_8eab6c4.gbapal" -gUnknown_8EAB8C4:: @ 8EAB8C4 +gGraphics_TitleScreen_PokemonFireRedLogoTiles:: @ 8EAB8C4 .incbin "graphics/title_screen/unk_8eab8c4.8bpp.lz" -gUnknown_8EAD390:: @ 8EAD390 +gGraphics_TitleScreen_PokemonFireRedLogoMap:: @ 8EAD390 .incbin "graphics/title_screen/unk_8ead390.bin.lz" -gUnknown_8EAD5E8:: @ 8EAD5E8 +gGraphics_TitleScreen_CharizardPals:: @ 8EAD5E8 .incbin "graphics/title_screen/unk_8ead5e8.gbapal" -gUnknown_8EAD608:: @ 8EAD608 +gGraphics_TitleScreen_CharizardTiles:: @ 8EAD608 .incbin "graphics/title_screen/unk_8ead608.4bpp.lz" -gUnknown_8EADEE4:: @ 8EADEE4 +gGraphics_TitleScreen_CharizardMap:: @ 8EADEE4 .incbin "graphics/title_screen/unk_8eadee4.bin.lz" -gUnknown_8EAE094:: @ 8EAE094 +gGraphics_TitleScreen_BackgroundPals:: @ 8EAE094 .incbin "graphics/title_screen/unk_8eae094.gbapal" -gUnknown_8EAE0B4:: @ 8EAE0B4 +gGraphics_TitleScreen_CopyrightPressStartTiles:: @ 8EAE0B4 .incbin "graphics/title_screen/unk_8eae0b4.4bpp.lz" -gUnknown_8EAE374:: @ 8EAE374 +gGraphics_TitleScreen_CopyrightPressStartMap:: @ 8EAE374 .incbin "graphics/title_screen/unk_8eae374.bin.lz" -gUnknown_8EAE488:: @ 8EAE488 +gGraphics_TitleScreen_FirePals:: @ 8EAE488 .incbin "graphics/title_screen/unk_8eae488.gbapal" -gUnknown_8EAE4A8:: @ 8EAE4A8 +gGraphics_TitleScreen_BlankObjTiles:: @ 8EAE4A8 .incbin "graphics/title_screen/unk_8eae4a8.4bpp.lz" gUnknown_8EAE528:: @ 8EAE528 diff --git a/graphics/title_screen/unk_8ead608.png b/graphics/title_screen/unk_8ead608.png index a0baa966ca4ba2497951f17bd0310656486d1592..c9a0dc8eb90dd4ff412fa28be1720a9ee325daad 100644 GIT binary patch delta 1751 zcmV;|1}OQ84uB3JiBL{Q4GJ0x0000DNk~Le0001B0001B1Oos701&on3y~o|e~U>( zK~z|U)tAq28b=hz=M)1jYX3w|I962ECl=dM%LxWst#UFui>>Aq*dc3jb718hD>>Oj zIW;nP!nvu;v29wR?R#%#c4vV~$+1tejh6S>@B1}B%-HAH%jNQ3sd(TudGU+*`F7x1 zsd*evJ&zZG-R19bOyH9uP?1uOf8r|;SO>sjFg0Bxkl6x&vNn+42&=LQ#2Bcx4G9)q z6?1?<=8%@LEfUdHvtz5Yi*aZE&5q|C8;N?&1-Qo<*VaCcH(rVM=qv|jP2O%=fY;Z9 zpcg!tOfrdR4k>sUz#kRz+>Mn)fxgHA1wbPQ+Q(Cy&vUj56^3R#5WJhke^gPBL?;LM zo|b^QnWO)UWu&;zdAF7U@39X#&>;!x_Pv@1_4K1s^hGO6q6lygC0^d^X3w5}w~F+~ zA$O8+0g(8HT`DsmGbtlU2BFy`a-idxBK>Fq70b+qc@jA=ni?RRz$v)KFZB01CIp%` zfg>#uS^qf#BkeB)w^_5je_Vo=TNP&epIDDL0Q6l~Ohk)ff>~-bEpS9JMc|kAX~Hoi z4fOjYfmySTmGHa~#x#~go(8ZW$zKCvG7;1bNP=-I0V9nP)xS>Fd?LVfeF#7Wlz<6m zFtIi!J>gHUb;_|Xtpq6`P>yk0ZA^uBV8FIo1U9Ky!Uv$OKaz3pe|WkE=zhpS4)BLv z>o0uX&Q@N8j@P;$TB3{nz?Ikltki)6Oosr-vlcFR3CFEdQ46G|2?jWg0g!bB1^}?4RjJV~5MR$( zi(O2?`GDDBe=9iPu5SvOYxfA3z@gTvdK817s^efMvk!i34C|hN2)L!$1r) zKxuvphZ{D^0#gm-5>f`D=jqyEK$S?%( z_%(1B!hN%Bgu&4z+#JC1CmTDw8jk^Mo&$_m>f(Lx65l+R!xMgLUfmIRo{{mwC2^eI zE>?rf<^8RK!RIPA626z43shtprV0SH!ZC)au=Vj=0x~xxij)jjv%%&4cqQo~Jhka| zT!P_~e>wpd=y!OzoZ(+ObZtR50D-xWZ{?Bn2H!)K;K>pQT;I50+k0z(uGTn}gTp{# zS;>696h3ryO+qJJ?j40a#~JK5Jas}ydH*~CyV33q#!QcQ4wzQ}KFZ{k#P_!`lXFYd zSSK&+k#vCISpoz~JcO|;pC>&F5}1dvNWCpYltAwwrZbNuZg7$i$RuE|x!ew*L^;WTMkb){tpB|QBmyW= zP8u4}j&EJZ*V@tF!&jG+eF4cf>}5sYi|!y6r9Qx~KxTk|iD>iW7n)Z9$}aF`X|CKB ze+V_u6!m=?R}3Y z6L6PEnP}ifFP#jqRvYVeg*hZRG%`F#|GOJ=odW-!OiHnf`gm0Pb*( zx9rgDbbD?j1q;$Y>WtUx4aW5OOuJC8Q50~jyntI{J$qiFv#IOkuqFUkO#JcfPR2@* zkD#I3E?^+PQMaGF*h`-6D)nvtEdNIk@6J%k t&-B#_>0|NuOMvpvU*yj875@Ki{{r)6aq~J5{-yu`002ovPDHLkV1kbWCD8x? delta 1761 zcmV<71|Io<4vG#TiBL{Q4GJ0x0000DNk~Le0000$0001p1Oos70Hyr!G?5`cf0ao@ zK~z|Uy_e5#8b=hz=M)1jYX3x^aH6QHPb?-<%LxXfRz8{C#a4X^?2t9RIk0k$m7Hv% zoEjNC;oMZ_*fy=u_WhXIA7EGNr6bwG%xAyv&3oUO9SiZFM)cFa&+o2&iy{Kg9|B-R zF!bzx;!2wlMYDS|(2FP?+Y%tWf0#LTY)I^4+;qOtahzvHqQ=0h)#?r+51ocIqx~$} z$PU7TfJ{fN5Tv4%8b_Cz0F0*_c~;a0(0;bD)XD}R_cxasUgmRUN$-f35O*1 z@_^iw_-d=3PfxN3<_+0yq9Lgc^cOBzj0AMl#$cyEzv2`lmzQa{toYK#e?cBTp1_P3y?nvoc1s9*92-B%YF5o0AK=TZsf;7&De?MIY*f^;I0_Dh| zlu5!hZa+^gXuC+IY4BoQk#4|B!3Sz+fp&V5gg9}U)x4N1Ayf0hxhM z7!XI;WM#*&VSoxX8G%v{+MFUYjNu|c>mZTxu@K;ckvzgP>$&YB87a{=S0P)aCP_Rd zfOZ-esLKVSw!uTyf90AhNx+Z*H!C2FFSX`UX8=kR09_Tln+FDP^8nQqfde6WLpIhH zuoS$MT?0Uj45(TKX+kj2N&&I7Kq~{>JWyThtUNv3C*yISA1L8NF778+Q=>#=14lZS8YSVLe40DYSlCo!&P_{f}50RmnZfNBw_ z;3-BYObY02V8$nHm$z}X0En@Xpc)YXz1KQf-vdC6((W(U`XC3)Mk?1^0uoac1M~`a z07QyFbhQvIe{nX0q8tcg(juT2Vk8Do)dzq90IKC9AW~p{o&(@or2^j@GC*m54KFV& zR0b&D>pQ$Q3{VO6LY<2cfXU}W0Hg|}1;}1V%#o5Z=dUGk8%%>InMT7Tcquf9iqX1OQJBcW)b*to7N4J^&-{ zeu+tPvs@3wjDc;5ib{e+51|eOq!K%hSyHG~u%08pZwHpxaqu%;0mC!2CC3v$rGS3$9cL8*aa7WZ($Yi z{_lpW@L$A01OQ}q-0^b}R2;`|KtebV%BOKZ54>HO zt1bZEK03aP0Nl(B@cN_9fOZ4d@x?X1A0PO~x7fYYUGD0Q&x`Dhr}GWcGwKtuAr+pFMi@Z6f`iz-nOiaC*w4+^g-Ski4nEDJz)1n9f2eTz7ur66-GYYjtxy4kT=C{hjxjnLsQ>`i zZz=J19+(qmKOYI+c(qzxnAk^&G-CPc2XDqzgTqVfIqo(Bq0I1jO z&go+9WV-wL`|KYxytBfh8=W;tWY1NSwYhey<*2*-@Llpt4Mw(SE6V)uR#wR$H;2i( zo_rP$3_tn3woHz_rCAd~h0 Date: Thu, 1 Aug 2019 20:29:17 -0400 Subject: [PATCH 37/38] Delete duplicate menu.h declarations; make slot machine vars static --- include/menu.h | 3 - src/slot_machine.c | 448 ++++++++++++++++++++++----------------------- 2 files changed, 224 insertions(+), 227 deletions(-) diff --git a/include/menu.h b/include/menu.h index 19d7c82a4..6d8de3274 100644 --- a/include/menu.h +++ b/include/menu.h @@ -24,9 +24,6 @@ void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y); void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority); bool8 IsBlendTaskActive(void); -void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8); -void sub_810F260(u8 windowId, u8 a1); -void sub_812E62C(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing); u8 sub_812EA78(u16 species, u32 personality, u8 a2); s8 sub_812EAE4(u16 species, u32 personality, u8 a2); diff --git a/src/slot_machine.c b/src/slot_machine.c index 98270cf37..740234d95 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -80,72 +80,72 @@ struct UnkStruct_8466C0C u32 count; }; -EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL; -EWRAM_DATA struct SlotMachineGfxManager * sSlotMachineGfxManager = NULL; +static EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL; +static EWRAM_DATA struct SlotMachineGfxManager * sSlotMachineGfxManager = NULL; -void sub_813F84C(struct SlotMachineState * ptr); -void sub_813F898(void); -void sub_813F92C(void); -void sub_813F94C(void); -void MainTask_SlotsGameLoop(u8 taskId); -void MainTask_NoCoinsGameOver(u8 taskId); -void MainTask_ShowHelp(u8 taskId); -void MainTask_ConfirmExitGame(u8 taskId); -void MainTask_DarnNoPayout(u8 taskId); -void MainTask_WinHandlePayout(u8 taskId); -void MainTask_ExitSlots(u8 taskId); +static void sub_813F84C(struct SlotMachineState * ptr); +static void sub_813F898(void); +static void sub_813F92C(void); +static void sub_813F94C(void); +static void MainTask_SlotsGameLoop(u8 taskId); +static void MainTask_NoCoinsGameOver(u8 taskId); +static void MainTask_ShowHelp(u8 taskId); +static void MainTask_ConfirmExitGame(u8 taskId); +static void MainTask_DarnNoPayout(u8 taskId); +static void MainTask_WinHandlePayout(u8 taskId); +static void MainTask_ExitSlots(u8 taskId); static void SetMainTask(TaskFunc taskFunc); -void sub_8140060(u8 taskId); -void sub_8140148(void); -void sub_814016C(u16 whichReel, u16 whichReel2); -bool32 sub_81401A0(u16); -void sub_81401F0(u16 whichReel); -void sub_81403BC(u16 whichReel); -void sub_81404B8(u16 whichReel); -bool32 sub_814054C(s32, s32, s32, s32, s32); -bool32 sub_81406E8(s32, s32, s32); -bool32 sub_81408F4(s32, s32); -void sub_81409B4(void); -void sub_8140A70(void); -u16 sub_8140A80(void); -void sub_8140C6C(struct SlotMachineGfxManager * manager); -void sub_8140D7C(const s16 *, const s16 *); -bool32 sub_814104C(void); -void sub_8141094(void); -struct SlotMachineSetupTaskData * sub_814112C(void); -void sub_81410CC(u8 taskId); -void sub_8141148(u16 a0, u8 a1); -bool32 sub_8141180(u8 a0); -bool8 sub_8141198(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_8141460(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_81414AC(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_81414EC(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_81414FC(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_8141518(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_8141558(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_8141568(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_8141578(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_8141584(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_81415C8(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_8141610(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_8141650(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_8141690(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_81416C8(u8 *, struct SlotMachineSetupTaskData *); -bool8 sub_8141764(u8 *, struct SlotMachineSetupTaskData *); -void sub_81417E4(const u8 * str); -void sub_8141828(void); -void sub_8141834(u16 * bgTilemapBuffer); -void sub_81418C4(u16 * bgTilemapBuffer, u16 a0, u16 a1); -void sub_814191C(u8 taskId); -void sub_8141AB0(void); -void sub_8141AD8(u8 a0); -void sub_8141B18(void); -void sub_8141B34(void); -void sub_8141BA0(u8 a0); -void sub_8141BE4(void); -void sub_8141C30(u8, u8); +static void sub_8140060(u8 taskId); +static void sub_8140148(void); +static void sub_814016C(u16 whichReel, u16 whichReel2); +static bool32 sub_81401A0(u16); +static void sub_81401F0(u16 whichReel); +static void sub_81403BC(u16 whichReel); +static void sub_81404B8(u16 whichReel); +static bool32 sub_814054C(s32, s32, s32, s32, s32); +static bool32 sub_81406E8(s32, s32, s32); +static bool32 sub_81408F4(s32, s32); +static void sub_81409B4(void); +static void sub_8140A70(void); +static u16 sub_8140A80(void); +static void sub_8140C6C(struct SlotMachineGfxManager * manager); +static void sub_8140D7C(const s16 *, const s16 *); +static bool32 sub_814104C(void); +static void sub_8141094(void); +static struct SlotMachineSetupTaskData * sub_814112C(void); +static void sub_81410CC(u8 taskId); +static void sub_8141148(u16 a0, u8 a1); +static bool32 sub_8141180(u8 a0); +static bool8 sub_8141198(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141460(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_81414AC(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_81414EC(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_81414FC(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141518(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141558(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141568(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141578(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141584(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_81415C8(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141610(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141650(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141690(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_81416C8(u8 *, struct SlotMachineSetupTaskData *); +static bool8 sub_8141764(u8 *, struct SlotMachineSetupTaskData *); +static void sub_81417E4(const u8 * str); +static void sub_8141828(void); +static void sub_8141834(u16 * bgTilemapBuffer); +static void sub_81418C4(u16 * bgTilemapBuffer, u16 a0, u16 a1); +static void sub_814191C(u8 taskId); +static void sub_8141AB0(void); +static void sub_8141AD8(u8 a0); +static void sub_8141B18(void); +static void sub_8141B34(void); +static void sub_8141BA0(u8 a0); +static void sub_8141BE4(void); +static void sub_8141C30(u8, u8); -const u8 gUnknown_8464890[][2] = { +static const u8 gUnknown_8464890[][2] = { {0x00, 0x03}, {0x00, 0x06}, {0x03, 0x06}, @@ -167,7 +167,7 @@ const u8 gUnknown_8464890[][2] = { {0x04, 0x06} }; -const u8 gUnknown_84648AE[][3] = { +static const u8 gUnknown_84648AE[][3] = { {0x00, 0x03, 0x06}, // top row {0x01, 0x04, 0x07}, // middle row {0x02, 0x05, 0x08}, // bottom row @@ -175,7 +175,7 @@ const u8 gUnknown_84648AE[][3] = { {0x02, 0x04, 0x06} // bl-tr }; -const u8 gUnknown_84648BD[][4] = { +static const u8 gUnknown_84648BD[][4] = { {0x00, 0x04, 0x08, 0x03}, // tl-br {0x00, 0x03, 0x06, 0x02}, // top row {0x01, 0x04, 0x07, 0x01}, // middle row @@ -183,7 +183,7 @@ const u8 gUnknown_84648BD[][4] = { {0x02, 0x04, 0x06, 0x03} // bl-tr }; -const u16 gUnknown_84648D2[][7] = { +static const u16 gUnknown_84648D2[][7] = { {0x1fa1, 0x2eab, 0x3630, 0x39f3, 0x3bd4, 0x3bfc, 0x0049}, {0x1f97, 0x2ea2, 0x3627, 0x39e9, 0x3bca, 0x3bf8, 0x0049}, {0x1f91, 0x2e9b, 0x3620, 0x39e3, 0x3bc4, 0x3bf4, 0x0049}, @@ -192,13 +192,13 @@ const u16 gUnknown_84648D2[][7] = { {0x1fc9, 0x2efc, 0x3696, 0x3a63, 0x3c49, 0x3c8b, 0x0073}, }; -const u8 gUnknown_8464926[][21] = { +static const u8 gUnknown_8464926[][21] = { {0x00, 0x03, 0x04, 0x01, 0x02, 0x06, 0x02, 0x05, 0x00, 0x06, 0x03, 0x01, 0x04, 0x02, 0x06, 0x00, 0x05, 0x02, 0x01, 0x06, 0x02}, {0x00, 0x05, 0x04, 0x03, 0x01, 0x05, 0x04, 0x03, 0x02, 0x05, 0x04, 0x03, 0x00, 0x05, 0x04, 0x01, 0x03, 0x06, 0x05, 0x03, 0x04}, {0x00, 0x03, 0x06, 0x05, 0x02, 0x03, 0x06, 0x05, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x02, 0x03, 0x05, 0x06, 0x01}, }; -const u16 gUnknown_8464966[] = { +static const u16 gUnknown_8464966[] = { 0, 2, 6, @@ -208,24 +208,24 @@ const u16 gUnknown_8464966[] = { 300 }; -const u16 gUnknown_8464974[] = INCBIN_U16("graphics/slot_machine/unk_8464974.gbapal"); -const u16 gUnknown_8464994[] = INCBIN_U16("graphics/slot_machine/unk_8464994.gbapal"); -const u16 gUnknown_84649B4[] = INCBIN_U16("graphics/slot_machine/unk_84649b4.gbapal"); -const u16 gUnknown_84649D4[] = INCBIN_U16("graphics/slot_machine/unk_84649d4.gbapal"); -const u16 gUnknown_84649F4[] = INCBIN_U16("graphics/slot_machine/unk_84649f4.gbapal"); -const u32 gUnknown_8464A14[] = INCBIN_U32("graphics/slot_machine/unk_8464a14.4bpp.lz"); -const u16 gUnknown_846504C[] = INCBIN_U16("graphics/slot_machine/unk_846504c.gbapal"); -const u32 gUnknown_846506C[] = INCBIN_U32("graphics/slot_machine/unk_846506c.4bpp.lz"); -const u16 gUnknown_8465524[] = INCBIN_U16("graphics/slot_machine/unk_8465524.gbapal"); -const u32 gUnknown_8465544[] = INCBIN_U32("graphics/slot_machine/unk_8465544.4bpp.lz"); +static const u16 gUnknown_8464974[] = INCBIN_U16("graphics/slot_machine/unk_8464974.gbapal"); +static const u16 gUnknown_8464994[] = INCBIN_U16("graphics/slot_machine/unk_8464994.gbapal"); +static const u16 gUnknown_84649B4[] = INCBIN_U16("graphics/slot_machine/unk_84649b4.gbapal"); +static const u16 gUnknown_84649D4[] = INCBIN_U16("graphics/slot_machine/unk_84649d4.gbapal"); +static const u16 gUnknown_84649F4[] = INCBIN_U16("graphics/slot_machine/unk_84649f4.gbapal"); +static const u32 gUnknown_8464A14[] = INCBIN_U32("graphics/slot_machine/unk_8464a14.4bpp.lz"); +static const u16 gUnknown_846504C[] = INCBIN_U16("graphics/slot_machine/unk_846504c.gbapal"); +static const u32 gUnknown_846506C[] = INCBIN_U32("graphics/slot_machine/unk_846506c.4bpp.lz"); +static const u16 gUnknown_8465524[] = INCBIN_U16("graphics/slot_machine/unk_8465524.gbapal"); +static const u32 gUnknown_8465544[] = INCBIN_U32("graphics/slot_machine/unk_8465544.4bpp.lz"); -const struct CompressedSpriteSheet gUnknown_84655B0[] = { +static const struct CompressedSpriteSheet gUnknown_84655B0[] = { {(const void *)gUnknown_8464A14, 0xe00, 0}, {(const void *)gUnknown_846506C, 0xc00, 1}, {(const void *)gUnknown_8465544, 0x280, 2}, }; -const struct SpritePalette gUnknown_84655C8[] = { +static const struct SpritePalette gUnknown_84655C8[] = { {gUnknown_8464974, 0}, {gUnknown_8464994, 1}, {gUnknown_84649B4, 2}, @@ -236,7 +236,7 @@ const struct SpritePalette gUnknown_84655C8[] = { {NULL} }; -const u16 gUnknown_8465608[] = { +static const u16 gUnknown_8465608[] = { 2, 2, 0, @@ -246,7 +246,7 @@ const u16 gUnknown_8465608[] = { 3 }; -const u16 gUnknown_8465616[] = { +static const u16 gUnknown_8465616[] = { 0x0120, 0x011f, 0x011e, 0x011d, 0x011c, 0x011b, 0x011a, 0x0119, 0x0118, 0x0117, 0x0116, 0x0115, 0x0114, 0x0113, 0x0112, 0x0111, 0x0110, 0x010f, 0x010e, 0x010d, 0x010c, 0x010b, 0x010a, 0x0109, 0x0108, 0x0107, 0x0106, 0x0105, 0x0104, 0x0103, 0x0102, 0x0101, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, @@ -255,13 +255,13 @@ const u16 gUnknown_8465616[] = { 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, 0x0119, 0x011a, 0x011b, 0x011c, 0x011d, 0x011e, 0x011f, 0x0120 }; -const u8 gUnknown_84656D6[] = { +static const u8 gUnknown_84656D6[] = { 0x10, 0x10, 0x10, 0x10, 0x0f, 0x0e, 0x0d, 0x0d, 0x0c, 0x0b, 0x0a, 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0b, 0x0c, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f }; -const struct OamData gUnknown_8465738 = { +static const struct OamData gUnknown_8465738 = { .y = 0, .affineMode = ST_OAM_AFFINE_NORMAL, .objMode = ST_OAM_OBJ_NORMAL, @@ -277,67 +277,67 @@ const struct OamData gUnknown_8465738 = { .affineParam = 0 }; -const union AnimCmd gUnknown_8465740[] = { +static const union AnimCmd gUnknown_8465740[] = { ANIMCMD_FRAME(0x00, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465748[] = { +static const union AnimCmd gUnknown_8465748[] = { ANIMCMD_FRAME(0x10, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465750[] = { +static const union AnimCmd gUnknown_8465750[] = { ANIMCMD_FRAME(0x20, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465758[] = { +static const union AnimCmd gUnknown_8465758[] = { ANIMCMD_FRAME(0x30, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465760[] = { +static const union AnimCmd gUnknown_8465760[] = { ANIMCMD_FRAME(0x40, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465768[] = { +static const union AnimCmd gUnknown_8465768[] = { ANIMCMD_FRAME(0x50, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465770[] = { +static const union AnimCmd gUnknown_8465770[] = { ANIMCMD_FRAME(0x60, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465778[] = { +static const union AnimCmd gUnknown_8465778[] = { ANIMCMD_FRAME(0x20, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465780[] = { +static const union AnimCmd gUnknown_8465780[] = { ANIMCMD_FRAME(0x30, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465788[] = { +static const union AnimCmd gUnknown_8465788[] = { ANIMCMD_FRAME(0x40, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465790[] = { +static const union AnimCmd gUnknown_8465790[] = { ANIMCMD_FRAME(0x50, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465798[] = { +static const union AnimCmd gUnknown_8465798[] = { ANIMCMD_FRAME(0x60, 4), ANIMCMD_END }; -const union AnimCmd *const gUnknown_84657A0[] = { +static const union AnimCmd *const gUnknown_84657A0[] = { gUnknown_8465740, gUnknown_8465748, gUnknown_8465750, @@ -352,20 +352,20 @@ const union AnimCmd *const gUnknown_84657A0[] = { gUnknown_8465798 }; -const union AffineAnimCmd gUnknown_84657D0[] = { +static const union AffineAnimCmd gUnknown_84657D0[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 1), AFFINEANIMCMD_END }; -const union AffineAnimCmd *const gUnknown_84657E0[] = { +static const union AffineAnimCmd *const gUnknown_84657E0[] = { gUnknown_84657D0 }; -const struct SpriteTemplate gUnknown_84657E4 = { +static const struct SpriteTemplate gUnknown_84657E4 = { 0, 0, &gUnknown_8465738, gUnknown_84657A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct OamData gUnknown_84657FC = { +static const struct OamData gUnknown_84657FC = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -381,57 +381,57 @@ const struct OamData gUnknown_84657FC = { .affineParam = 0 }; -const union AnimCmd gUnknown_8465804[] = { +static const union AnimCmd gUnknown_8465804[] = { ANIMCMD_FRAME(0x00, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_846580C[] = { +static const union AnimCmd gUnknown_846580C[] = { ANIMCMD_FRAME(0x02, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465814[] = { +static const union AnimCmd gUnknown_8465814[] = { ANIMCMD_FRAME(0x04, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_846581C[] = { +static const union AnimCmd gUnknown_846581C[] = { ANIMCMD_FRAME(0x06, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465824[] = { +static const union AnimCmd gUnknown_8465824[] = { ANIMCMD_FRAME(0x08, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_846582C[] = { +static const union AnimCmd gUnknown_846582C[] = { ANIMCMD_FRAME(0x0a, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465834[] = { +static const union AnimCmd gUnknown_8465834[] = { ANIMCMD_FRAME(0x0c, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_846583C[] = { +static const union AnimCmd gUnknown_846583C[] = { ANIMCMD_FRAME(0x0e, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_8465844[] = { +static const union AnimCmd gUnknown_8465844[] = { ANIMCMD_FRAME(0x10, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_846584C[] = { +static const union AnimCmd gUnknown_846584C[] = { ANIMCMD_FRAME(0x12, 4), ANIMCMD_END }; -const union AnimCmd *const gUnknown_8465854[] = { +static const union AnimCmd *const gUnknown_8465854[] = { gUnknown_8465804, gUnknown_846580C, gUnknown_8465814, @@ -444,11 +444,11 @@ const union AnimCmd *const gUnknown_8465854[] = { gUnknown_846584C }; -const struct SpriteTemplate gUnknown_846587C = { +static const struct SpriteTemplate gUnknown_846587C = { 2, 6, &gUnknown_84657FC, gUnknown_8465854, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct OamData gUnknown_8465894 = { +static const struct OamData gUnknown_8465894 = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -464,37 +464,37 @@ const struct OamData gUnknown_8465894 = { .affineParam = 0 }; -const union AnimCmd gUnknown_846589C[] = { +static const union AnimCmd gUnknown_846589C[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_END }; -const union AnimCmd gUnknown_84658A4[] = { +static const union AnimCmd gUnknown_84658A4[] = { ANIMCMD_FRAME( 0, 24), ANIMCMD_FRAME(16, 24), ANIMCMD_JUMP(0) }; -const union AnimCmd gUnknown_84658B0[] = { +static const union AnimCmd gUnknown_84658B0[] = { ANIMCMD_FRAME(32, 28), ANIMCMD_FRAME(48, 28), ANIMCMD_JUMP(0) }; -const union AnimCmd gUnknown_84658BC[] = { +static const union AnimCmd gUnknown_84658BC[] = { ANIMCMD_FRAME(64, 12), ANIMCMD_FRAME(80, 12), ANIMCMD_JUMP(0) }; -const union AnimCmd *const gUnknown_84658C8[] = { +static const union AnimCmd *const gUnknown_84658C8[] = { gUnknown_846589C, gUnknown_84658A4, gUnknown_84658B0, gUnknown_84658BC }; -const struct SpriteTemplate gUnknown_84658D8 = { +static const struct SpriteTemplate gUnknown_84658D8 = { 1, 5, &gUnknown_8465894, gUnknown_84658C8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; @@ -517,23 +517,23 @@ bool8 (*const gUnknown_84658F0[])(u8 *, struct SlotMachineSetupTaskData *) = { sub_8141764 }; -const u16 gUnknown_8465930[] = INCBIN_U16("graphics/slot_machine/unk_8465930.gbapal"); -const u16 gUnknown_8465950[] = INCBIN_U16("graphics/slot_machine/unk_8465950.gbapal"); -const u16 gUnknown_8465970[] = INCBIN_U16("graphics/slot_machine/unk_8465970.gbapal"); -const u16 gUnknown_8465990[] = INCBIN_U16("graphics/slot_machine/unk_8465990.gbapal"); -const u16 gUnknown_84659B0[] = INCBIN_U16("graphics/slot_machine/unk_84659b0.gbapal"); -const u32 gUnknown_84659D0[] = INCBIN_U32("graphics/slot_machine/unk_84659d0.4bpp.lz"); -const u32 gUnknown_84661D4[] = INCBIN_U32("graphics/slot_machine/unk_84661d4.bin.lz"); -const u16 gUnknown_84664BC[] = INCBIN_U16("graphics/slot_machine/unk_84664bc.gbapal"); -const u16 gUnknown_84664DC[] = INCBIN_U16("graphics/slot_machine/unk_84664dc.gbapal","graphics/slot_machine/unk_84664fc.gbapal", "graphics/slot_machine/unk_846651c.gbapal"); -const u32 gUnknown_846653C[] = INCBIN_U32("graphics/slot_machine/unk_846653c.4bpp.lz"); -const u16 gUnknown_84665C0[] = INCBIN_U16("graphics/slot_machine/unk_84665c0.gbapal"); -const u16 gUnknown_84665E0[] = INCBIN_U16("graphics/slot_machine/unk_84665e0.gbapal"); -const u16 gUnknown_8466600[] = INCBIN_U16("graphics/slot_machine/unk_8466600.gbapal"); -const u32 gUnknown_8466620[] = INCBIN_U32("graphics/slot_machine/unk_8466620.4bpp.lz"); -const u32 gUnknown_8466998[] = INCBIN_U32("graphics/slot_machine/unk_8466998.bin.lz"); +static const u16 gUnknown_8465930[] = INCBIN_U16("graphics/slot_machine/unk_8465930.gbapal"); +static const u16 gUnknown_8465950[] = INCBIN_U16("graphics/slot_machine/unk_8465950.gbapal"); +static const u16 gUnknown_8465970[] = INCBIN_U16("graphics/slot_machine/unk_8465970.gbapal"); +static const u16 gUnknown_8465990[] = INCBIN_U16("graphics/slot_machine/unk_8465990.gbapal"); +static const u16 gUnknown_84659B0[] = INCBIN_U16("graphics/slot_machine/unk_84659b0.gbapal"); +static const u32 gUnknown_84659D0[] = INCBIN_U32("graphics/slot_machine/unk_84659d0.4bpp.lz"); +static const u32 gUnknown_84661D4[] = INCBIN_U32("graphics/slot_machine/unk_84661d4.bin.lz"); +static const u16 gUnknown_84664BC[] = INCBIN_U16("graphics/slot_machine/unk_84664bc.gbapal"); +static const u16 gUnknown_84664DC[] = INCBIN_U16("graphics/slot_machine/unk_84664dc.gbapal","graphics/slot_machine/unk_84664fc.gbapal", "graphics/slot_machine/unk_846651c.gbapal"); +static const u32 gUnknown_846653C[] = INCBIN_U32("graphics/slot_machine/unk_846653c.4bpp.lz"); +static const u16 gUnknown_84665C0[] = INCBIN_U16("graphics/slot_machine/unk_84665c0.gbapal"); +static const u16 gUnknown_84665E0[] = INCBIN_U16("graphics/slot_machine/unk_84665e0.gbapal"); +static const u16 gUnknown_8466600[] = INCBIN_U16("graphics/slot_machine/unk_8466600.gbapal"); +static const u32 gUnknown_8466620[] = INCBIN_U32("graphics/slot_machine/unk_8466620.4bpp.lz"); +static const u32 gUnknown_8466998[] = INCBIN_U32("graphics/slot_machine/unk_8466998.bin.lz"); -const struct BgTemplate gUnknown_8466B10[] = { +static const struct BgTemplate gUnknown_8466B10[] = { { .bg = 0, .charBaseIndex = 0, @@ -569,7 +569,7 @@ const struct BgTemplate gUnknown_8466B10[] = { } }; -const struct WindowTemplate gUnknown_8466B20[] = { +static const struct WindowTemplate gUnknown_8466B20[] = { { .bg = 0, .tilemapLeft = 5, @@ -590,27 +590,27 @@ const struct WindowTemplate gUnknown_8466B20[] = { DUMMY_WIN_TEMPLATE }; -const u16 gUnknown_8466B38[] = { +static const u16 gUnknown_8466B38[] = { 0x00a4, 0x00a5, 0x00a6, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00e7, 0x012c, 0x014c, 0x0191, 0x01b1, 0x01f6, 0x0216, 0x0217, 0x0218, 0x0219, 0x0237, 0x0238, 0x0239 }; -const u16 gUnknown_8466B60[] = { +static const u16 gUnknown_8466B60[] = { 0x00e4, 0x00e5, 0x00e6, 0x00f7, 0x00f8, 0x00f9, 0x0104, 0x0105, 0x0106, 0x0107, 0x010c, 0x0111, 0x0116, 0x0117, 0x0118, 0x0119, 0x0124, 0x0125, 0x0126, 0x0137, 0x0138, 0x0139 }; -const u16 gUnknown_8466B8C[] = { +static const u16 gUnknown_8466B8C[] = { 0x0144, 0x0145, 0x0146, 0x0157, 0x0158, 0x0159, 0x0164, 0x0165, 0x0166, 0x0167, 0x016c, 0x0171, 0x0176, 0x0177, 0x0178, 0x0179, 0x0184, 0x0185, 0x0186, 0x0197, 0x0198, 0x0199 }; -const u16 gUnknown_8466BB8[] = { +static const u16 gUnknown_8466BB8[] = { 0x01a4, 0x01a5, 0x01a6, 0x01b7, 0x01b8, 0x01b9, 0x01c4, 0x01c5, 0x01c6, 0x01c7, 0x01cc, 0x01d1, 0x01d6, 0x01d7, 0x01d8, 0x01d9, 0x01e4, 0x01e5, 0x01e6, 0x01f7, 0x01f8, 0x01f9 }; -const u16 gUnknown_8466BE4[] = { +static const u16 gUnknown_8466BE4[] = { 0x0204, 0x0205, 0x0206, 0x0224, 0x0225, 0x0226, 0x01e7, 0x0207, 0x018c, 0x01ac, 0x0131, 0x0151, 0x00d6, 0x00f6, 0x00b7, 0x00b8, 0x00b9, 0x00d7, 0x00d8, 0x00d9 }; -const struct UnkStruct_8466C0C gUnknown_8466C0C[] = { +static const struct UnkStruct_8466C0C gUnknown_8466C0C[] = { { gUnknown_8466B38, NELEMS(gUnknown_8466B38) }, { gUnknown_8466B60, NELEMS(gUnknown_8466B60) }, { gUnknown_8466B8C, NELEMS(gUnknown_8466B8C) }, @@ -618,9 +618,9 @@ const struct UnkStruct_8466C0C gUnknown_8466C0C[] = { { gUnknown_8466BE4, NELEMS(gUnknown_8466BE4) } }; -const u8 gUnknown_8466C34[2] = {2, 4}; +static const u8 gUnknown_8466C34[2] = {2, 4}; -const struct WindowTemplate gUnknown_8466C38 = { +static const struct WindowTemplate gUnknown_8466C38 = { .bg = 0, .tilemapLeft = 19, .tilemapTop = 9, @@ -630,7 +630,7 @@ const struct WindowTemplate gUnknown_8466C38 = { .baseBlock = 0x9F }; -const u16 gUnknown_8466C40[][4] = { +static const u16 gUnknown_8466C40[][4] = { {0x0229, 0x022a, 0x0249, 0x024a}, {0x022e, 0x022f, 0x024e, 0x024f}, {0x0233, 0x0234, 0x0253, 0x0254} @@ -653,7 +653,7 @@ void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback) } } -void sub_813F84C(struct SlotMachineState * ptr) +static void sub_813F84C(struct SlotMachineState * ptr) { s32 i; @@ -670,7 +670,7 @@ void sub_813F84C(struct SlotMachineState * ptr) } } -void sub_813F898(void) +static void sub_813F898(void) { RunTasks(); AnimateSprites(); @@ -701,7 +701,7 @@ void sub_813F898(void) } } -void sub_813F92C(void) +static void sub_813F92C(void) { sub_8141094(); if (sSlotMachineState != NULL) @@ -711,7 +711,7 @@ void sub_813F92C(void) } } -void sub_813F94C(void) +static void sub_813F94C(void) { RunTasks(); AnimateSprites(); @@ -719,7 +719,7 @@ void sub_813F94C(void) UpdatePaletteFade(); } -void MainTask_SlotsGameLoop(u8 taskId) +static void MainTask_SlotsGameLoop(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -825,7 +825,7 @@ void MainTask_SlotsGameLoop(u8 taskId) } } -void MainTask_NoCoinsGameOver(u8 taskId) +static void MainTask_NoCoinsGameOver(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -846,7 +846,7 @@ void MainTask_NoCoinsGameOver(u8 taskId) } } -void MainTask_ShowHelp(u8 taskId) +static void MainTask_ShowHelp(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -874,7 +874,7 @@ void MainTask_ShowHelp(u8 taskId) } } -void MainTask_ConfirmExitGame(u8 taskId) +static void MainTask_ConfirmExitGame(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -914,7 +914,7 @@ void MainTask_ConfirmExitGame(u8 taskId) } } -void MainTask_DarnNoPayout(u8 taskId) +static void MainTask_DarnNoPayout(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -942,7 +942,7 @@ void MainTask_DarnNoPayout(u8 taskId) } } -void MainTask_WinHandlePayout(u8 taskId) +static void MainTask_WinHandlePayout(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1020,7 +1020,7 @@ void MainTask_WinHandlePayout(u8 taskId) } } -void MainTask_ExitSlots(u8 taskId) +static void MainTask_ExitSlots(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1046,7 +1046,7 @@ static void SetMainTask(TaskFunc taskFunc) gTasks[sSlotMachineState->field_10].data[0] = 0; } -void sub_8140060(u8 taskId) +static void sub_8140060(u8 taskId) { // taskId is never used @@ -1076,7 +1076,7 @@ void sub_8140060(u8 taskId) sub_8140D7C(sSlotMachineState->field_20, sSlotMachineState->field_26); } -void sub_8140148(void) +static void sub_8140148(void) { s32 i; @@ -1086,7 +1086,7 @@ void sub_8140148(void) } } -void sub_814016C(u16 whichReel, u16 whichReel2) +static void sub_814016C(u16 whichReel, u16 whichReel2) { switch (whichReel2) { @@ -1102,12 +1102,12 @@ void sub_814016C(u16 whichReel, u16 whichReel2) } } -bool32 sub_81401A0(u16 whichReel) +static bool32 sub_81401A0(u16 whichReel) { return sSlotMachineState->field_14[whichReel]; } -s16 sub_81401B4(u16 whichReel) +static s16 sub_81401B4(u16 whichReel) { s16 position = sSlotMachineState->field_20[whichReel]; if (sSlotMachineState->field_26[whichReel] != 0) @@ -1119,7 +1119,7 @@ s16 sub_81401B4(u16 whichReel) return position; } -void sub_81401F0(u16 whichReel) +static void sub_81401F0(u16 whichReel) { s32 i, j; s16 r2; @@ -1184,7 +1184,7 @@ void sub_81401F0(u16 whichReel) sSlotMachineState->field_2C[whichReel] = r2; } -void sub_81403BC(u16 whichReel) +static void sub_81403BC(u16 whichReel) { s16 r2, r4, r7, sp10; s32 i; @@ -1231,7 +1231,7 @@ void sub_81403BC(u16 whichReel) sSlotMachineState->field_2C[whichReel] = r2; } -void sub_81404B8(u16 whichReel) +static void sub_81404B8(u16 whichReel) { s32 i; s32 r6; @@ -1269,15 +1269,15 @@ void sub_81404B8(u16 whichReel) sSlotMachineState->field_2C[whichReel] = r2; } -bool32 sub_814054C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4) +static bool32 sub_814054C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4) { s32 i; s32 r5; u8 sp0[9] = {}; - + for (i = 0; i < 9; i++) sp0[i] = 7; - + for (i = 0; i < 3; i++) { sp0[3 * a0 + i] = gUnknown_8464926[a0][a1]; @@ -1344,7 +1344,7 @@ bool32 sub_814054C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4) } #ifdef NONMATCHING -bool32 sub_81406E8(s32 a0, s32 a1, s32 a2) +static bool32 sub_81406E8(s32 a0, s32 a1, s32 a2) { u8 sp0[9]; s32 r3, r6; @@ -1417,7 +1417,7 @@ bool32 sub_81406E8(s32 a0, s32 a1, s32 a2) } #else NAKED -bool32 sub_81406E8(s32 a0, s32 a1, s32 a2) +static bool32 sub_81406E8(s32 a0, s32 a1, s32 a2) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" @@ -1702,7 +1702,7 @@ bool32 sub_81406E8(s32 a0, s32 a1, s32 a2) } #endif //NONMATCHING -bool32 sub_81408F4(s32 a0, s32 a1) +static bool32 sub_81408F4(s32 a0, s32 a1) { switch (a0) { @@ -1724,7 +1724,7 @@ bool32 sub_81408F4(s32 a0, s32 a1) } } -u8 sub_814096C(s32 a0) +static u8 sub_814096C(s32 a0) { switch (a0) { @@ -1744,7 +1744,7 @@ u8 sub_814096C(s32 a0) } } -void sub_81409B4(void) +static void sub_81409B4(void) { u16 r2 = Random() / 4; s32 i; @@ -1771,12 +1771,12 @@ void sub_81409B4(void) } } -void sub_8140A70(void) +static void sub_8140A70(void) { sSlotMachineState->field_08 = 0; } -u16 sub_8140A80(void) +static u16 sub_8140A80(void) { u8 sp0[9] = {}; s32 i; @@ -1829,22 +1829,22 @@ u16 sub_8140A80(void) return r9; } -u16 sub_8140BDC(void) +static u16 sub_8140BDC(void) { return sSlotMachineState->payout; } -u8 sub_8140BEC(void) +static u8 sub_8140BEC(void) { return sSlotMachineState->bet; } -bool32 sub_8140BF8(s32 a0) +static bool32 sub_8140BF8(s32 a0) { return sSlotMachineState->field_3C[a0]; } -bool32 sub_8140C0C(void) +static bool32 sub_8140C0C(void) { s32 i; @@ -1858,7 +1858,7 @@ bool32 sub_8140C0C(void) return TRUE; } -void sub_8140C50(void) +static void sub_8140C50(void) { if (sSlotMachineGfxManager != NULL) { @@ -1867,7 +1867,7 @@ void sub_8140C50(void) } } -void sub_8140C6C(struct SlotMachineGfxManager * manager) +static void sub_8140C6C(struct SlotMachineGfxManager * manager) { s32 i, j; @@ -1881,7 +1881,7 @@ void sub_8140C6C(struct SlotMachineGfxManager * manager) } } -void sub_8140CA0(void) +static void sub_8140CA0(void) { struct Sprite * sprite; s32 i, j; @@ -1907,7 +1907,7 @@ void sub_8140CA0(void) } } -void sub_8140D7C(const s16 * a0, const s16 * a1) +static void sub_8140D7C(const s16 * a0, const s16 * a1) { s32 i, j; s32 r6, r10; @@ -1939,7 +1939,7 @@ void sub_8140D7C(const s16 * a0, const s16 * a1) } } -void sub_8140E40(void) +static void sub_8140E40(void) { s32 vcount = REG_VCOUNT - 0x2B; if (vcount >= 0 && vcount < 0x54) @@ -1954,7 +1954,7 @@ void sub_8140E40(void) } } -void sub_8140E9C(void) +static void sub_8140E9C(void) { s32 i; s32 spriteId; @@ -1968,7 +1968,7 @@ void sub_8140E9C(void) } } -void sub_8140F2C(void) +static void sub_8140F2C(void) { s32 coins = GetCoins(); s32 payout = sub_8140BDC(); @@ -1988,7 +1988,7 @@ void sub_8140F2C(void) } } -void sub_8140FC4(void) +static void sub_8140FC4(void) { s32 spriteId; @@ -1999,7 +1999,7 @@ void sub_8140FC4(void) sSlotMachineGfxManager->field_68[1]->hFlip = TRUE; } -void sub_8141020(u8 a0) +static void sub_8141020(u8 a0) { s32 i; for (i = 0; i < 2; i++) @@ -2008,7 +2008,7 @@ void sub_8141020(u8 a0) } } -bool32 sub_814104C(void) +static bool32 sub_814104C(void) { s32 i; @@ -2022,7 +2022,7 @@ bool32 sub_814104C(void) return FALSE; } -void sub_8141094(void) +static void sub_8141094(void) { if (FuncIsActiveTask(sub_81410CC)) { @@ -2033,7 +2033,7 @@ void sub_8141094(void) FreeAllWindowBuffers(); } -void sub_81410CC(u8 taskId) +static void sub_81410CC(u8 taskId) { struct SlotMachineSetupTaskData * ptr = (void *)GetWordTaskArg(taskId, 0); s32 i; @@ -2045,19 +2045,19 @@ void sub_81410CC(u8 taskId) } } -void sub_8141118(void) +static void sub_8141118(void) { TransferPlttBuffer(); LoadOam(); ProcessSpriteCopyRequests(); } -struct SlotMachineSetupTaskData * sub_814112C(void) +static struct SlotMachineSetupTaskData * sub_814112C(void) { return (void *)GetWordTaskArg(FindTaskIdByFunc(sub_81410CC), 0); } -void sub_8141148(u16 a0, u8 a1) +static void sub_8141148(u16 a0, u8 a1) { struct SlotMachineSetupTaskData * ptr = sub_814112C(); ptr->field_0000[a1].unk0 = a0; @@ -2065,13 +2065,13 @@ void sub_8141148(u16 a0, u8 a1) ptr->field_0000[a1].unk3 = gUnknown_84658F0[a0](&ptr->field_0000[a1].unk2, ptr); } -bool32 sub_8141180(u8 a0) +static bool32 sub_8141180(u8 a0) { return sub_814112C()->field_0000[a0].unk3; } #ifdef NONMATCHING -bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) { u16 pal; struct TextColor textColor; @@ -2167,7 +2167,7 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) } #else NAKED -bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r8\n" @@ -2459,7 +2459,7 @@ bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr) } #endif //NONMATCHING -bool8 sub_8141460(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141460(u8 * state, struct SlotMachineSetupTaskData * ptr) { switch (*state) { @@ -2475,7 +2475,7 @@ bool8 sub_8141460(u8 * state, struct SlotMachineSetupTaskData * ptr) return TRUE; } -bool8 sub_81414AC(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_81414AC(u8 * state, struct SlotMachineSetupTaskData * ptr) { switch (*state) { @@ -2492,20 +2492,20 @@ bool8 sub_81414AC(u8 * state, struct SlotMachineSetupTaskData * ptr) return TRUE; } -bool8 sub_81414EC(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_81414EC(u8 * state, struct SlotMachineSetupTaskData * ptr) { sub_8141020(1); return FALSE; } -bool8 sub_81414FC(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_81414FC(u8 * state, struct SlotMachineSetupTaskData * ptr) { sub_8141020(2); CreateTask(sub_814191C, 3); return FALSE; } -bool8 sub_8141518(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141518(u8 * state, struct SlotMachineSetupTaskData * ptr) { switch (*state) { @@ -2524,25 +2524,25 @@ bool8 sub_8141518(u8 * state, struct SlotMachineSetupTaskData * ptr) return TRUE; } -bool8 sub_8141558(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141558(u8 * state, struct SlotMachineSetupTaskData * ptr) { sub_8141020(3); return FALSE; } -bool8 sub_8141568(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141568(u8 * state, struct SlotMachineSetupTaskData * ptr) { sub_8141020(FALSE); return FALSE; } -bool8 sub_8141578(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141578(u8 * state, struct SlotMachineSetupTaskData * ptr) { sub_8140F2C(); return FALSE; } -bool8 sub_8141584(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141584(u8 * state, struct SlotMachineSetupTaskData * ptr) { switch (*state) { @@ -2559,7 +2559,7 @@ bool8 sub_8141584(u8 * state, struct SlotMachineSetupTaskData * ptr) return TRUE; } -bool8 sub_81415C8(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_81415C8(u8 * state, struct SlotMachineSetupTaskData * ptr) { switch (*state) { @@ -2577,7 +2577,7 @@ bool8 sub_81415C8(u8 * state, struct SlotMachineSetupTaskData * ptr) return TRUE; } -bool8 sub_8141610(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141610(u8 * state, struct SlotMachineSetupTaskData * ptr) { switch (*state) { @@ -2595,7 +2595,7 @@ bool8 sub_8141610(u8 * state, struct SlotMachineSetupTaskData * ptr) return TRUE; } -bool8 sub_8141650(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141650(u8 * state, struct SlotMachineSetupTaskData * ptr) { switch (*state) { @@ -2612,7 +2612,7 @@ bool8 sub_8141650(u8 * state, struct SlotMachineSetupTaskData * ptr) return TRUE; } -bool8 sub_8141690(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141690(u8 * state, struct SlotMachineSetupTaskData * ptr) { switch (*state) { @@ -2629,7 +2629,7 @@ bool8 sub_8141690(u8 * state, struct SlotMachineSetupTaskData * ptr) return TRUE; } -bool8 sub_81416C8(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_81416C8(u8 * state, struct SlotMachineSetupTaskData * ptr) { switch (*state) { @@ -2660,7 +2660,7 @@ bool8 sub_81416C8(u8 * state, struct SlotMachineSetupTaskData * ptr) return TRUE; } -bool8 sub_8141764(u8 * state, struct SlotMachineSetupTaskData * ptr) +static bool8 sub_8141764(u8 * state, struct SlotMachineSetupTaskData * ptr) { switch (*state) { @@ -2689,7 +2689,7 @@ bool8 sub_8141764(u8 * state, struct SlotMachineSetupTaskData * ptr) return TRUE; } -void sub_81417E4(const u8 * str) +static void sub_81417E4(const u8 * str) { FillWindowPixelBuffer(0, 0x11); PutWindowTilemap(0); @@ -2697,12 +2697,12 @@ void sub_81417E4(const u8 * str) AddTextPrinterParameterized5(0, 2, str, 1, 2, -1, NULL, 1, 2); } -void sub_8141828(void) +static void sub_8141828(void) { rbox_fill_rectangle(0); } -void sub_8141834(u16 * bgTilemapBuffer) +static void sub_8141834(u16 * bgTilemapBuffer) { switch (sub_8140BEC()) { @@ -2725,7 +2725,7 @@ void sub_8141834(u16 * bgTilemapBuffer) } } -void sub_81418C4(u16 * bgTilemapBuffer, u16 whichLine, u16 paletteNum) +static void sub_81418C4(u16 * bgTilemapBuffer, u16 whichLine, u16 paletteNum) { s32 i; const u16 * tileIdxs = gUnknown_8466C0C[whichLine].tiles; @@ -2739,7 +2739,7 @@ void sub_81418C4(u16 * bgTilemapBuffer, u16 whichLine, u16 paletteNum) } } -void sub_814191C(u8 taskId) +static void sub_814191C(u8 taskId) { s16 * data = gTasks[taskId].data; s32 i; @@ -2809,19 +2809,19 @@ void sub_814191C(u8 taskId) } } -void sub_8141AB0(void) +static void sub_8141AB0(void) { gTasks[FindTaskIdByFunc(sub_814191C)].data[0] = 2; } -void sub_8141AD8(u8 cursorPos) +static void sub_8141AD8(u8 cursorPos) { CreateYesNoMenu(&gUnknown_8466C38, 2, 0, 2, 10, 13, cursorPos); Menu_MoveCursorNoWrapAround(cursorPos); sub_814112C()->field_0028 = TRUE; } -void sub_8141B18(void) +static void sub_8141B18(void) { struct SlotMachineSetupTaskData * data = sub_814112C(); if (data->field_0028) @@ -2831,7 +2831,7 @@ void sub_8141B18(void) } } -void sub_8141B34(void) +static void sub_8141B34(void) { s32 i, j; struct SlotMachineSetupTaskData * data = sub_814112C(); @@ -2848,7 +2848,7 @@ void sub_8141B34(void) } } -void sub_8141BA0(u8 reel) +static void sub_8141BA0(u8 reel) { if (reel < 3) { @@ -2863,7 +2863,7 @@ void sub_8141BA0(u8 reel) } } -void sub_8141BE4(void) +static void sub_8141BE4(void) { s32 i, j; struct SlotMachineSetupTaskData * data = sub_814112C(); @@ -2879,7 +2879,7 @@ void sub_8141BE4(void) } } -void sub_8141C30(u8 a0, u8 a1) +static void sub_8141C30(u8 a0, u8 a1) { sub_814112C()->field_0020 = a0; sub_8141148(12, a1); From d58bf398b2b83a326d23d14d531de7f45a1058bb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 2 Aug 2019 17:41:44 -0400 Subject: [PATCH 38/38] Add rodata to calcrom --- .travis/calcrom/calcrom.pl | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.travis/calcrom/calcrom.pl b/.travis/calcrom/calcrom.pl index 7b94c650b..1ad3e214d 100644 --- a/.travis/calcrom/calcrom.pl +++ b/.travis/calcrom/calcrom.pl @@ -9,6 +9,8 @@ open(my $file, $ARGV[0]) my $src = 0; my $asm = 0; +my $srcdata = 0; +my $data = 0; while (my $line = <$file>) { if ($line =~ /^ \.(\w+)\s+0x[0-9a-f]+\s+(0x[0-9a-f]+) (\w+)\/.+\.o/) @@ -28,6 +30,17 @@ while (my $line = <$file>) $asm += $size; } } + elsif ($section =~ /rodata/) + { + if ($dir eq 'src') + { + $srcdata += $size; + } + elsif ($dir eq 'data') + { + $data += $size; + } + } } } @@ -118,3 +131,26 @@ print "$total_syms total symbols\n"; print "$documented symbols documented ($docPct%)\n"; print "$partial_documented symbols partially documented ($partialPct%)\n"; print "$undocumented symbols undocumented ($undocPct%)\n"; + +my $foundLines = `git grep '\.incbin "baserom\.gba"' data/`; +my @allLines = split('\n', $foundLines); +my $incbinTotal = 0; +my $incbinNum = 0; +foreach my $line (@allLines) +{ + if ($line =~ /\.incbin\s+"baserom\.gba",\s*0x\w+,\s*(.+?)\s*(\@.*)?$/) + { + my $size = hex($1); + $incbinTotal += $size; + $incbinNum++; + } +} +print "\n"; +my $dataTotal = $srcdata + $data; +my $srcDataPct = sprintf("%.4f", 100 * $srcdata / $dataTotal); +my $dataPct = sprintf("%.4f", 100 * $data / $dataTotal); +my $incbinTotalPct = sprintf("%.4f", 100 * $incbinTotal / $dataTotal); +print "$dataTotal total bytes of data\n"; +print "$srcdata bytes of data in src ($srcDataPct%)\n"; +print "$data bytes of data in data ($dataPct%)\n"; +print "$incbinNum baserom incbins with a combined $incbinTotal bytes ($incbinTotalPct%)\n";