Merge branch 'master' of https://github.com/zeldaret/tp into work7

This commit is contained in:
root 2023-01-27 17:49:42 -08:00
commit 401639f9fa
32 changed files with 312 additions and 893 deletions

View File

@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes)
.init | 97.972973% | 9280 | 9472
.extab | 100.000000% | 96 | 96
.extabindex | 100.000000% | 96 | 96
.text | 23.385005% | 841052 | 3596544
.text | 23.307153% | 838252 | 3596544
.ctors | 100.000000% | 448 | 448
.dtors | 100.000000% | 32 | 32
.rodata | 100.000000% | 193856 | 193856
.data | 100.000000% | 197632 | 197632
.sdata | 100.000000% | 1408 | 1408
.sdata2 | 100.000000% | 20832 | 20832
Total | 31.462104% | 1264988 | 4020672
Total | 31.392464% | 1262188 | 4020672
## Total
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 31.462104% | 1264988 | 4020672
main.dol | 31.392464% | 1262188 | 4020672
RELs | 33.041295% | 3799856 | 11500324
Total | 32.632210% | 5064844 | 15520996
Total | 32.614170% | 5062044 | 15520996
## RELs

View File

@ -1,44 +0,0 @@
lbl_80353E20:
/* 80353E20 7C 08 02 A6 */ mflr r0
/* 80353E24 90 01 00 04 */ stw r0, 4(r1)
/* 80353E28 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80353E2C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80353E30 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80353E34 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80353E38 93 81 00 10 */ stw r28, 0x10(r1)
/* 80353E3C 3B 83 00 00 */ addi r28, r3, 0
/* 80353E40 1C 9C 01 10 */ mulli r4, r28, 0x110
/* 80353E44 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */
/* 80353E48 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */
/* 80353E4C 7F E0 22 14 */ add r31, r0, r4
/* 80353E50 4B FE 98 A5 */ bl OSDisableInterrupts
/* 80353E54 7C 7D 1B 78 */ mr r29, r3
/* 80353E58 48 00 00 0C */ b lbl_80353E64
lbl_80353E5C:
/* 80353E5C 38 7F 00 8C */ addi r3, r31, 0x8c
/* 80353E60 4B FE DD 4D */ bl OSSleepThread
lbl_80353E64:
/* 80353E64 2C 1C 00 00 */ cmpwi r28, 0
/* 80353E68 41 80 00 0C */ blt lbl_80353E74
/* 80353E6C 2C 1C 00 02 */ cmpwi r28, 2
/* 80353E70 41 80 00 0C */ blt lbl_80353E7C
lbl_80353E74:
/* 80353E74 38 00 FF 80 */ li r0, -128
/* 80353E78 48 00 00 08 */ b lbl_80353E80
lbl_80353E7C:
/* 80353E7C 80 1F 00 04 */ lwz r0, 4(r31)
lbl_80353E80:
/* 80353E80 7C 1E 03 78 */ mr r30, r0
/* 80353E84 2C 1E FF FF */ cmpwi r30, -1
/* 80353E88 41 82 FF D4 */ beq lbl_80353E5C
/* 80353E8C 7F A3 EB 78 */ mr r3, r29
/* 80353E90 4B FE 98 8D */ bl OSRestoreInterrupts
/* 80353E94 7F C3 F3 78 */ mr r3, r30
/* 80353E98 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80353E9C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80353EA0 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80353EA4 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80353EA8 83 81 00 10 */ lwz r28, 0x10(r1)
/* 80353EAC 38 21 00 20 */ addi r1, r1, 0x20
/* 80353EB0 7C 08 03 A6 */ mtlr r0
/* 80353EB4 4E 80 00 20 */ blr

View File

@ -1,15 +0,0 @@
lbl_8035D5F8:
/* 8035D5F8 38 C0 00 61 */ li r6, 0x61
/* 8035D5FC 80 62 CB 80 */ lwz r3, __GXData(r2)
/* 8035D600 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */
/* 8035D604 3C 80 55 00 */ lis r4, 0x5500 /* 0x550003FF@ha */
/* 8035D608 98 C5 80 00 */ stb r6, 0x8000(r5) /* 0xCC008000@l */
/* 8035D60C 38 04 03 FF */ addi r0, r4, 0x03FF /* 0x550003FF@l */
/* 8035D610 90 05 80 00 */ stw r0, -0x8000(r5)
/* 8035D614 3C 80 56 00 */ lis r4, 0x5600 /* 0x560003FF@ha */
/* 8035D618 38 84 03 FF */ addi r4, r4, 0x03FF /* 0x560003FF@l */
/* 8035D61C 98 C5 80 00 */ stb r6, -0x8000(r5)
/* 8035D620 38 00 00 00 */ li r0, 0
/* 8035D624 90 85 80 00 */ stw r4, -0x8000(r5)
/* 8035D628 B0 03 00 02 */ sth r0, 2(r3)
/* 8035D62C 4E 80 00 20 */ blr

View File

@ -1,23 +0,0 @@
lbl_8035CC84:
/* 8035CC84 54 65 07 FE */ clrlwi r5, r3, 0x1f
/* 8035CC88 80 82 CB 80 */ lwz r4, __GXData(r2)
/* 8035CC8C 38 05 FF FF */ addi r0, r5, -1
/* 8035CC90 7C 05 00 34 */ cntlzw r5, r0
/* 8035CC94 80 04 01 EC */ lwz r0, 0x1ec(r4)
/* 8035CC98 54 A5 DE 3E */ rlwinm r5, r5, 0x1b, 0x18, 0x1f
/* 8035CC9C 54 63 07 BC */ rlwinm r3, r3, 0, 0x1e, 0x1e
/* 8035CCA0 50 A0 07 FE */ rlwimi r0, r5, 0, 0x1f, 0x1f
/* 8035CCA4 38 63 FF FE */ addi r3, r3, -2
/* 8035CCA8 90 04 01 EC */ stw r0, 0x1ec(r4)
/* 8035CCAC 7C 60 00 34 */ cntlzw r0, r3
/* 8035CCB0 54 03 DE 3E */ rlwinm r3, r0, 0x1b, 0x18, 0x1f
/* 8035CCB4 80 04 01 EC */ lwz r0, 0x1ec(r4)
/* 8035CCB8 50 60 0F BC */ rlwimi r0, r3, 1, 0x1e, 0x1e
/* 8035CCBC 90 04 01 EC */ stw r0, 0x1ec(r4)
/* 8035CCC0 80 04 01 FC */ lwz r0, 0x1fc(r4)
/* 8035CCC4 50 A0 07 FE */ rlwimi r0, r5, 0, 0x1f, 0x1f
/* 8035CCC8 90 04 01 FC */ stw r0, 0x1fc(r4)
/* 8035CCCC 80 04 01 FC */ lwz r0, 0x1fc(r4)
/* 8035CCD0 50 60 0F BC */ rlwimi r0, r3, 1, 0x1e, 0x1e
/* 8035CCD4 90 04 01 FC */ stw r0, 0x1fc(r4)
/* 8035CCD8 4E 80 00 20 */ blr

View File

@ -1,31 +0,0 @@
lbl_8035D070:
/* 8035D070 88 A3 00 00 */ lbz r5, 0(r3)
/* 8035D074 38 C0 00 00 */ li r6, 0
/* 8035D078 88 03 00 03 */ lbz r0, 3(r3)
/* 8035D07C 39 20 00 61 */ li r9, 0x61
/* 8035D080 50 A6 06 3E */ rlwimi r6, r5, 0, 0x18, 0x1f
/* 8035D084 3D 00 CC 01 */ lis r8, 0xCC01 /* 0xCC008000@ha */
/* 8035D088 80 A2 CB 80 */ lwz r5, __GXData(r2)
/* 8035D08C 50 06 44 2E */ rlwimi r6, r0, 8, 0x10, 0x17
/* 8035D090 99 28 80 00 */ stb r9, 0x8000(r8) /* 0xCC008000@l */
/* 8035D094 38 00 00 4F */ li r0, 0x4f
/* 8035D098 50 06 C0 0E */ rlwimi r6, r0, 0x18, 0, 7
/* 8035D09C 90 C8 80 00 */ stw r6, -0x8000(r8)
/* 8035D0A0 39 40 00 00 */ li r10, 0
/* 8035D0A4 38 C0 00 50 */ li r6, 0x50
/* 8035D0A8 88 E3 00 02 */ lbz r7, 2(r3)
/* 8035D0AC 39 60 00 00 */ li r11, 0
/* 8035D0B0 88 63 00 01 */ lbz r3, 1(r3)
/* 8035D0B4 38 00 00 51 */ li r0, 0x51
/* 8035D0B8 50 EB 06 3E */ rlwimi r11, r7, 0, 0x18, 0x1f
/* 8035D0BC 50 6B 44 2E */ rlwimi r11, r3, 8, 0x10, 0x17
/* 8035D0C0 99 28 80 00 */ stb r9, -0x8000(r8)
/* 8035D0C4 50 CB C0 0E */ rlwimi r11, r6, 0x18, 0, 7
/* 8035D0C8 91 68 80 00 */ stw r11, -0x8000(r8)
/* 8035D0CC 50 8A 02 3E */ rlwimi r10, r4, 0, 8, 0x1f
/* 8035D0D0 50 0A C0 0E */ rlwimi r10, r0, 0x18, 0, 7
/* 8035D0D4 99 28 80 00 */ stb r9, -0x8000(r8)
/* 8035D0D8 38 00 00 00 */ li r0, 0
/* 8035D0DC 91 48 80 00 */ stw r10, -0x8000(r8)
/* 8035D0E0 B0 05 00 02 */ sth r0, 2(r5)
/* 8035D0E4 4E 80 00 20 */ blr

View File

