diff --git a/asm/code_803C1D0.s b/asm/code_803C1D0.s deleted file mode 100644 index 8ab514987..000000000 --- a/asm/code_803C1D0.s +++ /dev/null @@ -1,382 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_803C3E0 -sub_803C3E0: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x54 - adds r7, r0, 0 - movs r6, 0 - ldr r5, _0803C42C - movs r4, 0 - mov r8, sp -_0803C3F2: - movs r1, 0 - ldrsh r0, [r5, r1] - bl sub_803C110 - lsls r0, 24 - cmp r0, 0 - beq _0803C41A - movs r1, 0x2 - ldrsh r0, [r5, r1] - bl sub_803C110 - lsls r0, 24 - cmp r0, 0 - beq _0803C41A - mov r0, r8 - adds r0, 0x4 - mov r8, r0 - subs r0, 0x4 - stm r0!, {r4} - adds r6, 0x1 -_0803C41A: - adds r5, 0x8 - adds r4, 0x1 - cmp r4, 0x14 - ble _0803C3F2 - ldr r5, _0803C42C - cmp r6, 0 - bne _0803C430 - movs r0, 0 - b _0803C44E - .align 2, 0 -_0803C42C: .4byte gUnknown_80E9920 -_0803C430: - adds r0, r6, 0 - bl RandInt - lsls r0, 2 - add r0, sp - ldr r4, [r0] - lsls r0, r4, 3 - adds r5, r0, r5 - ldrh r0, [r5] - strh r0, [r7, 0xC] - ldrh r0, [r5, 0x2] - strh r0, [r7, 0xE] - movs r0, 0x7 - strb r0, [r7, 0x2] - movs r0, 0x1 -_0803C44E: - add sp, 0x54 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_803C3E0 - - thumb_func_start sub_803C45C -sub_803C45C: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xB4 - adds r7, r0, 0 - movs r6, 0 - ldr r5, _0803C4CC - movs r4, 0 - mov r8, sp -_0803C46E: - movs r1, 0 - ldrsh r0, [r5, r1] - bl sub_803C110 - lsls r0, 24 - cmp r0, 0 - beq _0803C496 - movs r1, 0x2 - ldrsh r0, [r5, r1] - bl sub_803C110 - lsls r0, 24 - cmp r0, 0 - beq _0803C496 - mov r0, r8 - adds r0, 0x4 - mov r8, r0 - subs r0, 0x4 - stm r0!, {r4} - adds r6, 0x1 -_0803C496: - adds r5, 0xC - adds r4, 0x1 - cmp r4, 0x2C - ble _0803C46E - ldr r5, _0803C4CC - cmp r6, 0 - beq _0803C4E0 - adds r0, r6, 0 - bl RandInt - lsls r0, 2 - add r0, sp - ldr r4, [r0] - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r5, r0, r5 - bl Rand32Bit - movs r1, 0x10 - ands r1, r0 - cmp r1, 0 - beq _0803C4D0 - ldrh r0, [r5] - strh r0, [r7, 0xC] - ldrh r0, [r5, 0x2] - b _0803C4D6 - .align 2, 0 -_0803C4CC: .4byte gUnknown_80E9F8C -_0803C4D0: - ldrh r0, [r5, 0x2] - strh r0, [r7, 0xC] - ldrh r0, [r5] -_0803C4D6: - strh r0, [r7, 0xE] - movs r0, 0x8 - strb r0, [r7, 0x2] - movs r0, 0x1 - b _0803C4E2 -_0803C4E0: - movs r0, 0 -_0803C4E2: - add sp, 0xB4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_803C45C - - thumb_func_start sub_803C4F0 -sub_803C4F0: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x18 - adds r7, r0, 0 - movs r6, 0 - ldr r5, _0803C55C - movs r4, 0 - mov r8, sp -_0803C502: - movs r1, 0 - ldrsh r0, [r5, r1] - bl sub_803C110 - lsls r0, 24 - cmp r0, 0 - beq _0803C52A - movs r1, 0x2 - ldrsh r0, [r5, r1] - bl sub_803C110 - lsls r0, 24 - cmp r0, 0 - beq _0803C52A - mov r0, r8 - adds r0, 0x4 - mov r8, r0 - subs r0, 0x4 - stm r0!, {r4} - adds r6, 0x1 -_0803C52A: - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0x5 - ble _0803C502 - ldr r5, _0803C55C - cmp r6, 0 - beq _0803C570 - adds r0, r6, 0 - bl RandInt - lsls r0, 2 - add r0, sp - ldr r4, [r0] - lsls r0, r4, 2 - adds r5, r0, r5 - bl Rand32Bit - movs r1, 0x10 - ands r1, r0 - cmp r1, 0 - beq _0803C560 - ldrh r0, [r5] - strh r0, [r7, 0xC] - ldrh r0, [r5, 0x2] - b _0803C566 - .align 2, 0 -_0803C55C: .4byte gUnknown_80E8168 -_0803C560: - ldrh r0, [r5, 0x2] - strh r0, [r7, 0xC] - ldrh r0, [r5] -_0803C566: - strh r0, [r7, 0xE] - movs r0, 0x9 - strb r0, [r7, 0x2] - movs r0, 0x1 - b _0803C572 -_0803C570: - movs r0, 0 -_0803C572: - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_803C4F0 - - thumb_func_start sub_803C580 -sub_803C580: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x54 - adds r6, r0, 0 - movs r7, 0 - ldr r5, _0803C5D8 - movs r0, 0x6 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _0803C5D2 - movs r4, 0 - mov r8, sp -_0803C59E: - movs r1, 0 - ldrsh r0, [r5, r1] - bl sub_803C110 - lsls r0, 24 - cmp r0, 0 - beq _0803C5C6 - ldrb r0, [r6, 0x4] - ldrb r1, [r5, 0x2] - bl xxx_bit_lut_lookup_8091E50 - lsls r0, 24 - cmp r0, 0 - beq _0803C5C6 - mov r0, r8 - adds r0, 0x4 - mov r8, r0 - subs r0, 0x4 - stm r0!, {r4} - adds r7, 0x1 -_0803C5C6: - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0x14 - ble _0803C59E - cmp r7, 0 - bne _0803C5DC -_0803C5D2: - movs r0, 0 - b _0803C600 - .align 2, 0 -_0803C5D8: .4byte gUnknown_80E8180 -_0803C5DC: - adds r0, r7, 0 - bl RandInt - lsls r0, 2 - add r0, sp - ldr r4, [r0] - lsls r1, r4, 2 - ldr r0, _0803C60C - adds r5, r1, r0 - ldrh r0, [r5] - strh r0, [r6, 0xC] - ldrh r0, [r5] - strh r0, [r6, 0xE] - ldrb r0, [r5, 0x2] - strb r0, [r6, 0x10] - movs r0, 0x5 - strb r0, [r6, 0x2] - movs r0, 0x1 -_0803C600: - add sp, 0x54 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0803C60C: .4byte gUnknown_80E8180 - thumb_func_end sub_803C580 - - thumb_func_start sub_803C610 -sub_803C610: - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _0803C660 - add sp, r4 - adds r6, r0, 0 - movs r7, 0 - ldr r4, _0803C664 - movs r5, 0 - mov r8, sp -_0803C624: - movs r1, 0 - ldrsh r0, [r4, r1] - bl sub_803C110 - lsls r0, 24 - cmp r0, 0 - beq _0803C64C - ldrb r0, [r6, 0x4] - ldrb r1, [r4, 0x2] - bl xxx_bit_lut_lookup_8091E50 - lsls r0, 24 - cmp r0, 0 - beq _0803C64C - mov r0, r8 - adds r0, 0x4 - mov r8, r0 - subs r0, 0x4 - stm r0!, {r5} - adds r7, 0x1 -_0803C64C: - adds r4, 0x4 - adds r5, 0x1 - ldr r0, _0803C668 - cmp r5, r0 - ble _0803C624 - cmp r7, 0 - bne _0803C66C - movs r0, 0 - b _0803C690 - .align 2, 0 -_0803C660: .4byte 0xfffff9f8 -_0803C664: .4byte gUnknown_80E81D4 -_0803C668: .4byte 0x00000181 -_0803C66C: - adds r0, r7, 0 - bl RandInt - lsls r0, 2 - add r0, sp - ldr r5, [r0] - lsls r1, r5, 2 - ldr r0, _0803C6A0 - adds r4, r1, r0 - ldrh r0, [r4] - strh r0, [r6, 0xC] - ldrh r0, [r4] - strh r0, [r6, 0xE] - ldrb r0, [r4, 0x2] - strb r0, [r6, 0x10] - movs r0, 0x6 - strb r0, [r6, 0x2] - movs r0, 0x1 -_0803C690: - movs r3, 0xC1 - lsls r3, 3 - add sp, r3 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0803C6A0: .4byte gUnknown_80E81D4 - thumb_func_end sub_803C610 - - .align 2,0 diff --git a/asm/code_8098468.s b/asm/code_8098468.s deleted file mode 100644 index 05fcd1ab7..000000000 --- a/asm/code_8098468.s +++ /dev/null @@ -1,791 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start xxx_script_related_8098468 -xxx_script_related_8098468: - push {r4-r7,lr} - sub sp, 0x8 - ldr r1, _08098494 - str r0, [r1] - ldr r4, _08098498 - movs r2, 0 - strb r2, [r4] - ldr r3, _0809849C - movs r1, 0x1 - strb r1, [r3] - ldr r1, _080984A0 - strb r2, [r1] - subs r0, 0xD - adds r2, r1, 0 - cmp r0, 0x4 - bhi _08098504 - lsls r0, 2 - ldr r1, _080984A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08098494: .4byte gUnknown_20398B4 -_08098498: .4byte gUnknown_20398B9 -_0809849C: .4byte gUnknown_20398B8 -_080984A0: .4byte gScriptMode -_080984A4: .4byte _080984A8 - .align 2, 0 -_080984A8: - .4byte _080984BC - .4byte _080984C8 - .4byte _080984CE - .4byte _080984D4 - .4byte _080984FC -_080984BC: - movs r1, 0x1 - strb r1, [r2] - movs r0, 0 - strb r0, [r3] - strb r1, [r4] - b _08098504 -_080984C8: - movs r0, 0x1 - strb r0, [r3] - b _08098502 -_080984CE: - movs r0, 0x1 - strb r0, [r3] - b _08098502 -_080984D4: - add r2, sp, 0x4 - movs r0, 0x3 - mov r1, sp - bl GetScriptVarScenario - ldr r2, _080984F4 - movs r1, 0 - ldr r0, [sp] - cmp r0, 0 - bne _080984EA - movs r1, 0x1 -_080984EA: - strb r1, [r2] - ldr r1, _080984F8 - movs r0, 0x1 - strb r0, [r1] - b _08098504 - .align 2, 0 -_080984F4: .4byte gUnknown_20398B8 -_080984F8: .4byte gUnknown_20398B9 -_080984FC: - movs r0, 0 - strb r0, [r3] - movs r0, 0x1 -_08098502: - strb r0, [r4] -_08098504: - bl sub_801180C - ldr r0, _080985B0 - ldrb r0, [r0] - cmp r0, 0 - bne _08098522 - movs r0, 0xD - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - bne _08098522 - movs r0, 0x10 - bl FadeOutAllMusic -_08098522: - ldr r1, _080985B4 - ldr r2, _080985B8 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - bl UpdateFadeInTile - bl sub_8099648 - bl sub_809975C - bl sub_809D0AC - bl sub_80A7744 - bl sub_809D490 - bl sub_80A62F0 - bl sub_809C5C4 - bl sub_809A560 - bl sub_809CB50 - bl AllocGroundMapAction - bl nullsub_117 - bl AllocGroundEvents - bl AllocGroundLives - bl AllocGroundObjects - bl AllocGroundEffects - bl sub_809A62C - ldr r0, _080985BC - movs r1, 0 - strb r1, [r0] - ldr r0, _080985C0 - strb r1, [r0] - ldr r6, _080985C4 - movs r0, 0x1 - str r0, [r6] - ldr r1, _080985C8 - movs r0, 0 - str r0, [r1] - ldr r0, _080985CC - movs r4, 0x1 - negs r4, r4 - str r4, [r0] - ldr r5, _080985D0 - movs r0, 0 - movs r1, 0xD - bl GetScriptVarValue - strh r0, [r5] - movs r0, 0 - movs r1, 0xE - bl GetScriptVarValue - ldr r1, _080985D4 - str r0, [r1] - ldr r0, _080985D8 - strh r4, [r0] - adds r7, r4, 0 - ldr r0, [r6] - b _08098988 - .align 2, 0 -_080985B0: .4byte gUnknown_20398B9 -_080985B4: .4byte gUnknown_2026E4E -_080985B8: .4byte 0x00000808 -_080985BC: .4byte gUnknown_203B49C -_080985C0: .4byte gUnknown_203B49D -_080985C4: .4byte gUnknown_20398A8 -_080985C8: .4byte gUnknown_20398AC -_080985CC: .4byte gUnknown_20398B0 -_080985D0: .4byte gUnknown_20398BE -_080985D4: .4byte gUnknown_20398C0 -_080985D8: .4byte gUnknown_20398C4 -_080985DC: - movs r0, 0x1 - negs r0, r0 - bl sub_809A71C - bl ScriptPrintNullTextbox - bl sub_809977C - ldr r0, _08098600 - ldr r0, [r0] - cmp r0, 0x11 - bls _080985F6 - b _08098756 -_080985F6: - lsls r0, 2 - ldr r1, _08098604 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08098600: .4byte gUnknown_20398B4 -_08098604: .4byte _08098608 - .align 2, 0 -_08098608: - .4byte _08098650 - .4byte _08098756 - .4byte _08098660 - .4byte _08098660 - .4byte _08098756 - .4byte _08098666 - .4byte _08098756 - .4byte _08098756 - .4byte _08098756 - .4byte _0809866A - .4byte _0809866A - .4byte _0809866A - .4byte _0809866A - .4byte _0809870C - .4byte _08098748 - .4byte _0809874C - .4byte _08098750 - .4byte _08098754 -_08098650: - bl sub_8098C58 - ldr r1, _0809865C - movs r0, 0x1 - str r0, [r1] - b _08098756 - .align 2, 0 -_0809865C: .4byte gUnknown_20398B4 -_08098660: - bl sub_8001D88 - b _08098756 -_08098666: - movs r7, 0x70 - b _08098756 -_0809866A: - ldr r0, _080986BC - ldr r2, [r0] - movs r0, 0 - movs r1, 0x16 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x25 - movs r2, 0 - bl SetScriptVarValue - bl sub_8098C58 - movs r0, 0 - movs r1, 0x15 - movs r2, 0x1 - movs r3, 0x2 - bl UpdateScriptVarWithImmediate - movs r0, 0 - movs r1, 0x13 - bl GetScriptVarValue - lsls r0, 16 - asrs r4, r0, 16 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _08098756 - cmp r4, 0x51 - bne _080986C0 - movs r0, 0 - movs r1, 0x14 - bl GetScriptVarValue - lsls r0, 16 - asrs r0, 16 - bl GetDungeonInfo_80A2608 - b _080986C6 - .align 2, 0 -_080986BC: .4byte gUnknown_20398B4 -_080986C0: - adds r0, r4, 0 - bl GetDungeonInfo_80A2608 -_080986C6: - movs r1, 0xA - ldrsh r7, [r0, r1] - ldr r5, _08098700 - ldr r0, [r5] - cmp r0, 0x9 - bne _080986E0 - lsls r2, r4, 16 - lsrs r2, 16 - movs r0, 0 - movs r1, 0x31 - movs r3, 0x1 - bl SetScriptVarArrayValue -_080986E0: - ldr r0, [r5] - bl sub_8098FCC - lsls r0, 16 - asrs r1, r0, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08098756 - ldr r0, _08098704 - strh r1, [r0] - ldr r1, _08098708 - movs r0, 0 - str r0, [r1] - b _08098756 - .align 2, 0 -_08098700: .4byte gUnknown_20398B4 -_08098704: .4byte gUnknown_20398BE -_08098708: .4byte gUnknown_20398C0 -_0809870C: - bl sub_8098C58 - ldr r1, _08098744 - movs r0, 0x1 - str r0, [r1] - movs r0, 0 - movs r1, 0x18 - movs r2, 0x1 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0xF - movs r2, 0 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0xD - movs r2, 0 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0xE - movs r2, 0 - bl SetScriptVarValue - movs r7, 0x71 - b _08098756 - .align 2, 0 -_08098744: .4byte gUnknown_20398B4 -_08098748: - movs r7, 0x73 - b _08098756 -_0809874C: - movs r7, 0x74 - b _08098756 -_08098750: - movs r7, 0x75 - b _08098756 -_08098754: - movs r7, 0x76 -_08098756: - ldr r0, _08098790 - ldrb r0, [r0] - cmp r0, 0 - bne _080987C0 - movs r0, 0 - movs r1, 0xD - bl GetScriptVarValue - adds r5, r0, 0 - ldr r4, _08098794 - ldr r2, [r4] - movs r0, 0 - movs r1, 0x18 - bl SetScriptVarValue - ldr r4, [r4] - cmp r4, 0x1 - beq _080987A6 - cmp r4, 0x3 - bne _0809879C - ldr r0, _08098798 - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0 - movs r1, 0xF - bl SetScriptVarValue - b _080987A6 - .align 2, 0 -_08098790: .4byte gUnknown_20398B9 -_08098794: .4byte gUnknown_20398B4 -_08098798: .4byte gUnknown_20398BE -_0809879C: - movs r0, 0 - movs r1, 0xF - adds r2, r5, 0 - bl SetScriptVarValue -_080987A6: - ldr r0, _0809882C - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0 - movs r1, 0xD - bl SetScriptVarValue - ldr r0, _08098830 - ldr r2, [r0] - movs r0, 0 - movs r1, 0xE - bl SetScriptVarValue -_080987C0: - ldr r1, _08098834 - movs r0, 0x2 - str r0, [r1] - ldr r0, _08098838 - movs r1, 0 - str r1, [r0] - ldr r0, _0809883C - str r1, [r0] - ldr r0, _08098840 - movs r4, 0x1 - negs r4, r4 - str r4, [r0] - ldr r2, _08098844 - ldr r1, _0809882C - ldrh r0, [r1] - strh r0, [r2] - strh r4, [r1] - bl sub_809977C - bl sub_809D4B0 - adds r0, r4, 0 - bl GroundSprite_Reset - bl sub_809C63C - bl sub_809A62C - bl GroundMap_Reset - bl sub_809D0BC - bl DeleteGroundEvents - bl DeleteGroundLives - bl DeleteGroundObjects - bl DeleteGroundEffects - bl sub_809C658 - bl nullsub_16 - bl UpdateAdventureAchievements - cmp r7, r4 - beq _08098848 - adds r0, r7, 0 - movs r1, 0 - bl GroundMap_ExecuteEvent - b _08098850 - .align 2, 0 -_0809882C: .4byte gUnknown_20398BE -_08098830: .4byte gUnknown_20398C0 -_08098834: .4byte gUnknown_20398B4 -_08098838: .4byte gUnknown_20398A8 -_0809883C: .4byte gUnknown_20398AC -_08098840: .4byte gUnknown_20398B0 -_08098844: .4byte gUnknown_20398BC -_08098848: - movs r0, 0x66 - movs r1, 0 - bl GroundMap_ExecuteEvent -_08098850: - bl GroundMap_Action - movs r0, 0 - movs r1, 0 - bl sub_8005838 - bl sub_80060EC - bl xxx_call_update_bg_sound_input -_08098864: - bl xxx_call_update_bg_sound_input - bl sub_80A6E68 - ldr r0, _08098890 - ldr r0, [r0] - cmp r0, 0 - beq _080988B2 - ldr r1, _08098894 - ldr r0, [r1] - cmp r0, 0 - ble _0809889C - subs r0, 0x1 - str r0, [r1] - cmp r0, 0 - bgt _080988F8 - ldr r0, _08098898 - ldr r0, [r0] - bl sub_80999D4 - b _080988F8 - .align 2, 0 -_08098890: .4byte gUnknown_20398A8 -_08098894: .4byte gUnknown_20398AC -_08098898: .4byte gUnknown_20398B0 -_0809889C: - bl sub_8099B94 - lsls r0, 24 - cmp r0, 0 - bne _080988F8 - bl sub_809C740 - lsls r0, 24 - cmp r0, 0 - bne _0809897C - b _080988F8 -_080988B2: - ldr r0, _08098968 - ldrb r0, [r0] - cmp r0, 0 - beq _080988F8 - ldr r0, _0809896C - ldrb r0, [r0] - cmp r0, 0 - bne _080988F8 - bl sub_809AFAC - lsls r0, 24 - cmp r0, 0 - bne _080988F8 - ldr r0, _08098970 - ldrh r0, [r0, 0x2] - ldr r2, _08098974 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080988E4 - bl sub_80048BC - lsls r0, 24 - cmp r0, 0 - beq _080988F8 -_080988E4: - movs r0, 0x72 - movs r1, 0 - bl GroundMap_ExecuteEvent - movs r0, 0x1E - bl GroundMainGameCancelRequest - movs r0, 0x1E - bl FadeOutAllMusic -_080988F8: - bl GroundMap_Action - bl nullsub_124 - bl GroundLives_Action - bl GroundObject_Action - bl GroundEffect_Action - bl nullsub_105 - bl sub_809B474 - bl GroundScript_Unlock - bl sub_809D25C - bl sub_80A59DC - bl sub_809B614 - bl sub_809CA20 - bl sub_80A6E80 - bl sub_8099BE4 - bl sub_8099744 - bl sub_8011860 - ldr r0, _08098978 - ldr r0, [r0] - bl IncrementPlayTime - bl WaitForNextFrameAndAdvanceRNG - bl LoadBufferedInputs - bl nullsub_120 - bl sub_80A5E70 - bl sub_809B638 - bl nullsub_106 - bl sub_80A73EC - bl sub_8099750 - bl sub_8009908 - b _08098864 - .align 2, 0 -_08098968: .4byte gUnknown_20398B9 -_0809896C: .4byte gUnknown_20398B8 -_08098970: .4byte gRealInputs -_08098974: .4byte 0x0000030f -_08098978: .4byte gPlayTimeRef -_0809897C: - bl GroundMap_Reset - movs r7, 0x1 - negs r7, r7 - ldr r0, _080989E8 - ldr r0, [r0] -_08098988: - subs r0, 0x1 - cmp r0, 0x1 - bhi _08098990 - b _080985DC -_08098990: - bl FreeGroundMapAction - bl nullsub_118 - bl FreeGroundLives - bl FreeGroundObjects - bl FreeGroundEffects - bl FreeGroundEvents - bl sub_809CB74 - bl sub_809A610 - bl sub_809C618 - bl sub_80A658C - bl sub_809D508 - bl sub_80A7754 - bl nullsub_119 - bl sub_8099768 - bl nullsub_103 - bl nullsub_16 - ldr r0, _080989EC - ldrb r0, [r0] - cmp r0, 0 - beq _080989FA - ldr r0, _080989E8 - ldr r0, [r0] - cmp r0, 0x9 - beq _080989F0 - cmp r0, 0xA - bne _080989F0 - movs r0, 0x10 - b _08098BD2 - .align 2, 0 -_080989E8: .4byte gUnknown_20398A8 -_080989EC: .4byte gUnknown_20398B9 -_080989F0: - movs r0, 0x1E - bl FadeOutAllMusic - movs r0, 0xF - b _08098BD2 -_080989FA: - ldr r0, _08098A10 - ldr r0, [r0] - subs r0, 0x3 - cmp r0, 0x5 - bls _08098A06 - b _08098BC0 -_08098A06: - lsls r0, 2 - ldr r1, _08098A14 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08098A10: .4byte gUnknown_20398A8 -_08098A14: .4byte _08098A18 - .align 2, 0 -_08098A18: - .4byte _08098A30 - .4byte _08098A72 - .4byte _08098AA0 - .4byte _08098B08 - .4byte _08098B58 - .4byte _08098B8C -_08098A30: - movs r4, 0x1 - negs r4, r4 - movs r0, 0 - movs r1, 0x13 - adds r2, r4, 0 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x14 - adds r2, r4, 0 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x4 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x4 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0xD - bl GetScriptVarValue - adds r2, r0, 0 - movs r0, 0 - movs r1, 0xF - bl SetScriptVarValue - movs r0, 0x5 - b _08098BD2 -_08098A72: - movs r0, 0 - movs r1, 0x13 - movs r2, 0 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x5 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x5 - bl SetScriptVarValue - movs r2, 0x1 - negs r2, r2 - movs r0, 0 - movs r1, 0x13 - bl SetScriptVarValue - movs r0, 0x6 - b _08098BD2 -_08098AA0: - ldr r5, _08098B04 - movs r1, 0 - ldrsh r0, [r5, r1] - bl sub_80A2654 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - movs r0, 0 - ldrsh r2, [r5, r0] - movs r0, 0 - movs r1, 0x13 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x14 - adds r2, r4, 0 - bl SetScriptVarValue - ldrh r2, [r5] - movs r0, 0 - movs r1, 0x30 - movs r3, 0x1 - bl SetScriptVarArrayValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x11 - bl GetScriptVarValue - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _08098B00 - movs r0, 0 - movs r1, 0x11 - movs r2, 0 - bl SetScriptVarValue -_08098B00: - movs r0, 0x7 - b _08098BD2 - .align 2, 0 -_08098B04: .4byte gUnknown_20398C4 -_08098B08: - movs r0, 0 - movs r1, 0x13 - movs r2, 0x51 - bl SetScriptVarValue - ldr r0, _08098B54 - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0 - movs r1, 0x14 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x11 - bl GetScriptVarValue - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _08098B4E - movs r0, 0 - movs r1, 0x11 - movs r2, 0 - bl SetScriptVarValue -_08098B4E: - movs r0, 0x8 - b _08098BD2 - .align 2, 0 -_08098B54: .4byte gUnknown_20398C4 -_08098B58: - movs r0, 0 - movs r1, 0x13 - movs r2, 0x50 - bl SetScriptVarValue - ldr r0, _08098B88 - ldrb r2, [r0] - movs r0, 0 - movs r1, 0x14 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0x9 - b _08098BD2 - .align 2, 0 -_08098B88: .4byte gUnknown_2039950 -_08098B8C: - movs r0, 0 - movs r1, 0x13 - movs r2, 0x52 - bl SetScriptVarValue - ldr r0, _08098BBC - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0 - movs r1, 0x14 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0xA - b _08098BD2 - .align 2, 0 -_08098BBC: .4byte gUnknown_20398C4 -_08098BC0: - movs r0, 0 - movs r1, 0x18 - movs r2, 0x1 - bl SetScriptVarValue - movs r0, 0x10 - bl FadeOutAllMusic - movs r0, 0xE -_08098BD2: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end xxx_script_related_8098468 - - .align 2,0 @ Don't pad with nop diff --git a/asm/ground_sprite.s b/asm/ground_sprite.s deleted file mode 100644 index 1bd86debc..000000000 --- a/asm/ground_sprite.s +++ /dev/null @@ -1,2336 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80A65F0 -sub_80A65F0: - push {r4-r6,lr} - adds r3, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, 0x50 - strh r1, [r0] - movs r0, 0x4 - ands r0, r1 - lsls r0, 16 - lsrs r0, 16 - negs r0, r0 - asrs r2, r0, 31 - movs r0, 0x40 - ands r2, r0 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080A6616 - subs r2, 0x40 -_080A6616: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A6624 - adds r1, r2, 0 - adds r1, 0x48 - b _080A6628 -_080A6624: - adds r1, r2, 0 - adds r1, 0x40 -_080A6628: - adds r0, r3, 0 - adds r0, 0x6A - strh r1, [r0] - adds r2, r3, 0 - adds r2, 0x50 - ldrh r1, [r2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080A6648 - adds r1, r3, 0 - adds r1, 0x3C - ldr r0, _080A6644 - b _080A664E - .align 2, 0 -_080A6644: .4byte gUnknown_2039DC0 -_080A6648: - adds r1, r3, 0 - adds r1, 0x3C - ldr r0, _080A6680 -_080A664E: - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldrh r1, [r2] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A6678 - ldrh r2, [r3, 0x3C] - ldr r1, _080A6684 - adds r0, r1, 0 - ands r0, r2 - strh r0, [r3, 0x3C] - adds r2, r3, 0 - adds r2, 0x42 - ldrh r0, [r2] - ands r1, r0 - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - orrs r1, r0 - strh r1, [r2] -_080A6678: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A6680: .4byte gUnknown_2039DB0 -_080A6684: .4byte 0x0000f3ff - thumb_func_end sub_80A65F0 - - thumb_func_start sub_80A6688 -sub_80A6688: - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - bl sub_80A65E0 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80A65F0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A6688 - - thumb_func_start SpriteHasPokemonSize_80A66A4 -SpriteHasPokemonSize_80A66A4: - push {lr} - movs r1, 0 - adds r0, 0x48 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - ble _080A66B4 - movs r1, 0x1 -_080A66B4: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end SpriteHasPokemonSize_80A66A4 - - thumb_func_start sub_80A66BC -sub_80A66BC: - push {lr} - adds r0, 0x52 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _080A66CC - movs r0, 0 - b _080A66CE -_080A66CC: - movs r0, 0x1 -_080A66CE: - pop {r1} - bx r1 - thumb_func_end sub_80A66BC - - thumb_func_start sub_80A66D4 -sub_80A66D4: - push {lr} - adds r1, r0, 0 - adds r0, 0x52 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bge _080A66F2 - adds r0, r1, 0 - adds r0, 0x48 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - ble _080A66F2 - movs r0, 0x1 - b _080A66F4 -_080A66F2: - movs r0, 0 -_080A66F4: - pop {r1} - bx r1 - thumb_func_end sub_80A66D4 - - thumb_func_start sub_80A66F8 -sub_80A66F8: - push {lr} - adds r1, r0, 0 - adds r0, 0x52 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - blt _080A6716 - ldrh r1, [r1] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - bne _080A6716 - lsrs r0, r1, 15 - b _080A6718 -_080A6716: - movs r0, 0 -_080A6718: - pop {r1} - bx r1 - thumb_func_end sub_80A66F8 - - thumb_func_start sub_80A671C -sub_80A671C: - push {r4-r6,lr} - adds r4, r0, 0 - adds r6, r4, 0 - adds r6, 0x58 - movs r0, 0 - ldrsh r1, [r6, r0] - cmp r1, 0 - beq _080A6752 - movs r0, 0xE0 - lsls r0, 1 - cmp r1, r0 - beq _080A674A - ldr r0, [r4, 0x5C] - movs r5, 0x1 - negs r5, r5 - cmp r0, r5 - beq _080A674A - bl sub_800E9E4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080A674E -_080A674A: - movs r0, 0x1 - b _080A6754 -_080A674E: - str r5, [r4, 0x5C] - strh r0, [r6] -_080A6752: - movs r0, 0 -_080A6754: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80A671C - - thumb_func_start IsOnscreen_80A675C -IsOnscreen_80A675C: - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r1, 0 - mov r0, sp - bl sub_809D248 - lsls r0, 24 - cmp r0, 0 - beq _080A678C - ldr r1, [r6] - cmp r1, 0 - bge _080A6776 - adds r1, 0xFF -_080A6776: - asrs r1, 8 - ldr r0, [sp] - subs r4, r1, r0 - ldr r1, [r6, 0x4] - cmp r1, 0 - bge _080A6784 - adds r1, 0xFF -_080A6784: - asrs r1, 8 - ldr r0, [sp, 0x4] - subs r5, r1, r0 - b _080A67A0 -_080A678C: - ldr r0, [r6] - cmp r0, 0 - bge _080A6794 - adds r0, 0xFF -_080A6794: - asrs r4, r0, 8 - ldr r1, [r6, 0x4] - cmp r1, 0 - bge _080A679E - adds r1, 0xFF -_080A679E: - asrs r5, r1, 8 -_080A67A0: - adds r1, r4, 0 - adds r1, 0x40 - ldr r0, _080A67BC - cmp r1, r0 - bhi _080A67C0 - movs r0, 0x10 - negs r0, r0 - cmp r5, r0 - blt _080A67C0 - cmp r5, 0xCF - bgt _080A67C0 - movs r0, 0x1 - b _080A67C2 - .align 2, 0 -_080A67BC: .4byte 0x0000016f -_080A67C0: - movs r0, 0 -_080A67C2: - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end IsOnscreen_80A675C - - thumb_func_start sub_80A67CC -sub_80A67CC: - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r7, 0 - cmp r5, 0 - beq _080A67E2 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - ble _080A67E2 - movs r7, 0x1 -_080A67E2: - adds r0, r2, 0 - bl sub_80A65E0 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80A65F0 - movs r1, 0 - str r1, [r4, 0x74] - str r1, [r4, 0x78] - movs r6, 0x1 - negs r6, r6 - str r6, [r4, 0x7C] - adds r0, r4, 0 - adds r0, 0x70 - strb r1, [r0] - subs r0, 0x4 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r2, r4, 0 - adds r2, 0x52 - ldr r0, _080A6884 - strh r0, [r2] - str r1, [r4, 0x54] - adds r0, r4, 0 - adds r0, 0x64 - strh r1, [r0] - adds r2, 0x14 - adds r0, r6, 0 - adds r3, r0, 0 - strh r0, [r2] - adds r0, r4, 0 - adds r0, 0x68 - strh r1, [r0] - subs r0, 0x10 - strh r1, [r0] - adds r1, r4, 0 - adds r1, 0x5A - movs r0, 0xFF - strb r0, [r1] - str r6, [r4, 0x5C] - str r6, [r4, 0x60] - cmp r7, 0 - beq _080A6888 - ldr r0, [r5] - ldr r1, [r5, 0x4] - str r0, [r4, 0x48] - str r1, [r4, 0x4C] - adds r5, r4, 0 - adds r5, 0x48 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_80A68F8 - lsls r0, 24 - cmp r0, 0 - bne _080A689A - adds r0, r4, 0 - adds r0, 0x50 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - bne _080A689A - adds r0, r5, 0 - bl sub_80A6CF4 - lsls r0, 24 - cmp r0, 0 - beq _080A689A - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_80A68F8 - b _080A689A - .align 2, 0 -_080A6884: .4byte 0x0000ffff -_080A6888: - adds r1, r4, 0 - adds r1, 0x48 - ldrh r0, [r1] - orrs r0, r3 - strh r0, [r1] - adds r0, r4, 0 - adds r0, 0x4A - strh r7, [r0] - str r7, [r4, 0x4C] -_080A689A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A67CC - - thumb_func_start sub_80A68A0 -sub_80A68A0: - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x50 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080A68CE - adds r0, r4, 0 - adds r0, 0x58 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080A68CE - ldr r1, [r4, 0x5C] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080A68CE - adds r0, r1, 0 - bl sub_800DC14 -_080A68CE: - ldr r0, [r4, 0x54] - cmp r0, 0 - beq _080A68DC - bl CloseFile - movs r0, 0 - str r0, [r4, 0x54] -_080A68DC: - adds r0, r4, 0 - bl sub_80A69FC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A68A0 - - thumb_func_start sub_80A68E8 -sub_80A68E8: - push {lr} - movs r0, 0x15 -_080A68EC: - subs r0, 0x1 - cmp r0, 0 - bge _080A68EC - pop {r0} - bx r0 - thumb_func_end sub_80A68E8 - - thumb_func_start sub_80A68F8 -sub_80A68F8: - push {r4-r7,lr} - mov r12, r0 - adds r5, r2, 0 - ldr r0, _080A6924 - ldr r4, [r0] - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, r5 - blt _080A6956 - adds r5, r0, 0 - movs r3, 0 - ldr r0, [r4] - mov r6, r12 - adds r6, 0x52 - mov r7, r12 - adds r7, 0x64 - cmp r0, 0 - bne _080A6928 - movs r2, 0x1 - cmp r2, r5 - blt _080A692A - b _080A6986 - .align 2, 0 -_080A6924: .4byte gUnknown_3001B7C -_080A6928: - movs r2, 0 -_080A692A: - adds r0, r3, 0x1 - lsls r0, 16 - asrs r3, r0, 16 - adds r4, 0xC - cmp r3, 0x15 - bgt _080A6986 - ldr r0, [r4] - cmp r0, 0 - bne _080A6928 - adds r2, 0x1 - cmp r2, r5 - blt _080A692A - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - subs r0, 0xC - subs r4, r0 - adds r0, r3, 0x1 - subs r0, r2 - lsls r0, 16 - asrs r3, r0, 16 - b _080A6986 -_080A6956: - movs r3, 0x15 - adds r4, 0xFC - ldr r0, [r4] - mov r6, r12 - adds r6, 0x52 - mov r7, r12 - adds r7, 0x64 - cmp r0, 0 - bne _080A696C - movs r2, 0x1 - b _080A6982 -_080A696C: - movs r2, 0 -_080A696E: - subs r0, r3, 0x1 - lsls r0, 16 - asrs r3, r0, 16 - subs r4, 0xC - cmp r3, 0 - blt _080A6986 - ldr r0, [r4] - cmp r0, 0 - bne _080A696C - adds r2, 0x1 -_080A6982: - cmp r2, r5 - blt _080A696E -_080A6986: - cmp r2, r5 - blt _080A69C4 - strh r3, [r6] - strh r5, [r7] - movs r0, 0x1 - str r0, [r4] - mov r0, r12 - str r0, [r4, 0x8] - ldrh r1, [r1, 0x2] - bl GroundSprite_ExtendPaletteAdd - cmp r5, 0x1 - ble _080A69B2 - movs r2, 0x2 - adds r0, r4, 0 - adds r0, 0xC - subs r1, r5, 0x1 -_080A69A8: - str r2, [r0] - adds r0, 0xC - subs r1, 0x1 - cmp r1, 0 - bne _080A69A8 -_080A69B2: - ldr r1, _080A69C0 - ldr r0, [r1] - subs r0, r5 - str r0, [r1] - movs r0, 0x1 - b _080A69EC - .align 2, 0 -_080A69C0: .4byte gUnknown_2039DD4 -_080A69C4: - ldr r1, _080A69F4 - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - negs r0, r0 - mov r1, r12 - str r0, [r1, 0x7C] - mov r0, r12 - adds r0, 0x70 - movs r1, 0 - strb r1, [r0] - ldr r0, _080A69F8 - strh r0, [r6] - strh r1, [r7] - mov r0, r12 - adds r0, 0x6C - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - movs r0, 0 -_080A69EC: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080A69F4: .4byte gUnknown_2039DD0 -_080A69F8: .4byte 0x0000ffff - thumb_func_end sub_80A68F8 - - thumb_func_start sub_80A69FC -sub_80A69FC: - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r6, 0 - adds r7, 0x52 - movs r0, 0 - ldrsh r4, [r7, r0] - ldr r0, _080A6A80 - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - ldr r0, [r0] - adds r5, r0, r1 - cmp r4, 0 - blt _080A6A7A - adds r0, r6, 0 - bl GroundSprite_ExtendPaletteDelete - movs r0, 0 - str r0, [r5, 0x8] - str r0, [r5] - adds r5, 0xC - ldr r1, _080A6A84 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - asrs r4, r0, 16 - adds r6, 0x64 - mov r12, r6 - cmp r4, 0x15 - bgt _080A6A6A - ldr r0, [r5] - cmp r0, 0x2 - bne _080A6A6A - movs r6, 0 - adds r2, r1, 0 - lsls r1, r4, 16 - movs r0, 0x80 - lsls r0, 9 - adds r1, r0 - adds r3, r0, 0 -_080A6A50: - str r6, [r5] - adds r5, 0xC - ldr r0, [r2] - adds r0, 0x1 - str r0, [r2] - adds r0, r1, 0 - adds r1, r3 - asrs r4, r0, 16 - cmp r4, 0x15 - bgt _080A6A6A - ldr r0, [r5] - cmp r0, 0x2 - beq _080A6A50 -_080A6A6A: - ldr r0, _080A6A88 - strh r0, [r7] - movs r0, 0 - mov r1, r12 - strh r0, [r1] - ldr r1, _080A6A8C - movs r0, 0x1 - strb r0, [r1] -_080A6A7A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A6A80: .4byte gUnknown_3001B7C -_080A6A84: .4byte gUnknown_2039DD4 -_080A6A88: .4byte 0x0000ffff -_080A6A8C: .4byte gUnknown_2039DD0 - thumb_func_end sub_80A69FC - - thumb_func_start GroundSprite_ExtendPaletteAdd -GroundSprite_ExtendPaletteAdd: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r10, r0 - lsls r1, 16 - lsrs r2, r1, 16 - adds r5, r2, 0 - movs r0, 0xC0 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - bne _080A6AB0 - b _080A6C6C -_080A6AB0: - movs r0, 0x80 - lsls r0, 3 - ands r0, r2 - cmp r0, 0 - beq _080A6AD8 - ldr r0, _080A6AD4 - ldr r1, [r0] - movs r3, 0x86 - lsls r3, 1 - adds r4, r1, r3 - ldrh r1, [r4] - adds r3, r0, 0 - cmp r1, r2 - bne _080A6B36 - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - b _080A6C78 - .align 2, 0 -_080A6AD4: .4byte gUnknown_3001B7C -_080A6AD8: - movs r0, 0 - mov r8, r0 - ldr r1, _080A6B1C - ldr r0, [r1] - movs r2, 0x84 - lsls r2, 1 - adds r4, r0, r2 - adds r3, r1, 0 - movs r1, 0xE8 - lsls r1, 13 -_080A6AEC: - ldrh r0, [r4] - cmp r0, r5 - bne _080A6B24 - lsrs r1, 16 - adds r3, r1, 0 - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - mov r0, r10 - cmp r0, 0 - beq _080A6B08 - subs r1, 0x10 - adds r0, 0x68 - strh r1, [r0] -_080A6B08: - adds r0, r3, 0 - subs r0, 0x10 - str r0, [sp] - str r5, [sp, 0x4] - movs r0, 0 - ldr r1, _080A6B20 - mov r2, r8 - bl Log - b _080A6C78 - .align 2, 0 -_080A6B1C: .4byte gUnknown_3001B7C -_080A6B20: .4byte gUnknown_81177F4 -_080A6B24: - movs r2, 0x80 - lsls r2, 9 - adds r1, r2 - movs r0, 0x1 - add r8, r0 - adds r4, 0x4 - mov r2, r8 - cmp r2, 0x1 - ble _080A6AEC -_080A6B36: - movs r0, 0x80 - lsls r0, 3 - ands r0, r5 - cmp r0, 0 - beq _080A6B68 - movs r0, 0x1 - mov r8, r0 - ldr r0, [r3] - movs r1, 0x86 - lsls r1, 1 - adds r4, r0, r1 - movs r2, 0x2 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A6BA8 - ldr r0, _080A6B60 - ldr r1, _080A6B64 - adds r2, r5, 0 - bl FatalError - .align 2, 0 -_080A6B60: .4byte gUnknown_8117858 -_080A6B64: .4byte gUnknown_8117864 -_080A6B68: - movs r0, 0 - mov r8, r0 - ldr r0, [r3] - movs r1, 0x84 - lsls r1, 1 - adds r4, r0, r1 - movs r2, 0x2 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A6B90 -_080A6B7C: - movs r3, 0x1 - add r8, r3 - adds r4, 0x4 - mov r0, r8 - cmp r0, 0x1 - bgt _080A6B96 - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - bgt _080A6B7C -_080A6B90: - mov r2, r8 - cmp r2, 0x1 - ble _080A6BA8 -_080A6B96: - ldr r0, _080A6BA0 - ldr r1, _080A6BA4 - adds r2, r5, 0 - bl FatalError - .align 2, 0 -_080A6BA0: .4byte gUnknown_8117888 -_080A6BA4: .4byte gUnknown_8117864 -_080A6BA8: - mov r0, r8 - adds r0, 0x1D - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - mov r3, r8 - lsls r0, r3, 20 - movs r1, 0xE8 - lsls r1, 17 - adds r0, r1 - lsrs r0, 16 - str r0, [sp, 0x10] - movs r0, 0x80 - lsls r0, 2 - ands r0, r5 - cmp r0, 0 - beq _080A6BE8 - ldr r0, _080A6BE0 - ldr r1, _080A6BE4 - bl OpenFileAndGetFileDataPtr - mov r9, r0 - ldr r7, [r0, 0x4] - movs r0, 0xFF - ands r0, r5 - lsls r0, 6 - adds r7, r0 - b _080A6BFE - .align 2, 0 -_080A6BE0: .4byte gUnknown_81177EC -_080A6BE4: .4byte gMonsterFileArchive -_080A6BE8: - movs r0, 0xFF - ands r0, r5 - lsls r0, 2 - ldr r1, _080A6C60 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080A6C64 - bl OpenFileAndGetFileDataPtr - mov r9, r0 - ldr r7, [r0, 0x4] -_080A6BFE: - movs r0, 0x80 - lsls r0, 5 - ands r0, r5 - lsls r0, 16 - lsrs r0, 16 - negs r0, r0 - lsrs r6, r0, 31 - movs r0, 0x80 - lsls r0, 6 - ands r0, r5 - cmp r0, 0 - beq _080A6C1A - movs r0, 0x2 - orrs r6, r0 -_080A6C1A: - ldr r0, [sp, 0xC] - adds r1, r6, 0 - bl sub_80997F4 - ldr r0, [sp, 0x10] - adds r1, r7, 0 - movs r2, 0x10 - bl sub_809971C - strh r5, [r4] - movs r0, 0x1 - strh r0, [r4, 0x2] - ldr r2, [sp, 0xC] - subs r2, 0x10 - mov r3, r10 - cmp r3, 0 - beq _080A6C42 - mov r0, r10 - adds r0, 0x68 - strh r2, [r0] -_080A6C42: - ldr r1, _080A6C68 - str r2, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - mov r2, r8 - ldr r3, [sp, 0xC] - bl Log - mov r0, r9 - cmp r0, 0 - beq _080A6C78 - bl CloseFile - b _080A6C78 - .align 2, 0 -_080A6C60: .4byte gUnknown_81178F4 -_080A6C64: .4byte gOrnamentFileArchive -_080A6C68: .4byte gUnknown_8117894 -_080A6C6C: - mov r1, r10 - cmp r1, 0 - beq _080A6C78 - mov r0, r10 - adds r0, 0x68 - strh r5, [r0] -_080A6C78: - 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 GroundSprite_ExtendPaletteAdd - - thumb_func_start GroundSprite_ExtendPaletteDelete -GroundSprite_ExtendPaletteDelete: - push {r4-r6,lr} - adds r2, r0, 0 - cmp r2, 0 - beq _080A6C9E - adds r0, 0x68 - ldrh r0, [r0] - adds r5, r0, 0 - subs r5, 0xD - cmp r5, 0 - blt _080A6CE6 - b _080A6CA0 -_080A6C9E: - movs r5, 0x1 -_080A6CA0: - ldr r0, _080A6CEC - lsls r1, r5, 2 - movs r3, 0x84 - lsls r3, 1 - adds r1, r3 - ldr r0, [r0] - adds r4, r0, r1 - cmp r2, 0 - beq _080A6CBA - adds r1, r2, 0 - adds r1, 0x68 - movs r0, 0 - strh r0, [r1] -_080A6CBA: - ldrh r0, [r4, 0x2] - subs r0, 0x1 - movs r6, 0 - strh r0, [r4, 0x2] - lsls r0, 16 - cmp r0, 0 - bgt _080A6CE6 - ldr r1, _080A6CF0 - ldrh r3, [r4] - movs r0, 0 - adds r2, r5, 0 - bl Log - strh r6, [r4] - strh r6, [r4, 0x2] - adds r0, r5, 0 - adds r0, 0x1D - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - bl sub_80997F4 -_080A6CE6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A6CEC: .4byte gUnknown_3001B7C -_080A6CF0: .4byte gUnknown_81178C0 - thumb_func_end GroundSprite_ExtendPaletteDelete - - thumb_func_start sub_80A6CF4 -sub_80A6CF4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x68 - movs r1, 0 - mov r8, r1 - movs r1, 0 - ldrsh r2, [r0, r1] - mov r9, r2 - movs r2, 0 - mov r10, r2 - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x60] - str r0, [sp, 0x64] - add r4, sp, 0x58 - adds r0, r4, 0 - bl sub_809D248 - movs r7, 0 - ldr r0, _080A6D70 - ldr r3, [r0] - movs r1, 0x80 - lsls r1, 6 - mov r12, r1 - mov r4, sp -_080A6D2C: - ldr r0, [r3] - cmp r0, 0x1 - bne _080A6DB4 - ldr r2, [r3, 0x8] - adds r0, r2, 0 - adds r0, 0x50 - ldrh r1, [r0] - mov r0, r12 - ands r0, r1 - cmp r0, 0 - bne _080A6DB4 - ldr r0, [r2, 0x7C] - cmp r0, 0 - blt _080A6DB4 - ldr r1, [r2, 0x74] - cmp r1, 0 - bge _080A6D50 - adds r1, 0xFF -_080A6D50: - asrs r1, 8 - ldr r0, [sp, 0x58] - subs r5, r1, r0 - ldr r1, [r2, 0x78] - cmp r1, 0 - bge _080A6D5E - adds r1, 0xFF -_080A6D5E: - asrs r1, 8 - ldr r0, [sp, 0x5C] - subs r1, r0 - adds r6, r1, 0 - cmp r1, 0 - ble _080A6D74 - adds r0, r6, 0 - adds r0, 0x28 - b _080A6D78 - .align 2, 0 -_080A6D70: .4byte gUnknown_3001B7C -_080A6D74: - movs r0, 0x28 - subs r0, r6 -_080A6D78: - str r0, [r2, 0x7C] - cmp r5, 0 - ble _080A6D88 - ldr r0, [r2, 0x7C] - cmp r5, r0 - ble _080A6D92 - str r5, [r2, 0x7C] - b _080A6D92 -_080A6D88: - negs r1, r5 - ldr r0, [r2, 0x7C] - cmp r1, r0 - ble _080A6D92 - str r1, [r2, 0x7C] -_080A6D92: - adds r0, r2, 0 - adds r0, 0x48 - movs r1, 0 - ldrsh r0, [r0, r1] - add r10, r0 - cmp r0, r9 - blt _080A6DAE - ldr r0, [r2, 0x7C] - ldr r1, [sp, 0x64] - cmp r1, r0 - bge _080A6DAE - mov r1, r8 - str r1, [sp, 0x60] - str r0, [sp, 0x64] -_080A6DAE: - stm r4!, {r2} - movs r2, 0x1 - add r8, r2 -_080A6DB4: - adds r0, r7, 0x1 - lsls r0, 16 - asrs r7, r0, 16 - adds r3, 0xC - cmp r7, 0x15 - ble _080A6D2C - cmp r10, r9 - blt _080A6E54 - ldr r0, [sp, 0x60] - cmp r0, 0 - blt _080A6DD8 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - bl sub_80A69FC - movs r0, 0x1 - b _080A6E56 -_080A6DD8: - mov r1, r8 - cmp r1, 0 - ble _080A6E54 -_080A6DDE: - movs r5, 0x1 - negs r5, r5 - adds r3, r5, 0 - movs r6, 0 - mov r7, r8 - subs r7, 0x1 - mov r2, r8 - cmp r2, 0 - ble _080A6E08 - mov r2, sp - mov r1, r8 -_080A6DF4: - ldr r0, [r2] - ldr r0, [r0, 0x7C] - cmp r3, r0 - bge _080A6E00 - mov r5, r8 - adds r3, r0, 0 -_080A6E00: - adds r2, 0x4 - subs r1, 0x1 - cmp r1, 0 - bne _080A6DF4 -_080A6E08: - lsls r0, r5, 2 - mov r1, sp - adds r4, r1, r0 - ldr r0, [r4] - bl sub_80A69FC - mov r8, r7 - adds r1, r5, 0 - cmp r1, r8 - bge _080A6E28 - adds r2, r4, 0 -_080A6E1E: - ldr r0, [r2, 0x4] - stm r2!, {r0} - adds r1, 0x1 - cmp r1, r8 - blt _080A6E1E -_080A6E28: - movs r1, 0 - ldr r0, _080A6E40 - ldr r3, [r0] -_080A6E2E: - ldr r0, [r3] - cmp r0, 0 - bne _080A6E44 - adds r6, 0x1 - cmp r6, r9 - blt _080A6E46 - movs r0, 0x1 - b _080A6E56 - .align 2, 0 -_080A6E40: .4byte gUnknown_3001B7C -_080A6E44: - movs r6, 0 -_080A6E46: - adds r1, 0x1 - adds r3, 0xC - cmp r1, 0x15 - ble _080A6E2E - mov r2, r8 - cmp r2, 0 - bgt _080A6DDE -_080A6E54: - movs r0, 0 -_080A6E56: - add sp, 0x68 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80A6CF4 - - thumb_func_start sub_80A6E68 -sub_80A6E68: - push {lr} - movs r0, 0 - bl ResetSprites - movs r0, 0 - bl nullsub_10 - bl sub_800E970 - pop {r0} - bx r0 - thumb_func_end sub_80A6E68 - - thumb_func_start sub_80A6E80 -sub_80A6E80: - push {r4,lr} - sub sp, 0x4 - ldr r4, _080A6EC4 - adds r0, r4, 0 - bl sub_809D248 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080A6E98 - str r0, [r4] - str r0, [r4, 0x4] -_080A6E98: - bl sub_80ABA7C - bl sub_80ACAD4 - bl sub_80AD7AC - ldrh r1, [r4, 0x4] - lsls r1, 16 - ldrh r0, [r4] - orrs r0, r1 - str r0, [sp] - mov r0, sp - bl sub_800E90C - bl sub_8005180 - bl nullsub_12 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A6EC4: .4byte gUnknown_2039DD8 - thumb_func_end sub_80A6E80 - - thumb_func_start sub_80A6EC8 -sub_80A6EC8: - push {lr} - adds r2, r0, 0 - adds r0, 0x52 - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r0, 0 - ble _080A6EF6 - adds r0, r2, 0 - adds r0, 0x48 - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r1, r0 - bgt _080A6EE4 - adds r1, r0, 0 -_080A6EE4: - adds r0, r2, 0 - adds r0, 0x64 - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r0, r1 - beq _080A6EF6 - adds r0, r2, 0 - adds r0, 0x66 - strh r1, [r0] -_080A6EF6: - pop {r0} - bx r0 - thumb_func_end sub_80A6EC8 - - thumb_func_start sub_80A6EFC -sub_80A6EFC: - push {r4-r7,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r1, 16 - asrs r7, r1, 16 - lsls r2, 24 - asrs r6, r2, 24 - adds r0, 0x52 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _080A6F48 - adds r5, r4, 0 - adds r5, 0x66 - movs r2, 0 - ldrsh r0, [r5, r2] - cmp r0, 0 - blt _080A6F28 - adds r1, r4, 0 - adds r1, 0x48 - adds r2, r0, 0 - b _080A6F62 -_080A6F28: - adds r1, r4, 0 - adds r1, 0x48 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bgt _080A6F36 - b _080A7038 -_080A6F36: - movs r2, 0x1 - negs r2, r2 - adds r0, r4, 0 - bl sub_80A68F8 - lsls r0, 24 - cmp r0, 0 - beq _080A7038 - b _080A6F72 -_080A6F48: - adds r5, r4, 0 - adds r5, 0x66 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - blt _080A6F72 - adds r0, r4, 0 - bl sub_80A69FC - adds r1, r4, 0 - adds r1, 0x48 - movs r0, 0 - ldrsh r2, [r5, r0] -_080A6F62: - adds r0, r4, 0 - bl sub_80A68F8 - lsls r0, 24 - cmp r0, 0 - beq _080A7038 - ldr r0, _080A6F8C - strh r0, [r5] -_080A6F72: - movs r0, 0x80 - lsls r0, 3 - ands r0, r7 - lsls r0, 16 - asrs r3, r0, 16 - cmp r3, 0 - beq _080A6F94 - ldrh r1, [r4] - ldr r0, _080A6F90 - ands r0, r1 - strh r0, [r4] - b _080A7038 - .align 2, 0 -_080A6F8C: .4byte 0x0000ffff -_080A6F90: .4byte 0x0000efff -_080A6F94: - ldr r2, _080A6FE0 - adds r0, r4, 0 - adds r0, 0x52 - movs r5, 0 - ldrsh r1, [r0, r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, [r2] - adds r1, r0 - mov r12, r1 - adds r1, r4, 0 - adds r1, 0x70 - movs r0, 0x1 - strb r0, [r1] - subs r0, 0x2 - str r0, [r4, 0x7C] - movs r1, 0xE0 - lsls r1, 3 - ands r1, r7 - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - beq _080A6FE4 - cmp r1, r0 - ble _080A6FEE - movs r0, 0x80 - lsls r0, 2 - cmp r1, r0 - beq _080A6FFA - movs r0, 0xC0 - lsls r0, 2 - cmp r1, r0 - bne _080A6FEE - adds r0, r4, 0 - adds r0, 0x6C - strh r3, [r0] - b _080A7000 - .align 2, 0 -_080A6FE0: .4byte gUnknown_3001B7C -_080A6FE4: - adds r1, r4, 0 - adds r1, 0x6C - movs r0, 0x80 - strh r0, [r1] - b _080A7000 -_080A6FEE: - adds r1, r4, 0 - adds r1, 0x6C - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1] - b _080A7000 -_080A6FFA: - adds r0, r4, 0 - adds r0, 0x6C - strh r1, [r0] -_080A7000: - adds r0, r4, 0 - adds r0, 0x6E - movs r1, 0 - strh r1, [r0] - ldr r5, [r4, 0x4C] - movs r0, 0xFF - ands r0, r7 - adds r2, r6, 0 - cmp r6, 0 - bge _080A7016 - adds r2, r6, 0x7 -_080A7016: - asrs r2, 3 - adds r2, r0, r2 - movs r3, 0x7 - ands r3, r6 - mov r6, r12 - ldr r0, [r6, 0x4] - str r0, [sp] - str r1, [sp, 0x4] - lsls r0, r7, 16 - lsrs r0, 27 - movs r1, 0x1 - ands r0, r1 - str r0, [sp, 0x8] - adds r0, r4, 0 - adds r1, r5, 0 - bl AxResInit -_080A7038: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A6EFC - - thumb_func_start sub_80A7040 -sub_80A7040: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r3, 0 - lsls r1, 16 - asrs r3, r1, 16 - lsls r2, 24 - asrs r2, 24 - adds r0, 0x50 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080A708C - cmp r3, 0 - beq _080A7068 - movs r0, 0xE0 - lsls r0, 1 - cmp r3, r0 - bne _080A7080 -_080A7068: - adds r0, r4, 0 - bl sub_80A671C - lsls r0, 24 - cmp r0, 0 - beq _080A708C - adds r1, r4, 0 - adds r1, 0x58 - movs r0, 0xE0 - lsls r0, 1 - strh r0, [r1] - b _080A708C -_080A7080: - adds r0, r4, 0 - adds r0, 0x58 - strh r3, [r0] - adds r0, 0x2 - strb r2, [r0] - str r5, [r4, 0x60] -_080A708C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A7040 - - thumb_func_start sub_80A7094 -sub_80A7094: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x40 - adds r7, r0, 0 - mov r10, r1 - mov r8, r2 - str r3, [sp, 0x3C] - ldr r0, [r2] - ldr r1, [r2, 0x4] - str r0, [r7, 0x74] - str r1, [r7, 0x78] - movs r6, 0 - str r6, [r7, 0x7C] - adds r0, r7, 0 - adds r0, 0x50 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080A7172 - adds r4, r7, 0 - adds r4, 0x58 - movs r0, 0 - ldrsh r1, [r4, r0] - cmp r1, 0 - beq _080A7172 - movs r0, 0xE0 - lsls r0, 1 - cmp r1, r0 - bne _080A70EC - ldr r0, [r7, 0x5C] - movs r5, 0x1 - negs r5, r5 - cmp r0, r5 - beq _080A70E8 - bl sub_800DC14 - str r5, [r7, 0x5C] -_080A70E8: - strh r6, [r4] - b _080A7172 -_080A70EC: - ldr r0, [r7, 0x5C] - movs r1, 0x1 - negs r1, r1 - mov r9, r1 - cmp r0, r9 - bne _080A7160 - add r1, sp, 0x8 - ldr r0, _080A715C - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - movs r1, 0 - ldrsh r0, [r4, r1] - bl sub_800EE5C - bl sub_800EF64 - add r2, sp, 0x14 - movs r3, 0 - ldrsh r0, [r4, r3] - str r0, [sp, 0x14] - str r6, [r2, 0x4] - adds r0, r7, 0 - adds r0, 0x5A - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - str r0, [r2, 0x8] - mov r4, r8 - ldr r0, [r4] - cmp r0, 0 - bge _080A712C - adds r0, 0xFF -_080A712C: - asrs r0, 8 - strh r0, [r2, 0xC] - mov r5, r8 - ldr r0, [r5, 0x4] - cmp r0, 0 - bge _080A713A - adds r0, 0xFF -_080A713A: - asrs r0, 8 - strh r0, [r2, 0xE] - strh r6, [r2, 0x10] - strh r6, [r2, 0x12] - mov r0, r9 - str r0, [r2, 0x14] - str r6, [r2, 0x18] - add r1, sp, 0x30 - add r0, sp, 0x8 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - adds r0, r2, 0 - bl sub_800E890 - str r0, [r7, 0x5C] - b _080A7172 - .align 2, 0 -_080A715C: .4byte gUnknown_81178E0 -_080A7160: - bl sub_800E9E4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080A7172 - mov r1, r9 - str r1, [r7, 0x5C] - strh r0, [r4] -_080A7172: - adds r0, r7, 0 - adds r0, 0x52 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - blt _080A7222 - adds r0, r7, 0 - adds r0, 0x50 - ldrh r4, [r0] - movs r0, 0x40 - ands r0, r4 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - cmp r0, 0 - bne _080A7222 - mov r3, r8 - ldr r1, [r3] - cmp r1, 0 - bge _080A719C - adds r1, 0xFF -_080A719C: - asrs r1, 8 - ldr r2, _080A7228 - ldr r0, [r2] - subs r5, r1, r0 - mov r1, r8 - ldr r0, [r1, 0x4] - cmp r0, 0 - bge _080A71AE - adds r0, 0xFF -_080A71AE: - asrs r1, r0, 8 - ldr r0, [r2, 0x4] - subs r6, r1, r0 - ldr r3, [sp, 0x3C] - cmp r3, 0 - bge _080A71BC - adds r3, 0xFF -_080A71BC: - asrs r0, r3, 8 - subs r0, r6, r0 - mov r8, r0 - adds r1, r5, 0 - adds r1, 0x40 - ldr r0, _080A722C - cmp r1, r0 - bhi _080A7274 - movs r0, 0x10 - negs r0, r0 - cmp r6, r0 - blt _080A7274 - cmp r6, 0xCF - bgt _080A7274 - cmp r8, r0 - blt _080A7274 - mov r2, r8 - cmp r2, 0xCF - bgt _080A7274 - movs r0, 0x10 - ands r0, r4 - cmp r0, 0 - beq _080A7234 - ldr r0, _080A7230 - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A7234 - adds r0, r7, 0 - movs r1, 0 - bl sub_80A72B8 - movs r1, 0x98 - lsls r1, 1 - adds r0, r7, 0 - adds r0, 0x68 - ldrh r0, [r0] - str r0, [sp] - adds r0, r7, 0 - adds r0, 0x3C - str r0, [sp, 0x4] - adds r0, r7, 0 - movs r2, 0xD0 - movs r3, 0 - bl DoAxFrame_800558C - adds r0, r7, 0 - adds r0, 0x70 - mov r3, r9 - strb r3, [r0] -_080A7222: - movs r0, 0 - b _080A72A6 - .align 2, 0 -_080A7228: .4byte gUnknown_2039DD8 -_080A722C: .4byte 0x0000016f -_080A7230: .4byte gUnknown_2039DCC -_080A7234: - adds r4, r7, 0 - adds r4, 0x70 - ldrb r1, [r4] - adds r0, r7, 0 - bl sub_80A72B8 - adds r0, r7, 0 - adds r0, 0x6A - movs r1, 0 - ldrsh r3, [r0, r1] - adds r3, r6 - subs r0, 0x2 - ldrh r0, [r0] - str r0, [sp] - adds r0, r7, 0 - adds r0, 0x3C - str r0, [sp, 0x4] - adds r0, r7, 0 - adds r1, r5, 0 - mov r2, r8 - bl DoAxFrame_800558C - movs r0, 0 - strb r0, [r4] - mov r2, r10 - cmp r2, 0 - beq _080A7270 - mov r3, r10 - str r5, [r3] - str r6, [r3, 0x4] -_080A7270: - movs r0, 0x1 - b _080A72A6 -_080A7274: - adds r4, r7, 0 - adds r4, 0x70 - ldrb r0, [r4] - cmp r0, 0 - beq _080A7222 - adds r0, r7, 0 - movs r1, 0x1 - bl sub_80A72B8 - movs r1, 0x98 - lsls r1, 1 - adds r0, r7, 0 - adds r0, 0x68 - ldrh r0, [r0] - str r0, [sp] - adds r0, r7, 0 - adds r0, 0x3C - str r0, [sp, 0x4] - adds r0, r7, 0 - movs r2, 0xD0 - movs r3, 0 - bl DoAxFrame_800558C - movs r0, 0 - strb r0, [r4] -_080A72A6: - add sp, 0x40 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80A7094 - - thumb_func_start sub_80A72B8 -sub_80A72B8: - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 24 - cmp r1, 0 - beq _080A72D2 - adds r1, r6, 0 - adds r1, 0x6E - movs r0, 0 - strh r0, [r1] - adds r0, r6, 0 - bl RunAxAnimationFrame - b _080A7304 -_080A72D2: - adds r5, r6, 0 - adds r5, 0x6E - adds r0, r6, 0 - adds r0, 0x6C - ldrh r0, [r0] - ldrh r1, [r5] - adds r0, r1 - strh r0, [r5] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080A7304 - ldr r0, _080A730C - adds r7, r0, 0 -_080A72EE: - adds r4, r5, 0 - ldrh r1, [r5] - adds r0, r7, r1 - strh r0, [r5] - adds r0, r6, 0 - bl RunAxAnimationFrame - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0xFF - bgt _080A72EE -_080A7304: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A730C: .4byte 0xffffff00 - thumb_func_end sub_80A72B8 - - thumb_func_start sub_80A7310 -sub_80A7310: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - mov r12, r0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, 0x50 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080A73DC - mov r0, r12 - ldr r0, [r0, 0x5C] - mov r8, r0 - movs r0, 0x1 - negs r0, r0 - cmp r8, r0 - beq _080A73DC - ldr r0, [r4] - cmp r0, 0 - bge _080A7344 - adds r0, 0xFF -_080A7344: - lsls r0, 8 - lsrs r0, 16 - ldr r1, _080A73D0 - mov r9, r1 - ldr r2, [sp, 0x4] - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0x4] - ldr r0, [r4, 0x4] - cmp r0, 0 - bge _080A735C - adds r0, 0xFF -_080A735C: - lsls r0, 8 - lsrs r0, 16 - lsls r0, 16 - ldr r6, _080A73D4 - adds r4, r6, 0 - ands r4, r2 - orrs r4, r0 - str r4, [sp, 0x4] - asrs r2, r4, 16 - ldr r0, _080A73D8 - ldr r0, [r0, 0x4] - subs r0, r2, r0 - mov r1, r12 - adds r1, 0x6A - movs r7, 0 - ldrsh r1, [r1, r7] - adds r0, r1 - adds r7, r0, 0x2 - cmp r3, 0 - bge _080A7386 - adds r3, 0xFF -_080A7386: - asrs r0, r3, 8 - subs r0, r2, r0 - lsls r0, 16 - adds r2, r6, 0 - ands r2, r4 - orrs r2, r0 - str r2, [sp, 0x4] - cmp r5, 0 - beq _080A73B8 - ldr r1, [r5] - add r0, sp, 0x4 - ldrh r0, [r0] - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - mov r0, r9 - ands r0, r2 - orrs r0, r1 - asrs r2, r0, 16 - ldr r1, [r5, 0x4] - adds r1, r2 - lsls r1, 16 - ands r0, r6 - orrs r0, r1 - str r0, [sp, 0x4] -_080A73B8: - mov r0, r12 - adds r0, 0x3C - str r0, [sp] - mov r0, r8 - add r1, sp, 0x4 - movs r2, 0 - adds r3, r7, 0 - bl sub_800E8AC - movs r0, 0x1 - b _080A73DE - .align 2, 0 -_080A73D0: .4byte 0xffff0000 -_080A73D4: .4byte 0x0000ffff -_080A73D8: .4byte gUnknown_2039DD8 -_080A73DC: - movs r0, 0 -_080A73DE: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80A7310 - - thumb_func_start sub_80A73EC -sub_80A73EC: - push {lr} - bl CopySpritesToOam - bl nullsub_13 - bl sub_8005304 - bl nullsub_14 - ldr r1, _080A7420 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r1, _080A7424 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB - bls _080A741A - movs r0, 0 - strh r0, [r1] -_080A741A: - pop {r0} - bx r0 - .align 2, 0 -_080A7420: .4byte gUnknown_2039DCC -_080A7424: .4byte gUnknown_2039DCE - thumb_func_end sub_80A73EC - - thumb_func_start sub_80A7428 -sub_80A7428: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r6, r0, 0 - mov r8, r3 - lsls r1, 16 - asrs r7, r1, 16 - lsls r2, 16 - asrs r2, 16 - adds r4, r2, 0 - ldr r1, _080A7480 - mov r0, sp - bl sprintf - ldr r1, _080A7484 - mov r0, sp - bl OpenFile - adds r5, r0, 0 - movs r1, 0 - bl GetFileDataPtr - adds r0, r4, 0 - bl GetBodySize - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080A7488 - ldr r2, [sp, 0xC] - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0xC] - movs r0, 0xD3 - lsls r0, 1 - cmp r4, r0 - bne _080A7490 - ldr r0, _080A748C - ands r0, r2 - movs r1, 0x91 - lsls r1, 17 - orrs r0, r1 - str r0, [sp, 0xC] - b _080A74AC - .align 2, 0 -_080A7480: .4byte gUnknown_8117EDC -_080A7484: .4byte gMonsterFileArchive -_080A7488: .4byte 0xffff0000 -_080A748C: .4byte 0x0000ffff -_080A7490: - movs r1, 0 - cmp r7, 0x47 - bne _080A7498 - movs r1, 0x1 -_080A7498: - adds r0, r4, 0 - bl GetPokemonOverworldPalette - lsls r0, 24 - lsrs r0, 8 - ldr r2, _080A74E0 - ldr r1, [sp, 0xC] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0xC] -_080A74AC: - ldr r0, [r5, 0x4] - add r1, sp, 0xC - str r0, [r1, 0x4] - adds r0, r6, 0 - mov r2, r8 - bl sub_80A67CC - str r5, [r6, 0x54] - adds r0, r6, 0 - adds r0, 0x52 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - blt _080A74D4 - movs r1, 0xC0 - lsls r1, 2 - adds r0, r6, 0 - movs r2, 0 - bl sub_80A6EFC -_080A74D4: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A74E0: .4byte 0x0000ffff - thumb_func_end sub_80A7428 - - thumb_func_start sub_80A74E4 -sub_80A74E4: - push {lr} - bl sub_80A68A0 - pop {r0} - bx r0 - thumb_func_end sub_80A74E4 - - thumb_func_start sub_80A74F0 -sub_80A74F0: - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 16 - asrs r4, r1, 16 - lsls r2, 24 - asrs r5, r2, 24 - cmp r3, 0 - bge _080A7514 - movs r0, 0xE0 - lsls r0, 1 - cmp r4, r0 - beq _080A7512 - adds r0, r4, 0 - bl sub_800E700 - adds r3, r0, 0 - b _080A7514 -_080A7512: - movs r3, 0 -_080A7514: - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_80A7040 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A74F0 - - thumb_func_start sub_80A7524 -sub_80A7524: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x18 - adds r5, r0, 0 - adds r6, r2, 0 - adds r7, r3, 0 - lsls r1, 16 - asrs r1, 16 - mov r8, r1 - mov r1, sp - bl sub_80A7094 - lsls r0, 24 - cmp r0, 0 - beq _080A75C0 - ldr r1, [r5, 0x5C] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080A758C - ldr r2, [r5, 0x60] - cmp r2, 0x3 - bgt _080A7580 - cmp r2, 0 - blt _080A7580 - add r4, sp, 0x8 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_800569C - movs r1, 0 - ldrsh r0, [r4, r1] - str r0, [sp, 0xC] - movs r1, 0x2 - ldrsh r0, [r4, r1] - add r2, sp, 0xC - str r0, [r2, 0x4] - adds r0, r5, 0 - adds r1, r6, 0 - adds r3, r7, 0 - bl sub_80A7310 - b _080A758C -_080A7580: - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0 - adds r3, r7, 0 - bl sub_80A7310 -_080A758C: - adds r0, r5, 0 - adds r0, 0x50 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080A75B4 - ldr r0, [sp] - lsls r0, 16 - ldr r1, [sp, 0x4] - lsls r1, 16 - lsrs r0, 16 - orrs r0, r1 - str r0, [sp, 0x14] - add r1, sp, 0x14 - mov r0, r8 - adds r2, r5, 0 - bl AddShadowSprite -_080A75B4: - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0 - adds r3, r7, 0 - bl sub_80A7310 -_080A75C0: - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A7524 - - thumb_func_start sub_80A75CC -sub_80A75CC: - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r6, r3, 0 - lsls r2, 16 - asrs r2, 13 - ldr r0, _080A7618 - adds r2, r0 - movs r5, 0 - movs r0, 0 - ldrsb r0, [r2, r0] - lsls r0, 16 - lsrs r0, 16 - ldr r3, _080A761C - ldr r1, [sp] - ands r1, r3 - orrs r1, r0 - str r1, [sp] - ldrh r3, [r2, 0x2] - lsls r3, 16 - ldr r0, _080A7620 - ands r0, r1 - orrs r0, r3 - str r0, [sp] - ldr r0, [r2, 0x4] - cmp r0, 0 - beq _080A7628 - ldr r1, _080A7624 - bl OpenFile - adds r5, r0, 0 - movs r1, 0 - bl GetFileDataPtr - ldr r0, [r5, 0x4] - str r0, [sp, 0x4] - b _080A762A - .align 2, 0 -_080A7618: .4byte gGroundObjectKinds -_080A761C: .4byte 0xffff0000 -_080A7620: .4byte 0x0000ffff -_080A7624: .4byte gOrnamentFileArchive -_080A7628: - str r5, [sp, 0x4] -_080A762A: - adds r0, r4, 0 - mov r1, sp - adds r2, r6, 0 - bl sub_80A67CC - str r5, [r4, 0x54] - adds r0, r4, 0 - adds r0, 0x52 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - blt _080A764E - movs r1, 0x80 - lsls r1, 4 - adds r0, r4, 0 - movs r2, 0 - bl sub_80A6EFC -_080A764E: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A75CC - - thumb_func_start sub_80A7658 -sub_80A7658: - push {lr} - bl sub_80A68A0 - pop {r0} - bx r0 - thumb_func_end sub_80A7658 - - thumb_func_start sub_80A7664 -sub_80A7664: - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - movs r1, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_80A7094 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - adds r3, r6, 0 - bl sub_80A7310 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A7664 - - thumb_func_start sub_80A7688 -sub_80A7688: - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r6, r3, 0 - lsls r2, 16 - asrs r2, 13 - ldr r0, _080A76D4 - adds r2, r0 - movs r5, 0 - movs r0, 0 - ldrsb r0, [r2, r0] - lsls r0, 16 - lsrs r0, 16 - ldr r3, _080A76D8 - ldr r1, [sp] - ands r1, r3 - orrs r1, r0 - str r1, [sp] - ldrh r3, [r2, 0x2] - lsls r3, 16 - ldr r0, _080A76DC - ands r0, r1 - orrs r0, r3 - str r0, [sp] - ldr r0, [r2, 0x4] - cmp r0, 0 - beq _080A76E4 - ldr r1, _080A76E0 - bl OpenFile - adds r5, r0, 0 - movs r1, 0 - bl GetFileDataPtr - ldr r0, [r5, 0x4] - str r0, [sp, 0x4] - b _080A76E6 - .align 2, 0 -_080A76D4: .4byte gUnknown_8117E8C -_080A76D8: .4byte 0xffff0000 -_080A76DC: .4byte 0x0000ffff -_080A76E0: .4byte gOrnamentFileArchive -_080A76E4: - str r5, [sp, 0x4] -_080A76E6: - adds r0, r4, 0 - mov r1, sp - adds r2, r6, 0 - bl sub_80A67CC - str r5, [r4, 0x54] - adds r0, r4, 0 - adds r0, 0x52 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - blt _080A770A - movs r1, 0x80 - lsls r1, 4 - adds r0, r4, 0 - movs r2, 0 - bl sub_80A6EFC -_080A770A: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A7688 - - .align 2,0 diff --git a/data/data_8115F5C_1.s b/data/data_8115F5C_1.s new file mode 100644 index 000000000..44718732b --- /dev/null +++ b/data/data_8115F5C_1.s @@ -0,0 +1,487 @@ +.section .rodata + +.align 2 + +.string "pksdir0\0" +.align 2,0 + +.global gGroundLivesCallbacks +gGroundLivesCallbacks: @ 8117F10 +.byte 0x01, 0x00, 0x00, 0x00 +.4byte CallbackLivesGetIndex +.4byte CallbackLivesGetSize +.4byte CallbackLivesGetHitboxCenter +.4byte CallbackLivesGetPosHeightAndUnk +.4byte CallbackLivesGetDirection +.4byte CallbackLivesGetFlags +.4byte CallbackLivesSetHitboxPos +.4byte CallbackLivesSetPositionBounds +.4byte CallbackLivesMoveReal +.4byte CallbackLivesSetPosHeight +.4byte CallbackLivesSetDirection +.4byte CallbackLivesSetEventIndex +.4byte nullsub_211 +.4byte CallbackLivesSetUnk_80AB194 +.4byte CallbackLivesSetFlags +.4byte CallbackLivesClearFlags +.4byte CallbackLivesSpriteRelated_80AB238 +.4byte CallbackLivesMoveRelative +.4byte CallbackLivesSpriteRelatedCheck_80AB1C0 +.4byte CallbackLivesSpriteRelated_80AB1E4 + +.global gUnknown_8117F64 +gUnknown_8117F64: @ 8117F64 +@ replacing .incbin "baserom.gba", 0x117F64, 0x6A +.byte 0xff, 0xff, 0x00, 0x08, 0x00, 0x03, 0x00, 0x03, 0x07, 0x08, 0x00, 0x08, 0x05, 0x08, 0x02, 0x03 +.byte 0x06, 0x03, 0x0b, 0x08, 0x07, 0x03, 0x06, 0x10, 0x02, 0x10, 0x01, 0x10, 0x08, 0x10, 0x0c, 0x10 +.byte 0x09, 0x10, 0x0a, 0x10, 0x03, 0x10, 0x04, 0x10, 0x03, 0x08, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x10 +.byte 0x0f, 0x10, 0x10, 0x10, 0x11, 0x10, 0x12, 0x10, 0x13, 0x10, 0x14, 0x10, 0x0d, 0x08, 0x0e, 0x08 +.byte 0x0f, 0x08, 0x10, 0x08, 0x11, 0x08, 0x12, 0x08, 0x13, 0x08, 0x14, 0x08, 0x0d, 0x08, 0x0e, 0x10 +.byte 0x0f, 0x10, 0x10, 0x10, 0x11, 0x10, 0x12, 0x08, 0x13, 0x10, 0x14, 0x10, 0x15, 0x10, 0x16, 0x10 +.byte 0x17, 0x10, 0x18, 0x08, 0x19, 0x10, 0x1a, 0x08, 0x1b, 0x08 + +.global gUnknown_8117FCE +gUnknown_8117FCE: @ 8117FCE +@ replacing .incbin "baserom.gba", 0x117FCE, 0x22 +.byte 0x19, 0x00, 0x34, 0x00, 0x85, 0x00, 0x45, 0x01, 0x07, 0x00, 0x9e, 0x00, 0x1b, 0x01, 0x36, 0x00 +.byte 0x04, 0x00, 0x18, 0x01, 0x9b, 0x00, 0x68, 0x00, 0x42, 0x00, 0x01, 0x00, 0x98, 0x00, 0x15, 0x01 +.byte 0x00, 0x00 + +.global gUnknown_8117FF0 +gUnknown_8117FF0: @ 8117FF0 +@ replacing .incbin "baserom.gba", 0x117FF0, 0x20 +.byte 0x00, 0x06, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00 +.byte 0x00, 0x06, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00 + +.global gUnknown_8118010 +gUnknown_8118010: @ 8118010 +@ replacing .incbin "baserom.gba", 0x118010, 0x20 +.byte 0x00, 0x20, 0x00, 0x00, 0xb1, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xb1, 0x16, 0x00, 0x00 +.byte 0x00, 0x20, 0x00, 0x00, 0xb1, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xb1, 0x16, 0x00, 0x00 + +.global gUnknown_8118030 +gUnknown_8118030: @ 8118030 +@ replacing .incbin "baserom.gba", 0x118030, 0x20 +.byte 0x00, 0x08, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00 +.byte 0x00, 0x08, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00 + +.global gUnknown_8118050 +gUnknown_8118050: @ 8118050 +.byte 0x00, 0x14, 0x00, 0x00 +.byte 0x00, 0x14, 0x00, 0x00 +.byte 0x00, 0x18, 0x00, 0x00 + +.global GroundLivesFile_Text +GroundLivesFile_Text: @ Text +.string "../ground/ground_lives.c\0" +.align 2,0 + +.global GroundLives_Select_Text +GroundLives_Text: @ Text +.string "GroundLives_Select\0" +.align 2,0 + +.global gUnknown_811808C +gUnknown_811808C: @ 811808C +.4byte GroundLivesFile_Text +.byte 0x1E, 0x02, 0x00, 0x00 +.4byte GroundLives_Text + +.global gUnknown_8118098 +gUnknown_8118098: @ 8118098 +.string "GroundLives Select %3d %3d %3d\0" +.align 2,0 + +.global gUnknown_81180BC +gUnknown_81180BC: @ 81180BC +.string "GroundLives Cancel %3d %3d\0" +.align 2,0 + +.global gUnknown_81180D8 +gUnknown_81180D8: @ 81180D8 +.string "GroundLives CancelBlank\0" +.align 2,0 + +.global gUnknown_81180F0 +gUnknown_81180F0: @ 81180F0 +.byte 0x5F, 0x00 +.byte 0x22, 0x00 +.byte 0x10, 0x00 +.byte 0x13, 0x00 +.byte 0x1B, 0x00 +.byte 0x29, 0x00 + +.global gUnknown_81180FC +gUnknown_81180FC: @ 81180FC +@ replacing .incbin "baserom.gba", 0x1180FC, 0x20 +.byte 0x19, 0x00, 0x34, 0x00, 0x85, 0x00, 0x45, 0x01, 0x07, 0x00, 0x9e, 0x00, 0x1b, 0x01, 0x36, 0x00 +.byte 0x04, 0x00, 0x18, 0x01, 0x9b, 0x00, 0x68, 0x00, 0x42, 0x00, 0x01, 0x00, 0x98, 0x00, 0x15, 0x01 + +.global gUnknown_811811C +gUnknown_811811C: @ 811811C +.string "GroundLive Add id %3d kind %3d type %3d group %3d sector %3d\0" +.align 2,0 + +.global GroundLives_Add_Text +GroundLives_Add_Text: @ Add +.string "GroundLives_Add\0" +.align 2,0 + +.global gUnknown_8118170 +gUnknown_8118170: @ 8118170 +.4byte GroundLivesFile_Text +.byte 0x89, 0x05, 0x00, 0x00 +.4byte GroundLives_Add_Text + +.global gUnknown_811817C +gUnknown_811817C: @ 811817C +.4byte GroundLivesFile_Text +.byte 0xb4, 0x05, 0x00, 0x00 +.4byte GroundLives_Add_Text + +.global gUnknown_8118188 +gUnknown_8118188: @ 8118188 +.4byte GroundLivesFile_Text +.byte 0xba, 0x05, 0x00, 0x00 +.4byte GroundLives_Add_Text + +.global gUnknown_8118194 +gUnknown_8118194: @ 8118194 +.string "GroundLives Delete id %3d\0" +.align 2,0 + +.global gUnknown_81181B0 +gUnknown_81181B0: @ 81181B0 +.string "GroundLives Execute %3d kind %3d %p\0" +.align 2,0 + +.global GroundLives_ExecuteScript_Text +GroundLives_ExecuteScript_Text: @ ExecuteScript +.string "GroundLives_ExecuteScript\0" +.align 2,0 + +.global gUnknown_81181F4 +gUnknown_81181F4: @ 81181F4 +.4byte GroundLivesFile_Text +.byte 0xa7, 0x06, 0x00, 0x00 +.4byte GroundLives_ExecuteScript_Text + +.global ExecutePlayerScript_Text +ExecutePlayerScript_Text: @ Text +.string "_ExecutePlayerScript\0" +.align 2,0 + +.global gUnknown_8118218 +gUnknown_8118218: @ 8118218 +.4byte GroundLivesFile_Text +.byte 0xC8, 0x06, 0x00, 0x00 +.4byte ExecutePlayerScript_Text + +.global ExecutePlayerScriptActionLives_Text +ExecutePlayerScriptActionLives_Text: @ Text +.string "GroundLives_ExecutePlayerScriptActionLives\0" +.align 2,0 + +.global gUnknown_8118250 +gUnknown_8118250: @ 8118250 +.4byte GroundLivesFile_Text +.byte 0xF9, 0x06, 0x00, 0x00 +.4byte ExecutePlayerScriptActionLives_Text + +.global gGroundLives_InvalidityText +gGroundLives_InvalidityText: @ 811825C +.string "{COLOR RED_W}invalidity{RESET}\0" +.align 2,0 + +.global GroundLives_ActionText +GroundLives_ActionText: @ ActionText +.string "GroundLives_Action\0" +.align 2,0 + +.global gUnknown_8118280 +gUnknown_8118280: @ 8118280 +.4byte GroundLivesFile_Text +.byte 0xA2, 0x11, 0x00, 0x00 +.4byte GroundLives_ActionText + +.global gUnknown_811828C +gUnknown_811828C: @ 811828C +.4byte GroundLivesFile_Text +.byte 0x0E, 0x12, 0x00, 0x00 +.4byte GroundLives_ActionText +.string "pksdir0\0" +.align 2,0 + +.global gGroundObjectCallbacks +gGroundObjectCallbacks: @ 81182A0 +@ replacing .incbin "baserom.gba", 0x1182A0, 0x54 +.byte 0x02, 0x00, 0x00, 0x00 +.4byte CallbackObjectGetIndex +.4byte CallbackObjectGetSize +.4byte CallbackObjectGetHitboxCenter +.4byte CallbackObjectGetPosHeightAndUnk +.4byte CallbackObjectGetDirection +.4byte CallbackObjectGetFlags +.4byte CallbackObjectSetHitboxPos +.4byte CallbackObjectSetPositionBounds +.4byte CallbackObjectMoveReal +.4byte CallbackObjectSetPosHeight +.4byte CallbackObjectSetDirection +.4byte CallbackObjectSetEventIndex +.byte 0x00, 0x00, 0x00, 0x00 +.4byte CallbackObjectSetUnk_80AC998 +.4byte CallbackObjectSetFlags +.4byte CallbackObjectClearFlags +.byte 0x00, 0x00, 0x00, 0x00 +.4byte CallbackObjectMoveRelative +.4byte CallbackObjectSpriteRelatedCheck_80AC9B8 +.4byte CallbackObjectSpriteRelated_80AC9DC + +.global gUnknown_81182F4 +gUnknown_81182F4: @ 81182F4 +.byte 0xF6, 0x0, 0x9F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34, 0x83, 0x11, 0x8, 0xF4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xDB, 0x0, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 + +.global GroundObjectFile_Text +GroundObjectFile_Text: @ Text + +.global gUnknown_8118334 +gUnknown_8118334: @ 8118334 +.string "../ground/ground_object.c" +.align 2,0 + +.global gUnknown_8118350 +gUnknown_8118350: @ 8118350 +@ replacing .incbin "baserom.gba", 0x118350, 0x50 +.byte 0xf6, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.4byte gUnknown_8118334 +.byte 0x54, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0xdb, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +.global gUnknown_81183A0 +gUnknown_81183A0: @ 81183A0 +.byte 0xFF, 0xFF, 0x0, 0x8, 0x1, 0x8, 0x0, 0x10, 0x1, 0x10, 0x2, 0x10, 0x3, 0x10, 0x0, 0x8, 0x1, 0x8, 0x2, 0x8, 0x3, 0x8, 0x4, 0x8, 0x5, 0x8, 0x6, 0x8, 0x7, 0x8, 0x8, 0x8, 0x9, 0x8, 0xA, 0x8, 0xB, 0x8, 0xC, 0x8, 0xD, 0x8, 0xE, 0x8, 0xF, 0x8, 0x0, 0x0 + +.global GroundObject_Select_Text +GroundObject_Select_Text: @ Select +.string "GroundObject_Select" +.align 2,0 + +.global gUnknown_81183E4 +gUnknown_81183E4: @ 81183E4 +.4byte GroundObjectFile_Text +.4byte 0x126 +.4byte GroundObject_Select_Text + +.global gUnknown_81183F0 +gUnknown_81183F0: @ 81183F0 +.string "GroundObject Select %3d %3d %3d\0" +.align 2,0 + +.global gUnknown_8118414 +gUnknown_8118414: @ 8118414 +.string "GroundObject Cancel %3d\0" +.align 2,0 + +.global gUnknown_811842C +gUnknown_811842C: @ 811842C +.string "GroundObject CancelBlank\0" +.align 2,0 + +.global gUnknown_8118448 +gUnknown_8118448: @ 8118448 +.string "GroundObject Add id %3d kind %3d[%3d] type %3d group %3d sector %3d\0" +.align 2,0 + +.global GroundObject_AddText +GroundObject_AddText: @ AddText +.string "GroundObject_Add\0" +.align 2,0 + +.global gUnknown_81184A4 +gUnknown_81184A4: @ 81184A4 +.4byte GroundObjectFile_Text +.4byte 0x283 +.4byte GroundObject_AddText + +.global gUnknown_81184B0 +gUnknown_81184B0: @ 81184B0 +.string "GroundObject Delete id %3d\0" +.align 2,0 + +.global gUnknown_81184CC +gUnknown_81184CC: @ 81184CC +.string "GroundObject Execute %3d \0" +.align 2,0 + +.global GroundObject_ExecuteScript_Text +GroundObject_ExecuteScript_Text: @ ExecuteScript +.string "GroundObject_ExecuteScript\0" +.align 2,0 + +.global gUnknown_8118504 +gUnknown_8118504: @ 8118504 +.4byte GroundObjectFile_Text +.4byte 0x303 +.4byte GroundObject_ExecuteScript_Text + +.global GroundObject_Action_Text +GroundObject_Action_Text: @ Action +.string "GroundObject_Action\0" +.align 2,0 + +.global gUnknown_8118524 +gUnknown_8118524: @ 8118524 +.4byte GroundObjectFile_Text +.4byte 0x60D +.4byte GroundObject_Action_Text + +.global gUnknown_8118530 +gUnknown_8118530: @ 8118530 +.4byte GroundObjectFile_Text +.4byte 0x617 +.4byte GroundObject_Action_Text +.string "pksdir0\0" +.align 2,0 + +.global gGroundEffectCallbacks +gGroundEffectCallbacks: @ 8118544 +@ replacing .incbin "baserom.gba", 0x118544, 0xAE +.byte 0x03, 0x00, 0x00, 0x00 +.4byte CallbackEffectGetIndex +.4byte CallbackEffectGetSize +.4byte CallbackEffectGetHitboxCenter +.4byte CallbackEffectGetPosHeightAndUnk +.4byte CallbackEffectGetDirection +.4byte CallbackEffectGetFlags +.4byte CallbackEffectSetHitboxPos +.4byte CallbackEffectSetPositionBounds +.4byte CallbackEffectMoveReal +.4byte CallbackEffectSetPosHeight +.4byte CallbackEffectSetDirection +.4byte CallbackEffectSetEventIndex +.byte 0x00, 0x00, 0x00, 0x00 +.4byte CallbackEffectSetUnk_80AD670 +.4byte CallbackEffectSetFlags +.4byte CallbackEffectClearFlags +.byte 0x00, 0x00, 0x00, 0x00 +.4byte CallbackEffectMoveRelative +.4byte CallbackEffectSpriteRelatedCheck_80AD690 +.4byte CallbackEffectSpriteRelated_80AD6B4 +.byte 0xf6, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.4byte gUnknown_81185D8 +.byte 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00 + +.global gUnknown_81185D8 +gUnknown_81185D8: @ 81185D8 +.string "../ground/ground_effect.c\0" + +.global gUnknown_81185F2 +gUnknown_81185F2: @ 81185F2 +@ replacing .incbin "baserom.gba", 0x1185F2, 0x1E +.byte 0xff, 0xff, 0x00, 0x08, 0x01, 0x08, 0x00, 0x10, 0x00, 0x00 + +.global gUnknown_81185FC +gUnknown_81185FC: @ 81185FC +.string "GroundEffect_Select\0" +.align 2, 0 + +.global gUnknown_8118610 +gUnknown_8118610: @ 8118610 +.4byte gUnknown_81185D8 +.4byte 0x106 +.4byte gUnknown_81185FC + +.global gUnknown_811861C +gUnknown_811861C: @ 811861C +.string "GroundEffect Select %3d %3d %3d" +.align 2,0 + +.global gUnknown_8118640 +gUnknown_8118640: @ 8118640 +.string "GroundEffect Cancel %3d" +.align 2,0 + +.global gUnknown_8118658 +gUnknown_8118658: @ 8118658 +.string "GroundEffect CancelBlank\0" +.align 2,0 + +.global gUnknown_8118674 +gUnknown_8118674: @ 8118674 +@ replacing .incbin "baserom.gba", 0x118674, 0x58 +.string "GroundEffect Add id %3d kind %3d type %3d group %3d sector %3d\0" +.align 2, 0 + +.global gUnknown_81186B8 +gUnknown_81186B8: @ 81186B8 +.string "GroundEffect_Add\0" +.align 2, 0 + +.global gUnknown_81186CC +gUnknown_81186CC: @ 81186CC +@ replacing .incbin "baserom.gba", 0x1186CC, 0xC +.4byte gUnknown_81185D8 +.byte 0x10, 0x02, 0x00, 0x00 +.4byte gUnknown_81186B8 + +.global gUnknown_81186D8 +gUnknown_81186D8: @ 81186D8 +.string "GroundEffect Delete id %3d" +.align 2,0 + +.global gUnknown_81186F4 +gUnknown_81186F4: @ 81186F4 +.string "GroundEffect Execute %3d " +.align 2,0 + +.global GroundEffect_ExecuteScript_Text +GroundEffect_ExecuteScript_Text: @ ExecuteScript +.string "GroundEffect_ExecuteScript" +.align 2,0 + +.global gUnknown_811872C +gUnknown_811872C: @ 811872C +.4byte gUnknown_81185D8 +.4byte 0x290 +.4byte GroundEffect_ExecuteScript_Text + +.global GroundEffect_Action_Text +GroundEffect_Action_Text: @ Action +.string "GroundEffect_Action\0" +.align 2,0 + +.global gUnknown_811874C +gUnknown_811874C: @ 811874C +.4byte gUnknown_81185D8 +.4byte 0x560 +.4byte GroundEffect_Action_Text + +.global gUnknown_8118758 +gUnknown_8118758: @ 8118758 +.4byte gUnknown_81185D8 +.4byte 0x56A +.4byte GroundEffect_Action_Text +.string "pksdir0\0" +.align 2,0 +@ Ground Link + +.global GroundLink_FileText +GroundLink_FileText: @ FileText +.string "../ground/ground_link.c\0" +.align 2,0 + +.global GroundLink_SelectText +GroundLink_SelectText: @ SelectText +.string "GroundLink_Select\0" +.align 2,0 + +.global gUnknown_8118798 +gUnknown_8118798: @ 8118798 +.4byte GroundLink_FileText +.byte 0x4D, 0x00, 0x00, 0x00 +.4byte GroundLink_SelectText diff --git a/data/data_8115F5C_2.s b/data/data_8115F5C_2.s index 1a26dab85..275c4a9ff 100644 --- a/data/data_8115F5C_2.s +++ b/data/data_8115F5C_2.s @@ -877,1089 +877,3 @@ gGroundWeatherSelect: @ 811779C gUnknown_81177BC: @ 81177BC .byte 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00 -.string "pksdir0\0" - -.global gUnknown_81177CC -gUnknown_81177CC: @ 81177CC -.string "etcfonta\0" -.align 2,0 - -.global gUnknown_81177D8 -gUnknown_81177D8: @ 81177D8 -.string "GroundSprite Reset\0" -.align 2,0 - -.global gUnknown_81177EC -gUnknown_81177EC: @ 81177EC -.string "palet\0" -.align 2,0 - -.global gUnknown_81177F4 -gUnknown_81177F4: @ 81177F4 -.string "extend palette %3d[%3d] %04x up %04x\0" -.align 2,0 - -.global GroundSpriteFile_Text -GroundSpriteFile_Text: @ Text -.string "../ground/ground_sprite.c\0" -.align 2,0 - -.global GroundSprite_ExtendPaletteAdd_Text -GroundSprite_ExtendPaletteAdd_Text: @ ExtendPaletteAdd -.string "GroundSprite_ExtendPaletteAdd\0" -.align 2,0 - -.global gUnknown_8117858 -gUnknown_8117858: @ 8117858 -.4byte GroundSpriteFile_Text -.byte 0xF0, 0x03, 0x00, 0x00 -.4byte GroundSprite_ExtendPaletteAdd_Text - -.global gUnknown_8117864 -gUnknown_8117864: @ 8117864 -.string "extend palette buffer error %08x\0" -.align 2,0 - -.global gUnknown_8117888 -gUnknown_8117888: @ 8117888 -.4byte GroundSpriteFile_Text -.byte 0xF8, 0x03, 0x00, 0x00 -.4byte GroundSprite_ExtendPaletteAdd_Text - -.global gUnknown_8117894 -gUnknown_8117894: @ 8117894 -.string "extend palette %3d[%3d] %04x set %04x %04x\0" -.align 2,0 - -.global gUnknown_81178C0 -gUnknown_81178C0: @ 81178C0 -.string "extend palette %3d delete %04x\0" -.align 2,0 - -.global gUnknown_81178E0 -gUnknown_81178E0: @ 81178E0 -.byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.string "pksdir0\0" -.align 2,0 - -.global gUnknown_81178F4 -gUnknown_81178F4: @ 81178F4 -@ replacing .incbin "baserom.gba", 0x1178F4, 0x1F0 -.4byte gUnknown_8117ADC -.4byte gUnknown_8117AD4 -.4byte gUnknown_8117ACC -.4byte gUnknown_8117AC4 -.4byte gUnknown_8117ABC -.4byte gUnknown_8117AB4 -.4byte gUnknown_8117AAC -.4byte gUnknown_8117AA4 -.4byte gUnknown_8117A9C -.4byte gUnknown_8117A94 -.4byte gUnknown_8117A8C -.4byte gUnknown_8117A84 -.4byte gUnknown_8117A7C -.4byte gUnknown_8117A74 -.4byte gUnknown_8117A6C -.4byte gUnknown_8117A64 -.4byte gUnknown_8117A5C -.4byte gUnknown_8117A50 -.4byte gUnknown_8117A44 -.4byte gUnknown_8117A38 -.4byte gUnknown_8117A2C -.4byte gUnknown_8117A20 -.4byte gUnknown_8117A14 -.4byte gUnknown_8117A08 -.4byte gUnknown_81179FC -.4byte gUnknown_81179F0 -.4byte gUnknown_81179E4 -.4byte gUnknown_81179D8 -.4byte gUnknown_81179CC -.4byte gUnknown_81179C0 -.4byte gUnknown_81179B4 -.4byte gUnknown_81179A8 -.4byte gUnknown_811799C -.4byte gUnknown_8117990 -.4byte gUnknown_8117984 -.byte 0x00, 0x00, 0x00, 0x00 - -.global gUnknown_8117984 -gUnknown_8117984: @ 8117984 -.string "stoneimc\0" -.align 2, 0 - -.global gUnknown_8117990 -gUnknown_8117990: @ 8117990 -.string "titlebgc\0" -.align 2, 0 - -.global gUnknown_811799C -gUnknown_811799C: @ 811799C -.string "titleopc\0" -.align 2, 0 - -.global gUnknown_81179A8 -gUnknown_81179A8: @ 81179A8 -.string "flag114c\0" -.align 2, 0 - -.global gUnknown_81179B4 -gUnknown_81179B4: @ 81179B4 -.string "flag113c\0" -.align 2, 0 - -.global gUnknown_81179C0 -gUnknown_81179C0: @ 81179C0 -.string "flag112c\0" -.align 2, 0 - -.global gUnknown_81179CC -gUnknown_81179CC: @ 81179CC -.string "flag111c\0" -.align 2, 0 - -.global gUnknown_81179D8 -gUnknown_81179D8: @ 81179D8 -.string "flag110c\0" -.align 2, 0 - -.global gUnknown_81179E4 -gUnknown_81179E4: @ 81179E4 -.string "flag109c\0" -.align 2, 0 - -.global gUnknown_81179F0 -gUnknown_81179F0: @ 81179F0 -.string "flag108c\0" -.align 2, 0 - -.global gUnknown_81179FC -gUnknown_81179FC: @ 81179FC -.string "flag107c\0" -.align 2, 0 - -.global gUnknown_8117A08 -gUnknown_8117A08: @ 8117A08 -.string "flag106c\0" -.align 2, 0 - -.global gUnknown_8117A14 -gUnknown_8117A14: @ 8117A14 -.string "flag105c\0" -.align 2, 0 - -.global gUnknown_8117A20 -gUnknown_8117A20: @ 8117A20 -.string "flag104c\0" -.align 2, 0 - -.global gUnknown_8117A2C -gUnknown_8117A2C: @ 8117A2C -.string "flag103c\0" -.align 2, 0 - -.global gUnknown_8117A38 -gUnknown_8117A38: @ 8117A38 -.string "flag102c\0" -.align 2, 0 - -.global gUnknown_8117A44 -gUnknown_8117A44: @ 8117A44 -.string "flag101c\0" -.align 2, 0 - -.global gUnknown_8117A50 -gUnknown_8117A50: @ 8117A50 -.string "flag100c\0" -.align 2, 0 - -.global gUnknown_8117A5C -gUnknown_8117A5C: @ 8117A5C -.string "flag16c\0" -.align 2, 0 - -.global gUnknown_8117A64 -gUnknown_8117A64: @ 8117A64 -.string "flag15c\0" -.align 2, 0 - -.global gUnknown_8117A6C -gUnknown_8117A6C: @ 8117A6C -.string "flag14c\0" -.align 2, 0 - -.global gUnknown_8117A74 -gUnknown_8117A74: @ 8117A74 -.string "flag13c\0" -.align 2, 0 - -.global gUnknown_8117A7C -gUnknown_8117A7C: @ 8117A7C -.string "flag12c\0" -.align 2, 0 - -.global gUnknown_8117A84 -gUnknown_8117A84: @ 8117A84 -.string "flag11c\0" -.align 2, 0 - -.global gUnknown_8117A8C -gUnknown_8117A8C: @ 8117A8C -.string "flag10c\0" -.align 2, 0 - -.global gUnknown_8117A94 -gUnknown_8117A94: @ 8117A94 -.string "flag09c\0" -.align 2, 0 - -.global gUnknown_8117A9C -gUnknown_8117A9C: @ 8117A9C -.string "flag08c\0" -.align 2, 0 - -.global gUnknown_8117AA4 -gUnknown_8117AA4: @ 8117AA4 -.string "flag07c\0" -.align 2, 0 - -.global gUnknown_8117AAC -gUnknown_8117AAC: @ 8117AAC -.string "flag06c\0" -.align 2, 0 - -.global gUnknown_8117AB4 -gUnknown_8117AB4: @ 8117AB4 -.string "flag05c\0" -.align 2, 0 - -.global gUnknown_8117ABC -gUnknown_8117ABC: @ 8117ABC -.string "flag04c\0" -.align 2, 0 - -.global gUnknown_8117AC4 -gUnknown_8117AC4: @ 8117AC4 -.string "flag03c\0" -.align 2, 0 - -.global gUnknown_8117ACC -gUnknown_8117ACC: @ 8117ACC -.string "flag02c\0" -.align 2, 0 - -.global gUnknown_8117AD4 -gUnknown_8117AD4: @ 8117AD4 -.string "flag01c\0" -.align 2, 0 - -.global gUnknown_8117ADC -gUnknown_8117ADC: @ 8117ADC -.string "flag00c\0" -.align 2, 0 - -.global gGroundObjectKinds -gGroundObjectKinds: @ 8117AE4 -@ replacing .incbin "baserom.gba", 0x117AE4, 0x3A8 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x01 -.4byte gUnknown_8117E84 -.byte 0x01, 0x00, 0x00, 0x01 -.4byte gUnknown_8117E84 -.byte 0x01, 0x00, 0x01, 0x01 -.4byte gUnknown_8117E7C -.byte 0x01, 0x00, 0x02, 0x01 -.4byte gUnknown_8117E74 -.byte 0x01, 0x00, 0x03, 0x01 -.4byte gUnknown_8117E6C -.byte 0x01, 0x00, 0x04, 0x01 -.4byte gUnknown_8117E64 -.byte 0x01, 0x00, 0x05, 0x01 -.4byte gUnknown_8117E5C -.byte 0x01, 0x00, 0x06, 0x01 -.4byte gUnknown_8117E54 -.byte 0x01, 0x00, 0x07, 0x01 -.4byte gUnknown_8117E4C -.byte 0x01, 0x00, 0x08, 0x01 -.4byte gUnknown_8117E44 -.byte 0x01, 0x00, 0x09, 0x01 -.4byte gUnknown_8117E3C -.byte 0x01, 0x00, 0x0a, 0x01 -.4byte gUnknown_8117E34 -.byte 0x01, 0x00, 0x0b, 0x01 -.4byte gUnknown_8117E2C -.byte 0x01, 0x00, 0x0c, 0x01 -.4byte gUnknown_8117E24 -.byte 0x01, 0x00, 0x0d, 0x01 -.4byte gUnknown_8117E1C -.byte 0x01, 0x00, 0x0e, 0x01 -.4byte gUnknown_8117E14 -.byte 0x01, 0x00, 0x0f, 0x01 -.4byte gUnknown_8117E0C -.byte 0x01, 0x00, 0x10, 0x01 -.4byte gUnknown_8117E04 -.byte 0x01, 0x00, 0x11, 0x01 -.4byte gUnknown_8117DF8 -.byte 0x01, 0x00, 0x12, 0x01 -.4byte gUnknown_8117DEC -.byte 0x01, 0x00, 0x13, 0x01 -.4byte gUnknown_8117DE0 -.byte 0x01, 0x00, 0x14, 0x01 -.4byte gUnknown_8117DD4 -.byte 0x01, 0x00, 0x15, 0x01 -.4byte gUnknown_8117DC8 -.byte 0x01, 0x00, 0x16, 0x01 -.4byte gUnknown_8117DBC -.byte 0x01, 0x00, 0x17, 0x01 -.4byte gUnknown_8117DB0 -.byte 0x01, 0x00, 0x18, 0x01 -.4byte gUnknown_8117DA4 -.byte 0x01, 0x00, 0x19, 0x01 -.4byte gUnknown_8117D98 -.byte 0x01, 0x00, 0x1a, 0x01 -.4byte gUnknown_8117D8C -.byte 0x01, 0x00, 0x1b, 0x01 -.4byte gUnknown_8117D80 -.byte 0x01, 0x00, 0x1c, 0x01 -.4byte gUnknown_8117D74 -.byte 0x01, 0x00, 0x1d, 0x01 -.4byte gUnknown_8117D68 -.byte 0x01, 0x00, 0x1e, 0x01 -.4byte gUnknown_8117D5C -.byte 0x01, 0x00, 0x1f, 0x01 -.4byte gUnknown_8117D50 -.byte 0x06, 0x00, 0x20, 0x01 -.4byte gUnknown_8117D44 -.byte 0x01, 0x00, 0x20, 0x01 -.4byte gUnknown_8117D38 -.byte 0x04, 0x00, 0x21, 0x01 -.4byte gUnknown_8117D2C -.byte 0x01, 0x00, 0x06, 0x00 -.4byte gUnknown_8117D24 -.byte 0x01, 0x00, 0x06, 0x00 -.4byte gUnknown_8117D1C -.byte 0x01, 0x00, 0x05, 0x00 -.4byte gUnknown_8117D14 -.byte 0x01, 0x00, 0x06, 0x00 -.4byte gUnknown_8117D0C -.byte 0x01, 0x00, 0x00, 0x00 -.4byte gUnknown_8117D04 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -.global gUnknown_8117D04 -gUnknown_8117D04: @ 8117D04 -.string "item01p\0" -.align 2, 0 - -.global gUnknown_8117D0C -gUnknown_8117D0C: @ 8117D0C -.string "npc04p\0" -.align 2, 0 - -.global gUnknown_8117D14 -gUnknown_8117D14: @ 8117D14 -.string "npc03p\0" -.align 2, 0 - -.global gUnknown_8117D1C -gUnknown_8117D1C: @ 8117D1C -.string "npc02p\0" -.align 2, 0 - -.global gUnknown_8117D24 -gUnknown_8117D24: @ 8117D24 -.string "npc01p\0" -.align 2, 0 - -.global gUnknown_8117D2C -gUnknown_8117D2C: @ 8117D2C -.string "titlebg1\0" -.align 2, 0 - -.global gUnknown_8117D38 -gUnknown_8117D38: @ 8117D38 -.string "titleop2\0" -.align 2, 0 - -.global gUnknown_8117D44 -gUnknown_8117D44: @ 8117D44 -.string "titleop1\0" -.align 2, 0 - -.global gUnknown_8117D50 -gUnknown_8117D50: @ 8117D50 -.string "flag114p\0" -.align 2, 0 - -.global gUnknown_8117D5C -gUnknown_8117D5C: @ 8117D5C -.string "flag113p\0" -.align 2, 0 - -.global gUnknown_8117D68 -gUnknown_8117D68: @ 8117D68 -.string "flag112p\0" -.align 2, 0 - -.global gUnknown_8117D74 -gUnknown_8117D74: @ 8117D74 -.string "flag111p\0" -.align 2, 0 - -.global gUnknown_8117D80 -gUnknown_8117D80: @ 8117D80 -.string "flag110p\0" -.align 2, 0 - -.global gUnknown_8117D8C -gUnknown_8117D8C: @ 8117D8C -.string "flag109p\0" -.align 2, 0 - -.global gUnknown_8117D98 -gUnknown_8117D98: @ 8117D98 -.string "flag108p\0" -.align 2, 0 - -.global gUnknown_8117DA4 -gUnknown_8117DA4: @ 8117DA4 -.string "flag107p\0" -.align 2, 0 - -.global gUnknown_8117DB0 -gUnknown_8117DB0: @ 8117DB0 -.string "flag106p\0" -.align 2, 0 - -.global gUnknown_8117DBC -gUnknown_8117DBC: @ 8117DBC -.string "flag105p\0" -.align 2, 0 - -.global gUnknown_8117DC8 -gUnknown_8117DC8: @ 8117DC8 -.string "flag104p\0" -.align 2, 0 - -.global gUnknown_8117DD4 -gUnknown_8117DD4: @ 8117DD4 -.string "flag103p\0" -.align 2, 0 - -.global gUnknown_8117DE0 -gUnknown_8117DE0: @ 8117DE0 -.string "flag102p\0" -.align 2, 0 - -.global gUnknown_8117DEC -gUnknown_8117DEC: @ 8117DEC -.string "flag101p\0" -.align 2, 0 - -.global gUnknown_8117DF8 -gUnknown_8117DF8: @ 8117DF8 -.string "flag100p\0" -.align 2, 0 - -.global gUnknown_8117E04 -gUnknown_8117E04: @ 8117E04 -.string "flag16p\0" -.align 2, 0 - -.global gUnknown_8117E0C -gUnknown_8117E0C: @ 8117E0C -.string "flag15p\0" -.align 2, 0 - -.global gUnknown_8117E14 -gUnknown_8117E14: @ 8117E14 -.string "flag14p\0" -.align 2, 0 - -.global gUnknown_8117E1C -gUnknown_8117E1C: @ 8117E1C -.string "flag13p\0" -.align 2, 0 - -.global gUnknown_8117E24 -gUnknown_8117E24: @ 8117E24 -.string "flag12p\0" -.align 2, 0 - -.global gUnknown_8117E2C -gUnknown_8117E2C: @ 8117E2C -.string "flag11p\0" -.align 2, 0 - -.global gUnknown_8117E34 -gUnknown_8117E34: @ 8117E34 -.string "flag10p\0" -.align 2, 0 - -.global gUnknown_8117E3C -gUnknown_8117E3C: @ 8117E3C -.string "flag09p\0" -.align 2, 0 - -.global gUnknown_8117E44 -gUnknown_8117E44: @ 8117E44 -.string "flag08p\0" -.align 2, 0 - -.global gUnknown_8117E4C -gUnknown_8117E4C: @ 8117E4C -.string "flag07p\0" -.align 2, 0 - -.global gUnknown_8117E54 -gUnknown_8117E54: @ 8117E54 -.string "flag06p\0" -.align 2, 0 - -.global gUnknown_8117E5C -gUnknown_8117E5C: @ 8117E5C -.string "flag05p\0" -.align 2, 0 - -.global gUnknown_8117E64 -gUnknown_8117E64: @ 8117E64 -.string "flag04p\0" -.align 2, 0 - -.global gUnknown_8117E6C -gUnknown_8117E6C: @ 8117E6C -.string "flag03p\0" -.align 2, 0 - -.global gUnknown_8117E74 -gUnknown_8117E74: @ 8117E74 -.string "flag02p\0" -.align 2, 0 - -.global gUnknown_8117E7C -gUnknown_8117E7C: @ 8117E7C -.string "flag01p\0" -.align 2, 0 - -.global gUnknown_8117E84 -gUnknown_8117E84: @ 8117E84 -.string "flag00p\0" -.align 2, 0 - -.global gUnknown_8117E8C -gUnknown_8117E8C: @ 8117E8C -@ replacing .incbin "baserom.gba", 0x117E8C, 0x50 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x6b, 0x73, 0x64, 0x69, 0x72, 0x30, 0x00 - -.global gUnknown_8117EDC -gUnknown_8117EDC: @ 8117EDC -.string "ax%03d\0" -.align 2,0 -.string "pksdir0\0" -.align 2,0 -.string "pksdir0\0" -.align 2,0 -.string "pksdir0\0" -.align 2,0 - -.global gNullGroundScript -gNullGroundScript: @ 8117EFC -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.string "pksdir0\0" -.align 2,0 - -.global gGroundLivesCallbacks -gGroundLivesCallbacks: @ 8117F10 -.byte 0x01, 0x00, 0x00, 0x00 -.4byte CallbackLivesGetIndex -.4byte CallbackLivesGetSize -.4byte CallbackLivesGetHitboxCenter -.4byte CallbackLivesGetPosHeightAndUnk -.4byte CallbackLivesGetDirection -.4byte CallbackLivesGetFlags -.4byte CallbackLivesSetHitboxPos -.4byte CallbackLivesSetPositionBounds -.4byte CallbackLivesMoveReal -.4byte CallbackLivesSetPosHeight -.4byte CallbackLivesSetDirection -.4byte CallbackLivesSetEventIndex -.4byte nullsub_211 -.4byte CallbackLivesSetUnk_80AB194 -.4byte CallbackLivesSetFlags -.4byte CallbackLivesClearFlags -.4byte CallbackLivesSpriteRelated_80AB238 -.4byte CallbackLivesMoveRelative -.4byte CallbackLivesSpriteRelatedCheck_80AB1C0 -.4byte CallbackLivesSpriteRelated_80AB1E4 - -.global gUnknown_8117F64 -gUnknown_8117F64: @ 8117F64 -@ replacing .incbin "baserom.gba", 0x117F64, 0x6A -.byte 0xff, 0xff, 0x00, 0x08, 0x00, 0x03, 0x00, 0x03, 0x07, 0x08, 0x00, 0x08, 0x05, 0x08, 0x02, 0x03 -.byte 0x06, 0x03, 0x0b, 0x08, 0x07, 0x03, 0x06, 0x10, 0x02, 0x10, 0x01, 0x10, 0x08, 0x10, 0x0c, 0x10 -.byte 0x09, 0x10, 0x0a, 0x10, 0x03, 0x10, 0x04, 0x10, 0x03, 0x08, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x10 -.byte 0x0f, 0x10, 0x10, 0x10, 0x11, 0x10, 0x12, 0x10, 0x13, 0x10, 0x14, 0x10, 0x0d, 0x08, 0x0e, 0x08 -.byte 0x0f, 0x08, 0x10, 0x08, 0x11, 0x08, 0x12, 0x08, 0x13, 0x08, 0x14, 0x08, 0x0d, 0x08, 0x0e, 0x10 -.byte 0x0f, 0x10, 0x10, 0x10, 0x11, 0x10, 0x12, 0x08, 0x13, 0x10, 0x14, 0x10, 0x15, 0x10, 0x16, 0x10 -.byte 0x17, 0x10, 0x18, 0x08, 0x19, 0x10, 0x1a, 0x08, 0x1b, 0x08 - -.global gUnknown_8117FCE -gUnknown_8117FCE: @ 8117FCE -@ replacing .incbin "baserom.gba", 0x117FCE, 0x22 -.byte 0x19, 0x00, 0x34, 0x00, 0x85, 0x00, 0x45, 0x01, 0x07, 0x00, 0x9e, 0x00, 0x1b, 0x01, 0x36, 0x00 -.byte 0x04, 0x00, 0x18, 0x01, 0x9b, 0x00, 0x68, 0x00, 0x42, 0x00, 0x01, 0x00, 0x98, 0x00, 0x15, 0x01 -.byte 0x00, 0x00 - -.global gUnknown_8117FF0 -gUnknown_8117FF0: @ 8117FF0 -@ replacing .incbin "baserom.gba", 0x117FF0, 0x20 -.byte 0x00, 0x06, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00 -.byte 0x00, 0x06, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00 - -.global gUnknown_8118010 -gUnknown_8118010: @ 8118010 -@ replacing .incbin "baserom.gba", 0x118010, 0x20 -.byte 0x00, 0x20, 0x00, 0x00, 0xb1, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xb1, 0x16, 0x00, 0x00 -.byte 0x00, 0x20, 0x00, 0x00, 0xb1, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xb1, 0x16, 0x00, 0x00 - -.global gUnknown_8118030 -gUnknown_8118030: @ 8118030 -@ replacing .incbin "baserom.gba", 0x118030, 0x20 -.byte 0x00, 0x08, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00 -.byte 0x00, 0x08, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00 - -.global gUnknown_8118050 -gUnknown_8118050: @ 8118050 -.byte 0x00, 0x14, 0x00, 0x00 -.byte 0x00, 0x14, 0x00, 0x00 -.byte 0x00, 0x18, 0x00, 0x00 - -.global GroundLivesFile_Text -GroundLivesFile_Text: @ Text -.string "../ground/ground_lives.c\0" -.align 2,0 - -.global GroundLives_Select_Text -GroundLives_Text: @ Text -.string "GroundLives_Select\0" -.align 2,0 - -.global gUnknown_811808C -gUnknown_811808C: @ 811808C -.4byte GroundLivesFile_Text -.byte 0x1E, 0x02, 0x00, 0x00 -.4byte GroundLives_Text - -.global gUnknown_8118098 -gUnknown_8118098: @ 8118098 -.string "GroundLives Select %3d %3d %3d\0" -.align 2,0 - -.global gUnknown_81180BC -gUnknown_81180BC: @ 81180BC -.string "GroundLives Cancel %3d %3d\0" -.align 2,0 - -.global gUnknown_81180D8 -gUnknown_81180D8: @ 81180D8 -.string "GroundLives CancelBlank\0" -.align 2,0 - -.global gUnknown_81180F0 -gUnknown_81180F0: @ 81180F0 -.byte 0x5F, 0x00 -.byte 0x22, 0x00 -.byte 0x10, 0x00 -.byte 0x13, 0x00 -.byte 0x1B, 0x00 -.byte 0x29, 0x00 - -.global gUnknown_81180FC -gUnknown_81180FC: @ 81180FC -@ replacing .incbin "baserom.gba", 0x1180FC, 0x20 -.byte 0x19, 0x00, 0x34, 0x00, 0x85, 0x00, 0x45, 0x01, 0x07, 0x00, 0x9e, 0x00, 0x1b, 0x01, 0x36, 0x00 -.byte 0x04, 0x00, 0x18, 0x01, 0x9b, 0x00, 0x68, 0x00, 0x42, 0x00, 0x01, 0x00, 0x98, 0x00, 0x15, 0x01 - -.global gUnknown_811811C -gUnknown_811811C: @ 811811C -.string "GroundLive Add id %3d kind %3d type %3d group %3d sector %3d\0" -.align 2,0 - -.global GroundLives_Add_Text -GroundLives_Add_Text: @ Add -.string "GroundLives_Add\0" -.align 2,0 - -.global gUnknown_8118170 -gUnknown_8118170: @ 8118170 -.4byte GroundLivesFile_Text -.byte 0x89, 0x05, 0x00, 0x00 -.4byte GroundLives_Add_Text - -.global gUnknown_811817C -gUnknown_811817C: @ 811817C -.4byte GroundLivesFile_Text -.byte 0xb4, 0x05, 0x00, 0x00 -.4byte GroundLives_Add_Text - -.global gUnknown_8118188 -gUnknown_8118188: @ 8118188 -.4byte GroundLivesFile_Text -.byte 0xba, 0x05, 0x00, 0x00 -.4byte GroundLives_Add_Text - -.global gUnknown_8118194 -gUnknown_8118194: @ 8118194 -.string "GroundLives Delete id %3d\0" -.align 2,0 - -.global gUnknown_81181B0 -gUnknown_81181B0: @ 81181B0 -.string "GroundLives Execute %3d kind %3d %p\0" -.align 2,0 - -.global GroundLives_ExecuteScript_Text -GroundLives_ExecuteScript_Text: @ ExecuteScript -.string "GroundLives_ExecuteScript\0" -.align 2,0 - -.global gUnknown_81181F4 -gUnknown_81181F4: @ 81181F4 -.4byte GroundLivesFile_Text -.byte 0xa7, 0x06, 0x00, 0x00 -.4byte GroundLives_ExecuteScript_Text - -.global ExecutePlayerScript_Text -ExecutePlayerScript_Text: @ Text -.string "_ExecutePlayerScript\0" -.align 2,0 - -.global gUnknown_8118218 -gUnknown_8118218: @ 8118218 -.4byte GroundLivesFile_Text -.byte 0xC8, 0x06, 0x00, 0x00 -.4byte ExecutePlayerScript_Text - -.global ExecutePlayerScriptActionLives_Text -ExecutePlayerScriptActionLives_Text: @ Text -.string "GroundLives_ExecutePlayerScriptActionLives\0" -.align 2,0 - -.global gUnknown_8118250 -gUnknown_8118250: @ 8118250 -.4byte GroundLivesFile_Text -.byte 0xF9, 0x06, 0x00, 0x00 -.4byte ExecutePlayerScriptActionLives_Text - -.global gGroundLives_InvalidityText -gGroundLives_InvalidityText: @ 811825C -.string "{COLOR RED_W}invalidity{RESET}\0" -.align 2,0 - -.global GroundLives_ActionText -GroundLives_ActionText: @ ActionText -.string "GroundLives_Action\0" -.align 2,0 - -.global gUnknown_8118280 -gUnknown_8118280: @ 8118280 -.4byte GroundLivesFile_Text -.byte 0xA2, 0x11, 0x00, 0x00 -.4byte GroundLives_ActionText - -.global gUnknown_811828C -gUnknown_811828C: @ 811828C -.4byte GroundLivesFile_Text -.byte 0x0E, 0x12, 0x00, 0x00 -.4byte GroundLives_ActionText -.string "pksdir0\0" -.align 2,0 - -.global gGroundObjectCallbacks -gGroundObjectCallbacks: @ 81182A0 -@ replacing .incbin "baserom.gba", 0x1182A0, 0x54 -.byte 0x02, 0x00, 0x00, 0x00 -.4byte CallbackObjectGetIndex -.4byte CallbackObjectGetSize -.4byte CallbackObjectGetHitboxCenter -.4byte CallbackObjectGetPosHeightAndUnk -.4byte CallbackObjectGetDirection -.4byte CallbackObjectGetFlags -.4byte CallbackObjectSetHitboxPos -.4byte CallbackObjectSetPositionBounds -.4byte CallbackObjectMoveReal -.4byte CallbackObjectSetPosHeight -.4byte CallbackObjectSetDirection -.4byte CallbackObjectSetEventIndex -.byte 0x00, 0x00, 0x00, 0x00 -.4byte CallbackObjectSetUnk_80AC998 -.4byte CallbackObjectSetFlags -.4byte CallbackObjectClearFlags -.byte 0x00, 0x00, 0x00, 0x00 -.4byte CallbackObjectMoveRelative -.4byte CallbackObjectSpriteRelatedCheck_80AC9B8 -.4byte CallbackObjectSpriteRelated_80AC9DC - -.global gUnknown_81182F4 -gUnknown_81182F4: @ 81182F4 -.byte 0xF6, 0x0, 0x9F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34, 0x83, 0x11, 0x8, 0xF4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xDB, 0x0, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 - -.global GroundObjectFile_Text -GroundObjectFile_Text: @ Text - -.global gUnknown_8118334 -gUnknown_8118334: @ 8118334 -.string "../ground/ground_object.c" -.align 2,0 - -.global gUnknown_8118350 -gUnknown_8118350: @ 8118350 -@ replacing .incbin "baserom.gba", 0x118350, 0x50 -.byte 0xf6, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.4byte gUnknown_8118334 -.byte 0x54, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xdb, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -.global gUnknown_81183A0 -gUnknown_81183A0: @ 81183A0 -.byte 0xFF, 0xFF, 0x0, 0x8, 0x1, 0x8, 0x0, 0x10, 0x1, 0x10, 0x2, 0x10, 0x3, 0x10, 0x0, 0x8, 0x1, 0x8, 0x2, 0x8, 0x3, 0x8, 0x4, 0x8, 0x5, 0x8, 0x6, 0x8, 0x7, 0x8, 0x8, 0x8, 0x9, 0x8, 0xA, 0x8, 0xB, 0x8, 0xC, 0x8, 0xD, 0x8, 0xE, 0x8, 0xF, 0x8, 0x0, 0x0 - -.global GroundObject_Select_Text -GroundObject_Select_Text: @ Select -.string "GroundObject_Select" -.align 2,0 - -.global gUnknown_81183E4 -gUnknown_81183E4: @ 81183E4 -.4byte GroundObjectFile_Text -.4byte 0x126 -.4byte GroundObject_Select_Text - -.global gUnknown_81183F0 -gUnknown_81183F0: @ 81183F0 -.string "GroundObject Select %3d %3d %3d\0" -.align 2,0 - -.global gUnknown_8118414 -gUnknown_8118414: @ 8118414 -.string "GroundObject Cancel %3d\0" -.align 2,0 - -.global gUnknown_811842C -gUnknown_811842C: @ 811842C -.string "GroundObject CancelBlank\0" -.align 2,0 - -.global gUnknown_8118448 -gUnknown_8118448: @ 8118448 -.string "GroundObject Add id %3d kind %3d[%3d] type %3d group %3d sector %3d\0" -.align 2,0 - -.global GroundObject_AddText -GroundObject_AddText: @ AddText -.string "GroundObject_Add\0" -.align 2,0 - -.global gUnknown_81184A4 -gUnknown_81184A4: @ 81184A4 -.4byte GroundObjectFile_Text -.4byte 0x283 -.4byte GroundObject_AddText - -.global gUnknown_81184B0 -gUnknown_81184B0: @ 81184B0 -.string "GroundObject Delete id %3d\0" -.align 2,0 - -.global gUnknown_81184CC -gUnknown_81184CC: @ 81184CC -.string "GroundObject Execute %3d \0" -.align 2,0 - -.global GroundObject_ExecuteScript_Text -GroundObject_ExecuteScript_Text: @ ExecuteScript -.string "GroundObject_ExecuteScript\0" -.align 2,0 - -.global gUnknown_8118504 -gUnknown_8118504: @ 8118504 -.4byte GroundObjectFile_Text -.4byte 0x303 -.4byte GroundObject_ExecuteScript_Text - -.global GroundObject_Action_Text -GroundObject_Action_Text: @ Action -.string "GroundObject_Action\0" -.align 2,0 - -.global gUnknown_8118524 -gUnknown_8118524: @ 8118524 -.4byte GroundObjectFile_Text -.4byte 0x60D -.4byte GroundObject_Action_Text - -.global gUnknown_8118530 -gUnknown_8118530: @ 8118530 -.4byte GroundObjectFile_Text -.4byte 0x617 -.4byte GroundObject_Action_Text -.string "pksdir0\0" -.align 2,0 - -.global gGroundEffectCallbacks -gGroundEffectCallbacks: @ 8118544 -@ replacing .incbin "baserom.gba", 0x118544, 0xAE -.byte 0x03, 0x00, 0x00, 0x00 -.4byte CallbackEffectGetIndex -.4byte CallbackEffectGetSize -.4byte CallbackEffectGetHitboxCenter -.4byte CallbackEffectGetPosHeightAndUnk -.4byte CallbackEffectGetDirection -.4byte CallbackEffectGetFlags -.4byte CallbackEffectSetHitboxPos -.4byte CallbackEffectSetPositionBounds -.4byte CallbackEffectMoveReal -.4byte CallbackEffectSetPosHeight -.4byte CallbackEffectSetDirection -.4byte CallbackEffectSetEventIndex -.byte 0x00, 0x00, 0x00, 0x00 -.4byte CallbackEffectSetUnk_80AD670 -.4byte CallbackEffectSetFlags -.4byte CallbackEffectClearFlags -.byte 0x00, 0x00, 0x00, 0x00 -.4byte CallbackEffectMoveRelative -.4byte CallbackEffectSpriteRelatedCheck_80AD690 -.4byte CallbackEffectSpriteRelated_80AD6B4 -.byte 0xf6, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.4byte gUnknown_81185D8 -.byte 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00 - -.global gUnknown_81185D8 -gUnknown_81185D8: @ 81185D8 -.string "../ground/ground_effect.c\0" - -.global gUnknown_81185F2 -gUnknown_81185F2: @ 81185F2 -@ replacing .incbin "baserom.gba", 0x1185F2, 0x1E -.byte 0xff, 0xff, 0x00, 0x08, 0x01, 0x08, 0x00, 0x10, 0x00, 0x00 - -.global gUnknown_81185FC -gUnknown_81185FC: @ 81185FC -.string "GroundEffect_Select\0" -.align 2, 0 - -.global gUnknown_8118610 -gUnknown_8118610: @ 8118610 -.4byte gUnknown_81185D8 -.4byte 0x106 -.4byte gUnknown_81185FC - -.global gUnknown_811861C -gUnknown_811861C: @ 811861C -.string "GroundEffect Select %3d %3d %3d" -.align 2,0 - -.global gUnknown_8118640 -gUnknown_8118640: @ 8118640 -.string "GroundEffect Cancel %3d" -.align 2,0 - -.global gUnknown_8118658 -gUnknown_8118658: @ 8118658 -.string "GroundEffect CancelBlank\0" -.align 2,0 - -.global gUnknown_8118674 -gUnknown_8118674: @ 8118674 -@ replacing .incbin "baserom.gba", 0x118674, 0x58 -.string "GroundEffect Add id %3d kind %3d type %3d group %3d sector %3d\0" -.align 2, 0 - -.global gUnknown_81186B8 -gUnknown_81186B8: @ 81186B8 -.string "GroundEffect_Add\0" -.align 2, 0 - -.global gUnknown_81186CC -gUnknown_81186CC: @ 81186CC -@ replacing .incbin "baserom.gba", 0x1186CC, 0xC -.4byte gUnknown_81185D8 -.byte 0x10, 0x02, 0x00, 0x00 -.4byte gUnknown_81186B8 - -.global gUnknown_81186D8 -gUnknown_81186D8: @ 81186D8 -.string "GroundEffect Delete id %3d" -.align 2,0 - -.global gUnknown_81186F4 -gUnknown_81186F4: @ 81186F4 -.string "GroundEffect Execute %3d " -.align 2,0 - -.global GroundEffect_ExecuteScript_Text -GroundEffect_ExecuteScript_Text: @ ExecuteScript -.string "GroundEffect_ExecuteScript" -.align 2,0 - -.global gUnknown_811872C -gUnknown_811872C: @ 811872C -.4byte gUnknown_81185D8 -.4byte 0x290 -.4byte GroundEffect_ExecuteScript_Text - -.global GroundEffect_Action_Text -GroundEffect_Action_Text: @ Action -.string "GroundEffect_Action\0" -.align 2,0 - -.global gUnknown_811874C -gUnknown_811874C: @ 811874C -.4byte gUnknown_81185D8 -.4byte 0x560 -.4byte GroundEffect_Action_Text - -.global gUnknown_8118758 -gUnknown_8118758: @ 8118758 -.4byte gUnknown_81185D8 -.4byte 0x56A -.4byte GroundEffect_Action_Text -.string "pksdir0\0" -.align 2,0 -@ Ground Link - -.global GroundLink_FileText -GroundLink_FileText: @ FileText -.string "../ground/ground_link.c\0" -.align 2,0 - -.global GroundLink_SelectText -GroundLink_SelectText: @ SelectText -.string "GroundLink_Select\0" -.align 2,0 - -.global gUnknown_8118798 -gUnknown_8118798: @ 8118798 -.4byte GroundLink_FileText -.byte 0x4D, 0x00, 0x00, 0x00 -.4byte GroundLink_SelectText diff --git a/data/pksdir_6.s b/data/pksdir_6.s new file mode 100644 index 000000000..a3bfe01ae --- /dev/null +++ b/data/pksdir_6.s @@ -0,0 +1,9 @@ + .section .rodata + + .align 2, 0 + + +@ ??? +.string "pksdir0\0" + .align 2, 0 + diff --git a/include/debug.h b/include/debug.h index f7a825c97..b43e1a61d 100644 --- a/include/debug.h +++ b/include/debug.h @@ -9,6 +9,13 @@ typedef struct DebugLocation /* 0x8 */ const u8 *func; } DebugLocation; +// Macros for easier FatalError handling. FATAL_ERROR should be used as it gets the file, line and function name from gcc, however for matching purposes we always explicitly use FATAL_ERROR_ARGS + +#define DEBUG_LOC_PTR(file, line, func)((&((DebugLocation){file, line, func}))) + +#define FATAL_ERROR_ARGS(file, line, str, ...) FatalError(DEBUG_LOC_PTR(file, line, __func__), str, __VA_ARGS__ ) +#define FATAL_ERROR(str, ...) FATAL_ERROR_ARGS(__FILE__, __LINE__, str, __VA_ARGS__) + void FatalError(const DebugLocation *debug, const char *text, ...) NORETURN; void Log(u8 num, const u8 *text, ...); void NDS_DebugInit(void); diff --git a/include/ground_sprite.h b/include/ground_sprite.h index fdaf41da7..485b7c251 100644 --- a/include/ground_sprite.h +++ b/include/ground_sprite.h @@ -1,12 +1,49 @@ #ifndef GUARD_GROUND_SPRITE_H #define GUARD_GROUND_SPRITE_H +#include "structs/axdata.h" +#include "structs/sprite_oam.h" +#include "structs/str_position.h" + +// TODO: Clean up these structs + +struct UnkGroundSpriteSubStructx48 +{ + s16 unk0; + u16 unk2; + axmain *axmain; +}; + +// size: 0x80 (probably the last sub-struct of GroundLives) +struct UnkGroundSpriteStruct +{ + axdata axdata; + unkStruct_2039DB0 unk3C; + struct UnkGroundSpriteSubStructx48 unk48; + u16 flags_0x50; + s16 unk52; + OpenedFile *unk54; + s16 unk58; + u8 unk5A; + s32 unk5C; + s32 unk60; + s16 unk64; + s16 unk66; + u16 unk68; + s16 unk6A; + u16 unk6C; + s16 unk6E; + u8 unk70; + PixelPos unk74; + s32 unk7C; +}; + // size: 0xC typedef struct unkStruct_3001B7C_sub0 { u32 unk0; s32 unk4; - u32 unk8; + struct UnkGroundSpriteStruct *unk8; } unkStruct_3001B7C_sub0; // size: 0x4 @@ -16,13 +53,24 @@ typedef struct unkStruct_3001B7C_sub108 s16 unk2; } unkStruct_3001B7C_sub108; +#define UNK_3001B7C_SUB0_COUNT 22 +#define UNK_3001B7C_SUB108_COUNT 2 + // size: 0x110 typedef struct unkStruct_3001B7C { - unkStruct_3001B7C_sub0 unk0[22]; - unkStruct_3001B7C_sub108 unk108[2]; + unkStruct_3001B7C_sub0 unk0[UNK_3001B7C_SUB0_COUNT]; + unkStruct_3001B7C_sub108 unk108[UNK_3001B7C_SUB108_COUNT]; } unkStruct_3001B7C; -void GroundSprite_Reset(s16); +void GroundSprite_Reset(s32); +void GroundSprite_ExtendPaletteAdd(struct UnkGroundSpriteStruct *ptr, u16); +void GroundSprite_ExtendPaletteDelete(struct UnkGroundSpriteStruct *ptr); +void sub_80A67CC(struct UnkGroundSpriteStruct *ptr, struct UnkGroundSpriteSubStructx48 *a1, s32 a2); +void sub_80A68A0(struct UnkGroundSpriteStruct *ptr); +void sub_80A6EFC(struct UnkGroundSpriteStruct *ptr, s32 a1_, s32 a2_); +void sub_80A7040(struct UnkGroundSpriteStruct *ptr, s32 a1_, s32 a2_, s32 a3); +bool8 sub_80A7094(struct UnkGroundSpriteStruct *ptr, PixelPos *r10, PixelPos *posArg, s32 a3); +bool8 sub_80A7310(struct UnkGroundSpriteStruct *ptr, PixelPos *posArg1, PixelPos *posArg2, s32 a3); -#endif // GUARD_GROUND_SPRITE_H \ No newline at end of file +#endif // GUARD_GROUND_SPRITE_H diff --git a/include/ground_sprite_data.h b/include/ground_sprite_data.h new file mode 100644 index 000000000..c0fdccb2f --- /dev/null +++ b/include/ground_sprite_data.h @@ -0,0 +1,15 @@ +#ifndef GUARD_GROUND_SPRITE_DATA_H +#define GUARD_GROUND_SPRITE_DATA_H + +struct GroundObjectKind +{ + s8 unk0; + u16 unk2; + const char *fileName; +}; + +extern const char *const gUnknown_81178F4[]; +extern const struct GroundObjectKind gGroundObjectKinds[]; +extern const struct GroundObjectKind gUnknown_8117E8C[]; + +#endif // GUARD_GROUND_SPRITE_DATA_H diff --git a/include/pokemon_mail.h b/include/pokemon_mail.h index d12f2517c..4595b6763 100644 --- a/include/pokemon_mail.h +++ b/include/pokemon_mail.h @@ -38,4 +38,7 @@ void sub_803B6B0(s32 x, s32 y, u8 index, u32); bool8 sub_803C0DC(s16 species); bool8 sub_803C110(s16 index); +extern const unkStruct_80E9920 gUnknown_80E9920[21]; +extern const unkStruct_80E9F8C gUnknown_80E9F8C[45]; + #endif // POKEMON_MAIL_H diff --git a/include/pokemon_mail_pre.h b/include/pokemon_mail_pre.h index 1d44fc592..fd54f5b05 100644 --- a/include/pokemon_mail_pre.h +++ b/include/pokemon_mail_pre.h @@ -1,6 +1,22 @@ #ifndef POKEMON_MAIL_PRE_H #define POKEMON_MAIL_PRE_H +struct PokemonPair +{ + s16 speciesA; + s16 speciesB; +}; + +struct PokemonItem +{ + s16 species; + u8 itemId; +}; + +extern const struct PokemonPair gUnknown_80E8168[6]; +extern const struct PokemonItem gUnknown_80E8180[21]; +extern const struct PokemonItem gUnknown_80E81D4[386]; + extern const s16 gUnknown_80E80E0[35]; extern const s16 gUnknown_80E8126[33]; extern const u8 gMankeyMission[]; @@ -35,4 +51,4 @@ extern const u8 gDifficultyText[]; extern const u8 gRewardText[]; extern const u8 gUnknown_80E8B7C[]; -#endif // POKEMON_MAIL_PRE_H \ No newline at end of file +#endif // POKEMON_MAIL_PRE_H diff --git a/include/sprite.h b/include/sprite.h index ecb160733..d8d81f121 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -53,7 +53,7 @@ void sub_8005180(void); void sub_8005304(void); void sub_8005610(OpenedFile *, s32 vramIdx, s32 brightness, const RGB *ramp); const RGB *sub_8005674(const EfoFileData *, s32 vramIdx); -void sub_800569C(DungeonPos *, axObject *, u8); +void sub_800569C(DungeonPos *, axdata *, u8); void sub_8005700(DungeonPos *, axObject *); void sub_8005770(s32, const RGB *color, s32 brightness, const RGB *ramp); diff --git a/include/structs/axdata.h b/include/structs/axdata.h index cdd8b44d6..78a571e64 100644 --- a/include/structs/axdata.h +++ b/include/structs/axdata.h @@ -100,32 +100,6 @@ typedef struct axObject } info; } axObject; -// size: 0x80? (assuming it's the last sub-struct of GroundLives) -typedef struct axPokemon -{ - axObject obj; - /* 0x4C */ axmain *axmain; - u16 flags_0x50; - s16 unk52; - u8 fill54[0x58 - 0x54]; - u16 unk58; - u8 unk5A; - // 1b padding - s32 unk5C; - s32 unk60; - u8 fill64[0x66 - 0x64]; - s16 unk66; - s16 unk68; - s16 unk6A; - u16 unk6C; - u16 unk6E; - u8 unk70; - u8 fill71[0x74 - 0x71]; - s32 unk74; - s32 unk78; - s32 unk7C; -} axPokemon; - typedef struct Palette256 { RGB pal[256]; diff --git a/ld_script.ld b/ld_script.ld index afd29e6dc..b2e6e4f60 100755 --- a/ld_script.ld +++ b/ld_script.ld @@ -191,7 +191,6 @@ SECTIONS { asm/code_803B050.o(.text); src/pokemon_mail.o(.text); src/code_803C1B4.o(.text); - asm/code_803C1D0.o(.text); src/personality_test1.o(.text); src/personality_test2.o(.text); src/code_803D0D8.o(.text); @@ -329,7 +328,6 @@ SECTIONS { src/code_8097F40.o(.text); src/exclusive_pokemon.o(.text); src/position_util.o(.text); - asm/code_8098468.o(.text); src/ground_main.o(.text); src/code_8099328.o(.text); src/code_8099360.o(.text); @@ -346,8 +344,10 @@ SECTIONS { asm/code_80A59DC.o(.text); src/ground_map_2.o(.text); src/ground_sprite.o(.text); - asm/ground_sprite.o(.text); - src/code_80A7714.o(.text); + src/ground_sprite_data.o(.text); + src/ground_sprite_monster.o(.text); + src/ground_sprite_util.o(.text); + src/ground_script_file.o(.text); src/ground_lives.o(.text); asm/ground_lives.o(.text); src/ground_object.o(.text); @@ -696,6 +696,13 @@ SECTIONS { data/data_8115F5C.o(.rodata); src/code_809A560.o(.rodata); data/data_8115F5C_2.o(.rodata); + src/ground_sprite.o(.rodata); + src/ground_sprite_data.o(.rodata); + src/ground_sprite_monster.o(.rodata); + src/ground_sprite_util.o(.rodata); + data/pksdir_6.o(.rodata); + src/ground_script_file.o(.rodata); + data/data_8115F5C_1.o(.rodata); src/ground_event.o(.rodata); src/unk_dungeon_load_maybe.o(.rodata); data/data_8115F5C_3.o(.rodata); diff --git a/src/code_803C1B4.c b/src/code_803C1B4.c index 1ba27ca1f..0fcd9a070 100644 --- a/src/code_803C1B4.c +++ b/src/code_803C1B4.c @@ -26,7 +26,7 @@ u8 sub_803C1D0(struct DungeonLocation *dungeon, u8 missionType) s32 a = sub_803C1B4(dungeon, missionType); a /= 2; if ((u8)a >= 7) { - a = 6; + a = 6; return a; } return a; @@ -51,7 +51,7 @@ void sub_803C21C(WonderMail *param_1, unkStruct_802F204 *param_2) uVar2 = sub_803C1D0(¶m_1->unk4.dungeon,param_1->missionType); param_2->moneyReward = 0; - for(index = 0; index < MAX_ITEM_REWARDS; index++) + for(index = 0; index < MAX_ITEM_REWARDS; index++) { param_2->itemRewards[index] = ITEM_NOTHING; } @@ -116,11 +116,12 @@ void sub_803C21C(WonderMail *param_1, unkStruct_802F204 *param_2) param_2->teamRankPtsReward = GetDungeonTeamRankPts(¶m_1->unk4.dungeon,param_1->missionType); } -void sub_803C37C(DungeonLocation *location, u8 r1, u8 *itemReward) { +void sub_803C37C(DungeonLocation *location, u8 r1, u8 *itemReward) +{ s32 r7; bool8 flag; u8 r4; - + r7 = sub_803C1B4(location, r1); sub_8090910(location, r7); @@ -135,3 +136,159 @@ void sub_803C37C(DungeonLocation *location, u8 r1, u8 *itemReward) { *itemReward = r4; } + +// TODO: Figure out if this is the right file +#include "random.h" +#include "pokemon_mail.h" +#include "pokemon_mail_pre.h" + +bool8 sub_803C3E0(WonderMail *mail) +{ + const unkStruct_80E9920 *ptr; + s32 counter, id; + s32 stack[ARRAY_COUNT(gUnknown_80E9920)]; + + counter = 0; + for (ptr = gUnknown_80E9920, id = 0; id < ARRAY_COUNT_INT(gUnknown_80E9920); ptr++, id++) { + if (sub_803C110(ptr->parentSpecies) && sub_803C110(ptr->childSpecies)) { + stack[counter++] = id; + } + } + + if (counter != 0) { + id = stack[RandInt(counter)]; + ptr = &gUnknown_80E9920[id]; + mail->clientSpecies = ptr->parentSpecies; + mail->targetSpecies = ptr->childSpecies; + mail->unk2 = 7; + return TRUE; + } + + return FALSE; +} + +bool8 sub_803C45C(WonderMail *mail) +{ + s32 counter, id; + s32 stack[ARRAY_COUNT(gUnknown_80E9F8C)]; + const unkStruct_80E9F8C *ptr; + + counter = 0; + ptr = &gUnknown_80E9F8C[0]; + for (id = 0; id < ARRAY_COUNT_INT(gUnknown_80E9F8C); ptr++, id++) { + if (sub_803C110(ptr->speciesA) && sub_803C110(ptr->speciesB)) { + stack[counter++] = id; + } + } + + if (counter != 0) { + id = stack[RandInt(counter)]; + ptr = &gUnknown_80E9F8C[id]; + + if ((Rand32Bit() & 0x10)) { + mail->clientSpecies = ptr->speciesA; + mail->targetSpecies = ptr->speciesB; + } + else { + mail->clientSpecies = ptr->speciesB; + mail->targetSpecies = ptr->speciesA; + } + + mail->unk2 = 8; + return TRUE; + } + + return FALSE; +} + +bool8 sub_803C4F0(WonderMail *mail) +{ + s32 counter, id; + s32 stack[ARRAY_COUNT(gUnknown_80E8168)]; + const struct PokemonPair *ptr; + + counter = 0; + ptr = &gUnknown_80E8168[0]; + for (id = 0; id < ARRAY_COUNT_INT(gUnknown_80E8168); ptr++, id++) { + if (sub_803C110(ptr->speciesA) && sub_803C110(ptr->speciesB)) { + stack[counter++] = id; + } + } + + if (counter != 0) { + id = stack[RandInt(counter)]; + ptr = &gUnknown_80E8168[id]; + + if ((Rand32Bit() & 0x10)) { + mail->clientSpecies = ptr->speciesA; + mail->targetSpecies = ptr->speciesB; + } + else { + mail->clientSpecies = ptr->speciesB; + mail->targetSpecies = ptr->speciesA; + } + + mail->unk2 = 9; + return TRUE; + } + + return FALSE; +} + +bool8 sub_803C580(WonderMail *param_1) +{ + s32 counter, id; + s32 array[ARRAY_COUNT(gUnknown_80E8180)]; + const struct PokemonItem *ptr; + + counter = 0; + ptr = gUnknown_80E8180; + + if (!sub_80023E4(6)) + return FALSE; + + for (id = 0; id < ARRAY_COUNT_INT(gUnknown_80E8180); ptr++, id++) { + if (sub_803C110(ptr->species) && xxx_bit_lut_lookup_8091E50(param_1->unk4.dungeon.id, ptr->itemId)) { + array[counter++] = id; + } + } + + if (counter != 0) { + id = array[RandInt(counter)]; + ptr = &gUnknown_80E8180[id]; + param_1->clientSpecies = ptr->species; + param_1->targetSpecies = ptr->species; + param_1->targetItem = ptr->itemId; + param_1->unk2 = 5; + return TRUE; + } + + return FALSE; +} + +bool8 sub_803C610(WonderMail *param_1) +{ + s32 counter, id; + s32 array[ARRAY_COUNT(gUnknown_80E81D4)]; + const struct PokemonItem *ptr; + + counter = 0; + ptr = gUnknown_80E81D4; + for (id = 0; id < ARRAY_COUNT_INT(gUnknown_80E81D4); ptr++, id++) { + if (sub_803C110(ptr->species) && xxx_bit_lut_lookup_8091E50(param_1->unk4.dungeon.id, ptr->itemId)) { + array[counter++] = id; + } + } + + if (counter != 0) { + id = array[RandInt(counter)]; + ptr = &gUnknown_80E81D4[id]; + param_1->clientSpecies = ptr->species; + param_1->targetSpecies = ptr->species; + param_1->targetItem = ptr->itemId; + param_1->unk2 = 6; + return TRUE; + } + + return FALSE; +} diff --git a/src/code_8040094_1.c b/src/code_8040094_1.c index 07efa330b..7e699edf3 100644 --- a/src/code_8040094_1.c +++ b/src/code_8040094_1.c @@ -100,7 +100,7 @@ static void sub_8040C4C(Entity *entity, Move *move, bool32 a2) s32 r2 = sub_800E710(apparentId, sub_80412E0(move->id, GetApparentWeather(entity), TRUE)); if (r2 != -1) { - sub_800569C(&sp.unk8, &entity->axObj, r2); + sub_800569C(&sp.unk8, &entity->axObj.axdata, r2); } else { sp.unk8 = (DungeonPos) {0}; @@ -252,7 +252,7 @@ static void sub_8041038(struct UnkStruct_8040094 *a0, Entity *entity, Move *move s32 r2 = sub_800E710(entInfo->apparentID, sub_80412E0(move->id, GetApparentWeather(entity), a2)); if (r2 != -1) { - sub_800569C(&a0->unk8, &entity->axObj, r2); + sub_800569C(&a0->unk8, &entity->axObj.axdata, r2); } else { a0->unk8 = (DungeonPos) {0}; @@ -312,7 +312,7 @@ void sub_8041168(Entity *entity, Entity *entity2, Move *move, DungeonPos *pos) var2 = sub_800ECA4(var)->unk1c; if (var2 != -1) { if (EntityIsValid(entity2)) { - sub_800569C(&sp.unk8, &entity2->axObj, var2); + sub_800569C(&sp.unk8, &entity2->axObj.axdata, var2); } else { sp.unk8 = (DungeonPos) {0}; diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c index e7929a8e8..c5ee25342 100644 --- a/src/code_8041AD0.c +++ b/src/code_8041AD0.c @@ -229,7 +229,7 @@ s32 sub_8041550(Entity *entity, s32 a1, u8 a2, u8 a3, s32 a4, u8 a5) sub_804178C(a4 == 2); } - sub_800569C(&pos, &entity->axObj, a3); + sub_800569C(&pos, &entity->axObj.axdata, a3); if (pos.x != 99 && pos.y != 99) { pixelPos.x = entity->pixelPos.x + (pos.x << 8); pixelPos.y = (entity->pixelPos.y + (pos.y << 8)) - entInfo->unk174.raw; @@ -1718,7 +1718,7 @@ void sub_8042EC8(Entity *a0, s32 a1) if (strPtr->unk8 != -1) { sub_800569C(&sp4, - &a0->axObj, + &a0->axObj.axdata, strPtr->unk8); } diff --git a/src/code_80848F0.c b/src/code_80848F0.c index 404f3fa8e..4fec4cc09 100644 --- a/src/code_80848F0.c +++ b/src/code_80848F0.c @@ -1489,7 +1489,7 @@ s32 sub_80861F8(s32 param_1,Entity *param_2,bool32 param_3) pos.y = 0; uStack_38 = sub_800E700(param_1Copy); if (uStack_38 != -1) { - sub_800569C(&pos, ¶m_2->axObj, uStack_38); + sub_800569C(&pos, ¶m_2->axObj.axdata, uStack_38); } stack.unk0 = param_1Copy; stack.unk4 = 0; diff --git a/src/code_80A7714.c b/src/code_80A7714.c deleted file mode 100644 index 355aa6195..000000000 --- a/src/code_80A7714.c +++ /dev/null @@ -1,73 +0,0 @@ -#include "global.h" -#include "structs/axdata.h" - -extern void sub_80A68A0(u32); -extern void sub_80A7094(axPokemon *, u32, u32, u32); -extern void sub_80A7310(axPokemon *, u32, u32, u32); -extern void ResetCurrentScriptFile(); - -static EWRAM_DATA s16 sUnknown_2039DE0 = {0}; - -extern const struct GroundScriptHeader gNullGroundScript; -extern const struct GroundScriptHeader *gMapScriptTable[]; // 811E2F8 - -void sub_80A7714(u32 a0) -{ - sub_80A68A0(a0); -} - -void sub_80A7720(axPokemon *a0, u32 a1, u32 a2) -{ - sub_80A7094(a0, 0, a1, a2); - sub_80A7310(a0, a1, 0, a2); -} - -void sub_80A7744(void) -{ - sUnknown_2039DE0 = -1; -} - -void sub_80A7754(void) -{ - sUnknown_2039DE0 = -1; -} - -void SetCurrentScriptFile(s16 a0) -{ - s32 temp = a0; - - ResetCurrentScriptFile(); - - if (temp != -1) - sUnknown_2039DE0 = temp; -} - -void ResetCurrentScriptFile(void) -{ - if (sUnknown_2039DE0 != -1) - sUnknown_2039DE0 = -1; -} - -bool8 ChangeScriptFile(s16 a0) -{ - s32 temp; - s32 temp2; - temp = a0; - temp2 = temp; - if (sUnknown_2039DE0 != temp) { - if (temp < 0) - ResetCurrentScriptFile(); - else - SetCurrentScriptFile(temp2); - return TRUE; - } - return FALSE; -} - -const struct GroundScriptHeader *GetGroundScript(s16 a0) -{ - if (a0 != -1) - return gMapScriptTable[a0]; - else - return &gNullGroundScript; -} diff --git a/src/data/event_flag.h b/src/data/event_flag.h index 5bcf98f0d..477ca00de 100644 --- a/src/data/event_flag.h +++ b/src/data/event_flag.h @@ -175,7 +175,3 @@ const struct GroundEventTableEntry gGroundEnterLookupTable[58] = { { 161, 57}, { -1, 0}, }; - -ALIGNED(4) const u8 gScenarioCalcLogString[] = "SCENARIO CALC [%3d] %4d %4d -> %4d %4d"; - -ALIGNED(4) const u8 EventFlagFile_Text[] = "../main/event_flag.c"; diff --git a/src/data/pokemon_mail_pre.h b/src/data/pokemon_mail_pre.h index 3dfef368f..9c726ae63 100644 --- a/src/data/pokemon_mail_pre.h +++ b/src/data/pokemon_mail_pre.h @@ -95,7 +95,7 @@ const s16 gUnknown_80E8126[33] = { MONSTER_NONE }; -const s16 gUnknown_80E8168[6][2] = { +const struct PokemonPair gUnknown_80E8168[6] = { { MONSTER_NIDORAN_M, MONSTER_NIDORAN_F }, { MONSTER_NIDORINO, MONSTER_NIDORINA }, { MONSTER_NIDOKING, MONSTER_NIDOQUEEN }, @@ -104,7 +104,7 @@ const s16 gUnknown_80E8168[6][2] = { { MONSTER_MINUN, MONSTER_PLUSLE } }; -const s16 gUnknown_80E8180[21][2] = { +const struct PokemonItem gUnknown_80E8180[21] = { { MONSTER_GLOOM, ITEM_LEAF_STONE }, { MONSTER_WEEPINBELL, ITEM_LEAF_STONE }, { MONSTER_EXEGGCUTE, ITEM_LEAF_STONE }, @@ -129,7 +129,7 @@ const s16 gUnknown_80E8180[21][2] = { }; // List of preferred gummis -const s16 gUnknown_80E81D4[386][2] = { +const struct PokemonItem gUnknown_80E81D4[386] = { { MONSTER_EKANS, ITEM_PINK_GUMMI }, { MONSTER_ARBOK, ITEM_PINK_GUMMI }, { MONSTER_ARMALDO, ITEM_GRAY_GUMMI }, diff --git a/src/dungeon_move_util.c b/src/dungeon_move_util.c index c8907f3ef..3fac45050 100644 --- a/src/dungeon_move_util.c +++ b/src/dungeon_move_util.c @@ -567,7 +567,7 @@ s32 sub_8056564(Entity *entity, DungeonPos *pos, Move *move, s32 r4) DungeonRunFrameActions(0x5E); someRetVal = sub_800E710(entInfo->apparentID, sub_80412E0(move->id, GetApparentWeather(entity), 1)); if (someRetVal != -1) { - sub_800569C(&unkSp1.unk8, &entity->axObj, someRetVal); + sub_800569C(&unkSp1.unk8, &entity->axObj.axdata, someRetVal); } else { unkSp1.unk8 = (DungeonPos) {0}; diff --git a/src/event_flag.c b/src/event_flag.c index a981958d2..750747e4b 100644 --- a/src/event_flag.c +++ b/src/event_flag.c @@ -463,7 +463,7 @@ void ScenarioCalc(s16 param_1,s32 param_2,s32 param_3) param_1_s32 = param_1; GetScriptVarScenario(param_1_s32,&local_18,&local_14); - Log(6,gScenarioCalcLogString,param_1_s32,local_18,local_14,param_2,param_3); // SCENARIO CALC [%3d] %4d %4d -> %4d %4d + Log(6,"SCENARIO CALC [%3d] %4d %4d -> %4d %4d",param_1_s32,local_18,local_14,param_2,param_3); if ((param_1_s32 == 3) && ((param_2 != local_18 || (param_3 != local_14)))) { SetScriptVarValue(NULL,CLEAR_COUNT,0); } @@ -650,14 +650,6 @@ void sub_8001D88(void) } } -ALIGNED(4) static const u8 sFlagCalc_Text[] = "_FlagCalc"; - -static const DebugLocation sFlagCalcDebugLocation = { - EventFlagFile_Text, - 0x551, - sFlagCalc_Text -}; - // arm9.bin::0200EC08 s32 _FlagCalc(s32 param_1, s32 param_2, enum FlagCalcOperation operation) { @@ -687,18 +679,10 @@ s32 _FlagCalc(s32 param_1, s32 param_2, enum FlagCalcOperation operation) case CALC_RANDOM: return OtherRandInt(param_2); default: - FatalError(&sFlagCalcDebugLocation,"event flag expansion error %d", operation); // event flag expansion error %d + FATAL_ERROR_ARGS("../main/event_flag.c", 1361, "event flag expansion error %d", operation); } } -ALIGNED(4) static const u8 sFlagJudge_Text[] = "_FlagJudge"; - -static const DebugLocation sFlagJudgeDebugLocation = { - EventFlagFile_Text, - 0x57C, - sFlagJudge_Text -}; - // arm9.bin::0200EAE4 bool8 _FlagJudge(s32 param_1, s32 param_2, enum FlagJudgeOperation operation) { @@ -726,7 +710,7 @@ bool8 _FlagJudge(s32 param_1, s32 param_2, enum FlagJudgeOperation operation) case JUDGE_BIT_SET: return param_1 >> (param_2) & 1; default: - FatalError(&sFlagJudgeDebugLocation,"event flag rule error %d", operation); // event flag rule error %d + FATAL_ERROR_ARGS("../main/event_flag.c", 1404, "event flag rule error %d", operation); } } diff --git a/src/ground_event.c b/src/ground_event.c index 4a6d736b8..681276c8e 100644 --- a/src/ground_event.c +++ b/src/ground_event.c @@ -144,8 +144,6 @@ struct TestStruct s32 unk4; }; -extern struct TestStruct sUnknown; // Todo: figure out or guess what this variable could be. - s32 GroundEvent_Add(s32 id, const GroundEventData *eventData, s32 group, s32 sector) { s32 i; @@ -194,11 +192,7 @@ s32 GroundEvent_Add(s32 id, const GroundEventData *eventData, s32 group, s32 sec break; } - // The line below effectively does nothing(it's not even generated in the asm, agbcc ignores it, but changes regalloc...), because 'r' is overwritten in the next two instructions, however it is REQUIRED to match. Only discovered, because it's present in Blue's asm. - r = sUnknown; - - r.unk0 = eventData->kind << 11; - r.unk4 = eventData->unk1 << 11; + r = (struct TestStruct) {eventData->kind << 11, eventData->unk1 << 11}; SetUnkInGroundEvent(&eventData->pos, sp); ptr->unkC = sp[0]; diff --git a/src/ground_main.c b/src/ground_main.c index d0412a992..068c09156 100644 --- a/src/ground_main.c +++ b/src/ground_main.c @@ -15,9 +15,10 @@ #include "play_time.h" #include "pokemon.h" #include "text_util.h" +#include "code_80A26CC.h" EWRAM_DATA u32 gUnknown_20398A8 = {0}; -EWRAM_DATA u32 gUnknown_20398AC = {0}; +EWRAM_DATA s32 gUnknown_20398AC = {0}; EWRAM_DATA u32 gUnknown_20398B0 = {0}; EWRAM_DATA u32 gUnknown_20398B4 = {0}; EWRAM_DATA u8 gUnknown_20398B8 = {0}; @@ -25,7 +26,7 @@ EWRAM_DATA bool8 gUnknown_20398B9 = {0}; EWRAM_DATA bool8 gScriptMode = {0}; UNUSED EWRAM_DATA static u8 gUnknown_20398BB = {0}; EWRAM_DATA u16 gUnknown_20398BC = {0}; -EWRAM_DATA u16 gUnknown_20398BE = {0}; +EWRAM_DATA s16 gUnknown_20398BE = {0}; EWRAM_DATA u32 gUnknown_20398C0 = {0}; EWRAM_DATA s16 gUnknown_20398C4 = {0}; EWRAM_DATA struct unkStruct_20398C8 gUnknown_20398C8 = {0}; @@ -48,12 +49,6 @@ extern void nullsub_120(); extern void sub_809B638(); extern void nullsub_106(); extern void sub_80A73EC(); -extern void sub_80A6E68(); -extern void GroundMap_Action(); -extern void nullsub_124(); -extern void GroundLives_Action(); -extern void GroundObject_Action(); -extern void GroundEffect_Action(); extern void sub_809CB8C(); extern void sub_8098CC8(); @@ -61,6 +56,427 @@ extern void ClearAllItems_8091FB4(); extern u8 sub_809C730(); extern void sub_8095494(WonderMailSub *param_1, u8 index); +extern u16 gUnknown_2026E4E; + +// TODO: Move these externs to headers +extern void GroundSprite_Reset(s32); +extern s16 sub_8098FCC(u32 unused); +extern s16 sub_80A2654(s16 r0); +extern void sub_809A71C(s32); +extern bool8 sub_809AFAC(void); +extern bool8 sub_80048BC(void); +void FadeOutAllMusic(u16 speed); +extern u8 sub_80023E4(u32); +extern bool8 sub_809C740(void); +extern bool8 sub_8099B94(void); +extern void FreeGroundMapAction(void); +extern void nullsub_118(void); +extern void FreeGroundLives(void); +extern void FreeGroundObjects(void); +extern void FreeGroundEffects(void); +extern void FreeGroundEvents(void); +extern void sub_809CB74(void); +extern void sub_809A610(void); +extern void sub_809C618(void); +extern void sub_80A658C(void); +extern void sub_809D508(void); +extern void sub_80A7754(void); +extern void nullsub_119(void); +extern void sub_8099768(void); +extern void nullsub_103(void); +extern void sub_8099648(void); +extern void sub_809975C(void); +extern void sub_809D0AC(void); +extern void sub_80A7744(void); +extern void sub_809D490(void); +extern void sub_80A62F0(void); +extern void sub_809C5C4(void); +extern void sub_809A560(void); +extern void sub_809CB50(void); +extern void AllocGroundMapAction(void); +extern void nullsub_117(void); +extern void AllocGroundEvents(void); +extern void AllocGroundLives(void); +extern void AllocGroundObjects(void); +extern void AllocGroundEffects(void); +extern void sub_809A62C(void); +extern void nullsub_124(void); +extern void GroundLives_Action(void); +extern void GroundObject_Action(void); +extern void GroundEffect_Action(void); +extern void nullsub_105(void); +extern void sub_809B474(void); +extern void GroundScript_Unlock(); +extern void sub_809D25C(void); +extern void sub_80A59DC(void); +extern void sub_809B614(void); +extern void sub_809CA20(void); +extern void sub_80A6E80(void); +extern void sub_8099BE4(void); +extern void sub_8099744(void); +extern void sub_8011860(void); +extern void IncrementPlayTime(struct PlayTimeStruct *); +extern void WaitForNextFrameAndAdvanceRNG(void); +extern void LoadBufferedInputs(void); +extern void nullsub_120(void); +extern void sub_80A5E70(void); +extern void sub_809B638(void); +extern void nullsub_106(void); +extern void sub_80A73EC(void); +extern void sub_8099750(void); +extern void sub_8009908(void); +extern void GroundMap_Reset(void); +extern void sub_809D0BC(void); +extern void DeleteGroundEvents(void); +extern void DeleteGroundLives(void); +extern void DeleteGroundObjects(void); +extern void DeleteGroundEffects(void); +extern void sub_809C658(void); +extern void nullsub_16(void); +extern void UpdateAdventureAchievements(void); +extern void xxx_call_update_bg_sound_input(void); +extern void sub_80A6E68(void); +extern void sub_80060EC(void); +extern void sub_801180C(void); +extern void ScriptPrintNullTextbox(void); +extern void sub_809977C(void); +extern void GroundMap_ExecuteEvent(s32, u32); +extern void UpdateFadeInTile(s32); +extern void GroundMap_Action(void); +extern void sub_8098C58(void); +extern void sub_8001D88(void); +extern u32 GroundMainGameCancelRequest(u32 r0); +extern void sub_80999D4(s32); +extern void sub_809D4B0(void); +extern void sub_809C63C(void); +extern void sub_8005838(s32, s32); + +u32 xxx_script_related_8098468(s32 param_1) +{ + s32 r7; + s32 varE; + + gUnknown_20398B4 = param_1; + gUnknown_20398B9 = 0; + gUnknown_20398B8 = 1; + gScriptMode = 0; + + switch (param_1) { + case 0xd: + gScriptMode = 1; + gUnknown_20398B8 = 0; + gUnknown_20398B9 = 1; + break; + case 0xe: + gUnknown_20398B8 = 1; + gUnknown_20398B9 = 1; + break; + case 0xf: + gUnknown_20398B8 = 1; + gUnknown_20398B9 = 1; + break; + case 0x10: { + s32 local_1c; + u32 auStack24; + + GetScriptVarScenario(3,&local_1c,&auStack24); + gUnknown_20398B8 = local_1c == 0; + gUnknown_20398B9 = 1; + break; + } + case 0x11: + gUnknown_20398B8 = 0; + gUnknown_20398B9 = 1; + break; + default: + break; + } + sub_801180C(); + if (gUnknown_20398B9 == 0 && !sub_80023E4(0xd)) { + FadeOutAllMusic(0x10); + } + gUnknown_2026E4E = 0x808; + UpdateFadeInTile(0); + sub_8099648(); + sub_809975C(); + sub_809D0AC(); + sub_80A7744(); + sub_809D490(); + sub_80A62F0(); + sub_809C5C4(); + sub_809A560(); + sub_809CB50(); + AllocGroundMapAction(); + nullsub_117(); + AllocGroundEvents(); + AllocGroundLives(); + AllocGroundObjects(); + AllocGroundEffects(); + sub_809A62C(); + gUnknown_203B49C = 0; + gUnknown_203B49D = 0; + gUnknown_20398A8 = 1; + gUnknown_20398AC = 0; + gUnknown_20398B0 = -1; + gUnknown_20398BE = GetScriptVarValue(0,GROUND_ENTER); + varE = GetScriptVarValue(0,GROUND_ENTER_LINK); + gUnknown_20398C0 = varE; + gUnknown_20398C4 = -1; + r7 = -1; + while (gUnknown_20398A8 - 1 <= 1) { + sub_809A71C(-1); + ScriptPrintNullTextbox(); + sub_809977C(); + switch (gUnknown_20398B4) { + case 0: + sub_8098C58(); + gUnknown_20398B4 = 1; + break; + case 2: + case 3: + sub_8001D88(); + break; + case 5: + r7 = 0x70; + break; + case 9: + case 10: + case 0xb: + case 0xc: { + s32 scriptVar13; + + SetScriptVarValue(0,DUNGEON_RESULT,gUnknown_20398B4); + SetScriptVarValue(0,WARP_LOCK,0); + sub_8098C58(); + UpdateScriptVarWithImmediate(0,DUNGEON_ENTER_FREQUENCY,1,2); + scriptVar13 = (s16)GetScriptVarValue(0,DUNGEON_ENTER); + if (scriptVar13 != -1) { + s32 var; + const DungeonInfo *dungInfo; + if (scriptVar13 == 0x51) { + dungInfo = GetDungeonInfo_80A2608((s16)GetScriptVarValue(0,DUNGEON_ENTER_INDEX)); + } + else { + dungInfo = GetDungeonInfo_80A2608(scriptVar13); + } + r7 = dungInfo->unkA; + if (gUnknown_20398B4 == 9) { + SetScriptVarArrayValue(0,DUNGEON_CLEAR_LIST,(u16) scriptVar13,1); + } + var = sub_8098FCC(gUnknown_20398B4); + if (var != -1) { + gUnknown_20398BE = var; + gUnknown_20398C0 = 0; + } + } + break; + } + case 0xd: + sub_8098C58(); + gUnknown_20398B4 = 1; + SetScriptVarValue(0,START_MODE,1); + SetScriptVarValue(0,GROUND_GETOUT,0); + SetScriptVarValue(0,GROUND_ENTER,0); + SetScriptVarValue(0,GROUND_ENTER_LINK,0); + r7 = 0x71; + break; + case 0xe: + r7 = 0x73; + break; + case 0xf: + r7 = 0x74; + break; + case 0x10: + r7 = 0x75; + break; + case 0x11: + r7 = 0x76; + break; + } + if (gUnknown_20398B9 == 0) { + s32 var = GetScriptVarValue(0,GROUND_ENTER); + SetScriptVarValue(0,START_MODE,gUnknown_20398B4); + if (gUnknown_20398B4 != 1) { + if (gUnknown_20398B4 == 3) { + SetScriptVarValue(0,GROUND_GETOUT,gUnknown_20398BE); + } + else { + SetScriptVarValue(0,GROUND_GETOUT,var); + } + } + SetScriptVarValue(0,GROUND_ENTER,gUnknown_20398BE); + SetScriptVarValue(0,GROUND_ENTER_LINK,gUnknown_20398C0); + } + gUnknown_20398B4 = 2; + gUnknown_20398A8 = 0; + gUnknown_20398AC = 0; + gUnknown_20398B0 = -1; + gUnknown_20398BC = gUnknown_20398BE; + gUnknown_20398BE = -1; + sub_809977C(); + sub_809D4B0(); + GroundSprite_Reset(-1); + sub_809C63C(); + sub_809A62C(); + GroundMap_Reset(); + sub_809D0BC(); + DeleteGroundEvents(); + DeleteGroundLives(); + DeleteGroundObjects(); + DeleteGroundEffects(); + sub_809C658(); + nullsub_16(); + UpdateAdventureAchievements(); + if (r7 != -1) { + GroundMap_ExecuteEvent(r7,0); + } + else { + GroundMap_ExecuteEvent(0x66,0); + } + GroundMap_Action(); + sub_8005838(0,0); + sub_80060EC(); + xxx_call_update_bg_sound_input(); + while ( 1 ) { + xxx_call_update_bg_sound_input(); + sub_80A6E68(); + if (gUnknown_20398A8 != 0) { + if (gUnknown_20398AC > 0) { + gUnknown_20398AC--; + if (gUnknown_20398AC < 1) { + sub_80999D4(gUnknown_20398B0); + } + } + else if (!sub_8099B94()) { + if (sub_809C740()) + break; + } + } + else if (gUnknown_20398B9 != 0 && gUnknown_20398B8 == 0 && !sub_809AFAC()) { + u16 pressed = gRealInputs.pressed; + if ((pressed & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON | R_BUTTON | L_BUTTON)) || sub_80048BC()) { + GroundMap_ExecuteEvent(0x72,0); + GroundMainGameCancelRequest(0x1e); + FadeOutAllMusic(0x1e); + } + } + GroundMap_Action(); + nullsub_124(); + GroundLives_Action(); + GroundObject_Action(); + GroundEffect_Action(); + nullsub_105(); + sub_809B474(); + GroundScript_Unlock(); + sub_809D25C(); + sub_80A59DC(); + sub_809B614(); + sub_809CA20(); + sub_80A6E80(); + sub_8099BE4(); + sub_8099744(); + sub_8011860(); + IncrementPlayTime(gPlayTimeRef); + WaitForNextFrameAndAdvanceRNG(); + LoadBufferedInputs(); + nullsub_120(); + sub_80A5E70(); + sub_809B638(); + nullsub_106(); + sub_80A73EC(); + sub_8099750(); + sub_8009908(); + } + + GroundMap_Reset(); + r7 = -1; + } + + FreeGroundMapAction(); + nullsub_118(); + FreeGroundLives(); + FreeGroundObjects(); + FreeGroundEffects(); + FreeGroundEvents(); + sub_809CB74(); + sub_809A610(); + sub_809C618(); + sub_80A658C(); + sub_809D508(); + sub_80A7754(); + nullsub_119(); + sub_8099768(); + nullsub_103(); + nullsub_16(); + if (gUnknown_20398B9 != 0) { + if (gUnknown_20398A8 == 9) { + FadeOutAllMusic(0x1e); + return 0xf; + } + else if (gUnknown_20398A8 == 10) { + return 0x10; + } + else { + FadeOutAllMusic(0x1e); + return 0xf; + } + } + else { + switch (gUnknown_20398A8) { + case 3: + SetScriptVarValue(0,DUNGEON_ENTER,-1); + SetScriptVarValue(0,DUNGEON_ENTER_INDEX,-1); + SetScriptVarValue(0,START_MODE,4); + SetScriptVarValue(0,DUNGEON_RESULT,4); + SetScriptVarValue(0,GROUND_GETOUT,GetScriptVarValue(0,GROUND_ENTER)); + return 5; + case 4: + SetScriptVarValue(0,DUNGEON_ENTER,0); + SetScriptVarValue(0,START_MODE,5); + SetScriptVarValue(0,DUNGEON_RESULT,5); + SetScriptVarValue(0,DUNGEON_ENTER,-1); + return 6; + case 5: { + s32 sVar2 = sub_80A2654(gUnknown_20398C4); + SetScriptVarValue(0,DUNGEON_ENTER,gUnknown_20398C4); + SetScriptVarValue(0,DUNGEON_ENTER_INDEX,sVar2); + SetScriptVarArrayValue(0,DUNGEON_ENTER_LIST,(u16) gUnknown_20398C4,1); + SetScriptVarValue(0,START_MODE,7); + SetScriptVarValue(0,DUNGEON_RESULT,7); + if ((s16)GetScriptVarValue(0,GROUND_PLACE) == 10) { + SetScriptVarValue(0,GROUND_PLACE,0); + } + return 7; + } + case 6: + SetScriptVarValue(0,DUNGEON_ENTER,0x51); + SetScriptVarValue(0,DUNGEON_ENTER_INDEX,gUnknown_20398C4); + SetScriptVarValue(0,START_MODE,7); + SetScriptVarValue(0,DUNGEON_RESULT,7); + if ((s16)GetScriptVarValue(0,GROUND_PLACE) == 10) { + SetScriptVarValue(0,GROUND_PLACE,0); + } + return 8; + case 7: + SetScriptVarValue(0,DUNGEON_ENTER,0x50); + SetScriptVarValue(0,DUNGEON_ENTER_INDEX,gUnknown_2039950); + SetScriptVarValue(0,START_MODE,7); + SetScriptVarValue(0,DUNGEON_RESULT,7); + return 9; + case 8: + SetScriptVarValue(0,DUNGEON_ENTER,0x52); + SetScriptVarValue(0,DUNGEON_ENTER_INDEX,gUnknown_20398C4); + SetScriptVarValue(0,START_MODE,7); + SetScriptVarValue(0,DUNGEON_RESULT,7); + return 10; + default: + SetScriptVarValue(0,START_MODE,1); + FadeOutAllMusic(0x10); + return 0xe; + } + } +} + void sub_8098BDC(void) { sub_809B57C(); diff --git a/src/ground_script.c b/src/ground_script.c index 382405751..d60abbf4f 100644 --- a/src/ground_script.c +++ b/src/ground_script.c @@ -245,8 +245,6 @@ void sub_80AC1B0(s16, s32); void sub_80AD0C8(s16, s32); s32 sub_80A5984(); void sub_80A59A0(s32, s32 *, u16); -void GroundSprite_ExtendPaletteAdd(u32, u16); -void GroundSprite_ExtendPaletteDelete(u32); extern void sub_80997F4(u16, u16); s32 sub_809CFE8(u16 param_1); extern bool8 sub_80A579C(PixelPos *a0, PixelPos *a1); @@ -3157,7 +3155,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) if (dungLocation.id == DUNGEON_HOWLING_FOREST_2 && ret == 0x104) { return 2; } - + ret2 = sub_80A90C8((action->unkC).arr[1]); InlineStrcpy(text, gFriendAreaDialogue[ret2]); if (ScriptPrintText(0, 1, text) != 0) @@ -3184,7 +3182,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) return sub_8097640() ? 1 : 0; break; case 0xE: - { + { s32 index; for(index = 0x11; index < NUM_DUNGEON_MAZE; index++) { @@ -3218,11 +3216,11 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) else return 0; } - + case 0x13: { PokemonStruct1 *ptr; - + ptr = sub_80A8D54(r2); if(ptr) return PokemonFlag2(ptr); @@ -3244,7 +3242,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) r4 = (r3 << 8); action->callbacks->getHitboxCenter(action->parentObject, &sp_318); sub_80A8FD8(r5, &sp_320); - + if(sp_318.x - r4 <= sp_320.x && sp_318.x + r4 >= sp_320.x && sp_318.y - r4 <= sp_320.y @@ -3282,8 +3280,8 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) PokemonStruct1 sp_2c; PokemonStruct1 *ptr; s32 index; - - + + UnlockFriendArea(GetFriendArea(MONSTER_MAGNEMITE)); sp_4 = gUnknown_8116710; sub_808D144(&sp_2c, &sp_4); @@ -3308,7 +3306,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) PokemonStruct1 *pokemon; struct unkStruct_808D144 sp_84; PokemonStruct1 sp_ac; - + UnlockFriendArea(GetFriendArea(MONSTER_ABSOL)); sp_84 = gUnknown_8116738; sub_808D144(&sp_ac, &sp_84); @@ -3335,14 +3333,14 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) case 0x1E: sub_80A8F50(gUnknown_2039D98, 0x7C, POKEMON_NAME_LENGTH); return 0; - + case 0x1F: { PokemonStruct1 *pokemon; s32 index; struct unkStruct_808D144 sp_108; PokemonStruct1 sp_130; - + sp_108 = gUnknown_8116760; sub_808D144(&sp_130, &sp_108); pokemon = sub_808D1DC(&sp_130); @@ -3354,7 +3352,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) sub_80922B4(gFormatBuffer_Names[r2], gUnknown_2039D98, POKEMON_NAME_LENGTH); IncrementAdventureNumJoined(); return 0; - + } break; @@ -3379,7 +3377,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) return 0; } break; - + case 0x21: if(HasRecruitedMon(MONSTER_ARTICUNO)) @@ -3390,7 +3388,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) case 0x22: { PokemonStruct1 *pokemon = GetPlayerPokemonStruct(); - + if(pokemon->speciesNum != MONSTER_ARTICUNO && pokemon->speciesNum != MONSTER_ZAPDOS && pokemon->speciesNum != MONSTER_MOLTRES) return 1; } @@ -3415,7 +3413,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) s32 index; struct unkStruct_808D144 sp_188; PokemonStruct1 sp_1b0; - + if(!GetFriendAreaStatus(GetFriendArea(MONSTER_LATIOS))) UnlockFriendArea(GetFriendArea(MONSTER_LATIOS)); sp_188 = gUnknown_8116794; @@ -3429,7 +3427,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) IncrementAdventureNumJoined(); return 0; } - + break; case 0x26: sub_80A8F50(gUnknown_2039D98, 0x7A, POKEMON_NAME_LENGTH); @@ -3440,7 +3438,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) s32 index; struct unkStruct_808D144 sp_208; PokemonStruct1 sp_230; - + sp_208 = gUnknown_81167BC; sub_808D144(&sp_230, &sp_208); pokemon = sub_808D1DC(&sp_230); @@ -3463,7 +3461,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) if(IsNotMoneyOrUsedTMItem(id)) if(gTeamInventoryRef->teamStorage[id] < 999) gTeamInventoryRef->teamStorage[id] += 1; - + } else { @@ -3527,7 +3525,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) || indexS16 == MONSTER_REGICE || indexS16 == MONSTER_REGISTEEL || indexS16 == MONSTER_CELEBI - ) + ) continue; if(!IsExclusivePokemonUnlocked(index)) continue; if(GetFriendAreaStatus(GetFriendArea(index))) { @@ -3540,7 +3538,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) if (r4 < 0) break; } - + SetScriptVarValue(NULL, NEW_FRIEND_KIND, index); WriteFriendAreaName(gFormatBuffer_FriendArea, GetFriendArea(index), FALSE); if (GetFriendAreaStatus(GetFriendArea(index)) != 0) @@ -3552,7 +3550,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) { s32 id = (s16) GetScriptVarValue(0, NEW_FRIEND_KIND); WriteFriendAreaName(gFormatBuffer_FriendArea,(GetFriendArea(id)), FALSE); - if (id == 0) + if (id == 0) return 0; else if(GetFriendAreaStatus(GetFriendArea(id)) != 0) return 1; @@ -3572,15 +3570,15 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) s32 id = (s16) GetScriptVarValue(0, NEW_FRIEND_KIND); s32 matchMe = id; WriteFriendAreaName(gFormatBuffer_FriendArea,(GetFriendArea((s16) id)), FALSE); - if(id == 0) + if(id == 0) return 0; - + if(!GetFriendAreaStatus(GetFriendArea(id))) UnlockFriendArea(GetFriendArea(id)); pokemon = sub_808D2E8(matchMe, NULL ,ITEM_NOTHING, &gUnknown_81167E8, MOVE_NOTHING); if(pokemon == NULL) return 0; - + for(index = 0; index < POKEMON_NAME_LENGTH; index++) pokemon->name[index] = gUnknown_2039D98[index]; IncrementAdventureNumJoined(); @@ -3632,7 +3630,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) return 0; case 0x32: - { + { struct unkStruct_808D144 sp_288; PokemonStruct1 sp_2b0; sp_288 = gUnknown_811681C; @@ -3654,7 +3652,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) { if(OtherRandInt(0x100) == 0) { - SetScriptVarArrayValue(0, EVENT_GONBE, 0, 4); + SetScriptVarArrayValue(0, EVENT_GONBE, 0, 4); return 1; } else @@ -3663,7 +3661,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) } } return 0; - + case 0x34: { s32 index; @@ -3677,7 +3675,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) if(IsNotMoneyOrUsedTMItem(id)) if(gTeamInventoryRef->teamStorage[id] < 999) gTeamInventoryRef->teamStorage[id] += 1; - + } else { @@ -3760,7 +3758,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) PixelPos sp_348; PixelPos sp_350; PixelPos sp_358; - + sp_308.kind = 1; sp_308.unk1 = 0; sp_308.width = 1; @@ -3815,7 +3813,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) if(held & B_BUTTON) { to = 4; } - + for(index = 0; index < to; index++) { if(action->callbacks->moveRelative(action->parentObject, &sp_368) != 0) @@ -3827,13 +3825,13 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) action->callbacks->moveRelative(action->parentObject, &pixelPos); } } - } + } } return -1; } } break; - + case 0x40: sub_80993C0(r2 == 0 ? 0 : 1); return 0; @@ -3848,7 +3846,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) return 0; case 0x43: gUnknown_2039DA8 = GetCurrentBGSong(); - if(gUnknown_2039DA8 != STOP_BGM) + if(gUnknown_2039DA8 != STOP_BGM) return 1; return 0; case 0x44: @@ -3892,7 +3890,7 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) return 0; } -void GroundScript_Unlock(void) +void GroundScript_Unlock(void) { s32 index; bool8 cond; diff --git a/src/ground_script_file.c b/src/ground_script_file.c new file mode 100644 index 000000000..3913b0e2b --- /dev/null +++ b/src/ground_script_file.c @@ -0,0 +1,61 @@ +#include "global.h" +#include "globaldata.h" +#include "ground_script.h" + +static EWRAM_DATA s16 sScriptFileId = {0}; + +extern const struct GroundScriptHeader *gMapScriptTable[]; // 811E2F8 + +static void ResetCurrentScriptFile(void); + +void sub_80A7744(void) +{ + sScriptFileId = -1; +} + +void sub_80A7754(void) +{ + sScriptFileId = -1; +} + +void SetCurrentScriptFile(s16 a0) +{ + s32 temp = a0; + + ResetCurrentScriptFile(); + + if (temp != -1) + sScriptFileId = temp; +} + +void ResetCurrentScriptFile(void) +{ + if (sScriptFileId != -1) + sScriptFileId = -1; +} + +bool8 ChangeScriptFile(s16 a0) +{ + s32 temp; + s32 temp2; + temp = a0; + temp2 = temp; + if (sScriptFileId != temp) { + if (temp < 0) + ResetCurrentScriptFile(); + else + SetCurrentScriptFile(temp2); + return TRUE; + } + return FALSE; +} + +static const struct GroundScriptHeader sNullGroundScript = {0}; + +const struct GroundScriptHeader *GetGroundScript(s16 a0) +{ + if (a0 != -1) + return gMapScriptTable[a0]; + else + return &sNullGroundScript; +} diff --git a/src/ground_sprite.c b/src/ground_sprite.c index 2f20c34e7..d84ee9f1f 100644 --- a/src/ground_sprite.c +++ b/src/ground_sprite.c @@ -1,5 +1,5 @@ -#include "gba/defines.h" #include "global.h" +#include "globaldata.h" #include "structs/axdata.h" #include "code_800DAC0.h" #include "debug.h" @@ -7,27 +7,23 @@ #include "file_system.h" #include "ground_map_1.h" #include "ground_sprite.h" +#include "ground_sprite_data.h" #include "memory.h" #include "sprite.h" +#include "code_800ED38.h" -IWRAM_INIT unkStruct_3001B7C *gUnknown_3001B7C = {NULL}; +static IWRAM_INIT unkStruct_3001B7C *gUnknown_3001B7C = {NULL}; -EWRAM_DATA unkStruct_2039DB0 gUnknown_2039DB0 = {0}; -EWRAM_DATA u32 sUnknown_2039DBC = {0}; // Unused, for alignment -EWRAM_DATA unkStruct_2039DB0 gUnknown_2039DC0 = {0}; -EWRAM_DATA u16 gUnknown_2039DCC = {0}; -EWRAM_DATA u16 gUnknown_2039DCE = {0}; -EWRAM_DATA u8 gUnknown_2039DD0 = {0}; -EWRAM_DATA u8 gUnknown_2039DD1[3] = {0, 0, 0}; // Unused, for alignment -EWRAM_DATA u32 gUnknown_2039DD4 = {0}; +static EWRAM_DATA unkStruct_2039DB0 gUnknown_2039DB0 = {0}; +UNUSED static EWRAM_DATA u32 sUnknown_2039DBC = {0}; // Unused, for alignment +static EWRAM_DATA unkStruct_2039DB0 gUnknown_2039DC0 = {0}; +static EWRAM_DATA u16 gUnknown_2039DCC = {0}; +static EWRAM_DATA u16 gUnknown_2039DCE = {0}; +static EWRAM_DATA u8 gUnknown_2039DD0 = {0}; +static EWRAM_DATA u32 gUnknown_2039DD4 = {0}; +static EWRAM_DATA PixelPos gUnknown_2039DD8 = {0}; -EWRAM_INIT OpenedFile *gUnknown_203B4B4 = {NULL}; - -// data_8115F5C.s -extern const u8 gUnknown_81177CC[]; -extern const u8 gUnknown_81177D8[]; -extern const u8 gUnknown_81177EC[]; -extern const u8 *gUnknown_81178F4[]; +static EWRAM_INIT OpenedFile *gUnknown_203B4B4 = {NULL}; // code_8098BDC.s extern void sub_809971C(u16, const u8 *, s16); @@ -35,8 +31,17 @@ extern void sub_80997F4(u16, u16); // pokemon_2.s extern void InitShadowSprites(u32, u32); -// ground_sprite.s -extern void sub_80A6460(void); +extern void sub_80ABA7C(void); +extern void sub_80ACAD4(void); +extern void sub_80AD7AC(void); +extern void sub_800E970(void); +extern u8 sub_809D248(PixelPos *r0); + +static bool8 sub_80A68F8(struct UnkGroundSpriteStruct *ptr, struct UnkGroundSpriteSubStructx48 *a1, s32 a2); +static bool8 sub_80A6CF4(struct UnkGroundSpriteSubStructx48 *a0); +static void sub_80A69FC(struct UnkGroundSpriteStruct *ptr); +static void sub_80A6460(void); +static void sub_80A72B8(struct UnkGroundSpriteStruct *ptr, bool8 a1); void sub_80A62F0(void) { @@ -46,7 +51,7 @@ void sub_80A62F0(void) s32 r6; gUnknown_3001B7C = MemoryAlloc(sizeof(unkStruct_3001B7C), 6); - gUnknown_203B4B4 = OpenFileAndGetFileDataPtr(gUnknown_81177CC, &gDungeonFileArchive); + gUnknown_203B4B4 = OpenFileAndGetFileDataPtr("etcfonta", &gDungeonFileArchive); sub_800DAC0(1); @@ -71,53 +76,45 @@ void sub_80A62F0(void) GroundSprite_Reset(-1); } -void GroundSprite_Reset(s16 a0) +void GroundSprite_Reset(s32 a0) { - s32 uVar2; - unkStruct_2039DB0 *bee; - unkStruct_2039DB0 *see; + s32 uVar2 = (s16) a0; - uVar2 = a0; - - Log(0, gUnknown_81177D8); + Log(0, "GroundSprite Reset"); gUnknown_2039DCC = 0; gUnknown_2039DCE = 0; sub_80A6460(); - InitShadowSprites(496, sub_80A4D48(uVar2) ? 3 : 2); + sub_8004E8C(&gUnknown_2039DB0); + sub_8004E8C(&gUnknown_2039DC0); - bee = &gUnknown_2039DB0; - sub_8004E8C(bee); - see = &gUnknown_2039DC0; - sub_8004E8C(see); - - see->unk4 &= ~(0x400 | 0x800); - see->unkA &= ~(0x400 | 0x800); - see->unkA |= 0x800; + gUnknown_2039DC0.unk4 &= ~(0x400 | 0x800); + gUnknown_2039DC0.unkA &= ~(0x400 | 0x800); + gUnknown_2039DC0.unkA |= 0x800; if (sub_80A4D48(a0)) { - bee->unk4 &= ~(0x400 | 0x800); - bee->unkA &= ~(0x400 | 0x800); - bee->unkA |= (0x400 | 0x800); + gUnknown_2039DB0.unk4 &= ~(0x400 | 0x800); + gUnknown_2039DB0.unkA &= ~(0x400 | 0x800); + gUnknown_2039DB0.unkA |= (0x400 | 0x800); } else { - bee->unk4 &= ~(0x400 | 0x800); - bee->unkA &= ~(0x400 | 0x800); - bee->unkA |= 0x800; + gUnknown_2039DB0.unk4 &= ~(0x400 | 0x800); + gUnknown_2039DB0.unkA &= ~(0x400 | 0x800); + gUnknown_2039DB0.unkA |= 0x800; } ResetSprites(TRUE); nullsub_10(TRUE); } -void sub_80A6460(void) +static void sub_80A6460(void) { OpenedFile *file; s32 i; const u8 *data; u16 something; - file = OpenFileAndGetFileDataPtr(gUnknown_81177EC, &gMonsterFileArchive); + file = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); something = 0x100; data = file->data; @@ -131,7 +128,7 @@ void sub_80A6460(void) CloseFile(file); } -void sub_80A64A4(void) +UNUSED static void sub_80A64A4(void) { const u8 *r2; u16 r4; @@ -147,7 +144,7 @@ void sub_80A64A4(void) r7 = gUnknown_3001B7C->unk108; sub_80A6460(); - for (i = 0; i < 2; i++, r7++) + for (i = 0; i < UNK_3001B7C_SUB108_COUNT; i++, r7++) { if (r7->unk2 > 0) { r5 = r7->unk0; @@ -156,11 +153,12 @@ void sub_80A64A4(void) flag = r5 & 0x200; if (flag) { - file = OpenFileAndGetFileDataPtr(gUnknown_81177EC, &gMonsterFileArchive); + file = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); r2 = file->data + (r5 & 0xFF) * 0x40; } else { - file = OpenFileAndGetFileDataPtr((r5 & 0xFF)[gUnknown_81178F4], &gOrnamentFileArchive); + u32 id = r5 & 0xFF; + file = OpenFileAndGetFileDataPtr(id[gUnknown_81178F4], &gOrnamentFileArchive); r2 = file->data; } @@ -201,7 +199,702 @@ UNUSED static u16 sub_80A65D8(u16 *a0) return a0[40]; } -u16 sub_80A65E0(u32 a0) +static u16 sub_80A65E0(u32 a0) { return (a0 >> 16) & 0x337F; } + +static void sub_80A65F0(struct UnkGroundSpriteStruct *ptr, u16 a1) +{ + ptr->flags_0x50 = a1; + ptr->unk6A = ((a1 & 4) ? 0x40 : 0) - ((a1 & 2) ? 0x40 : 0) + ((a1 & 1) ? 0x8 : 0) + 0x40; + + if (ptr->flags_0x50 & 0x8) { + ptr->unk3C = gUnknown_2039DC0; + } + else { + ptr->unk3C = gUnknown_2039DB0; + } + + if (ptr->flags_0x50 & 0x20) { + ptr->unk3C.unk0 &= 0xF3FF; + ptr->unk3C.unk6 &= 0xF3FF; + ptr->unk3C.unk6 |= 0x400; + } +} + +void sub_80A6688(struct UnkGroundSpriteStruct *ptr, s32 a0) +{ + sub_80A65F0(ptr, sub_80A65E0(a0)); +} + +bool8 SpriteHasPokemonSize_80A66A4(struct UnkGroundSpriteStruct *ptr) +{ + return (ptr->unk48.unk0 > 0); +} + +UNUSED static bool8 sub_80A66BC(struct UnkGroundSpriteStruct *ptr) +{ + if (ptr->unk52 >= 0) + return TRUE; + else + return FALSE; +} + +bool8 sub_80A66D4(struct UnkGroundSpriteStruct *ptr) +{ + if (ptr->unk52 < 0 && ptr->unk48.unk0 > 0) + return TRUE; + else + return FALSE; +} + +bool8 sub_80A66F8(struct UnkGroundSpriteStruct *ptr) +{ + if (ptr->unk52 >= 0 && !(ptr->axdata.flags & 0x2000)) { + return (ptr->axdata.flags & 0x8000) != 0; + } + return FALSE; +} + +bool8 sub_80A671C(struct UnkGroundSpriteStruct *ptr) +{ + if (ptr->unk58 != 0) { + if (ptr->unk58 == 0x1C0) + return TRUE; + if (ptr->unk5C == -1) + return TRUE; + if (sub_800E9E4(ptr->unk5C)) + return TRUE; + ptr->unk5C = -1; + ptr->unk58 = 0; + } + return FALSE; +} + +bool8 IsOnscreen_80A675C(struct UnkGroundSpriteStruct *ptr, PixelPos *pixPosArg) +{ + PixelPos result; + PixelPos pixelPos; + + if (sub_809D248(&pixelPos)) { + result.x = (pixPosArg->x / 256) - pixelPos.x; + result.y = (pixPosArg->y / 256) - pixelPos.y; + } + else { + result.x = (pixPosArg->x / 256); + result.y = (pixPosArg->y / 256); + } + + if (result.x >= -64 && result.x <= 303 && result.y >= -16 && result.y <= 207) { + return TRUE; + } + + return FALSE; +} + +void sub_80A67CC(struct UnkGroundSpriteStruct *ptr, struct UnkGroundSpriteSubStructx48 *a1, s32 a2) +{ + bool8 r7; + + if (a1 != NULL && a1->unk0 > 0) { + r7 = TRUE; + } + else { + r7 = FALSE; + } + + sub_80A65F0(ptr, sub_80A65E0(a2)); + ptr->unk74.x = 0; + ptr->unk74.y = 0; + ptr->unk7C = -1; + ptr->unk70 = 0; + ptr->unk6C = 0; + ptr->unk6E = 0; + ptr->unk52 = -1; + ptr->unk54 = NULL; + ptr->unk64 = 0; + ptr->unk66 = -1; + ptr->unk68 = 0; + ptr->unk58 = 0; + ptr->unk5A = 0xFF; + ptr->unk5C = -1; + ptr->unk60 = -1; + if (r7) { + ptr->unk48 = *a1; + if (!sub_80A68F8(ptr, &ptr->unk48, -1) && !(ptr->flags_0x50 & 0x1000) && sub_80A6CF4(&ptr->unk48)) { + sub_80A68F8(ptr, &ptr->unk48, -1); + } + } + else { + ptr->unk48.unk0 = -1; + ptr->unk48.unk2 = 0; + ptr->unk48.axmain = NULL; + } +} + +void sub_80A68A0(struct UnkGroundSpriteStruct *ptr) +{ + if ((ptr->flags_0x50 & 0x200) && ptr->unk58 != 0 && ptr->unk5C != -1) { + sub_800DC14(ptr->unk5C); + } + if (ptr->unk54 != NULL) { + CloseFile(ptr->unk54); + ptr->unk54 = NULL; + } + sub_80A69FC(ptr); +} + +// I guess the code inside the loop was commented out or under an ifdef. +UNUSED static void sub_80A68E8(void) +{ + s32 i; + for (i = 0; i < UNK_3001B7C_SUB0_COUNT; i++) { + ; + } +} + +static bool8 sub_80A68F8(struct UnkGroundSpriteStruct *ptr, struct UnkGroundSpriteSubStructx48 *a1, s32 a2) +{ + s32 id, count; + unkStruct_3001B7C_sub0 *unkPtr = &gUnknown_3001B7C->unk0[0]; + + if (a1->unk0 >= a2) { + a2 = a1->unk0; + count = 0; + for (id = 0; id < UNK_3001B7C_SUB0_COUNT; id = (s16)(id + 1), unkPtr++) { + if (unkPtr->unk0 == 0) { + if (++count >= a2) { + unkPtr -= count - 1; + id = (s16) (id - (count - 1)); + break; + } + } + else { + count = 0; + } + } + } + else { + count = 0; + id = UNK_3001B7C_SUB0_COUNT - 1; + unkPtr = &gUnknown_3001B7C->unk0[UNK_3001B7C_SUB0_COUNT - 1]; + for (; id >= 0; id = (s16)(id - 1), unkPtr--) { + if (unkPtr->unk0 == 0) { + if (++count >= a2) { + break; + } + } + else { + count = 0; + } + } + } + + if (count >= a2) { + s32 i; + ptr->unk52 = id; + ptr->unk64 = a2; + unkPtr->unk0 = 1; + unkPtr->unk8 = ptr; + GroundSprite_ExtendPaletteAdd(ptr, a1->unk2); + for (i = 1; i < a2; i++) { + unkPtr[i].unk0 = 2; + } + + gUnknown_2039DD4 -= a2; + return TRUE; + } + else { + gUnknown_2039DD0 = 0; + ptr->unk7C = -1; + ptr->unk70 = 0; + ptr->unk52 = -1; + ptr->unk64 = 0; + ptr->unk6C = 0; + ptr->unk6E = 0; + return FALSE; + } +} + +static void sub_80A69FC(struct UnkGroundSpriteStruct *ptr) +{ + s32 id = ptr->unk52; + unkStruct_3001B7C_sub0 *unkPtr = &gUnknown_3001B7C->unk0[id]; + + if (id >= 0) { + GroundSprite_ExtendPaletteDelete(ptr); + unkPtr->unk8 = NULL; + unkPtr->unk0 = 0; + unkPtr++; + gUnknown_2039DD4++; + id = (s16)(id + 1); + for (; id < UNK_3001B7C_SUB0_COUNT && unkPtr->unk0 == 2; id = (s16)(id + 1)) { + unkPtr->unk0 = 0; + unkPtr++; + gUnknown_2039DD4++; + } + + ptr->unk52 = -1; + ptr->unk64 = 0; + gUnknown_2039DD0 = 1; + } +} + +void GroundSprite_ExtendPaletteAdd(struct UnkGroundSpriteStruct *ptr, u16 a1) +{ + OpenedFile *file; + s32 r8; + unkStruct_3001B7C_sub108 *sub108Ptr; + u16 var_28; + u16 var_24; + u16 r6; + const void *r7; + s32 r2; + + if (a1 & (0x100 | 0x200)) { + if (a1 & 0x400) { + sub108Ptr = &gUnknown_3001B7C->unk108[1]; + if (sub108Ptr->unk0 == a1) { + sub108Ptr->unk2++; + return; + } + } + else { + r8 = 0; + sub108Ptr = &gUnknown_3001B7C->unk108[0]; + for (; r8 < UNK_3001B7C_SUB108_COUNT; r8++, sub108Ptr++) { + if (sub108Ptr->unk0 == a1) { + u16 r1 = r8 + 29; + sub108Ptr->unk2++; + if (ptr != NULL) { + ptr->unk68 = r1 - 16; + } + Log(0, "extend palette %3d[%3d] %04x up %04x", r8, r1, r1 - 16, a1); + return; + } + } + } + + if (a1 & 0x400) { + r8 = 1; + sub108Ptr = &gUnknown_3001B7C->unk108[1]; + if (sub108Ptr->unk2 > 0) { + FATAL_ERROR_ARGS("../ground/ground_sprite.c", 1008, "extend palette buffer error %08x", a1); + } + } + else { + r8 = 0; + sub108Ptr = &gUnknown_3001B7C->unk108[0]; + for (; r8 < UNK_3001B7C_SUB108_COUNT; r8++, sub108Ptr++) { + if (sub108Ptr->unk2 <= 0) { + break; + } + } + + if (r8 >= UNK_3001B7C_SUB108_COUNT) { + FATAL_ERROR_ARGS("../ground/ground_sprite.c", 1016, "extend palette buffer error %08x", a1); + } + } + + var_28 = r8 + 29; + var_24 = (r8 * 16) + 464; + if (a1 & 0x200) { + file = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); + r7 = file->data; + r7 += (a1 & 0xFF) * 64; + } + else { + u32 id = a1 & 0xff; + file = OpenFileAndGetFileDataPtr(id[gUnknown_81178F4], &gOrnamentFileArchive); + r7 = file->data; + } + + if (a1 & 0x1000) { + r6 = 1; + } + else { + r6 = 0; + } + + if (a1 & 0x2000) { + r6 |= 2; + } + + sub_80997F4(var_28, r6); + sub_809971C(var_24, r7, 16); + sub108Ptr->unk0 = a1; + sub108Ptr->unk2 = 1; + r2 = var_28 - 16; + if (ptr != NULL) { + ptr->unk68 = r2; + } + Log(0, "extend palette %3d[%3d] %04x set %04x %04x", r8, var_28, r2, a1, r6); + if (file != NULL) { + CloseFile(file); + } + } + else { + if (ptr != NULL) { + ptr->unk68 = a1; + } + } +} + +void GroundSprite_ExtendPaletteDelete(struct UnkGroundSpriteStruct *ptr) +{ + s32 r5; + unkStruct_3001B7C_sub108 *sub108Ptr; + + if (ptr != NULL) { + r5 = ptr->unk68 - 13; + if (r5 < 0) + return; + } + else { + r5 = 1; + } + + sub108Ptr = &gUnknown_3001B7C->unk108[r5]; + if (ptr != NULL) { + ptr->unk68 = 0; + } + + if (--sub108Ptr->unk2 <= 0) { + Log(0, "extend palette %3d delete %04x", r5, sub108Ptr->unk0); + sub108Ptr->unk0 = 0; + sub108Ptr->unk2 = 0; + sub_80997F4(r5 + 29, 0); + } +} + +static bool8 sub_80A6CF4(struct UnkGroundSpriteSubStructx48 *a0) +{ + struct UnkGroundSpriteStruct *spArray[UNK_3001B7C_SUB0_COUNT]; + s32 i; + unkStruct_3001B7C_sub0 *sub0Ptr; + PixelPos pixelPos; + s32 count = 0; + s32 r9 = a0->unk0; + s32 r10 = 0; + s32 var_28 = -1; + s32 var_24 = -1; + + sub_809D248(&pixelPos); + for (i = 0, sub0Ptr = &gUnknown_3001B7C->unk0[0]; i < UNK_3001B7C_SUB0_COUNT; i = (s16)(i+1), sub0Ptr++) { + if (sub0Ptr->unk0 == 1) { + struct UnkGroundSpriteStruct *ptr = sub0Ptr->unk8; + + if (!(ptr->flags_0x50 & 0x2000) && ptr->unk7C >= 0) { + PixelPos resultPos; + resultPos.x = (ptr->unk74.x / 256) - pixelPos.x; + resultPos.y = (ptr->unk74.y / 256) - pixelPos.y; + + if (resultPos.y > 0) { + ptr->unk7C = 0x28 + resultPos.y; + } + else { + ptr->unk7C = 0x28 - resultPos.y; + } + + if (resultPos.x > 0) { + if (resultPos.x > ptr->unk7C) { + ptr->unk7C = resultPos.x; + } + } + else { + if (-resultPos.x > ptr->unk7C) { + ptr->unk7C = -resultPos.x; + } + } + + r10 += ptr->unk48.unk0; + if (ptr->unk48.unk0 >= r9 && var_24 < ptr->unk7C) { + var_28 = count; + var_24 = ptr->unk7C; + } + spArray[count++] = ptr; + } + } + } + + if (r10 < r9) + return FALSE; + if (var_28 >= 0) { + sub_80A69FC(spArray[var_28]); + return TRUE; + } + + while (count > 0) { + s32 i; + s32 r5 = -1; + s32 r3 = -1; + s32 r6 = 0; + + for (i = 0; i < count; i++) { + if (r3 < spArray[i]->unk7C) { + r5 = count; // This looks like a mistake to me? I believe it should be r5 = i instead, however I cannot verify the behavior in-game as I can't find where, if anywhere, this function runs. + r3 = spArray[i]->unk7C; + } + } + sub_80A69FC(spArray[r5]); + + count--; + for (i = r5; i < count; i++) { + spArray[i] = spArray[i + 1]; + } + + for (i = 0, sub0Ptr = &gUnknown_3001B7C->unk0[0]; i < UNK_3001B7C_SUB0_COUNT; i++, sub0Ptr++) { + if (sub0Ptr->unk0 == 0) { + if (++r6 >= r9) { + return TRUE; + } + } + else { + r6 = 0; + } + } + } + + return FALSE; +} + +void sub_80A6E68(void) +{ + ResetSprites(FALSE); + nullsub_10(FALSE); + sub_800E970(); +} + +void sub_80A6E80(void) +{ + DungeonPos pos; + + if (!sub_809D248(&gUnknown_2039DD8)) { + gUnknown_2039DD8.x = 0; + gUnknown_2039DD8.y = 0; + } + sub_80ABA7C(); + sub_80ACAD4(); + sub_80AD7AC(); + pos.x = gUnknown_2039DD8.x; + pos.y = gUnknown_2039DD8.y; + sub_800E90C(&pos); + sub_8005180(); + nullsub_12(); +} + +void sub_80A6EC8(struct UnkGroundSpriteStruct *ptr, s32 a1) +{ + if (ptr->unk52 > 0) { + if (a1 <= ptr->unk48.unk0) { + a1 = ptr->unk48.unk0; + } + if (ptr->unk64 != a1) { + ptr->unk66 = a1; + } + } +} + +void sub_80A6EFC(struct UnkGroundSpriteStruct *ptr, s32 a1_, s32 a2_) +{ + s32 flagResult; + unkStruct_3001B7C_sub0 *sub0Ptr; + s32 a1 = (s16) a1_; + s32 a2 = (s8) a2_; + + if (ptr->unk52 < 0) { + if (ptr->unk66 >= 0) { + if (!sub_80A68F8(ptr, &ptr->unk48, ptr->unk66)) + return; + ptr->unk66 = -1; + } + else { + if (ptr->unk48.unk0 <= 0) + return; + if (!sub_80A68F8(ptr, &ptr->unk48, -1)) + return; + } + } + else { + if (ptr->unk66 >= 0) { + sub_80A69FC(ptr); + if (!sub_80A68F8(ptr, &ptr->unk48, ptr->unk66)) + return; + ptr->unk66 = -1; + } + } + + // s16 memes... + flagResult = a1 & 0x400; + if ((s16)flagResult) { + ptr->axdata.flags &= ~(0x1000); + return; + } + + sub0Ptr = &gUnknown_3001B7C->unk0[ptr->unk52]; + ptr->unk70 = 1; + ptr->unk7C = -1; + switch ((a1 & 0x700)) { + case 0x300: + ptr->unk6C = 0; + break; + case 0x100: + ptr->unk6C = 0x80; + break; + case 0: + default: + ptr->unk6C = 0x100; + break; + case 0x200: + ptr->unk6C = 0x200; + break; + } + + ptr->unk6E = 0; + AxResInit(&ptr->axdata, ptr->unk48.axmain, (a1 & 0xFF) + a2 / 8, a2 & 7, sub0Ptr->unk4, 0, ((u16)a1 & 0x800) != 0); +} + +void sub_80A7040(struct UnkGroundSpriteStruct *ptr, s32 a1_, s32 a2_, s32 a3) +{ + s32 a1 = (s16) a1_; + s32 a2 = (s8) a2_; + + if (!(ptr->flags_0x50 & 0x200)) + return; + + if (a1 == 0 || a1 == 0x1C0) { + if (sub_80A671C(ptr)) { + ptr->unk58 = 0x1C0; + } + } + else { + ptr->unk58 = a1; + ptr->unk5A = a2; + ptr->unk60 = a3; + } +} + +bool8 sub_80A7094(struct UnkGroundSpriteStruct *ptr, PixelPos *r10, PixelPos *posArg, s32 a3) +{ + PixelPos resultPos; + s32 unkY; + + ptr->unk74 = *posArg; + ptr->unk7C = 0; + if (ptr->flags_0x50 & 0x200 && ptr->unk58 != 0) { + if (ptr->unk58 == 0x1C0) { + if (ptr->unk5C != -1) { + sub_800DC14(ptr->unk5C); + ptr->unk5C = -1; + } + ptr->unk58 = 0; + } + else if (ptr->unk5C == -1) { + unkStruct_2039DB0 unkSubStruct = {0xFFFF, 0xFFFF, 0xFFFF, 0, 0, 0}; + unkStruct_80416E0 unkStruct; + + sub_800EE5C(ptr->unk58); + sub_800EF64(); + unkStruct.unk0 = ptr->unk58; + unkStruct.unk4 = 0; + unkStruct.dir = (s8) ptr->unk5A; + unkStruct.x = posArg->x / 256; + unkStruct.y = posArg->y / 256; + unkStruct.unk10 = 0; + unkStruct.unk12 = 0; + unkStruct.unk14 = -1; + unkStruct.unk18 = 0; + unkStruct.unk1C = unkSubStruct; + ptr->unk5C = sub_800E890(&unkStruct); + } + else if (!sub_800E9E4(ptr->unk5C)) { + ptr->unk5C = -1; + ptr->unk58 = 0; + } + } + + if (ptr->unk52 < 0) + return FALSE; + if (ptr->flags_0x50 & 0x40) + return FALSE; + + resultPos = (PixelPos) {(posArg->x / 256) - gUnknown_2039DD8.x, (posArg->y / 256) - gUnknown_2039DD8.y}; + unkY = resultPos.y - (a3 / 256); + if (resultPos.x >= -64 && resultPos.x <= 303 && resultPos.y >= -16 && resultPos.y <= 207 && unkY >= -16 && unkY <= 207) { + if ((ptr->flags_0x50 & 0x10) && (gUnknown_2039DCC & 1)) { + sub_80A72B8(ptr, FALSE); + DoAxFrame_800558C(&ptr->axdata, 304, 208, 0, ptr->unk68, &ptr->unk3C); + ptr->unk70 = 0; + return FALSE; + } + else { + sub_80A72B8(ptr, ptr->unk70); + DoAxFrame_800558C(&ptr->axdata, resultPos.x, unkY, resultPos.y + ptr->unk6A, ptr->unk68, &ptr->unk3C); + ptr->unk70 = 0; + if (r10 != NULL) { + *r10 = resultPos; + } + return TRUE; + } + } + else if (ptr->unk70 != 0) { + sub_80A72B8(ptr, TRUE); + DoAxFrame_800558C(&ptr->axdata, 304, 208, 0, ptr->unk68, &ptr->unk3C); + ptr->unk70 = 0; + return FALSE; + } + else { + return FALSE; + } +} + +static void sub_80A72B8(struct UnkGroundSpriteStruct *ptr, bool8 a1) +{ + if (a1) { + ptr->unk6E = 0; + RunAxAnimationFrame(&ptr->axdata); + } + else { + ptr->unk6E += ptr->unk6C; + while (ptr->unk6E >= 0x100) { + ptr->unk6E -= 0x100; + RunAxAnimationFrame(&ptr->axdata); + } + } +} + +bool8 sub_80A7310(struct UnkGroundSpriteStruct *ptr, PixelPos *posArg1, PixelPos *posArg2, s32 a3) +{ + if (ptr->flags_0x50 & 0x200 && ptr->unk5C != -1) { + DungeonPos pos; + s32 r7; + + pos.x = posArg1->x / 256; + pos.y = posArg1->y / 256; + r7 = (pos.y - gUnknown_2039DD8.y) + ptr->unk6A + 2; + pos.y -= a3 / 256; + if (posArg2 != NULL) { + pos.x += posArg2->x; + pos.y += posArg2->y; + } + + sub_800E8AC(ptr->unk5C, &pos, NULL, r7, &ptr->unk3C); + return TRUE; + } + else { + return FALSE; + } +} + +void sub_80A73EC(void) +{ + CopySpritesToOam(); + nullsub_13(); + sub_8005304(); + nullsub_14(); + gUnknown_2039DCC++; + if (++gUnknown_2039DCE > 11) { + gUnknown_2039DCE = 0; + } +} diff --git a/src/ground_sprite_data.c b/src/ground_sprite_data.c new file mode 100644 index 000000000..f5845aace --- /dev/null +++ b/src/ground_sprite_data.c @@ -0,0 +1,127 @@ +#include "global.h" +#include "globaldata.h" +#include "ground_sprite_data.h" + +const char *const gUnknown_81178F4[] = { + "flag00c", + "flag01c", + "flag02c", + "flag03c", + "flag04c", + "flag05c", + "flag06c", + "flag07c", + "flag08c", + "flag09c", + "flag10c", + "flag11c", + "flag12c", + "flag13c", + "flag14c", + "flag15c", + "flag16c", + "flag100c", + "flag101c", + "flag102c", + "flag103c", + "flag104c", + "flag105c", + "flag106c", + "flag107c", + "flag108c", + "flag109c", + "flag110c", + "flag111c", + "flag112c", + "flag113c", + "flag114c", + "titleopc", + "titlebgc", + "stoneimc", + NULL +}; + +const struct GroundObjectKind gGroundObjectKinds[] = { + { -1, 0x000, NULL }, // many dummy/unused entries + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + + { 1, 0x100, "flag00p" }, + { 1, 0x100, "flag00p" }, + { 1, 0x101, "flag01p" }, + { 1, 0x102, "flag02p" }, + { 1, 0x103, "flag03p" }, + { 1, 0x104, "flag04p" }, + { 1, 0x105, "flag05p" }, + { 1, 0x106, "flag06p" }, + { 1, 0x107, "flag07p" }, + { 1, 0x108, "flag08p" }, + { 1, 0x109, "flag09p" }, + { 1, 0x10A, "flag10p" }, + { 1, 0x10B, "flag11p" }, + { 1, 0x10C, "flag12p" }, + { 1, 0x10D, "flag13p" }, + { 1, 0x10E, "flag14p" }, + { 1, 0x10F, "flag15p" }, + { 1, 0x110, "flag16p" }, + { 1, 0x111, "flag100p" }, + { 1, 0x112, "flag101p" }, + { 1, 0x113, "flag102p" }, + { 1, 0x114, "flag103p" }, + { 1, 0x115, "flag104p" }, + { 1, 0x116, "flag105p" }, + { 1, 0x117, "flag106p" }, + { 1, 0x118, "flag107p" }, + { 1, 0x119, "flag108p" }, + { 1, 0x11A, "flag109p" }, + { 1, 0x11B, "flag110p" }, + { 1, 0x11C, "flag111p" }, + { 1, 0x11D, "flag112p" }, + { 1, 0x11E, "flag113p" }, + { 1, 0x11F, "flag114p" }, + { 6, 0x120, "titleop1" }, + { 1, 0x120, "titleop2" }, + { 4, 0x121, "titlebg1" }, + { 1, 0x006, "npc01p" }, + { 1, 0x006, "npc02p" }, + { 1, 0x005, "npc03p" }, + { 1, 0x006, "npc04p" }, + { 1, 0x000, "item01p" }, + { -1, 0x000, NULL } +}; + +// Dummy trailing list +const struct GroundObjectKind gUnknown_8117E8C[] = { + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, + { -1, 0x000, NULL }, +}; diff --git a/src/ground_sprite_monster.c b/src/ground_sprite_monster.c new file mode 100644 index 000000000..4b5824a0b --- /dev/null +++ b/src/ground_sprite_monster.c @@ -0,0 +1,95 @@ +#include "global.h" +#include "globaldata.h" +#include "def_filearchives.h" +#include "file_system.h" +#include "ground_sprite.h" +#include "sprite.h" +#include "pokemon.h" + +extern s32 sub_800E700(s32); +extern bool8 AddShadowSprite(s32 species, DungeonPos* a2, axdata* a3); + +void sub_80A7428(struct UnkGroundSpriteStruct *ptr, s32 a1_, s32 monsterId_, s32 a3) +{ + u8 name[12]; + OpenedFile *file; + struct UnkGroundSpriteSubStructx48 spStruct; + s32 a1 = (s16) a1_; + // s16 memes strike again... + s32 monsterId = (s16) monsterId_; + s32 monsterIdS16 = (s16) monsterId; + + sprintf(name, "ax%03d", monsterIdS16); + file = OpenFile(name, &gMonsterFileArchive); + GetFileDataPtr(file, 0); // Unused return value + spStruct.unk0 = GetBodySize(monsterId); + if (monsterId == MONSTER_STATUE) { + spStruct.unk2 = 0x122; + } + else { + bool32 kecleonShop = (a1 == 71); + spStruct.unk2 = GetPokemonOverworldPalette(monsterId, kecleonShop); + } + spStruct.axmain = (axmain *) file->data; + sub_80A67CC(ptr, &spStruct, a3); + ptr->unk54 = file; + if (ptr->unk52 >= 0) { + sub_80A6EFC(ptr, 0x300, 0); + } +} + +void sub_80A74E4(struct UnkGroundSpriteStruct *ptr) +{ + sub_80A68A0(ptr); +} + +void sub_80A74F0(struct UnkGroundSpriteStruct *ptr, s32 a1_, s32 a2_, s32 a3) +{ + s32 a1 = (s16) a1_; + s32 a2 = (s8) a2_; + + if (a3 < 0) { + if (a1 != 0x1C0) { + a3 = sub_800E700(a1); + } + else { + a3 = 0; + } + } + + sub_80A7040(ptr, a1, a2, a3); +} + +void sub_80A7524(struct UnkGroundSpriteStruct *ptr, s32 monsterId_, PixelPos *pixelPosArg, s32 a3) +{ + PixelPos pixelPosSp; + DungeonPos pos; + + s32 monsterId = (s16) monsterId_; + if (sub_80A7094(ptr, &pixelPosSp, pixelPosArg, a3)) { + if (ptr->unk5C != -1) { + PixelPos pixelPosSp2; + switch (ptr->unk60) { + case 0: + case 1: + case 2: + case 3: + sub_800569C(&pos, &ptr->axdata, ptr->unk60); + pixelPosSp2.x = pos.x; + pixelPosSp2.y = pos.y; + sub_80A7310(ptr, pixelPosArg, &pixelPosSp2, a3); + break; + default: + sub_80A7310(ptr, pixelPosArg, NULL, a3); + break; + } + } + + if (ptr->flags_0x50 & 0x100) { + DungeonPos shadowPos = {pixelPosSp.x, pixelPosSp.y}; + AddShadowSprite(monsterId, &shadowPos, &ptr->axdata); + } + sub_80A7310(ptr, pixelPosArg, NULL, a3); + } +} + diff --git a/src/ground_sprite_util.c b/src/ground_sprite_util.c new file mode 100644 index 000000000..e0e539245 --- /dev/null +++ b/src/ground_sprite_util.c @@ -0,0 +1,77 @@ +#include "global.h" +#include "globaldata.h" +#include "def_filearchives.h" +#include "file_system.h" +#include "ground_sprite.h" +#include "ground_sprite_data.h" + +void sub_80A75CC(struct UnkGroundSpriteStruct *ptr, s32 unused, s32 a2_, s32 a3) +{ + struct UnkGroundSpriteSubStructx48 sp; + s32 a2 = (s16) a2_; + const struct GroundObjectKind *objKind = &gGroundObjectKinds[a2]; + OpenedFile *file = NULL; + + sp.unk0 = objKind->unk0; + sp.unk2 = objKind->unk2; + if (objKind->fileName != 0) { + file = OpenFile(objKind->fileName, &gOrnamentFileArchive); + GetFileDataPtr(file, 0); + sp.axmain = (axmain *) file->data; + } + else { + sp.axmain = NULL; + } + sub_80A67CC(ptr, &sp, a3); + ptr->unk54 = file; + if (ptr->unk52 >= 0) { + sub_80A6EFC(ptr, 0x800, 0); + } +} + +void sub_80A7658(struct UnkGroundSpriteStruct *ptr) +{ + sub_80A68A0(ptr); +} + +void sub_80A7664(struct UnkGroundSpriteStruct *ptr, PixelPos *pixelPos, s32 a2) +{ + sub_80A7094(ptr, NULL, pixelPos, a2); + sub_80A7310(ptr, pixelPos, NULL, a2); +} + +// Identical to sub_80A75CC, except uses a different table. +void sub_80A7688(struct UnkGroundSpriteStruct *ptr, s32 unused, s32 a2_, s32 a3) +{ + struct UnkGroundSpriteSubStructx48 sp; + s32 a2 = (s16) a2_; + const struct GroundObjectKind *objKind = &gUnknown_8117E8C[a2]; + OpenedFile *file = NULL; + + sp.unk0 = objKind->unk0; + sp.unk2 = objKind->unk2; + if (objKind->fileName != 0) { + file = OpenFile(objKind->fileName, &gOrnamentFileArchive); + GetFileDataPtr(file, 0); + sp.axmain = (axmain *) file->data; + } + else { + sp.axmain = NULL; + } + sub_80A67CC(ptr, &sp, a3); + ptr->unk54 = file; + if (ptr->unk52 >= 0) { + sub_80A6EFC(ptr, 0x800, 0); + } +} + +void sub_80A7714(struct UnkGroundSpriteStruct *ptr) +{ + sub_80A68A0(ptr); +} + +void sub_80A7720(struct UnkGroundSpriteStruct *ptr, PixelPos *pixelPos, s32 a2) +{ + sub_80A7094(ptr, NULL, pixelPos, a2); + sub_80A7310(ptr, pixelPos, NULL, a2); +} diff --git a/src/memory.c b/src/memory.c index 62c8502c1..78c669909 100644 --- a/src/memory.c +++ b/src/memory.c @@ -71,8 +71,6 @@ static HeapDescriptor *DoCreateSubHeap(struct unkMemoryStruct *a, u32 b); static void *DoAlloc(HeapDescriptor *heap, s32 size, u32 a2); static void InitHeapInternal(void); -ALIGNED(4) static const char sFileNameText[] = "../system/memory_locate.c"; - void InitHeap(void) { InitHeapInternal(); @@ -325,14 +323,6 @@ static s32 MemorySearchFromBack(HeapDescriptor *heap, s32 atb, s32 size) return -1; } -ALIGNED(4) static const char sText_LocateSetFront[] = "_LocateSetFront"; -static const DebugLocation sLocateSetFrontDebugLocation = -{ - .file = sFileNameText, - .line = 581, - .func = sText_LocateSetFront -}; - static struct HeapFreeListElement * _LocateSetFront(HeapDescriptor *heap, s32 index, s32 atb, s32 size, s32 group) { s32 i; @@ -352,7 +342,7 @@ static struct HeapFreeListElement * _LocateSetFront(HeapDescriptor *heap, s32 in heap->freeCount++; if (heap->freeCount > heap->freeListLength) { - FatalError(&sLocateSetFrontDebugLocation, "Memory Locate sprit max over [%3d/%3d]", heap->freeCount, heap->freeListLength); + FATAL_ERROR_ARGS("../system/memory_locate.c", 581, "Memory Locate sprit max over [%3d/%3d]", heap->freeCount, heap->freeListLength); } block = &heap->freeList[index + 1]; @@ -369,14 +359,6 @@ static struct HeapFreeListElement * _LocateSetFront(HeapDescriptor *heap, s32 in return curr; } -ALIGNED(4) static const char sText_LocateSetBack[] = "_LocateSetBack"; -static const DebugLocation sLocateSetBackDebugLocation = -{ - .file = sFileNameText, - .line = 673, - .func = sText_LocateSetBack -}; - static struct HeapFreeListElement * _LocateSetBack(HeapDescriptor *heap, s32 index, s32 atb, s32 size, s32 group) { s32 i; @@ -397,7 +379,7 @@ static struct HeapFreeListElement * _LocateSetBack(HeapDescriptor *heap, s32 ind heap->freeCount++; if (heap->freeCount > heap->freeListLength) { - FatalError(&sLocateSetBackDebugLocation, "Memory Locate sprit max over [%3d/%3d]", heap->freeCount, heap->freeListLength); + FATAL_ERROR_ARGS("../system/memory_locate.c", 673, "Memory Locate sprit max over [%3d/%3d]", heap->freeCount, heap->freeListLength); } curr->block.size -= sizeAligned; @@ -415,14 +397,6 @@ static struct HeapFreeListElement * _LocateSetBack(HeapDescriptor *heap, s32 ind return curr; } -ALIGNED(4) static const char sText_LocateSet[] = "_LocateSet"; -static const DebugLocation sLocateSetDebugLocation = -{ - .file = sFileNameText, - .line = 812, - .func = sText_LocateSet -}; - static void * _LocateSet(HeapDescriptor *heap, s32 size, s32 group) { s32 index; @@ -454,9 +428,8 @@ static void * _LocateSet(HeapDescriptor *heap, s32 size, s32 group) } error: - FatalError(&sLocateSetDebugLocation, - "Memroy LocateSet [%p] buffer %8x size can't locate\n atb %02x grp %3d ", - heap, size, atb, group); + FATAL_ERROR_ARGS("../system/memory_locate.c", 812, "Memroy LocateSet [%p] buffer %8x size can't locate\n atb %02x grp %3d ", + heap, size, atb, group); } // arm9.bin::02010DE0 @@ -470,8 +443,6 @@ void MemoryFree(void *a) DoFree(&sMainHeapDescriptor, a); } -ALIGNED(4) static const char sText_MemoryLocate_LocalCreate[] = "MemoryLocate_LocalCreate"; - UNUSED static HeapDescriptor *MemoryLocate_LocalCreate(HeapDescriptor *parentHeap, u32 size, u32 param_3, u32 group) { s32 index; @@ -485,12 +456,7 @@ UNUSED static HeapDescriptor *MemoryLocate_LocalCreate(HeapDescriptor *parentHea index = MemorySearchFromBack(parentHeap, 9, size); if (index < 0) { - static const DebugLocation debugInfo = { - .file = sFileNameText, - .line = 1109, - .func = sText_MemoryLocate_LocalCreate - }; - FatalError(&debugInfo, "Memroy LocalCreate buffer %08x size can't locate", size); + FATAL_ERROR_ARGS("../system/memory_locate.c", 1109, "Memroy LocalCreate buffer %08x size can't locate", size); } foundSet = _LocateSetBack(parentHeap, index, 9, size, group); @@ -609,4 +575,4 @@ UNUSED static void nullsub_141(void) UNUSED static void nullsub_142(void) { -} \ No newline at end of file +} diff --git a/src/sprite.c b/src/sprite.c index d4c95ef09..3e68ecf71 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -647,7 +647,7 @@ const RGB *sub_8005674(const EfoFileData *a0, s32 vramIdx) } // arm9.bin::02001894 -void sub_800569C(DungeonPos *a0, axObject *a1, u8 a2) +void sub_800569C(DungeonPos *a0, axdata *a1, u8 a2) { DungeonPos *ptr; DungeonPos *ptr2; @@ -656,11 +656,11 @@ void sub_800569C(DungeonPos *a0, axObject *a1, u8 a2) a0->x = 0; a0->y = 0; - if (!(a1->axdata.flags >> 15) || a2 >= 4) + if (!(a1->flags >> 15) || a2 >= 4) return; - if (a1->axdata.positions != NULL) { - ptr = &((DungeonPos*)a1->axdata.positions)[a1->axdata.sub1.poseId * 4]; + if (a1->positions != NULL) { + ptr = &((DungeonPos*)a1->positions)[a1->sub1.poseId * 4]; ptr2 = &ptr[a2]; if (*&ptr2->x == 99 && *&ptr2->y == 99) { a0->x = 99; @@ -668,8 +668,8 @@ void sub_800569C(DungeonPos *a0, axObject *a1, u8 a2) } else { ptr3 = &ptr[a2]; - a0->x = a1->axdata.sub1.offset.x + ptr3->x; - a0->y = a1->axdata.sub1.offset.y + ptr3->y; + a0->x = a1->sub1.offset.x + ptr3->x; + a0->y = a1->sub1.offset.y + ptr3->y; } } else { diff --git a/sym_ewram.txt b/sym_ewram.txt index 5ce6c959c..36534ad61 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -167,8 +167,4 @@ gUnknown_2039DA8: /* 2039DA8 (sub_80A14E8) */ .space 0x8 .include "src/ground_sprite.o" - -gUnknown_2039DD8: /* 2039DD8 (sub_80A6E80 - sub_80A7310) */ - .space 0x8 - - .include "src/code_80A7714.o" + .include "src/ground_script_file.o"