From 53abd71c637a4e9d6e1e5d927e3ea6355a9db860 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sat, 31 May 2025 23:11:20 -0400 Subject: [PATCH] Decomped GravityIsActive --- asm/include/overlay_29_02337CCC.inc | 19 ++-- asm/include/overlay_29_023383A8.inc | 10 +++ asm/overlay_29_02337CCC.s | 135 ---------------------------- asm/overlay_29_023383A8.s | 124 +++++++++++++++++++++++++ include/overlay_29_02338390.h | 8 ++ main.lsf | 2 + src/overlay_29_02318A4C.c | 3 +- src/overlay_29_02338390.c | 9 ++ 8 files changed, 160 insertions(+), 150 deletions(-) create mode 100644 asm/include/overlay_29_023383A8.inc create mode 100644 asm/overlay_29_023383A8.s create mode 100644 include/overlay_29_02338390.h create mode 100644 src/overlay_29_02338390.c diff --git a/asm/include/overlay_29_02337CCC.inc b/asm/include/overlay_29_02337CCC.inc index f48045cc..70f0c9be 100644 --- a/asm/include/overlay_29_02337CCC.inc +++ b/asm/include/overlay_29_02337CCC.inc @@ -1,30 +1,23 @@ #pragma once +.public DIRECTIONS_XY +.public DUNGEON_PTR .public DetermineMonsterShadow .public DetermineTileWalkableNeighbors -.public DIRECTIONS_XY .public DrawMinimapTile -.public DUNGEON_PTR .public DungeonRandInt .public DungeonRandRange .public EntityIsValid__02337CA8 .public GetMonsterIdFromSpawnEntry .public GetTile .public GetTileSafe -.public GetVictoriesOnOneFloor -.public HiddenStairsTrigger .public IqSkillIsEnabled -.public LogMessageByIdWithPopupCheckUser .public MemAlloc .public MemFree .public MemZero -.public ov10_022C6327 -.public ov29_022E66C4 -.public ov29_022EDEDC -.public ov29_022FAFD4 -.public ov29_02306D54 -.public ov29_02336694 -.public PositionIsOnHiddenStairs .public RandInt .public SECONDARY_TERRAIN_TYPES -.public SetVictoriesOnOneFloor .public UpdateTrapsVisibility +.public ov10_022C6327 +.public ov29_022E66C4 +.public ov29_022FAFD4 +.public ov29_02336694 diff --git a/asm/include/overlay_29_023383A8.inc b/asm/include/overlay_29_023383A8.inc new file mode 100644 index 00000000..59462b24 --- /dev/null +++ b/asm/include/overlay_29_023383A8.inc @@ -0,0 +1,10 @@ +#pragma once +.public DUNGEON_PTR +.public EntityIsValid__02337CA8 +.public GetVictoriesOnOneFloor +.public HiddenStairsTrigger +.public LogMessageByIdWithPopupCheckUser +.public PositionIsOnHiddenStairs +.public SetVictoriesOnOneFloor +.public ov29_022EDEDC +.public ov29_02306D54 diff --git a/asm/overlay_29_02337CCC.s b/asm/overlay_29_02337CCC.s index b991e283..015e996f 100644 --- a/asm/overlay_29_02337CCC.s +++ b/asm/overlay_29_02337CCC.s @@ -559,138 +559,3 @@ ResetGravity: ; 0x0233836C _02338388: .word DUNGEON_PTR _0233838C: .word MemZero arm_func_end ResetGravity - - arm_func_start GravityIsActive -GravityIsActive: ; 0x02338390 - ldr r0, _023383A4 ; =DUNGEON_PTR - ldr r0, [r0] - add r0, r0, #0x12000 -#ifdef JAPAN - ldrb r0, [r0, #0xa58] -#else - ldrb r0, [r0, #0xafc] -#endif - bx lr - .align 2, 0 -_023383A4: .word DUNGEON_PTR - arm_func_end GravityIsActive - - arm_func_start ov29_023383A8 -ov29_023383A8: ; 0x023383A8 - ldr ip, _023383B4 ; =LogMessageByIdWithPopupCheckUser - ldr r1, _023383B8 ; =0x00000D8D - bx ip - .align 2, 0 -_023383B4: .word LogMessageByIdWithPopupCheckUser -#ifdef JAPAN -_023383B8: .word 0x00000ACD -#else -_023383B8: .word 0x00000D8D -#endif - arm_func_end ov29_023383A8 - - arm_func_start TryActivateGravity -TryActivateGravity: ; 0x023383BC - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__02337CA8 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _02338424 ; =DUNGEON_PTR - ldr r0, [r0] - add r2, r0, #0x12000 -#ifdef JAPAN - ldrb r0, [r2, #0xa58] -#else - ldrb r0, [r2, #0xafc] -#endif - cmp r0, #0 - beq _02338400 - ldr r1, _02338428 ; =0x00000C06 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - ldmia sp!, {r4, pc} -_02338400: - ldr r1, _0233842C ; =0x00000C05 - mov r3, #1 - mov r0, r4 -#ifdef JAPAN - strb r3, [r2, #0xa58] -#else - strb r3, [r2, #0xafc] -#endif - bl LogMessageByIdWithPopupCheckUser - mov r0, r4 - bl ov29_02306D54 - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_02338424: .word DUNGEON_PTR -#ifdef JAPAN -_02338428: .word 0x00000945 -_0233842C: .word 0x00000944 -#else -_02338428: .word 0x00000C06 -_0233842C: .word 0x00000C05 -#endif - arm_func_end TryActivateGravity - - arm_func_start ov29_02338430 -ov29_02338430: ; 0x02338430 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r1, #1 - bl ov29_022EDEDC - mov r0, r4 - bl PositionIsOnHiddenStairs - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, #1 - bl HiddenStairsTrigger - ldmia sp!, {r4, pc} - arm_func_end ov29_02338430 - - arm_func_start ov29_0233845C -ov29_0233845C: ; 0x0233845C - ldr r1, _02338474 ; =DUNGEON_PTR - ldr r0, _02338478 ; =0x00012AFE - ldr r1, [r1] - mov r2, #0 - strh r2, [r1, r0] - bx lr - .align 2, 0 -_02338474: .word DUNGEON_PTR -#ifdef JAPAN -_02338478: .word 0x00012A5A -#else -_02338478: .word 0x00012AFE -#endif - arm_func_end ov29_0233845C - - arm_func_start ov29_0233847C -ov29_0233847C: ; 0x0233847C - stmdb sp!, {r4, lr} - ldr r1, _023384B8 ; =DUNGEON_PTR - ldr r0, _023384BC ; =0x00012AFE - ldr r3, [r1] - ldrsh r2, [r3, r0] - add r2, r2, #1 - strh r2, [r3, r0] - ldr r1, [r1] - ldrsh r4, [r1, r0] - bl GetVictoriesOnOneFloor - cmp r4, r0 - ldmleia sp!, {r4, pc} - mov r0, r4 - bl SetVictoriesOnOneFloor - ldmia sp!, {r4, pc} - .align 2, 0 -_023384B8: .word DUNGEON_PTR -#ifdef JAPAN -_023384BC: .word 0x00012A5A -#else -_023384BC: .word 0x00012AFE -#endif - arm_func_end ov29_0233847C diff --git a/asm/overlay_29_023383A8.s b/asm/overlay_29_023383A8.s new file mode 100644 index 00000000..6deaaf18 --- /dev/null +++ b/asm/overlay_29_023383A8.s @@ -0,0 +1,124 @@ + .include "asm/macros.inc" + .include "overlay_29_023383A8.inc" + + .text + + arm_func_start ov29_023383A8 +ov29_023383A8: ; 0x023383A8 + ldr ip, _023383B4 ; =LogMessageByIdWithPopupCheckUser + ldr r1, _023383B8 ; =0x00000D8D + bx ip + .align 2, 0 +_023383B4: .word LogMessageByIdWithPopupCheckUser +#ifdef JAPAN +_023383B8: .word 0x00000ACD +#else +_023383B8: .word 0x00000D8D +#endif + arm_func_end ov29_023383A8 + + arm_func_start TryActivateGravity +TryActivateGravity: ; 0x023383BC + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__02337CA8 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _02338424 ; =DUNGEON_PTR + ldr r0, [r0] + add r2, r0, #0x12000 +#ifdef JAPAN + ldrb r0, [r2, #0xa58] +#else + ldrb r0, [r2, #0xafc] +#endif + cmp r0, #0 + beq _02338400 + ldr r1, _02338428 ; =0x00000C06 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + ldmia sp!, {r4, pc} +_02338400: + ldr r1, _0233842C ; =0x00000C05 + mov r3, #1 + mov r0, r4 +#ifdef JAPAN + strb r3, [r2, #0xa58] +#else + strb r3, [r2, #0xafc] +#endif + bl LogMessageByIdWithPopupCheckUser + mov r0, r4 + bl ov29_02306D54 + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_02338424: .word DUNGEON_PTR +#ifdef JAPAN +_02338428: .word 0x00000945 +_0233842C: .word 0x00000944 +#else +_02338428: .word 0x00000C06 +_0233842C: .word 0x00000C05 +#endif + arm_func_end TryActivateGravity + + arm_func_start ov29_02338430 +ov29_02338430: ; 0x02338430 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, #1 + bl ov29_022EDEDC + mov r0, r4 + bl PositionIsOnHiddenStairs + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, #1 + bl HiddenStairsTrigger + ldmia sp!, {r4, pc} + arm_func_end ov29_02338430 + + arm_func_start ov29_0233845C +ov29_0233845C: ; 0x0233845C + ldr r1, _02338474 ; =DUNGEON_PTR + ldr r0, _02338478 ; =0x00012AFE + ldr r1, [r1] + mov r2, #0 + strh r2, [r1, r0] + bx lr + .align 2, 0 +_02338474: .word DUNGEON_PTR +#ifdef JAPAN +_02338478: .word 0x00012A5A +#else +_02338478: .word 0x00012AFE +#endif + arm_func_end ov29_0233845C + + arm_func_start ov29_0233847C +ov29_0233847C: ; 0x0233847C + stmdb sp!, {r4, lr} + ldr r1, _023384B8 ; =DUNGEON_PTR + ldr r0, _023384BC ; =0x00012AFE + ldr r3, [r1] + ldrsh r2, [r3, r0] + add r2, r2, #1 + strh r2, [r3, r0] + ldr r1, [r1] + ldrsh r4, [r1, r0] + bl GetVictoriesOnOneFloor + cmp r4, r0 + ldmleia sp!, {r4, pc} + mov r0, r4 + bl SetVictoriesOnOneFloor + ldmia sp!, {r4, pc} + .align 2, 0 +_023384B8: .word DUNGEON_PTR +#ifdef JAPAN +_023384BC: .word 0x00012A5A +#else +_023384BC: .word 0x00012AFE +#endif + arm_func_end ov29_0233847C diff --git a/include/overlay_29_02338390.h b/include/overlay_29_02338390.h new file mode 100644 index 00000000..d75638d1 --- /dev/null +++ b/include/overlay_29_02338390.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02338390_H +#define PMDSKY_OVERLAY_29_02338390_H + +#include "util.h" + +bool8 GravityIsActive(); + +#endif //PMDSKY_OVERLAY_29_02338390_H diff --git a/main.lsf b/main.lsf index 6f834275..362771cb 100644 --- a/main.lsf +++ b/main.lsf @@ -449,6 +449,8 @@ Overlay OVY_29 Object asm/overlay_29_02336164.o Object src/overlay_29_02337CA8.o Object asm/overlay_29_02337CCC.o + Object src/overlay_29_02338390.o + Object asm/overlay_29_023383A8.o Object src/overlay_29_02338548.o Object asm/overlay_29_02338560.o Object src/overlay_29_02338604.o diff --git a/src/overlay_29_02318A4C.c b/src/overlay_29_02318A4C.c index ac70983e..ed93cec6 100644 --- a/src/overlay_29_02318A4C.c +++ b/src/overlay_29_02318A4C.c @@ -1,8 +1,7 @@ #include "overlay_29_02318A4C.h" #include "dungeon_util_static.h" #include "overlay_29_02315118.h" - -extern bool8 GravityIsActive(); +#include "overlay_29_02338390.h" bool8 IsFloating(struct entity *entity) { diff --git a/src/overlay_29_02338390.c b/src/overlay_29_02338390.c new file mode 100644 index 00000000..2d9be55c --- /dev/null +++ b/src/overlay_29_02338390.c @@ -0,0 +1,9 @@ +#include "overlay_29_02338390.h" +#include "dungeon.h" + +extern struct dungeon *DUNGEON_PTR[]; + +bool8 GravityIsActive() +{ + return DUNGEON_PTR[0]->gravity; +}