@ -1,14 +0,0 @@
lbl_8035CAFC:
/* 8035CAFC 80 82 CB 80 */ lwz r4, __GXData(r2)
/* 8035CB00 38 00 00 00 */ li r0, 0
/* 8035CB04 90 04 01 E8 */ stw r0, 0x1e8(r4)
/* 8035CB08 54 60 0C 3C */ rlwinm r0, r3, 1, 0x10, 0x1e
/* 8035CB0C 7C 00 2E 70 */ srawi r0, r0, 5
/* 8035CB10 80 64 01 E8 */ lwz r3, 0x1e8(r4)
/* 8035CB14 50 03 05 BE */ rlwimi r3, r0, 0, 0x16, 0x1f
/* 8035CB18 38 00 00 4D */ li r0, 0x4d
/* 8035CB1C 90 64 01 E8 */ stw r3, 0x1e8(r4)
/* 8035CB20 80 64 01 E8 */ lwz r3, 0x1e8(r4)
/* 8035CB24 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7
/* 8035CB28 90 64 01 E8 */ stw r3, 0x1e8(r4)
/* 8035CB2C 4E 80 00 20 */ blr

View File

@ -1,10 +0,0 @@
lbl_8035CC60:
/* 8035CC60 80 A2 CB 80 */ lwz r5, __GXData(r2)
/* 8035CC64 38 00 00 00 */ li r0, 0
/* 8035CC68 80 85 01 EC */ lwz r4, 0x1ec(r5)
/* 8035CC6C 50 64 64 A6 */ rlwimi r4, r3, 0xc, 0x12, 0x13
/* 8035CC70 90 85 01 EC */ stw r4, 0x1ec(r5)
/* 8035CC74 80 65 01 FC */ lwz r3, 0x1fc(r5)
/* 8035CC78 50 03 64 A6 */ rlwimi r3, r0, 0xc, 0x12, 0x13
/* 8035CC7C 90 65 01 FC */ stw r3, 0x1fc(r5)
/* 8035CC80 4E 80 00 20 */ blr

View File

@ -1,6 +0,0 @@
lbl_8035D2F0:
/* 8035D2F0 80 82 CB 80 */ lwz r4, __GXData(r2)
/* 8035D2F4 80 04 01 EC */ lwz r0, 0x1ec(r4)
/* 8035D2F8 50 60 3D F0 */ rlwimi r0, r3, 7, 0x17, 0x18
/* 8035D2FC 90 04 01 EC */ stw r0, 0x1ec(r4)
/* 8035D300 4E 80 00 20 */ blr

View File

@ -1,32 +0,0 @@
lbl_8035CA04:
/* 8035CA04 81 02 CB 80 */ lwz r8, __GXData(r2)
/* 8035CA08 39 20 00 00 */ li r9, 0
/* 8035CA0C 54 A7 04 3E */ clrlwi r7, r5, 0x10
/* 8035CA10 91 28 01 E0 */ stw r9, 0x1e0(r8)
/* 8035CA14 54 C5 04 3E */ clrlwi r5, r6, 0x10
/* 8035CA18 54 60 04 3E */ clrlwi r0, r3, 0x10
/* 8035CA1C 80 68 01 E0 */ lwz r3, 0x1e0(r8)
/* 8035CA20 50 03 05 BE */ rlwimi r3, r0, 0, 0x16, 0x1f
/* 8035CA24 54 80 04 3E */ clrlwi r0, r4, 0x10
/* 8035CA28 90 68 01 E0 */ stw r3, 0x1e0(r8)
/* 8035CA2C 38 C0 00 49 */ li r6, 0x49
/* 8035CA30 38 87 FF FF */ addi r4, r7, -1
/* 8035CA34 80 E8 01 E0 */ lwz r7, 0x1e0(r8)
/* 8035CA38 50 07 53 2A */ rlwimi r7, r0, 0xa, 0xc, 0x15
/* 8035CA3C 38 65 FF FF */ addi r3, r5, -1
/* 8035CA40 90 E8 01 E0 */ stw r7, 0x1e0(r8)
/* 8035CA44 38 00 00 4A */ li r0, 0x4a
/* 8035CA48 80 A8 01 E0 */ lwz r5, 0x1e0(r8)
/* 8035CA4C 50 C5 C0 0E */ rlwimi r5, r6, 0x18, 0, 7
/* 8035CA50 90 A8 01 E0 */ stw r5, 0x1e0(r8)
/* 8035CA54 91 28 01 E4 */ stw r9, 0x1e4(r8)
/* 8035CA58 80 A8 01 E4 */ lwz r5, 0x1e4(r8)
/* 8035CA5C 50 85 05 BE */ rlwimi r5, r4, 0, 0x16, 0x1f
/* 8035CA60 90 A8 01 E4 */ stw r5, 0x1e4(r8)
/* 8035CA64 80 88 01 E4 */ lwz r4, 0x1e4(r8)
/* 8035CA68 50 64 53 2A */ rlwimi r4, r3, 0xa, 0xc, 0x15
/* 8035CA6C 90 88 01 E4 */ stw r4, 0x1e4(r8)
/* 8035CA70 80 68 01 E4 */ lwz r3, 0x1e4(r8)
/* 8035CA74 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7
/* 8035CA78 90 68 01 E4 */ stw r3, 0x1e4(r8)
/* 8035CA7C 4E 80 00 20 */ blr

View File

@ -1,32 +0,0 @@
lbl_8035CA80:
/* 8035CA80 81 02 CB 80 */ lwz r8, __GXData(r2)
/* 8035CA84 39 20 00 00 */ li r9, 0
/* 8035CA88 54 A7 04 3E */ clrlwi r7, r5, 0x10
/* 8035CA8C 91 28 01 F0 */ stw r9, 0x1f0(r8)
/* 8035CA90 54 C5 04 3E */ clrlwi r5, r6, 0x10
/* 8035CA94 54 60 04 3E */ clrlwi r0, r3, 0x10
/* 8035CA98 80 68 01 F0 */ lwz r3, 0x1f0(r8)
/* 8035CA9C 50 03 05 BE */ rlwimi r3, r0, 0, 0x16, 0x1f
/* 8035CAA0 54 80 04 3E */ clrlwi r0, r4, 0x10
/* 8035CAA4 90 68 01 F0 */ stw r3, 0x1f0(r8)
/* 8035CAA8 38 C0 00 49 */ li r6, 0x49
/* 8035CAAC 38 87 FF FF */ addi r4, r7, -1
/* 8035CAB0 80 E8 01 F0 */ lwz r7, 0x1f0(r8)
/* 8035CAB4 50 07 53 2A */ rlwimi r7, r0, 0xa, 0xc, 0x15
/* 8035CAB8 38 65 FF FF */ addi r3, r5, -1
/* 8035CABC 90 E8 01 F0 */ stw r7, 0x1f0(r8)
/* 8035CAC0 38 00 00 4A */ li r0, 0x4a
/* 8035CAC4 80 A8 01 F0 */ lwz r5, 0x1f0(r8)
/* 8035CAC8 50 C5 C0 0E */ rlwimi r5, r6, 0x18, 0, 7
/* 8035CACC 90 A8 01 F0 */ stw r5, 0x1f0(r8)
/* 8035CAD0 91 28 01 F4 */ stw r9, 0x1f4(r8)
/* 8035CAD4 80 A8 01 F4 */ lwz r5, 0x1f4(r8)
/* 8035CAD8 50 85 05 BE */ rlwimi r5, r4, 0, 0x16, 0x1f
/* 8035CADC 90 A8 01 F4 */ stw r5, 0x1f4(r8)
/* 8035CAE0 80 88 01 F4 */ lwz r4, 0x1f4(r8)
/* 8035CAE4 50 64 53 2A */ rlwimi r4, r3, 0xa, 0xc, 0x15
/* 8035CAE8 90 88 01 F4 */ stw r4, 0x1f4(r8)
/* 8035CAEC 80 68 01 F4 */ lwz r3, 0x1f4(r8)
/* 8035CAF0 50 03 C0 0E */ rlwimi r3, r0, 0x18, 0, 7
/* 8035CAF4 90 68 01 F4 */ stw r3, 0x1f4(r8)
/* 8035CAF8 4E 80 00 20 */ blr

View File

@ -1,12 +0,0 @@
lbl_80359318:
/* 80359318 28 03 00 14 */ cmplwi r3, 0x14
/* 8035931C 41 80 00 0C */ blt lbl_80359328
/* 80359320 38 60 00 00 */ li r3, 0
/* 80359324 48 00 00 14 */ b lbl_80359338
lbl_80359328:
/* 80359328 54 63 20 36 */ slwi r3, r3, 4
/* 8035932C 80 02 CB 80 */ lwz r0, __GXData(r2)
/* 80359330 38 63 03 88 */ addi r3, r3, 0x388
/* 80359334 7C 60 1A 14 */ add r3, r0, r3
lbl_80359338:
/* 80359338 4E 80 00 20 */ blr

View File

