Skip to content

Commit e7b74e4

Browse files
committed
decomp: rewrite 7 dispatch + per-overlay + register wrappers
Shape: void f(char *obj) { char *p = *(char **)(obj + 4); func_ov107_020c9264(*(int *)p, TAG1, TAG2); per_overlay_callee(*(int *)p, ARG); func_0203c634(obj, *(signed char *)(obj + 0x20), per_overlay_cb); } Batch-15 dispatcher with an extra per-overlay call to a helper that takes (deref_p, small_const) between the tag update and the SetIndexedSlot register. Byte-parity verified for ov147_020cdb50. Modules 269/37 unchanged.
1 parent d4bc447 commit e7b74e4

14 files changed

Lines changed: 77 additions & 168 deletions

File tree

src/overlays/ov147/asm_stubs/calls/func_ov147_020cdb50.c

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
extern void func_ov107_020c9264(int obj, int tag1, int tag_lsb);
2+
extern void func_ov147_020cc9c0(int obj, int arg);
3+
extern void func_0203c634(void *obj, int idx, void *value);
4+
extern void func_ov147_020cdb90(void);
5+
6+
void func_ov147_020cdb50(char *obj) {
7+
char *p = *(char **)(obj + 4);
8+
func_ov107_020c9264(*(int *)p, 2, 0);
9+
func_ov147_020cc9c0(*(int *)p, 0);
10+
func_0203c634(obj, *(signed char *)(obj + 0x20), func_ov147_020cdb90);
11+
}

src/overlays/ov148/asm_stubs/calls/func_ov148_020d1790.c

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
extern void func_ov107_020c9264(int obj, int tag1, int tag_lsb);
2+
extern void func_ov148_020d0600(int obj, int arg);
3+
extern void func_0203c634(void *obj, int idx, void *value);
4+
extern void func_ov148_020d17d0(void);
5+
6+
void func_ov148_020d1790(char *obj) {
7+
char *p = *(char **)(obj + 4);
8+
func_ov107_020c9264(*(int *)p, 2, 0);
9+
func_ov148_020d0600(*(int *)p, 0);
10+
func_0203c634(obj, *(signed char *)(obj + 0x20), func_ov148_020d17d0);
11+
}

src/overlays/ov197/asm_stubs/calls/func_ov197_020cdb44.c

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
extern void func_ov107_020c9264(int obj, int tag1, int tag_lsb);
2+
extern void func_ov197_020cc9b4(int obj, int arg);
3+
extern void func_0203c634(void *obj, int idx, void *value);
4+
extern void func_ov197_020cdb84(void);
5+
6+
void func_ov197_020cdb44(char *obj) {
7+
char *p = *(char **)(obj + 4);
8+
func_ov107_020c9264(*(int *)p, 2, 0);
9+
func_ov197_020cc9b4(*(int *)p, 0);
10+
func_0203c634(obj, *(signed char *)(obj + 0x20), func_ov197_020cdb84);
11+
}

src/overlays/ov198/asm_stubs/calls/func_ov198_020d1784.c

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
extern void func_ov107_020c9264(int obj, int tag1, int tag_lsb);
2+
extern void func_ov198_020d05f4(int obj, int arg);
3+
extern void func_0203c634(void *obj, int idx, void *value);
4+
extern void func_ov198_020d17c4(void);
5+
6+
void func_ov198_020d1784(char *obj) {
7+
char *p = *(char **)(obj + 4);
8+
func_ov107_020c9264(*(int *)p, 2, 0);
9+
func_ov198_020d05f4(*(int *)p, 0);
10+
func_0203c634(obj, *(signed char *)(obj + 0x20), func_ov198_020d17c4);
11+
}

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

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
extern void func_ov107_020c9264(int obj, int tag1, int tag_lsb);
2+
extern void func_ov220_020d2434(int obj, int arg);
3+
extern void func_0203c634(void *obj, int idx, void *value);
4+
extern void func_ov220_020d3224(void);
5+
6+
void func_ov220_020d31e4(char *obj) {
7+
char *p = *(char **)(obj + 4);
8+
func_ov107_020c9264(*(int *)p, 5, 0);
9+
func_ov220_020d2434(*(int *)p, 0);
10+
func_0203c634(obj, *(signed char *)(obj + 0x20), func_ov220_020d3224);
11+
}

0 commit comments

Comments
 (0)