From 1ab224f0fe0c2891c9f3d5a7bfc773b6e7798ddd Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 29 Jan 2021 23:46:41 +1000 Subject: [PATCH] Decompile osViSetYScale --- Makefile | 1 + ld/libfiles.inc | 2 +- src/boot/entry.c | 1 - src/boot/init.c | 1 - src/boot/sched.c | 3 +-- src/include/PR/os_vi.h | 1 + src/include/lib/lib_48ef0.h | 8 ------- src/lib/lib_09660.c | 5 ++--- src/lib/lib_48ef0.c | 39 ---------------------------------- src/lib/ultra/io/visetyscale.c | 12 +++++++++++ 10 files changed, 18 insertions(+), 55 deletions(-) delete mode 100644 src/include/lib/lib_48ef0.h delete mode 100644 src/lib/lib_48ef0.c create mode 100644 src/lib/ultra/io/visetyscale.c diff --git a/Makefile b/Makefile index 13268eb2a..8286498d5 100644 --- a/Makefile +++ b/Makefile @@ -78,6 +78,7 @@ $(B_DIR)/lib/ultra/io/vi.o: OPT_LVL := -O1 $(B_DIR)/lib/ultra/io/vigetcurrframebuf.o: OPT_LVL := -O1 $(B_DIR)/lib/ultra/io/vigetnextframebuf.o: OPT_LVL := -O1 $(B_DIR)/lib/ultra/io/visetevent.o: OPT_LVL := -O1 +$(B_DIR)/lib/ultra/io/visetyscale.o: OPT_LVL := -O1 $(B_DIR)/lib/ultra/os/createmesgqueue.o: OPT_LVL := -O1 $(B_DIR)/lib/ultra/os/destroythread.o: OPT_LVL := -O1 $(B_DIR)/lib/ultra/os/jammesg.o: OPT_LVL := -O1 diff --git a/ld/libfiles.inc b/ld/libfiles.inc index fe385fb81..6c5582f9f 100644 --- a/ld/libfiles.inc +++ b/ld/libfiles.inc @@ -104,7 +104,7 @@ build/ROMID/lib/ultra/io/dpctr.o (section); \ build/ROMID/lib/lib_48cd0.o (section); \ build/ROMID/lib/lib_48dc0.o (section); \ - build/ROMID/lib/lib_48ef0.o (section); \ + build/ROMID/lib/ultra/io/visetyscale.o (section); \ build/ROMID/lib/lib_48f50.o (section); \ build/ROMID/lib/lib_490b0.o (section); \ build/ROMID/lib/ultra/os/timerintr.o (section); \ diff --git a/src/boot/entry.c b/src/boot/entry.c index 32eaa283a..096328fb8 100644 --- a/src/boot/entry.c +++ b/src/boot/entry.c @@ -22,7 +22,6 @@ #include "lib/lib_48150.h" #include "lib/lib_48cd0.h" #include "lib/lib_48dc0.h" -#include "lib/lib_48ef0.h" #include "lib/lib_48f50.h" #include "lib/lib_490b0.h" #include "types.h" diff --git a/src/boot/init.c b/src/boot/init.c index 7007e3920..36da74a1d 100644 --- a/src/boot/init.c +++ b/src/boot/init.c @@ -25,7 +25,6 @@ #include "lib/lib_48150.h" #include "lib/lib_48cd0.h" #include "lib/lib_48dc0.h" -#include "lib/lib_48ef0.h" #include "lib/lib_48f50.h" #include "lib/lib_490b0.h" #include "types.h" diff --git a/src/boot/sched.c b/src/boot/sched.c index 3bdae002a..52f148b57 100644 --- a/src/boot/sched.c +++ b/src/boot/sched.c @@ -24,7 +24,6 @@ #include "lib/lib_48150.h" #include "lib/lib_48cd0.h" #include "lib/lib_48dc0.h" -#include "lib/lib_48ef0.h" #include "lib/lib_48f50.h" #include "lib/lib_490b0.h" #include "types.h" @@ -504,7 +503,7 @@ s32 __scTaskComplete(OSSched *sc, OSScTask *t) func00048d50(var8008dd60[1 - var8005ce74]); func00048ce0(var8005ce90); func00048dc0(var8005ce78[1 - var8005ce74]); - func00048ef0(var8005ce80[1 - var8005ce74]); + osViSetYScale(var8005ce80[1 - var8005ce74]); func00048f50(0x42); } diff --git a/src/include/PR/os_vi.h b/src/include/PR/os_vi.h index 3227e7d8e..225414117 100644 --- a/src/include/PR/os_vi.h +++ b/src/include/PR/os_vi.h @@ -180,6 +180,7 @@ void osViSetEvent(OSMesgQueue *mq, OSMesg msg, u32 retraceCount); void osViBlack(u8 active); void osViSetSpecialFeatures(u32 func); void osViSwapBuffer(void *vaddr); +void osViSetYScale(f32 scale); #define OS_VI_NTSC_LPN1 0 /* NTSC */ diff --git a/src/include/lib/lib_48ef0.h b/src/include/lib/lib_48ef0.h deleted file mode 100644 index fd8944de0..000000000 --- a/src/include/lib/lib_48ef0.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _IN_LIB_LIB_48EF0_H -#define _IN_LIB_LIB_48EF0_H -#include -#include "types.h" - -void func00048ef0(f32 arg0); - -#endif diff --git a/src/lib/lib_09660.c b/src/lib/lib_09660.c index 1676c51ab..d8e146114 100644 --- a/src/lib/lib_09660.c +++ b/src/lib/lib_09660.c @@ -20,7 +20,6 @@ #include "lib/lib_30ce0.h" #include "lib/lib_48cd0.h" #include "lib/lib_48dc0.h" -#include "lib/lib_48ef0.h" #include "lib/lib_48f50.h" #include "lib/lib_4b170.h" #include "types.h" @@ -802,7 +801,7 @@ glabel func00009ed4 /* a018: 000e6080 */ sll $t4,$t6,0x2 /* a01c: 000cc023 */ negu $t8,$t4 /* a020: 00380821 */ addu $at,$at,$t8 -/* a024: 0c0123bc */ jal func00048ef0 +/* a024: 0c0123bc */ jal osViSetYScale /* a028: c42cce84 */ lwc1 $f12,%lo(var8005ce80+0x4)($at) /* a02c: 0c0123d4 */ jal func00048f50 /* a030: 24040042 */ addiu $a0,$zero,0x42 @@ -836,7 +835,7 @@ glabel func0000a044 .L0000a090: /* a090: 3c013f80 */ lui $at,0x3f80 /* a094: 44816000 */ mtc1 $at,$f12 -/* a098: 0c0123bc */ jal func00048ef0 +/* a098: 0c0123bc */ jal osViSetYScale /* a09c: 00000000 */ nop /* a0a0: 0c012338 */ jal func00048ce0 /* a0a4: 24040001 */ addiu $a0,$zero,0x1 diff --git a/src/lib/lib_48ef0.c b/src/lib/lib_48ef0.c deleted file mode 100644 index a43b743e1..000000000 --- a/src/lib/lib_48ef0.c +++ /dev/null @@ -1,39 +0,0 @@ -#include -#include "constants.h" -#include "game/data/data_000000.h" -#include "game/data/data_0083d0.h" -#include "game/data/data_00e460.h" -#include "game/data/data_0160b0.h" -#include "game/data/data_01a3a0.h" -#include "game/data/data_020df0.h" -#include "game/data/data_02da90.h" -#include "gvars/gvars.h" -#include "types.h" - -GLOBAL_ASM( -glabel func00048ef0 -/* 48ef0: 27bdffd8 */ addiu $sp,$sp,-40 -/* 48ef4: afbf001c */ sw $ra,0x1c($sp) -/* 48ef8: e7ac0028 */ swc1 $f12,0x28($sp) -/* 48efc: 0c01256c */ jal __osDisableInt -/* 48f00: afb00018 */ sw $s0,0x18($sp) -/* 48f04: 3c0e8006 */ lui $t6,%hi(__osViNext) -/* 48f08: 8dce0914 */ lw $t6,%lo(__osViNext)($t6) -/* 48f0c: c7a40028 */ lwc1 $f4,0x28($sp) -/* 48f10: 3c0f8006 */ lui $t7,%hi(__osViNext) -/* 48f14: 00408025 */ or $s0,$v0,$zero -/* 48f18: e5c40024 */ swc1 $f4,0x24($t6) -/* 48f1c: 8def0914 */ lw $t7,%lo(__osViNext)($t7) -/* 48f20: 02002025 */ or $a0,$s0,$zero -/* 48f24: 95f80000 */ lhu $t8,0x0($t7) -/* 48f28: 37190004 */ ori $t9,$t8,0x4 -/* 48f2c: 0c012588 */ jal __osRestoreInt -/* 48f30: a5f90000 */ sh $t9,0x0($t7) -/* 48f34: 8fbf001c */ lw $ra,0x1c($sp) -/* 48f38: 8fb00018 */ lw $s0,0x18($sp) -/* 48f3c: 27bd0028 */ addiu $sp,$sp,0x28 -/* 48f40: 03e00008 */ jr $ra -/* 48f44: 00000000 */ nop -/* 48f48: 00000000 */ nop -/* 48f4c: 00000000 */ nop -); \ No newline at end of file diff --git a/src/lib/ultra/io/visetyscale.c b/src/lib/ultra/io/visetyscale.c new file mode 100644 index 000000000..f3eb7c5a8 --- /dev/null +++ b/src/lib/ultra/io/visetyscale.c @@ -0,0 +1,12 @@ +#include +#include "game/data/data_000000.h" + +void osViSetYScale(f32 value) +{ + register u32 saveMask = __osDisableInt(); + + __osViNext->y.factor = value; + __osViNext->state |= VI_STATE_YSCALE_UPDATED; + + __osRestoreInt(saveMask); +}