@ -1,66 +0,0 @@
lbl_80346290:
/* 80346290 7C 08 02 A6 */ mflr r0
/* 80346294 90 01 00 04 */ stw r0, 4(r1)
/* 80346298 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8034629C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 803462A0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 803462A4 93 A1 00 14 */ stw r29, 0x14(r1)
/* 803462A8 3B A3 00 00 */ addi r29, r3, 0
/* 803462AC 28 1D 00 0B */ cmplwi r29, 0xb
/* 803462B0 3C 60 80 3D */ lis r3, XYNTSC@ha /* 0x803D12D0@ha */
/* 803462B4 3B E3 12 D0 */ addi r31, r3, XYNTSC@l /* 0x803D12D0@l */
/* 803462B8 40 81 00 08 */ ble lbl_803462C0
/* 803462BC 3B A0 00 0B */ li r29, 0xb
lbl_803462C0:
/* 803462C0 4B FF 74 35 */ bl OSDisableInterrupts
/* 803462C4 93 AD 91 80 */ stw r29, SamplingRate(r13)
/* 803462C8 7C 7E 1B 78 */ mr r30, r3
/* 803462CC 48 00 77 D1 */ bl VIGetTvFormat
/* 803462D0 2C 03 00 02 */ cmpwi r3, 2
/* 803462D4 41 82 00 24 */ beq lbl_803462F8
/* 803462D8 40 80 00 14 */ bge lbl_803462EC
/* 803462DC 2C 03 00 00 */ cmpwi r3, 0
/* 803462E0 41 82 00 18 */ beq lbl_803462F8
/* 803462E4 40 80 00 1C */ bge lbl_80346300
/* 803462E8 48 00 00 20 */ b lbl_80346308
lbl_803462EC:
/* 803462EC 2C 03 00 05 */ cmpwi r3, 5
/* 803462F0 41 82 00 08 */ beq lbl_803462F8
/* 803462F4 48 00 00 14 */ b lbl_80346308
lbl_803462F8:
/* 803462F8 7F E4 FB 78 */ mr r4, r31
/* 803462FC 48 00 00 20 */ b lbl_8034631C
lbl_80346300:
/* 80346300 38 9F 00 30 */ addi r4, r31, 0x30
/* 80346304 48 00 00 18 */ b lbl_8034631C
lbl_80346308:
/* 80346308 38 7F 00 60 */ addi r3, r31, 0x60
/* 8034630C 4C C6 31 82 */ crclr 6
/* 80346310 4B CC 07 AD */ bl OSReport
/* 80346314 3B A0 00 00 */ li r29, 0
/* 80346318 38 9F 00 00 */ addi r4, r31, 0
lbl_8034631C:
/* 8034631C 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC00206C@ha */
/* 80346320 A0 03 20 6C */ lhz r0, 0x206C(r3) /* 0xCC00206C@l */
/* 80346324 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 80346328 41 82 00 0C */ beq lbl_80346334
/* 8034632C 38 A0 00 02 */ li r5, 2
/* 80346330 48 00 00 08 */ b lbl_80346338
lbl_80346334:
/* 80346334 38 A0 00 01 */ li r5, 1
lbl_80346338:
/* 80346338 57 A3 10 3A */ slwi r3, r29, 2
/* 8034633C 7C 04 1A 2E */ lhzx r0, r4, r3
/* 80346340 7C 64 1A 14 */ add r3, r4, r3
/* 80346344 88 83 00 02 */ lbz r4, 2(r3)
/* 80346348 7C 65 01 D6 */ mullw r3, r5, r0
/* 8034634C 4B FF F4 A9 */ bl SISetXY
/* 80346350 7F C3 F3 78 */ mr r3, r30
/* 80346354 4B FF 73 C9 */ bl OSRestoreInterrupts
/* 80346358 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8034635C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80346360 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80346364 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80346368 38 21 00 20 */ addi r1, r1, 0x20
/* 8034636C 7C 08 03 A6 */ mtlr r0
/* 80346370 4E 80 00 20 */ blr

View File

@ -1,16 +0,0 @@
lbl_8034DB04:
/* 8034DB04 7C 08 02 A6 */ mflr r0
/* 8034DB08 90 01 00 04 */ stw r0, 4(r1)
/* 8034DB0C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8034DB10 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8034DB14 4B FE FB E1 */ bl OSDisableInterrupts
/* 8034DB18 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC00206E@ha */
/* 8034DB1C A0 04 20 6E */ lhz r0, 0x206E(r4) /* 0xCC00206E@l */
/* 8034DB20 54 1F 07 BE */ clrlwi r31, r0, 0x1e
/* 8034DB24 4B FE FB F9 */ bl OSRestoreInterrupts
/* 8034DB28 57 E3 07 FE */ clrlwi r3, r31, 0x1f
/* 8034DB2C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8034DB30 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8034DB34 38 21 00 10 */ addi r1, r1, 0x10
/* 8034DB38 7C 08 03 A6 */ mtlr r0
/* 8034DB3C 4E 80 00 20 */ blr

View File

@ -1,32 +0,0 @@
lbl_8034D840:
/* 8034D840 7C 08 02 A6 */ mflr r0
/* 8034D844 3C 80 80 45 */ lis r4, regs@ha /* 0x8044CA28@ha */
/* 8034D848 90 01 00 04 */ stw r0, 4(r1)
/* 8034D84C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8034D850 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8034D854 3B E4 CA 28 */ addi r31, r4, regs@l /* 0x8044CA28@l */
/* 8034D858 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8034D85C 3B C3 00 00 */ addi r30, r3, 0
/* 8034D860 4B FE FE 95 */ bl OSDisableInterrupts
/* 8034D864 93 DF 01 30 */ stw r30, 0x130(r31)
/* 8034D868 7C 7E 1B 78 */ mr r30, r3
/* 8034D86C 81 5F 01 44 */ lwz r10, 0x144(r31)
/* 8034D870 80 1F 01 30 */ lwz r0, 0x130(r31)
/* 8034D874 90 01 00 08 */ stw r0, 8(r1)
/* 8034D878 A0 7F 00 FA */ lhz r3, 0xfa(r31)
/* 8034D87C A0 9F 00 F6 */ lhz r4, 0xf6(r31)
/* 8034D880 88 AA 00 00 */ lbz r5, 0(r10)
/* 8034D884 A0 CA 00 02 */ lhz r6, 2(r10)
/* 8034D888 A0 EA 00 04 */ lhz r7, 4(r10)
/* 8034D88C A1 0A 00 06 */ lhz r8, 6(r10)
/* 8034D890 A1 2A 00 08 */ lhz r9, 8(r10)
/* 8034D894 A1 4A 00 0A */ lhz r10, 0xa(r10)
/* 8034D898 4B FF F4 55 */ bl setVerticalRegs
/* 8034D89C 7F C3 F3 78 */ mr r3, r30
/* 8034D8A0 4B FE FE 7D */ bl OSRestoreInterrupts
/* 8034D8A4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8034D8A8 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8034D8AC 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8034D8B0 38 21 00 20 */ addi r1, r1, 0x20
/* 8034D8B4 7C 08 03 A6 */ mtlr r0
/* 8034D8B8 4E 80 00 20 */ blr

View File

@ -1,28 +0,0 @@
lbl_8034D7C4:
/* 8034D7C4 7C 08 02 A6 */ mflr r0
/* 8034D7C8 3C 80 80 45 */ lis r4, regs@ha /* 0x8044CA28@ha */
/* 8034D7CC 90 01 00 04 */ stw r0, 4(r1)
/* 8034D7D0 94 21 FF E8 */ stwu r1, -0x18(r1)
/* 8034D7D4 93 E1 00 14 */ stw r31, 0x14(r1)
/* 8034D7D8 3B E4 CA 28 */ addi r31, r4, regs@l /* 0x8044CA28@l */
/* 8034D7DC 93 C1 00 10 */ stw r30, 0x10(r1)
/* 8034D7E0 3B C3 00 00 */ addi r30, r3, 0
/* 8034D7E4 4B FE FF 11 */ bl OSDisableInterrupts
/* 8034D7E8 93 DF 01 20 */ stw r30, 0x120(r31)
/* 8034D7EC 38 00 00 01 */ li r0, 1
/* 8034D7F0 3B C3 00 00 */ addi r30, r3, 0
/* 8034D7F4 90 0D 92 B8 */ stw r0, FBSet(r13)
/* 8034D7F8 38 7F 00 F0 */ addi r3, r31, 0xf0
/* 8034D7FC 38 9F 01 24 */ addi r4, r31, 0x124
/* 8034D800 38 BF 01 28 */ addi r5, r31, 0x128
/* 8034D804 38 DF 01 3C */ addi r6, r31, 0x13c
/* 8034D808 38 FF 01 40 */ addi r7, r31, 0x140
/* 8034D80C 4B FF F2 0D */ bl setFbbRegs
/* 8034D810 7F C3 F3 78 */ mr r3, r30
/* 8034D814 4B FE FF 09 */ bl OSRestoreInterrupts
/* 8034D818 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 8034D81C 83 E1 00 14 */ lwz r31, 0x14(r1)
/* 8034D820 83 C1 00 10 */ lwz r30, 0x10(r1)
/* 8034D824 38 21 00 18 */ addi r1, r1, 0x18
/* 8034D828 7C 08 03 A6 */ mtlr r0
/* 8034D82C 4E 80 00 20 */ blr

View File

@ -1,18 +0,0 @@
lbl_8034C224:
/* 8034C224 7C 08 02 A6 */ mflr r0
/* 8034C228 90 01 00 04 */ stw r0, 4(r1)
/* 8034C22C 94 21 FF E8 */ stwu r1, -0x18(r1)
/* 8034C230 93 E1 00 14 */ stw r31, 0x14(r1)
/* 8034C234 93 C1 00 10 */ stw r30, 0x10(r1)
/* 8034C238 7C 7E 1B 78 */ mr r30, r3
/* 8034C23C 83 ED 92 78 */ lwz r31, PostCB(r13)
/* 8034C240 4B FF 14 B5 */ bl OSDisableInterrupts
/* 8034C244 93 CD 92 78 */ stw r30, PostCB(r13)
/* 8034C248 4B FF 14 D5 */ bl OSRestoreInterrupts
/* 8034C24C 7F E3 FB 78 */ mr r3, r31
/* 8034C250 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 8034C254 83 E1 00 14 */ lwz r31, 0x14(r1)
/* 8034C258 83 C1 00 10 */ lwz r30, 0x10(r1)
/* 8034C25C 38 21 00 18 */ addi r1, r1, 0x18
/* 8034C260 7C 08 03 A6 */ mtlr r0
/* 8034C264 4E 80 00 20 */ blr

View File

