Skip to content

Commit d4bc447

Browse files
committed
decomp: rewrite 4 countdown-then-unregister wrappers
Shape: void f(char *obj) { char *p = *(char **)(obj + 4); int val = *(int *)(p + CTR_OFF) - *(int *)(*(char **)obj + DELTA_OFF); *(int *)(p + CTR_OFF) = val; if (val > 0) return; *(char *)(*(int *)p + 0x1c7) = 4; func_0203c634(obj, *(signed char *)(obj + 0x20), 0); } Counterpart of the earlier accumulator dispatchers, but this variant counts DOWN (subtracts a delta each tick) and only fires the tag + unregister when the counter hits zero-or-negative. Uses LDMGTIA (return if signed >) as the early exit. Byte-parity verified for ov219_020d0b9c. Modules 269/37 unchanged.
1 parent 6c4e6b7 commit d4bc447

8 files changed

Lines changed: 40 additions & 80 deletions

File tree

src/overlays/ov219/asm_stubs/calls/func_ov219_020d0b9c.c

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
extern void func_0203c634(void *obj, int idx, void *value);
2+
3+
void func_ov219_020d0b9c(char *obj) {
4+
char *p = *(char **)(obj + 4);
5+
int val = *(int *)(p + 0x14) - *(int *)(*(char **)obj + 0x2c);
6+
*(int *)(p + 0x14) = val;
7+
if (val > 0) return;
8+
*(char *)(*(int *)p + 0x1c7) = 4;
9+
func_0203c634(obj, *(signed char *)(obj + 0x20), 0);
10+
}

src/overlays/ov220/asm_stubs/calls/func_ov220_020d2a28.c

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
extern void func_0203c634(void *obj, int idx, void *value);
2+
3+
void func_ov220_020d2a28(char *obj) {
4+
char *p = *(char **)(obj + 4);
5+
int val = *(int *)(p + 0x14) - *(int *)(*(char **)obj + 0x2c);
6+
*(int *)(p + 0x14) = val;
7+
if (val > 0) return;
8+
*(char *)(*(int *)p + 0x1c7) = 4;
9+
func_0203c634(obj, *(signed char *)(obj + 0x20), 0);
10+
}

src/overlays/ov239/asm_stubs/calls/func_ov239_020ccf90.c

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
extern void func_0203c634(void *obj, int idx, void *value);
2+
3+
void func_ov239_020ccf90(char *obj) {
4+
char *p = *(char **)(obj + 4);
5+
int val = *(int *)(p + 0x2c) - *(int *)(*(char **)obj + 0x2c);
6+
*(int *)(p + 0x2c) = val;
7+
if (val > 0) return;
8+
*(char *)(*(int *)p + 0x1c7) = 4;
9+
func_0203c634(obj, *(signed char *)(obj + 0x20), 0);
10+
}

src/overlays/ov240/asm_stubs/calls/func_ov240_020cee40.c

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
extern void func_0203c634(void *obj, int idx, void *value);
2+
3+
void func_ov240_020cee40(char *obj) {
4+
char *p = *(char **)(obj + 4);
5+
int val = *(int *)(p + 0x38) - *(int *)(*(char **)obj + 0x2c);
6+
*(int *)(p + 0x38) = val;
7+
if (val > 0) return;
8+
*(char *)(*(int *)p + 0x1c7) = 4;
9+
func_0203c634(obj, *(signed char *)(obj + 0x20), 0);
10+
}

0 commit comments

Comments
 (0)