From c2bbd4f40e5555b4a87550e2175c06103fcd4881 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Wed, 6 Oct 2021 20:21:22 -0400 Subject: [PATCH] Match __osViSwapContext --- lib/asm/exception/__osException.s | 4 +- .../unknown_0D3020/__osViSwapContext.s | 230 ------------------ lib/src/os/__osViSwapContext.c | 85 +++++++ lib/src/os/unknown_0D6C90.c | 16 +- 4 files changed, 88 insertions(+), 247 deletions(-) delete mode 100644 lib/asm/non_matchings/unknown_0D3020/__osViSwapContext.s create mode 100644 lib/src/os/__osViSwapContext.c diff --git a/lib/asm/exception/__osException.s b/lib/asm/exception/__osException.s index c4fd0f2c..6eed695b 100644 --- a/lib/asm/exception/__osException.s +++ b/lib/asm/exception/__osException.s @@ -369,8 +369,8 @@ glabel __osException /* 0D3DB0 800D31B0 AD3A0000 */ sw $k0, ($t1) .L800D31B4: -/* 0D3DB4 800D31B4 3C01800E */ lui $at, %hi(D_800E4894) # $at, 0x800e -/* 0D3DB8 800D31B8 AC3A4894 */ sw $k0, %lo(D_800E4894)($at) +/* 0D3DB4 800D31B4 3C01800E */ lui $at, %hi(__osFaultedThread) # $at, 0x800e +/* 0D3DB8 800D31B8 AC3A4894 */ sw $k0, %lo(__osFaultedThread)($at) /* 0D3DBC 800D31BC 24090001 */ li $t1, 1 /* 0D3DC0 800D31C0 A7490010 */ sh $t1, 0x10($k0) /* 0D3DC4 800D31C4 24090002 */ li $t1, 2 diff --git a/lib/asm/non_matchings/unknown_0D3020/__osViSwapContext.s b/lib/asm/non_matchings/unknown_0D3020/__osViSwapContext.s deleted file mode 100644 index 81d5c099..00000000 --- a/lib/asm/non_matchings/unknown_0D3020/__osViSwapContext.s +++ /dev/null @@ -1,230 +0,0 @@ -glabel __osViSwapContext -/* 0D6C90 800D6090 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 0D6C94 800D6094 AFB1001C */ sw $s1, 0x1c($sp) -/* 0D6C98 800D6098 AFBF0024 */ sw $ra, 0x24($sp) -/* 0D6C9C 800D609C AFB20020 */ sw $s2, 0x20($sp) -/* 0D6CA0 800D60A0 AFB00018 */ sw $s0, 0x18($sp) -/* 0D6CA4 800D60A4 AFA00030 */ sw $zero, 0x30($sp) -/* 0D6CA8 800D60A8 3C11800E */ lui $s1, %hi(__osViNext) # $s1, 0x800e -/* 0D6CAC 800D60AC 3C0EA440 */ lui $t6, %hi(VI_CURRENT_REG) # $t6, 0xa440 -/* 0D6CB0 800D60B0 8E314874 */ lw $s1, %lo(__osViNext)($s1) -/* 0D6CB4 800D60B4 8DCF0010 */ lw $t7, %lo(VI_CURRENT_REG)($t6) -/* 0D6CB8 800D60B8 8E300008 */ lw $s0, 8($s1) -/* 0D6CBC 800D60BC 31F80001 */ andi $t8, $t7, 1 -/* 0D6CC0 800D60C0 AFB80030 */ sw $t8, 0x30($sp) -/* 0D6CC4 800D60C4 0C03233C */ jal osVirtualToPhysical -/* 0D6CC8 800D60C8 8E240004 */ lw $a0, 4($s1) -/* 0D6CCC 800D60CC 8FB90030 */ lw $t9, 0x30($sp) -/* 0D6CD0 800D60D0 00409025 */ move $s2, $v0 -/* 0D6CD4 800D60D4 00194080 */ sll $t0, $t9, 2 -/* 0D6CD8 800D60D8 01194021 */ addu $t0, $t0, $t9 -/* 0D6CDC 800D60DC 00084080 */ sll $t0, $t0, 2 -/* 0D6CE0 800D60E0 02084821 */ addu $t1, $s0, $t0 -/* 0D6CE4 800D60E4 8D2A0028 */ lw $t2, 0x28($t1) -/* 0D6CE8 800D60E8 01525821 */ addu $t3, $t2, $s2 -/* 0D6CEC 800D60EC AFAB003C */ sw $t3, 0x3c($sp) -/* 0D6CF0 800D60F0 962C0000 */ lhu $t4, ($s1) -/* 0D6CF4 800D60F4 318D0002 */ andi $t5, $t4, 2 -/* 0D6CF8 800D60F8 11A00008 */ beqz $t5, .L800D611C -/* 0D6CFC 800D60FC 00000000 */ nop -/* 0D6D00 800D6100 8E0F0020 */ lw $t7, 0x20($s0) -/* 0D6D04 800D6104 8E2E0020 */ lw $t6, 0x20($s1) -/* 0D6D08 800D6108 2401F000 */ li $at, -4096 -/* 0D6D0C 800D610C 01E1C024 */ and $t8, $t7, $at -/* 0D6D10 800D6110 01D8C825 */ or $t9, $t6, $t8 -/* 0D6D14 800D6114 10000003 */ b .L800D6124 -/* 0D6D18 800D6118 AE390020 */ sw $t9, 0x20($s1) -.L800D611C: -/* 0D6D1C 800D611C 8E080020 */ lw $t0, 0x20($s0) -/* 0D6D20 800D6120 AE280020 */ sw $t0, 0x20($s1) -.L800D6124: -/* 0D6D24 800D6124 96290000 */ lhu $t1, ($s1) -/* 0D6D28 800D6128 312A0004 */ andi $t2, $t1, 4 -/* 0D6D2C 800D612C 11400041 */ beqz $t2, .L800D6234 -/* 0D6D30 800D6130 00000000 */ nop -/* 0D6D34 800D6134 8FAB0030 */ lw $t3, 0x30($sp) -/* 0D6D38 800D6138 000B6080 */ sll $t4, $t3, 2 -/* 0D6D3C 800D613C 018B6021 */ addu $t4, $t4, $t3 -/* 0D6D40 800D6140 000C6080 */ sll $t4, $t4, 2 -/* 0D6D44 800D6144 020C6821 */ addu $t5, $s0, $t4 -/* 0D6D48 800D6148 8DAF002C */ lw $t7, 0x2c($t5) -/* 0D6D4C 800D614C 31EE0FFF */ andi $t6, $t7, 0xfff -/* 0D6D50 800D6150 448E3000 */ mtc1 $t6, $f6 -/* 0D6D54 800D6154 AFAE0034 */ sw $t6, 0x34($sp) -/* 0D6D58 800D6158 C6240024 */ lwc1 $f4, 0x24($s1) -/* 0D6D5C 800D615C 05C10005 */ bgez $t6, .L800D6174 -/* 0D6D60 800D6160 46803220 */ cvt.s.w $f8, $f6 -/* 0D6D64 800D6164 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0D6D68 800D6168 44815000 */ mtc1 $at, $f10 -/* 0D6D6C 800D616C 00000000 */ nop -/* 0D6D70 800D6170 460A4200 */ add.s $f8, $f8, $f10 -.L800D6174: -/* 0D6D74 800D6174 46082402 */ mul.s $f16, $f4, $f8 -/* 0D6D78 800D6178 24190001 */ li $t9, 1 -/* 0D6D7C 800D617C 4458F800 */ cfc1 $t8, $31 -/* 0D6D80 800D6180 44D9F800 */ ctc1 $t9, $31 -/* 0D6D84 800D6184 00000000 */ nop -/* 0D6D88 800D6188 460084A4 */ cvt.w.s $f18, $f16 -/* 0D6D8C 800D618C 4459F800 */ cfc1 $t9, $31 -/* 0D6D90 800D6190 00000000 */ nop -/* 0D6D94 800D6194 33210004 */ andi $at, $t9, 4 -/* 0D6D98 800D6198 33390078 */ andi $t9, $t9, 0x78 -/* 0D6D9C 800D619C 13200013 */ beqz $t9, .L800D61EC -/* 0D6DA0 800D61A0 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 0D6DA4 800D61A4 44819000 */ mtc1 $at, $f18 -/* 0D6DA8 800D61A8 24190001 */ li $t9, 1 -/* 0D6DAC 800D61AC 46128481 */ sub.s $f18, $f16, $f18 -/* 0D6DB0 800D61B0 44D9F800 */ ctc1 $t9, $31 -/* 0D6DB4 800D61B4 00000000 */ nop -/* 0D6DB8 800D61B8 460094A4 */ cvt.w.s $f18, $f18 -/* 0D6DBC 800D61BC 4459F800 */ cfc1 $t9, $31 -/* 0D6DC0 800D61C0 00000000 */ nop -/* 0D6DC4 800D61C4 33210004 */ andi $at, $t9, 4 -/* 0D6DC8 800D61C8 33390078 */ andi $t9, $t9, 0x78 -/* 0D6DCC 800D61CC 17200005 */ bnez $t9, .L800D61E4 -/* 0D6DD0 800D61D0 00000000 */ nop -/* 0D6DD4 800D61D4 44199000 */ mfc1 $t9, $f18 -/* 0D6DD8 800D61D8 3C018000 */ lui $at, 0x8000 -/* 0D6DDC 800D61DC 10000007 */ b .L800D61FC -/* 0D6DE0 800D61E0 0321C825 */ or $t9, $t9, $at -.L800D61E4: -/* 0D6DE4 800D61E4 10000005 */ b .L800D61FC -/* 0D6DE8 800D61E8 2419FFFF */ li $t9, -1 -.L800D61EC: -/* 0D6DEC 800D61EC 44199000 */ mfc1 $t9, $f18 -/* 0D6DF0 800D61F0 00000000 */ nop -/* 0D6DF4 800D61F4 0720FFFB */ bltz $t9, .L800D61E4 -/* 0D6DF8 800D61F8 00000000 */ nop -.L800D61FC: -/* 0D6DFC 800D61FC AE39002C */ sw $t9, 0x2c($s1) -/* 0D6E00 800D6200 8FA90030 */ lw $t1, 0x30($sp) -/* 0D6E04 800D6204 8E28002C */ lw $t0, 0x2c($s1) -/* 0D6E08 800D6208 2401F000 */ li $at, -4096 -/* 0D6E0C 800D620C 00095080 */ sll $t2, $t1, 2 -/* 0D6E10 800D6210 01495021 */ addu $t2, $t2, $t1 -/* 0D6E14 800D6214 000A5080 */ sll $t2, $t2, 2 -/* 0D6E18 800D6218 020A5821 */ addu $t3, $s0, $t2 -/* 0D6E1C 800D621C 8D6C002C */ lw $t4, 0x2c($t3) -/* 0D6E20 800D6220 44D8F800 */ ctc1 $t8, $31 -/* 0D6E24 800D6224 01816824 */ and $t5, $t4, $at -/* 0D6E28 800D6228 010D7825 */ or $t7, $t0, $t5 -/* 0D6E2C 800D622C 10000008 */ b .L800D6250 -/* 0D6E30 800D6230 AE2F002C */ sw $t7, 0x2c($s1) -.L800D6234: -/* 0D6E34 800D6234 8FAE0030 */ lw $t6, 0x30($sp) -/* 0D6E38 800D6238 000EC080 */ sll $t8, $t6, 2 -/* 0D6E3C 800D623C 030EC021 */ addu $t8, $t8, $t6 -/* 0D6E40 800D6240 0018C080 */ sll $t8, $t8, 2 -/* 0D6E44 800D6244 0218C821 */ addu $t9, $s0, $t8 -/* 0D6E48 800D6248 8F29002C */ lw $t1, 0x2c($t9) -/* 0D6E4C 800D624C AE29002C */ sw $t1, 0x2c($s1) -.L800D6250: -/* 0D6E50 800D6250 8E0A001C */ lw $t2, 0x1c($s0) -/* 0D6E54 800D6254 AFAA0038 */ sw $t2, 0x38($sp) -/* 0D6E58 800D6258 962B0000 */ lhu $t3, ($s1) -/* 0D6E5C 800D625C 316C0020 */ andi $t4, $t3, 0x20 -/* 0D6E60 800D6260 11800002 */ beqz $t4, .L800D626C -/* 0D6E64 800D6264 00000000 */ nop -/* 0D6E68 800D6268 AFA00038 */ sw $zero, 0x38($sp) -.L800D626C: -/* 0D6E6C 800D626C 96280000 */ lhu $t0, ($s1) -/* 0D6E70 800D6270 310D0040 */ andi $t5, $t0, 0x40 -/* 0D6E74 800D6274 11A00005 */ beqz $t5, .L800D628C -/* 0D6E78 800D6278 00000000 */ nop -/* 0D6E7C 800D627C AE20002C */ sw $zero, 0x2c($s1) -/* 0D6E80 800D6280 0C03233C */ jal osVirtualToPhysical -/* 0D6E84 800D6284 8E240004 */ lw $a0, 4($s1) -/* 0D6E88 800D6288 AFA2003C */ sw $v0, 0x3c($sp) -.L800D628C: -/* 0D6E8C 800D628C 962F0000 */ lhu $t7, ($s1) -/* 0D6E90 800D6290 31EE0080 */ andi $t6, $t7, 0x80 -/* 0D6E94 800D6294 11C00009 */ beqz $t6, .L800D62BC -/* 0D6E98 800D6298 00000000 */ nop -/* 0D6E9C 800D629C 96380028 */ lhu $t8, 0x28($s1) -/* 0D6EA0 800D62A0 3C0103FF */ lui $at, 0x3ff -/* 0D6EA4 800D62A4 8E240004 */ lw $a0, 4($s1) -/* 0D6EA8 800D62A8 0018CC00 */ sll $t9, $t8, 0x10 -/* 0D6EAC 800D62AC 03214824 */ and $t1, $t9, $at -/* 0D6EB0 800D62B0 0C03233C */ jal osVirtualToPhysical -/* 0D6EB4 800D62B4 AE29002C */ sw $t1, 0x2c($s1) -/* 0D6EB8 800D62B8 AFA2003C */ sw $v0, 0x3c($sp) -.L800D62BC: -/* 0D6EBC 800D62BC 8FAA003C */ lw $t2, 0x3c($sp) -/* 0D6EC0 800D62C0 3C0BA440 */ lui $t3, %hi(VI_LEAP_REG) # $t3, 0xa440 -/* 0D6EC4 800D62C4 3C08A440 */ lui $t0, %hi(VI_V_BURST_REG) # $t0, 0xa440 -/* 0D6EC8 800D62C8 AD6A0004 */ sw $t2, %lo(VI_ORIGIN_REG)($t3) -/* 0D6ECC 800D62CC 8E0C0008 */ lw $t4, 8($s0) -/* 0D6ED0 800D62D0 3C0FA440 */ lui $t7, %hi(VI_BURST_REG) # $t7, 0xa440 -/* 0D6ED4 800D62D4 3C18A440 */ lui $t8, %hi(VI_V_SYNC_REG) # $t8, 0xa440 -/* 0D6ED8 800D62D8 AD0C0008 */ sw $t4, %lo(VI_WIDTH_REG)($t0) -/* 0D6EDC 800D62DC 8E0D000C */ lw $t5, 0xc($s0) -/* 0D6EE0 800D62E0 3C09A440 */ lui $t1, %hi(VI_H_SYNC_REG) # $t1, 0xa440 -/* 0D6EE4 800D62E4 3C01800E */ lui $at, %hi(__osViNext) # $at, 0x800e -/* 0D6EE8 800D62E8 ADED0014 */ sw $t5, %lo(VI_BURST_REG)($t7) -/* 0D6EEC 800D62EC 8E0E0010 */ lw $t6, 0x10($s0) -/* 0D6EF0 800D62F0 AF0E0018 */ sw $t6, %lo(VI_V_SYNC_REG)($t8) -/* 0D6EF4 800D62F4 8E190014 */ lw $t9, 0x14($s0) -/* 0D6EF8 800D62F8 AD39001C */ sw $t9, %lo(VI_H_SYNC_REG)($t1) -/* 0D6EFC 800D62FC 8E0A0018 */ lw $t2, 0x18($s0) -/* 0D6F00 800D6300 3C19A440 */ lui $t9, %hi(VI_INTR_REG) # $t9, 0xa440 -/* 0D6F04 800D6304 AD6A0020 */ sw $t2, %lo(VI_LEAP_REG)($t3) -/* 0D6F08 800D6308 8FAC0038 */ lw $t4, 0x38($sp) -/* 0D6F0C 800D630C AD0C0024 */ sw $t4, %lo(VI_H_START_REG)($t0) -/* 0D6F10 800D6310 8FAD0030 */ lw $t5, 0x30($sp) -/* 0D6F14 800D6314 000D7880 */ sll $t7, $t5, 2 -/* 0D6F18 800D6318 01ED7821 */ addu $t7, $t7, $t5 -/* 0D6F1C 800D631C 000F7880 */ sll $t7, $t7, 2 -/* 0D6F20 800D6320 020F7021 */ addu $t6, $s0, $t7 -/* 0D6F24 800D6324 8DD80030 */ lw $t8, 0x30($t6) -/* 0D6F28 800D6328 AF380028 */ sw $t8, %lo(VI_V_START_REG)($t9) -/* 0D6F2C 800D632C 8FA90030 */ lw $t1, 0x30($sp) -/* 0D6F30 800D6330 00095080 */ sll $t2, $t1, 2 -/* 0D6F34 800D6334 01495021 */ addu $t2, $t2, $t1 -/* 0D6F38 800D6338 000A5080 */ sll $t2, $t2, 2 -/* 0D6F3C 800D633C 020A5821 */ addu $t3, $s0, $t2 -/* 0D6F40 800D6340 8D6C0034 */ lw $t4, 0x34($t3) -/* 0D6F44 800D6344 3C0AA440 */ lui $t2, %hi(VI_X_SCALE_REG) # $t2, 0xa440 -/* 0D6F48 800D6348 AD0C002C */ sw $t4, %lo(VI_V_BURST_REG)($t0) -/* 0D6F4C 800D634C 8FAD0030 */ lw $t5, 0x30($sp) -/* 0D6F50 800D6350 3C0CA440 */ lui $t4, %hi(VI_Y_SCALE_REG) # $t4, 0xa440 -/* 0D6F54 800D6354 000D7880 */ sll $t7, $t5, 2 -/* 0D6F58 800D6358 01ED7821 */ addu $t7, $t7, $t5 -/* 0D6F5C 800D635C 000F7880 */ sll $t7, $t7, 2 -/* 0D6F60 800D6360 020F7021 */ addu $t6, $s0, $t7 -/* 0D6F64 800D6364 8DD80038 */ lw $t8, 0x38($t6) -/* 0D6F68 800D6368 3C0DA440 */ lui $t5, 0xa440 -/* 0D6F6C 800D636C 3C0F800E */ lui $t7, %hi(__osViCurr) # $t7, 0x800e -/* 0D6F70 800D6370 AF38000C */ sw $t8, %lo(VI_INTR_REG)($t9) -/* 0D6F74 800D6374 8E290020 */ lw $t1, 0x20($s1) -/* 0D6F78 800D6378 3C18800E */ lui $t8, %hi(__osViCurr) # $t8, 0x800e -/* 0D6F7C 800D637C 3C0E800E */ lui $t6, %hi(__osViNext) # $t6, 0x800e -/* 0D6F80 800D6380 AD490030 */ sw $t1, %lo(VI_X_SCALE_REG)($t2) -/* 0D6F84 800D6384 8E2B002C */ lw $t3, 0x2c($s1) -/* 0D6F88 800D6388 AD8B0034 */ sw $t3, %lo(VI_Y_SCALE_REG)($t4) -/* 0D6F8C 800D638C 8E28000C */ lw $t0, 0xc($s1) -/* 0D6F90 800D6390 ADA80000 */ sw $t0, ($t5) -/* 0D6F94 800D6394 8DEF4870 */ lw $t7, %lo(__osViCurr)($t7) -/* 0D6F98 800D6398 AC2F4874 */ sw $t7, %lo(__osViNext)($at) -/* 0D6F9C 800D639C 3C01800E */ lui $at, %hi(__osViCurr) # $at, 0x800e -/* 0D6FA0 800D63A0 AC314870 */ sw $s1, %lo(__osViCurr)($at) -/* 0D6FA4 800D63A4 8F184870 */ lw $t8, %lo(__osViCurr)($t8) -/* 0D6FA8 800D63A8 8DCE4874 */ lw $t6, %lo(__osViNext)($t6) -/* 0D6FAC 800D63AC 270A0030 */ addiu $t2, $t8, 0x30 -.L800D63B0: -/* 0D6FB0 800D63B0 8F010000 */ lw $at, ($t8) -/* 0D6FB4 800D63B4 2718000C */ addiu $t8, $t8, 0xc -/* 0D6FB8 800D63B8 25CE000C */ addiu $t6, $t6, 0xc -/* 0D6FBC 800D63BC ADC1FFF4 */ sw $at, -0xc($t6) -/* 0D6FC0 800D63C0 8F01FFF8 */ lw $at, -8($t8) -/* 0D6FC4 800D63C4 ADC1FFF8 */ sw $at, -8($t6) -/* 0D6FC8 800D63C8 8F01FFFC */ lw $at, -4($t8) -/* 0D6FCC 800D63CC 170AFFF8 */ bne $t8, $t2, .L800D63B0 -/* 0D6FD0 800D63D0 ADC1FFFC */ sw $at, -4($t6) -/* 0D6FD4 800D63D4 8FBF0024 */ lw $ra, 0x24($sp) -/* 0D6FD8 800D63D8 8FB00018 */ lw $s0, 0x18($sp) -/* 0D6FDC 800D63DC 8FB1001C */ lw $s1, 0x1c($sp) -/* 0D6FE0 800D63E0 8FB20020 */ lw $s2, 0x20($sp) -/* 0D6FE4 800D63E4 03E00008 */ jr $ra -/* 0D6FE8 800D63E8 27BD0048 */ addiu $sp, $sp, 0x48 - -/* 0D6FEC 800D63EC 00000000 */ nop diff --git a/lib/src/os/__osViSwapContext.c b/lib/src/os/__osViSwapContext.c new file mode 100644 index 00000000..a58302a6 --- /dev/null +++ b/lib/src/os/__osViSwapContext.c @@ -0,0 +1,85 @@ +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x800D6090 */ + +#include "macros.h" +#include "libultra_internal.h" +#include "viint.h" + +//TODO: These variable declarations should really be elsewhere. +struct __osThreadTail +{ + OSThread *next; + OSPri priority; +} __osThreadTail; + +struct __osThreadTail __osThreadTail = {0, -1}; +OSThread *__osRunQueue = &__osThreadTail.next; +OSThread *__osActiveQueue = &__osThreadTail.next; + +extern OSThread *__osRunningThread = NULL; +extern OSThread *__osFaultedThread = NULL; + +void __osViSwapContext() { + register OSViMode *vm; + register __OSViContext *vc; + u32 origin; + u32 hStart; + u32 nomValue; + u32 field; + + field = 0; + vc = __osViNext; + vm = vc->modep; + + field = IO_READ(VI_CURRENT_REG) & 1; //field num + + origin = osVirtualToPhysical(vc->framep) + (vm->fldRegs[field].origin); + + if (vc->state & VI_STATE_XSCALE_UPDATED) { + vc->x.scale |= (vm->comRegs.xScale & ~VI_SCALE_MASK); + } else { + vc->x.scale = vm->comRegs.xScale; + } + + if (vc->state & VI_STATE_YSCALE_UPDATED) { + nomValue = vm->fldRegs[field].yScale & VI_SCALE_MASK; + vc->y.scale = vc->y.factor * nomValue; + vc->y.scale |= vm->fldRegs[field].yScale & ~VI_SCALE_MASK; + } else { + vc->y.scale = vm->fldRegs[field].yScale; + } + + hStart = vm->comRegs.hStart; + + if (vc->state & VI_STATE_BLACK) { + hStart = 0; + } + + if (vc->state & VI_STATE_REPEATLINE) { + vc->y.scale = 0; + origin = osVirtualToPhysical(vc->framep); + } + + if (vc->state & VI_STATE_FADE) { + vc->y.scale = (vc->y.offset << VI_SUBPIXEL_SH) & (VI_2_10_FPART_MASK << VI_SUBPIXEL_SH); + origin = osVirtualToPhysical(vc->framep); + } + + IO_WRITE(VI_ORIGIN_REG, origin); + IO_WRITE(VI_WIDTH_REG, vm->comRegs.width); + IO_WRITE(VI_BURST_REG, vm->comRegs.burst); + IO_WRITE(VI_V_SYNC_REG, vm->comRegs.vSync); + IO_WRITE(VI_H_SYNC_REG, vm->comRegs.hSync); + IO_WRITE(VI_LEAP_REG, vm->comRegs.leap); + IO_WRITE(VI_H_START_REG, hStart); + IO_WRITE(VI_V_START_REG, vm->fldRegs[field].vStart); + IO_WRITE(VI_V_BURST_REG, vm->fldRegs[field].vBurst); + IO_WRITE(VI_INTR_REG, vm->fldRegs[field].vIntr); + IO_WRITE(VI_X_SCALE_REG, vc->x.scale); + IO_WRITE(VI_Y_SCALE_REG, vc->y.scale); + IO_WRITE(VI_CONTROL_REG, vc->control); + + __osViNext = __osViCurr; + __osViCurr = vc; + *__osViNext = *__osViCurr; +} diff --git a/lib/src/os/unknown_0D6C90.c b/lib/src/os/unknown_0D6C90.c index d24c18e1..39e7d2b2 100644 --- a/lib/src/os/unknown_0D6C90.c +++ b/lib/src/os/unknown_0D6C90.c @@ -1,24 +1,10 @@ /* The comment below is needed for this file to be picked up by generate_ld */ -/* RAM_POS: 0x800D6090 */ +/* RAM_POS: 0x800D63EC */ #include "macros.h" #include "libultra_internal.h" #include "viint.h" -struct __osThreadTail -{ - OSThread *next; - OSPri priority; -} __osThreadTail; - -struct __osThreadTail __osThreadTail = {0, -1}; -OSThread *__osRunQueue = &__osThreadTail.next; -OSThread *__osActiveQueue = &__osThreadTail.next; - -extern OSThread *__osRunningThread = NULL; -extern OSThread *D_800E4894 = NULL; // __osFaultedThread - -GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/__osViSwapContext.s") GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/__osSpGetStatus.s") GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/__osSpSetPc.s") GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/__osSpRawStartDma.s")