@ -1,18 +0,0 @@
lbl_8034C1E0:
/* 8034C1E0 7C 08 02 A6 */ mflr r0
/* 8034C1E4 90 01 00 04 */ stw r0, 4(r1)
/* 8034C1E8 94 21 FF E8 */ stwu r1, -0x18(r1)
/* 8034C1EC 93 E1 00 14 */ stw r31, 0x14(r1)
/* 8034C1F0 93 C1 00 10 */ stw r30, 0x10(r1)
/* 8034C1F4 7C 7E 1B 78 */ mr r30, r3
/* 8034C1F8 83 ED 92 74 */ lwz r31, PreCB(r13)
/* 8034C1FC 4B FF 14 F9 */ bl OSDisableInterrupts
/* 8034C200 93 CD 92 74 */ stw r30, PreCB(r13)
/* 8034C204 4B FF 15 19 */ bl OSRestoreInterrupts
/* 8034C208 7F E3 FB 78 */ mr r3, r31
/* 8034C20C 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 8034C210 83 E1 00 14 */ lwz r31, 0x14(r1)
/* 8034C214 83 C1 00 10 */ lwz r30, 0x10(r1)
/* 8034C218 38 21 00 18 */ addi r1, r1, 0x18
/* 8034C21C 7C 08 03 A6 */ mtlr r0
/* 8034C220 4E 80 00 20 */ blr

View File

@ -1,23 +0,0 @@
lbl_8034C9C4:
/* 8034C9C4 7C 08 02 A6 */ mflr r0
/* 8034C9C8 90 01 00 04 */ stw r0, 4(r1)
/* 8034C9CC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8034C9D0 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8034C9D4 93 C1 00 08 */ stw r30, 8(r1)
/* 8034C9D8 4B FF 0D 1D */ bl OSDisableInterrupts
/* 8034C9DC 83 CD 92 64 */ lwz r30, retraceCount(r13)
/* 8034C9E0 7C 7F 1B 78 */ mr r31, r3
lbl_8034C9E4:
/* 8034C9E4 38 6D 92 6C */ la r3, retraceQueue(r13) /* 804517EC-_SDA_BASE_ */
/* 8034C9E8 4B FF 51 C5 */ bl OSSleepThread
/* 8034C9EC 80 0D 92 64 */ lwz r0, retraceCount(r13)
/* 8034C9F0 7C 1E 00 40 */ cmplw r30, r0
/* 8034C9F4 41 82 FF F0 */ beq lbl_8034C9E4
/* 8034C9F8 7F E3 FB 78 */ mr r3, r31
/* 8034C9FC 4B FF 0D 21 */ bl OSRestoreInterrupts
/* 8034CA00 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8034CA04 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8034CA08 83 C1 00 08 */ lwz r30, 8(r1)
/* 8034CA0C 38 21 00 10 */ addi r1, r1, 0x10
/* 8034CA10 7C 08 03 A6 */ mtlr r0
/* 8034CA14 4E 80 00 20 */ blr

View File

@ -1,261 +0,0 @@
lbl_80344238:
/* 80344238 7C 08 02 A6 */ mflr r0
/* 8034423C 90 01 00 04 */ stw r0, 4(r1)
/* 80344240 94 21 FF B8 */ stwu r1, -0x48(r1)
/* 80344244 BE E1 00 24 */ stmw r23, 0x24(r1)
/* 80344248 7C 79 1B 79 */ or. r25, r3, r3
/* 8034424C 3B 44 00 00 */ addi r26, r4, 0
/* 80344250 3B 65 00 00 */ addi r27, r5, 0
/* 80344254 54 64 30 32 */ slwi r4, r3, 6
/* 80344258 3C 60 80 45 */ lis r3, Ecb@ha /* 0x8044C570@ha */
/* 8034425C 38 03 C5 70 */ addi r0, r3, Ecb@l /* 0x8044C570@l */
/* 80344260 7F E0 22 14 */ add r31, r0, r4
/* 80344264 40 82 00 24 */ bne lbl_80344288
/* 80344268 28 1A 00 02 */ cmplwi r26, 2
/* 8034426C 40 82 00 1C */ bne lbl_80344288
/* 80344270 80 0D 91 58 */ lwz r0, IDSerialPort1(r13)
/* 80344274 28 00 00 00 */ cmplwi r0, 0
/* 80344278 41 82 00 10 */ beq lbl_80344288
/* 8034427C 90 1B 00 00 */ stw r0, 0(r27)
/* 80344280 38 60 00 01 */ li r3, 1
/* 80344284 48 00 03 50 */ b lbl_803445D4
lbl_80344288:
/* 80344288 2C 19 00 02 */ cmpwi r25, 2
/* 8034428C 40 80 00 E0 */ bge lbl_8034436C
/* 80344290 28 1A 00 00 */ cmplwi r26, 0
/* 80344294 40 82 00 D8 */ bne lbl_8034436C
/* 80344298 7F 23 CB 78 */ mr r3, r25
/* 8034429C 4B FF F1 5D */ bl __EXIProbe
/* 803442A0 2C 03 00 00 */ cmpwi r3, 0
/* 803442A4 40 82 00 0C */ bne lbl_803442B0
/* 803442A8 38 60 00 00 */ li r3, 0
/* 803442AC 48 00 03 28 */ b lbl_803445D4
lbl_803442B0:
/* 803442B0 80 9F 00 20 */ lwz r4, 0x20(r31)
/* 803442B4 57 20 10 3A */ slwi r0, r25, 2
/* 803442B8 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030C0@ha */
/* 803442BC 3B C3 30 C0 */ addi r30, r3, 0x30C0 /* 0x800030C0@l */
/* 803442C0 7F DE 02 14 */ add r30, r30, r0
/* 803442C4 80 1E 00 00 */ lwz r0, 0(r30)
/* 803442C8 7C 04 00 00 */ cmpw r4, r0
/* 803442CC 40 82 00 14 */ bne lbl_803442E0
/* 803442D0 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 803442D4 90 1B 00 00 */ stw r0, 0(r27)
/* 803442D8 80 7F 00 20 */ lwz r3, 0x20(r31)
/* 803442DC 48 00 02 F8 */ b lbl_803445D4
lbl_803442E0:
/* 803442E0 4B FF 94 15 */ bl OSDisableInterrupts
/* 803442E4 7C 7C 1B 78 */ mr r28, r3
/* 803442E8 80 1F 00 0C */ lwz r0, 0xc(r31)
/* 803442EC 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c
/* 803442F0 40 82 00 14 */ bne lbl_80344304
/* 803442F4 7F 23 CB 78 */ mr r3, r25
/* 803442F8 4B FF F1 01 */ bl __EXIProbe
/* 803442FC 2C 03 00 00 */ cmpwi r3, 0
/* 80344300 40 82 00 14 */ bne lbl_80344314
lbl_80344304:
/* 80344304 7F 83 E3 78 */ mr r3, r28
/* 80344308 4B FF 94 15 */ bl OSRestoreInterrupts
/* 8034430C 38 00 00 00 */ li r0, 0
/* 80344310 48 00 00 48 */ b lbl_80344358
lbl_80344314:
/* 80344314 38 79 00 00 */ addi r3, r25, 0
/* 80344318 38 80 00 01 */ li r4, 1
/* 8034431C 38 A0 00 00 */ li r5, 0
/* 80344320 38 C0 00 00 */ li r6, 0
/* 80344324 4B FF F0 11 */ bl EXIClearInterrupts
/* 80344328 38 00 00 00 */ li r0, 0
/* 8034432C 90 1F 00 08 */ stw r0, 8(r31)
/* 80344330 3C 60 00 10 */ lis r3, 0x10
/* 80344334 1C 19 00 03 */ mulli r0, r25, 3
/* 80344338 7C 63 04 30 */ srw r3, r3, r0
/* 8034433C 4B FF 98 09 */ bl __OSUnmaskInterrupts
/* 80344340 80 1F 00 0C */ lwz r0, 0xc(r31)
/* 80344344 60 00 00 08 */ ori r0, r0, 8
/* 80344348 90 1F 00 0C */ stw r0, 0xc(r31)
/* 8034434C 7F 83 E3 78 */ mr r3, r28
/* 80344350 4B FF 93 CD */ bl OSRestoreInterrupts
/* 80344354 38 00 00 01 */ li r0, 1
lbl_80344358:
/* 80344358 2C 00 00 00 */ cmpwi r0, 0
/* 8034435C 40 82 00 0C */ bne lbl_80344368
/* 80344360 38 60 00 00 */ li r3, 0
/* 80344364 48 00 02 70 */ b lbl_803445D4
lbl_80344368:
/* 80344368 83 BE 00 00 */ lwz r29, 0(r30)
lbl_8034436C:
/* 8034436C 4B FF 93 89 */ bl OSDisableInterrupts
/* 80344370 3B 83 00 00 */ addi r28, r3, 0
/* 80344374 38 00 00 00 */ li r0, 0
/* 80344378 2C 19 00 02 */ cmpwi r25, 2
/* 8034437C 40 80 00 10 */ bge lbl_8034438C
/* 80344380 28 1A 00 00 */ cmplwi r26, 0
/* 80344384 40 82 00 08 */ bne lbl_8034438C
/* 80344388 38 00 00 01 */ li r0, 1
lbl_8034438C:
/* 8034438C 2C 00 00 00 */ cmpwi r0, 0
/* 80344390 41 82 00 10 */ beq lbl_803443A0
/* 80344394 3C 60 80 34 */ lis r3, UnlockedHandler@ha /* 0x80344210@ha */
/* 80344398 38 A3 42 10 */ addi r5, r3, UnlockedHandler@l /* 0x80344210@l */
/* 8034439C 48 00 00 08 */ b lbl_803443A4
lbl_803443A0:
/* 803443A0 38 A0 00 00 */ li r5, 0
lbl_803443A4:
/* 803443A4 38 79 00 00 */ addi r3, r25, 0
/* 803443A8 38 9A 00 00 */ addi r4, r26, 0
/* 803443AC 4B FF FC 7D */ bl EXILock
/* 803443B0 7C 60 00 34 */ cntlzw r0, r3
/* 803443B4 54 00 D9 7E */ srwi r0, r0, 5
/* 803443B8 7C 1E 03 79 */ or. r30, r0, r0
/* 803443BC 40 82 01 34 */ bne lbl_803444F0
/* 803443C0 38 79 00 00 */ addi r3, r25, 0
/* 803443C4 38 9A 00 00 */ addi r4, r26, 0
/* 803443C8 38 A0 00 00 */ li r5, 0
/* 803443CC 4B FF F4 9D */ bl EXISelect
/* 803443D0 7C 60 00 34 */ cntlzw r0, r3
/* 803443D4 54 00 D9 7E */ srwi r0, r0, 5
/* 803443D8 7C 1E 03 79 */ or. r30, r0, r0
/* 803443DC 40 82 00 90 */ bne lbl_8034446C
/* 803443E0 38 00 00 00 */ li r0, 0
/* 803443E4 90 01 00 1C */ stw r0, 0x1c(r1)
/* 803443E8 38 79 00 00 */ addi r3, r25, 0
/* 803443EC 38 81 00 1C */ addi r4, r1, 0x1c
/* 803443F0 38 A0 00 02 */ li r5, 2
/* 803443F4 38 C0 00 01 */ li r6, 1
/* 803443F8 38 E0 00 00 */ li r7, 0
/* 803443FC 4B FF E9 05 */ bl EXIImm
/* 80344400 7C 60 00 34 */ cntlzw r0, r3
/* 80344404 54 00 D9 7E */ srwi r0, r0, 5
/* 80344408 7F DE 03 78 */ or r30, r30, r0
/* 8034440C 38 79 00 00 */ addi r3, r25, 0
/* 80344410 4B FF EC D9 */ bl EXISync
/* 80344414 7C 60 00 34 */ cntlzw r0, r3
/* 80344418 54 00 D9 7E */ srwi r0, r0, 5
/* 8034441C 7F DE 03 78 */ or r30, r30, r0
/* 80344420 38 79 00 00 */ addi r3, r25, 0
/* 80344424 38 9B 00 00 */ addi r4, r27, 0
/* 80344428 38 A0 00 04 */ li r5, 4
/* 8034442C 38 C0 00 00 */ li r6, 0
/* 80344430 38 E0 00 00 */ li r7, 0
/* 80344434 4B FF E8 CD */ bl EXIImm
/* 80344438 7C 60 00 34 */ cntlzw r0, r3
/* 8034443C 54 00 D9 7E */ srwi r0, r0, 5
/* 80344440 7F DE 03 78 */ or r30, r30, r0
/* 80344444 38 79 00 00 */ addi r3, r25, 0
/* 80344448 4B FF EC A1 */ bl EXISync
/* 8034444C 7C 60 00 34 */ cntlzw r0, r3
/* 80344450 54 00 D9 7E */ srwi r0, r0, 5
/* 80344454 7F DE 03 78 */ or r30, r30, r0
/* 80344458 38 79 00 00 */ addi r3, r25, 0
/* 8034445C 4B FF F5 39 */ bl EXIDeselect
/* 80344460 7C 60 00 34 */ cntlzw r0, r3
/* 80344464 54 00 D9 7E */ srwi r0, r0, 5
/* 80344468 7F DE 03 78 */ or r30, r30, r0
lbl_8034446C:
/* 8034446C 4B FF 92 89 */ bl OSDisableInterrupts
/* 80344470 7C 77 1B 78 */ mr r23, r3
/* 80344474 80 1F 00 0C */ lwz r0, 0xc(r31)
/* 80344478 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
/* 8034447C 40 82 00 10 */ bne lbl_8034448C
/* 80344480 7E E3 BB 78 */ mr r3, r23
/* 80344484 4B FF 92 99 */ bl OSRestoreInterrupts
/* 80344488 48 00 00 68 */ b lbl_803444F0
lbl_8034448C:
/* 8034448C 80 1F 00 0C */ lwz r0, 0xc(r31)
/* 80344490 54 00 07 34 */ rlwinm r0, r0, 0, 0x1c, 0x1a
/* 80344494 90 1F 00 0C */ stw r0, 0xc(r31)
/* 80344498 38 79 00 00 */ addi r3, r25, 0
/* 8034449C 38 9F 00 00 */ addi r4, r31, 0
/* 803444A0 4B FF E7 6D */ bl SetExiInterruptMask
/* 803444A4 80 7F 00 24 */ lwz r3, 0x24(r31)
/* 803444A8 2C 03 00 00 */ cmpwi r3, 0
/* 803444AC 40 81 00 3C */ ble lbl_803444E8
/* 803444B0 83 1F 00 2C */ lwz r24, 0x2c(r31)
/* 803444B4 34 03 FF FF */ addic. r0, r3, -1
/* 803444B8 90 1F 00 24 */ stw r0, 0x24(r31)
/* 803444BC 40 81 00 18 */ ble lbl_803444D4
/* 803444C0 38 7F 00 28 */ addi r3, r31, 0x28
/* 803444C4 38 9F 00 30 */ addi r4, r31, 0x30
/* 803444C8 80 1F 00 24 */ lwz r0, 0x24(r31)
/* 803444CC 54 05 18 38 */ slwi r5, r0, 3
/* 803444D0 48 02 1C 61 */ bl memmove
lbl_803444D4:
/* 803444D4 38 79 00 00 */ addi r3, r25, 0
/* 803444D8 38 80 00 00 */ li r4, 0
/* 803444DC 39 98 00 00 */ addi r12, r24, 0
/* 803444E0 7D 88 03 A6 */ mtlr r12
/* 803444E4 4E 80 00 21 */ blrl
lbl_803444E8:
/* 803444E8 7E E3 BB 78 */ mr r3, r23
/* 803444EC 4B FF 92 31 */ bl OSRestoreInterrupts
lbl_803444F0:
/* 803444F0 7F 83 E3 78 */ mr r3, r28
/* 803444F4 4B FF 92 29 */ bl OSRestoreInterrupts
/* 803444F8 2C 19 00 02 */ cmpwi r25, 2
/* 803444FC 40 80 00 C4 */ bge lbl_803445C0
/* 80344500 28 1A 00 00 */ cmplwi r26, 0
/* 80344504 40 82 00 BC */ bne lbl_803445C0
/* 80344508 4B FF 91 ED */ bl OSDisableInterrupts
/* 8034450C 7C 77 1B 78 */ mr r23, r3
/* 80344510 80 1F 00 0C */ lwz r0, 0xc(r31)
/* 80344514 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c
/* 80344518 40 82 00 10 */ bne lbl_80344528
/* 8034451C 7E E3 BB 78 */ mr r3, r23
/* 80344520 4B FF 91 FD */ bl OSRestoreInterrupts
/* 80344524 48 00 00 4C */ b lbl_80344570
lbl_80344528:
/* 80344528 80 1F 00 0C */ lwz r0, 0xc(r31)
/* 8034452C 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
/* 80344530 41 82 00 1C */ beq lbl_8034454C
/* 80344534 80 1F 00 18 */ lwz r0, 0x18(r31)
/* 80344538 28 00 00 00 */ cmplwi r0, 0
/* 8034453C 40 82 00 10 */ bne lbl_8034454C
/* 80344540 7E E3 BB 78 */ mr r3, r23
/* 80344544 4B FF 91 D9 */ bl OSRestoreInterrupts
/* 80344548 48 00 00 28 */ b lbl_80344570
lbl_8034454C:
/* 8034454C 80 1F 00 0C */ lwz r0, 0xc(r31)
/* 80344550 54 00 07 76 */ rlwinm r0, r0, 0, 0x1d, 0x1b
/* 80344554 90 1F 00 0C */ stw r0, 0xc(r31)
/* 80344558 3C 60 00 50 */ lis r3, 0x50
/* 8034455C 1C 19 00 03 */ mulli r0, r25, 3
/* 80344560 7C 63 04 30 */ srw r3, r3, r0
/* 80344564 4B FF 95 59 */ bl __OSMaskInterrupts
/* 80344568 7E E3 BB 78 */ mr r3, r23
/* 8034456C 4B FF 91 B1 */ bl OSRestoreInterrupts
lbl_80344570:
/* 80344570 4B FF 91 85 */ bl OSDisableInterrupts
/* 80344574 57 20 10 3A */ slwi r0, r25, 2
/* 80344578 3C 80 80 00 */ lis r4, 0x8000 /* 0x800030C0@ha */
/* 8034457C 38 84 30 C0 */ addi r4, r4, 0x30C0 /* 0x800030C0@l */
/* 80344580 7C 04 00 2E */ lwzx r0, r4, r0
/* 80344584 7C 9D 00 50 */ subf r4, r29, r0
/* 80344588 30 04 FF FF */ addic r0, r4, -1
/* 8034458C 7C 00 21 10 */ subfe r0, r0, r4
/* 80344590 7F DE 03 79 */ or. r30, r30, r0
/* 80344594 40 82 00 10 */ bne lbl_803445A4
/* 80344598 80 1B 00 00 */ lwz r0, 0(r27)
/* 8034459C 90 1F 00 1C */ stw r0, 0x1c(r31)
/* 803445A0 93 BF 00 20 */ stw r29, 0x20(r31)
lbl_803445A4:
/* 803445A4 4B FF 91 79 */ bl OSRestoreInterrupts
/* 803445A8 2C 1E 00 00 */ cmpwi r30, 0
/* 803445AC 41 82 00 0C */ beq lbl_803445B8
/* 803445B0 38 60 00 00 */ li r3, 0
/* 803445B4 48 00 00 20 */ b lbl_803445D4
lbl_803445B8:
/* 803445B8 80 7F 00 20 */ lwz r3, 0x20(r31)
/* 803445BC 48 00 00 18 */ b lbl_803445D4
lbl_803445C0:
/* 803445C0 2C 1E 00 00 */ cmpwi r30, 0
/* 803445C4 41 82 00 0C */ beq lbl_803445D0
/* 803445C8 38 60 00 00 */ li r3, 0
/* 803445CC 48 00 00 08 */ b lbl_803445D4
lbl_803445D0:
/* 803445D0 38 60 00 01 */ li r3, 1
lbl_803445D4:
/* 803445D4 80 01 00 4C */ lwz r0, 0x4c(r1)
/* 803445D8 BA E1 00 24 */ lmw r23, 0x24(r1)
/* 803445DC 38 21 00 48 */ addi r1, r1, 0x48
/* 803445E0 7C 08 03 A6 */ mtlr r0
/* 803445E4 4E 80 00 20 */ blr

View File

@ -10,8 +10,8 @@ extern "C" {
void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height);
void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height);
void GXSetDispCopyDst(u16 width, u16 height);
void GXSetTexCopyDst(u16 width, u16 height, GXTexFmt fmt, GXBool mipmap);
void GXSetDispCopyDst(u16 arg0, u16 arg1);
void GXSetTexCopyDst(u16 width, u16 height, s32 fmt, GXBool mipmap);
void GXSetDispCopyFrame2Field(GXCopyMode mode);
void GXSetCopyClamp(GXFBClamp clamp);
u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale);

View File

@ -87,7 +87,7 @@ typedef struct _GXData {
STATIC_ASSERT(sizeof(GXData) == 0x5B0);
extern GXData* __GXData;
extern GXData* const __GXData;
extern u32* __piReg;
extern u16* __cpReg;
@ -100,6 +100,11 @@ inline void GXSetWasteFlags() {
data->field_0x2 = 0;
}
static inline void set_x2(u16 value)
{
__GXData->field_0x2 = value;
}
#ifdef __cplusplus
extern "C" {
#endif

View File

@ -10,7 +10,7 @@ extern "C" {
#endif
u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, GXBool mipmap, u8 max_lod);
void __GetImageTileCount();
void __GetImageTileCount(u32 arg0, s16 arg1, s16 arg2, s32* arg3, s32* arg4, s32* arg5);
void GXInitTexObj(GXTexObj* obj, void* image, u16 width, u16 height, GXTexFmt fmt,
GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXBool mipmap);
void GXInitTexObjCI(GXTexObj* obj, void* image, u16 width, u16 height, GXCITexFmt format,

View File

@ -641,43 +641,30 @@ s32 CARDFreeBlocks(s32 chan, s32* byteNotUsed, s32* filesNotUsed) {
return __CARDPutControlBlock(card, CARD_RESULT_READY);
}
/* 80353E20-80353EB8 34E760 0098+00 0/0 7/7 0/0 .text __CARDSync */
#ifdef NONMATCHING
s32 __CARDSync(s32 chan) {
s32 CARDGetResultCode(s32 chan)
{
CARDControl* card;
s32 val;
BOOL enabled;
s32 result;
if (chan < 0 || chan >= 2) {
return CARD_RESULT_FATAL_ERROR;
}
card = &__CARDBlock[chan];
return card->result;
}
/* 80353E20-80353EB8 34E760 0098+00 0/0 7/7 0/0 .text __CARDSync */
s32 __CARDSync(s32 chan) {
CARDControl* block;
s32 result;
s32 enabled;
block = &__CARDBlock[chan];
enabled = OSDisableInterrupts();
for (;; ) {
if (chan < 0 || chan >= 2)
result = -0x80;
else
result = card->result;
val = result;
if (val != CARD_RESULT_BUSY){
break;
} else {
OSSleepThread(&card->threadQueue);
}
}
while ((result = CARDGetResultCode(chan)) == -1) {
OSSleepThread(&block->threadQueue);
}
OSRestoreInterrupts(enabled);
return val;
return result;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s32 __CARDSync(s32 chan) {
nofralloc
#include "asm/dolphin/card/CARDBios/__CARDSync.s"
}
#pragma pop
#endif
/* 80353EB8-80353F08 34E7F8 0050+00 1/0 0/0 0/0 .text OnReset */
static s32 OnReset(s32 f) {

View File

@ -642,8 +642,6 @@ static void UnlockedHandler(s32 chan, OSContext* context) {
}
/* 80344238-803445E8 33EB78 03B0+00 5/5 3/3 0/0 .text EXIGetID */
// Use of add. instead of add
#ifdef NONMATCHING
s32 EXIGetID(s32 chan, u32 dev, u32* id) {
EXIControl* exi = &Ecb[chan];
BOOL err;
@ -651,7 +649,7 @@ s32 EXIGetID(s32 chan, u32 dev, u32* id) {
s32 startTime;
BOOL enabled;
if (exi == (EXIControl*)NULL && dev == 2 && IDSerialPort1[0] != 0) {
if (chan == 0 && dev == 2 && IDSerialPort1[0] != 0) {
*id = IDSerialPort1[0];
return 1;
}
@ -706,16 +704,6 @@ s32 EXIGetID(s32 chan, u32 dev, u32* id) {
return err ? 0 : !0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s32 EXIGetID(s32 chan, u32 dev, u32* id) {
nofralloc
#include "asm/exi/EXIBios/EXIGetID.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 803D10F0-803D1100 02E210 000F+01 0/0 0/0 0/0 .data @473 */

View File

@ -4,6 +4,8 @@
//
#include "dolphin/gx/GXFrameBuf.h"
#include "dolphin/gx/GXInit.h"
#include "dolphin/gx/GX.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@ -26,73 +28,112 @@ extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */];
// External References:
//
void __GetImageTileCount();
void __cvt_fp2unsigned();
extern void* __GXData;
//
// Declarations:
//
/* 8035CA04-8035CA80 357344 007C+00 0/0 2/2 0/0 .text GXSetDispCopySrc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopySrc.s"
void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height)
{
__GXData->field_0x1e0 = 0;
GX_BITFIELD_SET(__GXData->field_0x1e0, 22, 10, left);
GX_BITFIELD_SET(__GXData->field_0x1e0, 12, 10, top);
GX_BITFIELD_SET(__GXData->field_0x1e0, 0, 8, 73);
__GXData->field_0x1e4 = 0;
GX_BITFIELD_SET(__GXData->field_0x1e4, 22, 10, width - 1);
GX_BITFIELD_SET(__GXData->field_0x1e4, 12, 10, height - 1);
GX_BITFIELD_SET(__GXData->field_0x1e4, 0, 8, 74);
}
#pragma pop
/* 8035CA80-8035CAFC 3573C0 007C+00 0/0 9/9 0/0 .text GXSetTexCopySrc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXSetTexCopySrc.s"
void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height)
{
__GXData->field_0x1f0 = 0;
GX_BITFIELD_SET(__GXData->field_0x1f0, 22, 10, left);
GX_BITFIELD_SET(__GXData->field_0x1f0, 12, 10, top);
GX_BITFIELD_SET(__GXData->field_0x1f0, 0, 8, 0x49);
__GXData->field_0x1f4 = 0;
GX_BITFIELD_SET(__GXData->field_0x1f4, 22, 10, width - 1);
GX_BITFIELD_SET(__GXData->field_0x1f4, 12, 10, height - 1);
GX_BITFIELD_SET(__GXData->field_0x1f4, 0, 8, 0x4A);
}
#pragma pop
/* 8035CAFC-8035CB30 35743C 0034+00 0/0 2/2 0/0 .text GXSetDispCopyDst */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetDispCopyDst(u16 width, u16 height) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyDst.s"
void GXSetDispCopyDst(u16 arg0, u16 arg1)
{
s32 val = (s32) ((arg0 << 1) & 0xFFFE) >> 5;
__GXData->field_0x1e8 = 0;
GX_BITFIELD_SET(__GXData->field_0x1e8, 22, 10, val);
GX_BITFIELD_SET(__GXData->field_0x1e8, 0, 8, 0x4D);
}
#pragma pop
/* 8035CB30-8035CC60 357470 0130+00 0/0 9/9 0/0 .text GXSetTexCopyDst */
#ifdef NONMATCHING
void GXSetTexCopyDst(u16 width, u16 height, s32 fmt, GXBool mipmap) {
s32 fmt2;
s32 arg3, arg4, arg5;
__GXData->field_0x200 = 0;
fmt2 = fmt & 0xf;
if ((s32)fmt == GX_TF_Z16) {
fmt2 = 0xb;
}
switch (fmt) {
case 0:
case 1:
case 2:
case 3:
case 0x26:
GX_BITFIELD_SET(__GXData->field_0x1fc, 15, 2, 3);
break;
default:
GX_BITFIELD_SET(__GXData->field_0x1fc, 15, 2, 2);
break;
}
__GXData->field_0x200 = (fmt & 0x10) == 0x10;
__GXData->field_0x1fc = __rlwimi(__GXData->field_0x1fc, fmt2, 0, 28, 28);
fmt2 &= 7;
__GetImageTileCount(fmt, width, height, &arg3, &arg4, &arg5);
__GXData->field_0x1f8 = 0;
GX_BITFIELD_SET(__GXData->field_0x1f8, 22, 10, arg3*arg5);
GX_BITFIELD_SET(__GXData->field_0x1f8, 0, 8, 0x4d);
GX_BITFIELD_SET(__GXData->field_0x1fc, 22, 1, mipmap);
GX_BITFIELD_SET(__GXData->field_0x1fc, 25, 3, fmt2);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetTexCopyDst(u16 width, u16 height, GXTexFmt fmt, GXBool mipmap) {
asm void GXSetTexCopyDst(u16 width, u16 height, s32 fmt, GXBool mipmap) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXSetTexCopyDst.s"
}
#pragma pop
#endif
/* 8035CC60-8035CC84 3575A0 0024+00 0/0 1/1 0/0 .text GXSetDispCopyFrame2Field */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetDispCopyFrame2Field(GXCopyMode mode) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyFrame2Field.s"
void GXSetDispCopyFrame2Field(GXCopyMode arg0)
{
GX_BITFIELD_SET(__GXData->field_0x1ec, 18, 2, arg0);
GX_BITFIELD_SET(__GXData->field_0x1fc, 18, 2, 0);
}
#pragma pop
#define INSERT_FIELD(reg, value, nbits, shift) \
(reg) = ((u32) (reg) & ~(((1 << (nbits)) - 1) << (shift))) | \
((u32) (value) << (shift));
/* 8035CC84-8035CCDC 3575C4 0058+00 0/0 2/2 0/0 .text GXSetCopyClamp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetCopyClamp(GXFBClamp clamp) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXSetCopyClamp.s"
void GXSetCopyClamp(GXFBClamp clamp) {
u8 isTop = (clamp & GX_CLAMP_TOP) == GX_CLAMP_TOP;
u8 isBottom = (clamp & GX_CLAMP_BOTTOM) == GX_CLAMP_BOTTOM;
__GXData->field_0x1ec = __rlwimi(__GXData->field_0x1ec, isTop, 0, 31, 31);
__GXData->field_0x1ec = __rlwimi(__GXData->field_0x1ec, isBottom, 1, 30, 30);
__GXData->field_0x1fc = __rlwimi(__GXData->field_0x1fc, isTop, 0, 31, 31);
__GXData->field_0x1fc = __rlwimi(__GXData->field_0x1fc, isBottom, 1, 30, 30);
}
#pragma pop
/* ############################################################################################## */
/* 804565A8-804565B0 004BA8 0004+04 3/3 0/0 0/0 .sdata2 @179 */
@ -137,14 +178,29 @@ asm u32 GXSetDispCopyYScale(f32 y_scale) {
#pragma pop
/* 8035D070-8035D0E8 3579B0 0078+00 0/0 2/2 0/0 .text GXSetCopyClear */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetCopyClear(GXColor color, u32 clear_z) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXSetCopyClear.s"
void GXSetCopyClear(GXColor color, u32 clear_z) {
u32 r6 = 0;
GX_BITFIELD_SET(r6, 24, 8, color.r);
GX_BITFIELD_SET(r6, 16, 8, color.a);
GX_BITFIELD_SET(r6, 0, 8, 0x4f);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r6;
r6 = 0;
GX_BITFIELD_SET(r6, 24, 8, color.b);
GX_BITFIELD_SET(r6, 16, 8, color.g);
GX_BITFIELD_SET(r6, 0, 8, 0x50);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r6;
r6 = 0;
GX_BITFIELD_SET(r6, 8, 24, clear_z);
GX_BITFIELD_SET(r6, 0, 8, 0x51);
GXFIFO.u8 = 0x61;
GXFIFO.u32 = r6;
__GXData->field_0x2 = 0;
}
#pragma pop
/* 8035D0E8-8035D2F0 357A28 0208+00 0/0 4/4 0/0 .text GXSetCopyFilter */
#pragma push
@ -157,14 +213,10 @@ asm void GXSetCopyFilter(GXBool antialias, u8 pattern[12][2], GXBool vf, u8 vfil
#pragma pop
/* 8035D2F0-8035D304 357C30 0014+00 0/0 2/2 0/0 .text GXSetDispCopyGamma */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetDispCopyGamma(GXGamma gamma) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyGamma.s"
void GXSetDispCopyGamma(GXGamma gamma)
{
GX_BITFIELD_SET(__GXData->field_0x1ec, 23, 2, gamma);
}
#pragma pop
/* 8035D304-8035D46C 357C44 0168+00 0/0 3/3 0/0 .text GXCopyDisp */
#pragma push
@ -187,14 +239,14 @@ asm void GXCopyTex(void* dst, GXBool clear) {
#pragma pop
/* 8035D5F8-8035D630 357F38 0038+00 0/0 1/1 0/0 .text GXClearBoundingBox */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXClearBoundingBox(void) {
nofralloc
#include "asm/dolphin/gx/GXFrameBuf/GXClearBoundingBox.s"
void GXClearBoundingBox(void)
{
GXFIFO.u8 = GX_LOAD_BP_REG;
GXFIFO.u32 = 0x550003FF;
GXFIFO.u8 = GX_LOAD_BP_REG;
GXFIFO.u32 = 0x560003FF;
set_x2(GX_FALSE);
}
#pragma pop
/* ############################################################################################## */
/* 803D2448-803D2484 02F568 003C+00 0/0 2/1 0/0 .data GXNtsc480IntDf */

View File

@ -132,7 +132,6 @@ void GXSetCullMode(GXCullMode mode) {
GXCullMode mode2;
data = __GXData;
// Useless set
mode2 = (mode >> 1) & 1;
GX_BITFIELD_SET(mode2, 30, 1, mode);

View File

@ -67,7 +67,7 @@ static GXFifoObj FifoObj;
static GXData gxData;
/* 80456580-80456584 -00001 0004+00 6/6 108/108 0/0 .sdata2 __GXData */
SECTION_SDATA2 extern GXData* __GXData = &gxData;
GXData* const __GXData = &gxData;
/* 8035921C-80359318 353B5C 00FC+00 1/1 0/0 0/0 .text __GXDefaultTexRegionCallback */
#pragma push
@ -80,29 +80,16 @@ asm GXTexRegion* __GXDefaultTexRegionCallback(GXTexObj* obj, GXTexMapID mapID) {
#pragma pop
/* 80359318-8035933C 353C58 0024+00 1/1 0/0 0/0 .text __GXDefaultTlutRegionCallback */
// blr instead of b
#ifdef NONMATCHING
GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut) {
GXTlutRegion* region;
if (tlut >= 20) {
region = NULL;
} else {
region = &__GXData->field_0x388[tlut];
}
return region;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut) {
nofralloc
#include "asm/dolphin/gx/GXInit/__GXDefaultTlutRegionCallback.s"
#pragma peephole off
GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut) {
if (tlut >= 0x14) {
return NULL;
} else {
return &__GXData->field_0x388[tlut];
}
}
#pragma pop
#endif
/* 80451944-80451948 000E44 0004+00 1/1 0/0 0/0 .sbss resetFuncRegistered$145 */
/* static */ u8 resetFuncRegistered[4];

View File

@ -11,7 +11,6 @@
// Forward References:
//
void __GetImageTileCount();
static void GXLoadTexObjPreLoaded();
void GXLoadTexObj();
void GXLoadTlut();
@ -118,7 +117,7 @@ SECTION_DATA static void* lit_145[61] = {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __GetImageTileCount() {
asm void __GetImageTileCount(u32 arg0, s16 arg1, s16 arg2, s32* arg3, s32* arg4, s32* arg5) {
nofralloc
#include "asm/dolphin/gx/GXTexture/__GetImageTileCount.s"
}

View File

@ -36,6 +36,39 @@ SECTION_SDATA2 static f32 lit_105 = 0.5f;
SECTION_SDATA2 static f32 lit_106 = 0.01745329238474369f;
/* 80346F28-80346FF8 341868 00D0+00 0/0 6/6 0/0 .text C_MTXPerspective */
// Functions match but has issues with float constants
#ifdef NONMATCHING
void C_MTXPerspective(Mtx44 m, f32 fovY, f32 aspect, f32 n, f32 f)
{
f32 temp_f3;
f32 temp_f4;
fovY = 0.5F * fovY;
temp_f4 = 1.0F / tanf(0.017453292F * (fovY));
temp_f3 = 1.0F / (f - n);
m[0][0] = temp_f4 / aspect;
m[0][1] = 0.0F;
m[0][2] = 0.0F;
m[0][3] = 0.0F;
m[1][0] = 0.0F;
m[1][1] = temp_f4;
m[1][2] = 0.0F;
m[1][3] = 0.0F;
m[2][0] = 0.0F;
m[2][1] = 0.0F;
m[2][2] = -n * temp_f3;
m[2][3] = temp_f3 * -(f * n);
m[3][0] = 0.0F;
m[3][1] = 0.0F;
m[3][2] = -1.0F;
m[3][3] = 0.0F;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -44,8 +77,40 @@ asm void C_MTXPerspective(Mtx44 m, f32 fovy, f32 aspect, f32 near, f32 far) {
#include "asm/dolphin/mtx/mtx44/C_MTXPerspective.s"
}
#pragma pop
#endif
/* 80346FF8-80347090 341938 0098+00 0/0 11/11 2/2 .text C_MTXOrtho */
#ifdef NONMATCHING
void C_MTXOrtho(Mtx44 m, f32 t, f32 b, f32 l, f32 r, f32 n, f32 f)
{
f32 temp_f8;
f32 temp_f10;
f32 temp_f4;
temp_f10 = 1.0F / (r - l);
m[0][0] = 2.0F * temp_f10;
m[0][1] = 0.0F;
m[0][2] = 0.0F;
m[0][3] = temp_f10 * -(r + l);
temp_f8 = 1.0F / (t - b);
m[1][0] = 0.0F;
m[1][1] = 2.0F * temp_f8;
m[1][2] = 0.0F;
m[1][3] = temp_f8 * -(t + b);
temp_f4 = 1.0F / (f - n);
m[2][0] = 0.0F;
m[2][1] = 0.0F;
m[2][2] = -1.0F * temp_f4;
m[2][3] = -f * temp_f4;
m[3][0] = 0.0F;
m[3][1] = 0.0F;
m[3][2] = 0.0F;
m[3][3] = 1.0F;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -54,3 +119,4 @@ asm void C_MTXOrtho(Mtx44 m, f32 top, f32 bottom, f32 left, f32 right, f32 near,
#include "asm/dolphin/mtx/mtx44/C_MTXOrtho.s"
}
#pragma pop
#endif

View File

@ -34,18 +34,10 @@ static XY XYPAL[12] = {
};
#pragma pop
/* 803D1330-803D1368 02E450 0033+05 0/1 0/0 0/0 .data @16 */
#pragma push
#pragma force_active on
SECTION_DATA static char lit_16[] = "SISetSamplingRate: unknown TV format. Use default.";
#pragma pop
/* 80451700-80451708 000C00 0004+04 2/2 0/0 0/0 .sbss SamplingRate */
static u32 SamplingRate;
/* 80346290-80346374 340BD0 00E4+00 1/1 1/1 0/0 .text SISetSamplingRate */
// needs compiler epilogue patch
#ifdef NONMATCHING
void SISetSamplingRate(u32 msec) {
XY* xy;
BOOL enabled;
@ -77,16 +69,6 @@ void SISetSamplingRate(u32 msec) {
SISetXY((__VIRegs[54] & 1 ? 2u : 1u) * xy[msec].line, xy[msec].count);
OSRestoreInterrupts(enabled);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void SISetSamplingRate(u32 msec) {
nofralloc
#include "asm/dolphin/si/SISamplingRate/SISetSamplingRate.s"
}
#pragma pop
#endif
/* 80346374-80346398 340CB4 0024+00 0/0 2/2 0/0 .text SIRefreshSamplingRate */
void SIRefreshSamplingRate() {

View File

@ -14,6 +14,7 @@ LIBVI_A_CFLAGS := \
-fp hard \
-nodefaults \
-str reuse \
-inline auto \
-RTTI off \
-maxerrors 5 \
-enum int $(INCLUDES) \
@ -35,10 +36,11 @@ $(BUILD_DIR)/libs/dolphin/vi/%.o: libs/dolphin/vi/%.c $(BUILD_DIR)/libs/dolphin/
@mkdir -p $(@D)
@echo building... $<
@$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c
@$(FRANK_CC) $(LIBVI_A_CFLAGS) -c -o $(@:.o=.po) $(basename $@).c
@$(DOLPHIN_LIB_CC) $(LIBVI_A_CFLAGS) $(DEPFLAGS) -c -o $(dir $@) $(basename $@).c
@if [ -z '$(DISABLE_DEPS)' ]; then tools/transform-dep.py '$(basename $@).d' '$(basename $@).d'; touch -c $@; fi
@echo Frank is fixing $@
@$(PYTHON) $(FRANK) $@ $@ $@
@$(PYTHON) $(FRANK) $@ $(@:.o=.po) $@
ifndef DISABLE_DEPS
LIBVI_A_D_FILES := $(LIBVI_A_O_FILES:.o=.d)

View File

@ -14,15 +14,15 @@
void __VIRetraceHandler();
static void getTiming();
void __VIInit();
static void setFbbRegs();
static void setVerticalRegs();
static void setFbbRegs(void**, void**, void**, void**, void**);
static void setVerticalRegs(u16, u16, u8, u16, u16, u16, u16, u16, u32);
u32 VIGetRetraceCount();
static void GetCurrentDisplayPosition();
static void GetCurrentDisplayPosition(u32* x, u32* y);
static void getCurrentFieldEvenOdd();
void VIGetNextField();
u32 VIGetNextField();
void VIGetCurrentLine();
void VIGetTvFormat();
void VIGetDTVStatus();
u32 VIGetDTVStatus();
void __VIDisplayPositionToXY();
void __VIGetCurrentPosition();
@ -46,19 +46,19 @@ static u8 regs[118 + 2 /* padding */];
static u8 IsInitialized[4];
/* 804517E4-804517E8 000CE4 0004+00 4/3 0/0 0/0 .sbss retraceCount */
static u8 retraceCount[4];
static u32 retraceCount;
/* 804517E8-804517EC 000CE8 0004+00 3/3 0/0 0/0 .sbss flushFlag */
static u8 flushFlag[4];
/* 804517EC-804517F4 000CEC 0008+00 3/3 0/0 0/0 .sbss retraceQueue */
static u8 retraceQueue[8];
static OSThreadQueue retraceQueue;
/* 804517F4-804517F8 000CF4 0004+00 3/3 0/0 0/0 .sbss PreCB */
static u8 PreCB[4];
static VIRetraceCallback PreCB;
/* 804517F8-804517FC 000CF8 0004+00 3/3 0/0 0/0 .sbss PostCB */
static u8 PostCB[4];
static VIRetraceCallback PostCB;
/* 804517FC-80451800 000CFC 0004+00 1/1 0/0 0/0 .sbss PositionCallback */
static u8 PositionCallback[4];
@ -112,24 +112,22 @@ asm void __VIRetraceHandler() {
#pragma pop
/* 8034C1E0-8034C224 346B20 0044+00 0/0 4/4 0/0 .text VISetPreRetraceCallback */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback) {
nofralloc
#include "asm/dolphin/vi/vi/VISetPreRetraceCallback.s"
VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback cb) {
VIRetraceCallback prevCb = PreCB;
BOOL enable = OSDisableInterrupts();
PreCB = cb;
OSRestoreInterrupts(enable);
return prevCb;
}
#pragma pop
/* 8034C224-8034C268 346B64 0044+00 0/0 4/4 2/2 .text VISetPostRetraceCallback */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback) {
nofralloc
#include "asm/dolphin/vi/vi/VISetPostRetraceCallback.s"
VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback cb) {
VIRetraceCallback prevCb = PostCB;
BOOL enable = OSDisableInterrupts();
PostCB = cb;
OSRestoreInterrupts(enable);
return prevCb;
}
#pragma pop
/* ############################################################################################## */
/* 803D1760-803D17A4 02E880 0044+00 4/3 0/0 0/0 .data @1 */
@ -247,7 +245,7 @@ SECTION_DATA static void* lit_101[31] = {
};
/* 80451838-8045183C 000D38 0004+00 2/2 0/0 0/0 .sbss FBSet */
static u8 FBSet[4];
static u32 FBSet;
/* 8045183C-80451840 000D3C 0004+00 1/1 0/0 0/0 .sbss timingExtra */
static u8 timingExtra[4];
@ -296,20 +294,22 @@ asm void VIInit() {
#pragma pop
/* 8034C9C4-8034CA18 347304 0054+00 0/0 10/10 0/0 .text VIWaitForRetrace */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void VIWaitForRetrace() {
nofralloc
#include "asm/dolphin/vi/vi/VIWaitForRetrace.s"
void VIWaitForRetrace() {
BOOL enable = OSDisableInterrupts();
u32 startVal = retraceCount;
do {
OSSleepThread(&retraceQueue);
} while(startVal == retraceCount);
OSRestoreInterrupts(enable);
}
#pragma pop
/* 8034CA18-8034CCEC 347358 02D4+00 2/2 0/0 0/0 .text setFbbRegs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void setFbbRegs() {
static asm void setFbbRegs(void**, void**, void**, void**, void**) {
nofralloc
#include "asm/dolphin/vi/vi/setFbbRegs.s"
}
@ -319,7 +319,7 @@ static asm void setFbbRegs() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void setVerticalRegs() {
static asm void setVerticalRegs(u16 arg0, u16 arg1, u8 arg2, u16 arg3, u16 arg4, u16 arg5, u16 arg6, u16 arg7, u32 arg8) {
nofralloc
#include "asm/dolphin/vi/vi/setVerticalRegs.s"
}
@ -395,14 +395,18 @@ asm void VIFlush() {
#pragma pop
/* 8034D7C4-8034D830 348104 006C+00 0/0 3/3 0/0 .text VISetNextFrameBuffer */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void VISetNextFrameBuffer(void*) {
nofralloc
#include "asm/dolphin/vi/vi/VISetNextFrameBuffer.s"
void VISetNextFrameBuffer(void* buffer) {
void** bufferArray = (void**)regs;
BOOL enable = OSDisableInterrupts();
bufferArray[72] = buffer;
FBSet = 1;
setFbbRegs(bufferArray + 60, bufferArray + 73,
bufferArray + 74, bufferArray + 79, bufferArray + 80
);
OSRestoreInterrupts(enable);
}
#pragma pop
/* 8034D830-8034D838 -00001 0008+00 0/0 0/0 0/0 .text VIGetNextFrameBuffer */
void* VIGetNextFrameBuffer() {
@ -415,29 +419,59 @@ void* VIGetCurrentFrameBuffer() {
}
/* 8034D840-8034D8BC 348180 007C+00 0/0 7/7 0/0 .text VISetBlack */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void VISetBlack(BOOL) {
nofralloc
#include "asm/dolphin/vi/vi/VISetBlack.s"
void VISetBlack(BOOL isBlack) {
u8* ptr = regs;
u16* ptr2;
BOOL enable = OSDisableInterrupts();
((u32*)ptr)[76] = isBlack;
ptr2 = ((u16**)ptr)[81];
setVerticalRegs(
((u16*)ptr)[125],
((u16*)ptr)[123],
((u8*)ptr2)[0],
ptr2[1],
ptr2[2],
ptr2[3],
ptr2[4],
ptr2[5],
((u32*)ptr)[76]
);
OSRestoreInterrupts(enable);
}
#pragma pop
/* 8034D8BC-8034D8C4 -00001 0008+00 0/0 0/0 0/0 .text VIGetRetraceCount */
u32 VIGetRetraceCount() {
return *(u32*)(&retraceCount);
return retraceCount;
}
/* 8034D8C4-8034D900 348204 003C+00 1/1 0/0 0/0 .text GetCurrentDisplayPosition */
#ifdef NONMATCHING
void GetCurrentDisplayPosition(u32* x, u32* y) {
u32 val3;
u32 val4;
u32 val = __VIRegs[22] & 0x7FF;
do {
val4 = val;
val = __VIRegs[22] & 0x7FF;
val3 = __VIRegs[23] & 0x7FF;
} while (val4 != val);
*x = val3;
*y = val;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void GetCurrentDisplayPosition() {
static asm void GetCurrentDisplayPosition(u32* x, u32* y) {
nofralloc
#include "asm/dolphin/vi/vi/GetCurrentDisplayPosition.s"
}
#pragma pop
#endif
/* 8034D900-8034D968 348240 0068+00 1/1 0/0 0/0 .text getCurrentFieldEvenOdd */
#pragma push
@ -453,7 +487,7 @@ static asm void getCurrentFieldEvenOdd() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void VIGetNextField() {
asm u32 VIGetNextField() {
nofralloc
#include "asm/dolphin/vi/vi/VIGetNextField.s"
}
@ -495,14 +529,13 @@ asm void VIGetTvFormat() {
#pragma pop
/* 8034DB04-8034DB40 348444 003C+00 0/0 2/2 0/0 .text VIGetDTVStatus */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void VIGetDTVStatus() {
nofralloc
#include "asm/dolphin/vi/vi/VIGetDTVStatus.s"
u32 VIGetDTVStatus() {
u32 val;
BOOL enable = OSDisableInterrupts();
val = __VIRegs[55] & 3;
OSRestoreInterrupts(enable);
return val & 1;
}
#pragma pop
/* 8034DB40-8034DD5C 348480 021C+00 1/1 0/0 0/0 .text __VIDisplayPositionToXY */
#pragma push