src(phase-36): T5 batch gte1 — gte_consolidate: batch gte1 — 400 files: 400 consolidated, 0 defs-only, 0 unchanged, 0 refused, 0 no-recipe · definitions deleted 8056 / renamed as lever variants 5 (variant trials: 416 freed, 5 kept) · header-bound definitions kept 80 · use renames 930 · direct statements → calls 460 / lever 252 / unmatched 185 · markers 276 · compiles 1146 · final 400/400 identical | R22 check-all: 218 passed, 0 failed of 218 | census: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,901 sites in 12,601 bodies (1,756 distinct) · marked !FAKE 33,665 · UNMARKED 236 (delever_cycle)

This commit is contained in:
Drew T
2026-09-09 05:55:45 -06:00
parent 0bd784c64e
commit 145ab77194
408 changed files with 3364 additions and 59940 deletions
+476
View File
@@ -0,0 +1,476 @@
clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, undefined_*_auto.txt).
disc-extract: up to date — extracted/retail/ matches the committed manifest (sha1 e5c6019249dec3c71bb2cf40658a78439dddb037)
splat 0.41.0 (powered by spimdisasm 1.41.0)
0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 100%|██████████| 1096/1096 [00:00<00:00, 212497.44it/s]
0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 100%|██████████| 47/47 [00:00<00:00, 646335.37it/s]
0%| | 0/2 [00:00<?, ?it/s]
Scanning header: 0%| | 0/2 [00:00<?, ?it/s]
Scanning main: 0%| | 0/2 [00:00<?, ?it/s]
Rodata segment '800' may belong to the text segment '800'
Based on the usage from the function LzssDecodeSector to the symbol jtbl_80072A38
The rodata segment '800' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
File split suggestions for this segment will follow in config yaml format:
- [0x6324C, .rodata]
- [0x63388, .rodata]
- [0x633FC, .rodata]
Rodata segment '800_b' may belong to the text segment '800_b'
Based on the usage from the function func_8002B0B4 to the symbol jtbl_80072E44
Rodata segment '800_b_2' may belong to the text segment '800_b_2'
Based on the usage from the function func_8002DC68 to the symbol jtbl_80072F3C
The rodata segment '800_b_2' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
File split suggestions for this segment will follow in config yaml format:
- [0x63920, .rodata]
Rodata segment '800_c' may belong to the text segment '800_c'
Based on the usage from the function func_80035270 to the symbol jtbl_800732A0
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.06it/s]
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.06it/s]
0%| | 0/2 [00:00<?, ?it/s]
Splitting header: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 100%|██████████| 2/2 [00:00<00:00, 2.21it/s]
Splitting main: 100%|██████████| 2/2 [00:00<00:00, 2.21it/s]
0%| | 0/2 [00:00<?, ?it/s]
Linker script header: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 100%|██████████| 2/2 [00:00<00:00, 78.28it/s]
Split 340 KB (82.28%) in defined segments
header: 2 KB (0.50%) 1 split, 0 cached
c: 338 KB (81.78%) 85 split, 0 cached
unknown: 0 B (0.00%) from unknown bin files
ld_interleave --order: .main island = 8 pieces [53198.data.o, 800.o, 63470.data.o, 800_b.o, 800_b_2.o, 63940.data.o, 800_c.o, 63C4C.data.o]; pre=0 text=85 empties=166 bss=85
[ OK ] resident
[ OK ] ov_SC05_000
[ OK ] ov_SC01_000
[ OK ] ov_SC04_000
[ OK ] ov_SC06_000
[ OK ] ov_SC03_002
[ OK ] ov_SC01_006
[ OK ] ov_SC01_005
[ OK ] ov_SC02_003
[ OK ] ov_SC02_000
[ OK ] ov_SC01_077
[ OK ] ov_SC03_001
[ OK ] ov_SC04_019
[ OK ] ov_SC01_004
[ OK ] ov_SC01_001
[ OK ] ov_SC03_006
[ OK ] ov_SC04_018
[ OK ] ov_SC01_074
[ OK ] ov_SC01_008
[ OK ] ov_SC02_004
[ OK ] ov_SC07_000
[ OK ] ov_SC02_015
[ OK ] ov_SC02_021
[ OK ] ov_SC01_080
[ OK ] ov_SC01_009
[ OK ] ov_SC02_016
[ OK ] ov_SC01_084
[ OK ] ov_SC02_005
[ OK ] ov_SC02_011
[ OK ] ov_SC02_026
[ OK ] ov_SC02_039
[ OK ] ov_SC02_027
[ OK ] ov_SC02_035
[ OK ] ov_SC02_031
[ OK ] ov_SC03_003
[ OK ] ov_SC02_028
[ OK ] ov_SC02_041
[ OK ] ov_SC02_017
[ OK ] ov_SC03_010
[ OK ] ov_SC03_012
[ OK ] ov_SC03_011
[ OK ] ov_SC03_023
[ OK ] ov_SC03_013
[ OK ] ov_SC03_007
[ OK ] ov_SC03_024
[ OK ] ov_SC03_031
[ OK ] ov_SC03_015
[ OK ] ov_SC03_089
[ OK ] ov_SC03_014
[ OK ] ov_SC03_029
[ OK ] ov_SC03_030
[ OK ] ov_SC03_090
[ OK ] ov_SC03_092
[ OK ] ov_SC03_028
[ OK ] ov_SC03_095
[ OK ] ov_SC03_093
[ OK ] ov_SC03_094
[ OK ] ov_SC03_091
[ OK ] ov_SC03_097
[ OK ] ov_SC03_096
[ OK ] ov_SC03_098
[ OK ] ov_SC03_099
[ OK ] ov_SC03_101
[ OK ] ov_SC03_100
[ OK ] ov_SC03_109
[ OK ] ov_SC03_108
[ OK ] ov_SC03_102
[ OK ] ov_SC03_110
[ OK ] ov_SC03_103
[ OK ] ov_SC03_113
[ OK ] ov_SC03_105
[ OK ] ov_SC03_104
[ OK ] ov_SC03_114
[ OK ] ov_SC03_115
[ OK ] ov_SC03_112
[ OK ] ov_SC03_111
[ OK ] ov_SC03_116
[ OK ] ov_SC03_126
[ OK ] ov_SC04_008
[ OK ] ov_SC04_009
[ OK ] ov_SC04_006
[ OK ] ov_SC03_121
[ OK ] ov_SC04_003
[ OK ] ov_SC03_117
[ OK ] ov_SC03_119
[ OK ] ov_SC03_118
[ OK ] ov_SC03_125
[ OK ] ov_SC04_004
[ OK ] ov_SC04_010
[ OK ] ov_SC04_005
[ OK ] ov_SC04_002
[ OK ] ov_SC04_007
[ OK ] ov_SC03_124
[ OK ] ov_SC04_012
[ OK ] ov_SC04_021
[ OK ] ov_SC04_016
[ OK ] ov_SC05_002
[ OK ] ov_SC05_006
[ OK ] ov_SC05_004
[ OK ] ov_SC05_001
[ OK ] ov_SC04_015
[ OK ] ov_SC05_003
[ OK ] ov_SC04_020
[ OK ] ov_SC04_011
[ OK ] ov_SC05_007
[ OK ] ov_SC05_005
[ OK ] ov_SC05_009
[ OK ] ov_SC05_008
[ OK ] ov_SC05_011
[ OK ] ov_SC05_010
[ OK ] ov_SC05_019
[ OK ] ov_SC06_008
[ OK ] ov_SC06_013
[ OK ] ov_SC06_015
[ OK ] ov_SC06_010
[ OK ] ov_SC06_016
[ OK ] ov_SC06_014
[ OK ] ov_SC06_011
[ OK ] ov_SC05_017
[ OK ] ov_SC05_018
[ OK ] ov_SC06_006
[ OK ] ov_SC06_027
[ OK ] ov_SC06_018
[ OK ] ov_SC06_020
[ OK ] ov_SC06_025
[ OK ] ov_SC06_022
[ OK ] ov_SC06_024
[ OK ] ov_SC07_002
[ OK ] ov_SC07_008
[ OK ] ov_SC07_001
[ OK ] md_MAIN_014
[ OK ] md_MAIN_013
[ OK ] md_MAIN_015
[ OK ] md_MAIN_017
[ OK ] md_MAIN_016
[ OK ] md_MAIN_018
[ OK ] md_MAIN_019
[ OK ] md_MAIN_021
[ OK ] md_MAIN_022
[ OK ] md_MAIN_023
[ OK ] md_MAIN_020
[ OK ] ov_SC07_011
[ OK ] ov_MAIN_012
[ OK ] ov_SC06_030
[ OK ] ov_SC07_009
[ OK ] md_MAIN_024
[ OK ] ov_SC07_010
[ OK ] ov_SC07_007
[ OK ] ov_SC06_033
[ OK ] ov_SC06_032
[ OK ] ov_SC06_029
[ OK ] md_MAIN_025
[ OK ] md_MAIN_026
[ OK ] md_MAIN_028
[ OK ] md_MAIN_029
[ OK ] md_MAIN_027
[ OK ] md_MAIN_030
[ OK ] md_MAIN_033
[ OK ] md_MAIN_036
[ OK ] md_MAIN_035
[ OK ] md_MAIN_031
[ OK ] md_MAIN_032
[ OK ] md_MAIN_034
[ OK ] md_MAIN_037
[ OK ] ov_SC03_107
[ OK ] md_MAIN_040
[ OK ] md_MAIN_039
[ OK ] md_MAIN_042
[ OK ] md_MAIN_038
[ OK ] md_MAIN_041
[ OK ] ov_SC07_006
[ OK ] md_MAIN_043
[ OK ] md_MAIN_044
[ OK ] md_MAIN_045
[ OK ] md_MAIN_046
[ OK ] md_MAIN_047
[ OK ] md_MAIN_008
[ OK ] md_MAIN_011
[ OK ] ov_SC02_037
[ OK ] md_MAIN_001
[ OK ] md_SC03_078
[ OK ] md_SC03_074
[ OK ] md_SC03_077
[ OK ] md_SC03_073
[ OK ] md_SC03_075
[ OK ] md_SC03_076
[ OK ] md_SC03_133
[ OK ] md_SC03_134
[ OK ] md_SC03_137
[ OK ] md_SC03_079
[ OK ] md_SC03_132
[ OK ] md_SC03_135
[ OK ] md_SC03_136
[ OK ] md_SC04_024
[ OK ] md_SC04_029
[ OK ] md_SC04_026
[ OK ] md_SC03_138
[ OK ] md_SC04_025
[ OK ] md_SC05_024
[ OK ] md_MAIN_003
[ OK ] md_SC05_023
[ OK ] md_SC04_028
[ OK ] md_SC04_030
[ OK ] md_SC05_025
[ OK ] md_SC04_027
[ OK ] md_MAIN_009
[ OK ] md_MAIN_007
[ OK ] md_SC05_027
[ OK ] md_SC03_056
[ OK ] md_SC05_028
[ OK ] md_SC03_054
[ OK ] md_SC03_053
[ OK ] md_SC05_026
[ OK ] md_SC05_029
[ OK ] md_SC02_009
[ OK ] md_SC07_004
[ OK ] md_SC07_003
extract-all: 217 extracted, 0 failed of 217 (+ main, serial)
[ OK ] resident
[ OK ] ov_SC01_000
[ OK ] ov_SC04_000
[ OK ] ov_SC01_005
[ OK ] ov_SC03_006
[ OK ] ov_SC01_001
[ OK ] ov_SC05_000
[ OK ] ov_SC03_002
[ OK ] ov_SC01_006
[ OK ] ov_SC06_000
[ OK ] ov_SC01_077
[ OK ] ov_SC02_003
[ OK ] ov_SC03_001
[ OK ] ov_SC04_019
[ OK ] ov_SC04_018
[ OK ] ov_SC02_000
[ OK ] ov_SC07_000
[ OK ] ov_SC01_074
[ OK ] ov_SC01_004
[ OK ] ov_SC02_004
[ OK ] ov_SC01_008
[ OK ] ov_SC01_080
[ OK ] ov_SC01_084
[ OK ] ov_SC01_009
[ OK ] ov_SC02_015
[ OK ] ov_SC02_016
[ OK ] ov_SC02_011
[ OK ] ov_SC02_021
[ OK ] ov_SC02_017
[ OK ] ov_SC02_026
[ OK ] ov_SC02_005
[ OK ] ov_SC02_027
[ OK ] ov_SC02_031
[ OK ] ov_SC02_039
[ OK ] ov_SC02_035
[ OK ] ov_SC03_003
[ OK ] ov_SC02_028
[ OK ] ov_SC03_010
[ OK ] ov_SC02_041
[ OK ] ov_SC03_012
[ OK ] ov_SC03_007
[ OK ] ov_SC03_011
[ OK ] ov_SC03_023
[ OK ] ov_SC03_013
[ OK ] ov_SC03_014
[ OK ] ov_SC03_015
[ OK ] ov_SC03_024
[ OK ] ov_SC03_031
[ OK ] ov_SC03_030
[ OK ] ov_SC03_029
[ OK ] ov_SC03_092
[ OK ] ov_SC03_028
[ OK ] ov_SC03_089
[ OK ] ov_SC03_090
[ OK ] ov_SC03_091
[ OK ] ov_SC03_095
[ OK ] ov_SC03_096
[ OK ] ov_SC03_094
[ OK ] ov_SC03_093
[ OK ] ov_SC03_098
[ OK ] main
[ OK ] ov_SC03_097
[ OK ] ov_SC03_099
[ OK ] ov_SC03_109
[ OK ] ov_SC03_108
[ OK ] ov_SC03_103
[ OK ] ov_SC03_100
[ OK ] ov_SC03_101
[ OK ] ov_SC03_110
[ OK ] ov_SC03_102
[ OK ] ov_SC03_115
[ OK ] ov_SC03_104
[ OK ] ov_SC03_113
[ OK ] ov_SC03_111
[ OK ] ov_SC03_105
[ OK ] ov_SC03_114
[ OK ] ov_SC03_112
[ OK ] ov_SC03_116
[ OK ] ov_SC03_117
[ OK ] ov_SC03_125
[ OK ] ov_SC04_008
[ OK ] ov_SC04_006
[ OK ] ov_SC03_126
[ OK ] ov_SC03_118
[ OK ] ov_SC04_002
[ OK ] ov_SC04_009
[ OK ] ov_SC03_121
[ OK ] ov_SC04_003
[ OK ] ov_SC03_119
[ OK ] ov_SC03_124
[ OK ] ov_SC04_004
[ OK ] ov_SC04_007
[ OK ] ov_SC04_005
[ OK ] ov_SC04_010
[ OK ] ov_SC04_011
[ OK ] ov_SC04_012
[ OK ] ov_SC04_016
[ OK ] ov_SC04_015
[ OK ] ov_SC05_007
[ OK ] ov_SC04_020
[ OK ] ov_SC05_005
[ OK ] ov_SC05_009
[ OK ] ov_SC05_003
[ OK ] ov_SC05_004
[ OK ] ov_SC05_002
[ OK ] ov_SC04_021
[ OK ] ov_SC05_001
[ OK ] ov_SC05_006
[ OK ] ov_SC05_008
[ OK ] ov_SC05_010
[ OK ] ov_SC05_011
[ OK ] ov_SC05_019
[ OK ] ov_SC06_010
[ OK ] ov_SC06_013
[ OK ] ov_SC06_015
[ OK ] ov_SC06_008
[ OK ] ov_SC06_011
[ OK ] ov_SC05_017
[ OK ] ov_SC06_014
[ OK ] ov_SC06_016
[ OK ] ov_SC06_006
[ OK ] ov_SC05_018
[ OK ] ov_SC06_020
[ OK ] ov_SC06_022
[ OK ] ov_SC06_018
[ OK ] ov_SC06_024
[ OK ] ov_SC06_025
[ OK ] ov_SC06_027
[ OK ] md_MAIN_013
[ OK ] md_MAIN_014
[ OK ] ov_SC07_008
[ OK ] md_MAIN_015
[ OK ] ov_SC06_030
[ OK ] md_MAIN_016
[ OK ] md_MAIN_017
[ OK ] ov_SC06_029
[ OK ] md_MAIN_018
[ OK ] md_MAIN_020
[ OK ] md_MAIN_019
[ OK ] md_MAIN_021
[ OK ] md_MAIN_024
[ OK ] md_MAIN_023
[ OK ] md_MAIN_022
[ OK ] ov_SC07_009
[ OK ] ov_SC07_001
[ OK ] md_MAIN_025
[ OK ] ov_SC07_007
[ OK ] ov_SC07_002
[ OK ] ov_SC07_006
[ OK ] md_MAIN_028
[ OK ] ov_SC07_010
[ OK ] md_MAIN_029
[ OK ] md_MAIN_030
[ OK ] md_MAIN_026
[ OK ] md_MAIN_033
[ OK ] md_MAIN_027
[ OK ] md_MAIN_032
[ OK ] md_MAIN_031
[ OK ] md_MAIN_035
[ OK ] md_MAIN_034
[ OK ] md_MAIN_037
[ OK ] md_MAIN_042
[ OK ] md_MAIN_036
[ OK ] md_MAIN_039
[ OK ] md_MAIN_040
[ OK ] md_MAIN_041
[ OK ] md_MAIN_043
[ OK ] md_MAIN_045
[ OK ] md_MAIN_038
[ OK ] md_MAIN_044
[ OK ] md_MAIN_046
[ OK ] md_MAIN_001
[ OK ] md_MAIN_008
[ OK ] ov_SC06_032
[ OK ] md_MAIN_011
[ OK ] md_MAIN_047
[ OK ] md_SC03_074
[ OK ] md_SC03_073
[ OK ] md_SC03_075
[ OK ] ov_MAIN_012
[ OK ] ov_SC06_033
[ OK ] md_SC03_132
[ OK ] md_SC03_079
[ OK ] md_SC03_078
[ OK ] md_SC07_003
[ OK ] md_SC03_133
[ OK ] md_SC03_077
[ OK ] md_SC03_134
[ OK ] md_SC03_076
[ OK ] ov_SC07_011
[ OK ] md_SC03_138
[ OK ] md_SC03_135
[ OK ] md_SC03_137
[ OK ] md_SC04_025
[ OK ] md_SC04_030
[ OK ] md_SC04_026
[ OK ] md_SC04_029
[ OK ] md_SC03_136
[ OK ] md_SC04_024
[ OK ] md_MAIN_003
[ OK ] md_SC04_028
+229 -187
View File
@@ -3,36 +3,36 @@
"gte_header": "include/gte_inline.h", "gte_header": "include/gte_inline.h",
"gte_header_sites": 0, "gte_header_sites": 0,
"gte_mnemonics": { "gte_mnemonics": {
"gte_SetRotMatrix": 150, "LDV": 3,
"gte_SetTransMatrix": 145, "SRM_80186B78": 12,
"STM_80186B78": 12,
"STSV": 3,
"cfc2": 1,
"gte_SetRotMatrix": 33,
"gte_SetTransMatrix": 32,
"gte_dpcl": 133, "gte_dpcl": 133,
"gte_ldIR0z": 133, "gte_ldIR0z": 133,
"gte_ldIRGB": 133, "gte_ldIRGB": 133,
"gte_ldrgb": 162, "gte_ldlv0": 1,
"gte_ldv0": 653, "gte_ldrgb": 133,
"gte_ldv3": 140, "gte_ldv0": 71,
"gte_ldv3c": 159, "gte_ldv3_80181E04": 1,
"gte_mvmva0": 131, "gte_mvmva0": 52,
"gte_nclip": 96, "gte_rt": 21,
"gte_rt": 155, "gte_rtps": 1,
"gte_rtps": 356, "gte_rtpt_80181E04": 1,
"gte_rtpt": 289, "gte_rtv0": 1,
"gte_stORGB": 133, "gte_stORGB": 133,
"gte_stflg": 319, "gte_stflg_80181E04": 1,
"gte_stlvnl": 143, "gte_stlvnl": 53,
"gte_stopz": 96, "gte_stsv": 18,
"gte_stsv": 145, "gte_stsxy": 1,
"gte_stsxy": 361, "gte_stsxy01_80181E04": 1,
"gte_stsxy3": 191, "gte_stsz3_80181E04": 1,
"gte_stsxy3_f3": 61, "lw": 26,
"gte_stsxy3c": 94, "lwc2": 267,
"gte_stsz3": 123, "nop": 1,
"gte_stsz4": 126, "swc2": 129
"gte_stszotz": 113,
"lhu": 66,
"lwc2": 432,
"mfc2": 61,
"swc2": 449
}, },
"instruction_mnemonics": { "instruction_mnemonics": {
".section": 7, ".section": 7,
@@ -56,10 +56,11 @@
"asm-body/direct": 13, "asm-body/direct": 13,
"barrier/direct": 4576, "barrier/direct": 4576,
"barrier/via-macro": 2, "barrier/via-macro": 2,
"gte-lever/direct": 49, "gte-lever/direct": 252,
"gte-lever/via-macro": 24,
"gte-unsigned/direct": 3, "gte-unsigned/direct": 3,
"gte/direct": 1088, "gte/direct": 425,
"gte/via-macro": 5751, "gte/via-macro": 987,
"instruction/direct": 1690, "instruction/direct": 1690,
"instruction/via-macro": 22, "instruction/via-macro": 22,
"keepalive/direct": 2000, "keepalive/direct": 2000,
@@ -72,7 +73,7 @@
"classes": { "classes": {
"A": { "A": {
"bodies": 10329, "bodies": 10329,
"distinct_bodies": 1330, "distinct_bodies": 1332,
"file_scope": 0, "file_scope": 0,
"in_bodies": 20646, "in_bodies": 20646,
"kinds": { "kinds": {
@@ -84,29 +85,29 @@
"unmarked": 0 "unmarked": 0
}, },
"B": { "B": {
"bodies": 9758, "bodies": 9469,
"distinct_bodies": 1054, "distinct_bodies": 928,
"file_scope": 13, "file_scope": 13,
"in_bodies": 22539, "in_bodies": 17339,
"kinds": { "kinds": {
"asm-body": 13, "asm-body": 13,
"barrier": 4578, "barrier": 4578,
"gte": 6839, "gte": 1412,
"gte-lever": 49, "gte-lever": 276,
"gte-unsigned": 3, "gte-unsigned": 3,
"instruction": 1712, "instruction": 1712,
"keepalive": 2000, "keepalive": 2000,
"launder": 4676, "launder": 4676,
"verbatim-body": 2682 "verbatim-body": 2682
}, },
"marked": 13155, "marked": 13154,
"sites": 22552, "sites": 17352,
"tus": 2289, "tus": 2287,
"unmarked": 9397 "unmarked": 4198
}, },
"C": { "C": {
"bodies": 628, "bodies": 628,
"distinct_bodies": 97, "distinct_bodies": 99,
"file_scope": 152, "file_scope": 152,
"in_bodies": 1570, "in_bodies": 1570,
"kinds": { "kinds": {
@@ -206,9 +207,9 @@
"coverage": { "coverage": {
"asm": { "asm": {
"comment_dead": 6792, "comment_dead": 6792,
"live": 46804, "live": 45070,
"macro_block": 7189, "macro_block": 407,
"raw": 60785 "raw": 52269
}, },
"attribute": { "attribute": {
"comment_dead": 0, "comment_dead": 0,
@@ -230,186 +231,227 @@
}, },
"volatile": { "volatile": {
"comment_dead": 2607, "comment_dead": 2607,
"live": 3437, "live": 2172,
"macro_block": 6510, "macro_block": 157,
"raw": 12554 "raw": 4936
} }
}, },
"coverage_ok": true, "coverage_ok": true,
"elapsed_s": 50.8, "elapsed_s": 36.4,
"generated": "2026-09-09", "generated": "2026-09-09",
"gte_levers": { "gte_levers": {
"direct": 49, "direct": 252,
"marked": 0, "marked": 40,
"sites": 49, "sites": 276,
"unmarked": 49, "unmarked": 236,
"unsigned": 3, "unsigned": 3,
"via_macro": 0, "via_macro": 24,
"what": "GTE ops whose clobbers exceed the canonical macro's (a scheduling steer): levers for T7, outside the headline number" "what": "GTE ops whose clobbers exceed the canonical macro's (a scheduling steer): class-B levers INSIDE the headline number since T5 (2026-09-09), marked, 0 at the close"
}, },
"head": "917c68afd", "head": "0bd784c64",
"headers": 3181, "headers": 3181,
"levers_AB": { "levers_AB": {
"asm": 13028, "asm": 13255,
"bodies": 12518, "bodies": 12601,
"distinct_bodies": 1745, "distinct_bodies": 1756,
"marked": 33625, "marked": 33665,
"pins": 20646, "pins": 20646,
"sites": 33674, "sites": 33901,
"unmarked": 49, "unmarked": 236,
"what": "register pins + asm statements excluding GTE ops: the classes the phase drives to 0" "what": "register pins + asm statements excluding GTE ops: the classes the phase drives to 0"
}, },
"macro_definitions": { "macro_definitions": {
"kinds": { "kinds": {
"barrier": 1, "barrier": 1,
"gte": 9102, "gte": 1046,
"instruction": 9, "instruction": 9,
"launder": 428 "launder": 428
}, },
"names": 338, "names": 45,
"names_with_multiple_texts": 32, "names_with_multiple_texts": 5,
"top": [ "top": [
[
"gte_SetRotMatrix",
982,
4
],
[
"gte_SetTransMatrix",
978,
4
],
[
"gte_ldv0",
839,
8
],
[
"gte_stflg",
674,
7
],
[
"gte_rtps",
658,
4
],
[
"gte_stsxy",
655,
4
],
[ [
"SHB", "SHB",
416, 416,
2 2
], ],
[
"gte_stlvnl",
282,
4
],
[
"gte_rtpt",
228,
5
],
[
"gte_ldv3",
207,
5
],
[
"gte_stsxy3",
203,
3
],
[
"gte_stszotz",
201,
2
],
[
"gte_nclip",
186,
5
],
[
"gte_stopz",
186,
4
],
[
"gte_stsz4",
166,
4
],
[
"gte_stsz3",
165,
1
],
[
"gte_ldv3c",
163,
1
],
[
"gte_stsxy3c",
162,
1
],
[
"gte_ldrgb",
155,
3
],
[
"gte_ldlv0",
139,
1
],
[
"gte_rtv0tr",
139,
3
],
[
"gte_stsxy3_ft3",
137,
1
],
[
"gte_mvmva0",
136,
1
],
[ [
"gte_ldIR0z", "gte_ldIR0z",
136, 136,
1 1
], ],
[
"gte_ldrgb",
136,
1
],
[ [
"gte_ldIRGB", "gte_ldIRGB",
136, 136,
1 1
],
[
"gte_dpcl",
136,
1
],
[
"gte_stORGB",
136,
1
],
[
"gte_stsxy3_f4",
80,
1
],
[
"gte_ldv0",
61,
1
],
[
"gte_stlvnl",
58,
1
],
[
"gte_mvmva0",
57,
1
],
[
"gte_SetRotMatrix",
34,
2
],
[
"gte_SetTransMatrix",
33,
2
],
[
"RTP_SND",
9,
2
],
[
"SRM_80186B78",
8,
1
],
[
"STM_80186B78",
8,
1
],
[
"gte_rt",
4,
2
],
[
"DRAW",
3,
1
],
[
"gte_stsv",
3,
1
],
[
"gte_rtv0tr_m",
2,
1
],
[
"XFER",
2,
1
],
[
"XFERLAST",
2,
1
],
[
"gte_SetRotMatrix_m",
1,
1
],
[
"gte_ldv0_m",
1,
1
],
[
"gte_rtv0_m",
1,
1
],
[
"COPY_TO_FAAC",
1,
1
] ]
], ],
"total": 9540 "total": 1484
}, },
"orphan_markers": { "orphan_markers": {
"count": 0, "count": 241,
"sample": [] "sample": [
"src/800.c:1129",
"src/800.c:1144",
"src/800.c:1159",
"src/800.c:10273",
"src/800.c:10585",
"src/800.c:10592",
"src/800.c:10599",
"src/800.c:10606",
"src/800.c:10619",
"src/800.c:10625",
"src/800.c:10632",
"src/800.c:10639",
"src/800.c:10647",
"src/800.c:10655",
"src/800.c:10669",
"src/md_MAIN_019/md_MAIN_019.c:442",
"src/md_MAIN_019/md_MAIN_019.c:456",
"src/md_MAIN_019/md_MAIN_019.c:470",
"src/md_MAIN_031/md_MAIN_031.c:347",
"src/md_MAIN_031/md_MAIN_031.c:361",
"src/md_MAIN_031/md_MAIN_031.c:367",
"src/md_SC07_004/md_SC07_004.c:5974",
"src/md_SC07_004/md_SC07_004.c:5981",
"src/ov_MAIN_012/ov_MAIN_012_jr_801380E0.c:1162",
"src/ov_MAIN_012/ov_MAIN_012_jr_801380E0.c:1177",
"src/ov_SC01_000/ov_SC01_000_jr_801380E0.c:1112",
"src/ov_SC01_000/ov_SC01_000_jr_801380E0.c:1127",
"src/ov_SC01_001/ov_SC01_001_jr_801380E0.c:1112",
"src/ov_SC01_001/ov_SC01_001_jr_801380E0.c:1127",
"src/ov_SC01_004/ov_SC01_004_jr_801380E0.c:1113",
"src/ov_SC01_004/ov_SC01_004_jr_801380E0.c:1128",
"src/ov_SC01_005/ov_SC01_005_jr_801380E0.c:1112",
"src/ov_SC01_005/ov_SC01_005_jr_801380E0.c:1127",
"src/ov_SC01_008/ov_SC01_008_jr_801380E0.c:1113",
"src/ov_SC01_008/ov_SC01_008_jr_801380E0.c:1128",
"src/ov_SC01_009/ov_SC01_009_jr_801380E0.c:1113",
"src/ov_SC01_009/ov_SC01_009_jr_801380E0.c:1128",
"src/ov_SC01_074/ov_SC01_074_jr_801380E0.c:1113",
"src/ov_SC01_074/ov_SC01_074_jr_801380E0.c:1128",
"src/ov_SC01_077/ov_SC01_077_jr_801380E0.c:1416"
]
}, },
"per_tu_asm_macro_definitions": { "per_tu_asm_macro_definitions": {
"by_kind": { "by_kind": {
"barrier": 1, "barrier": 1,
"gte": 9102, "gte": 1046,
"instruction": 9, "instruction": 9,
"launder": 428 "launder": 428
}, },
"gte_variants": 0, "gte_variants": 5,
"total": 9540, "total": 1484,
"what": "asm-bearing #define blocks outside the GTE header: 0 at the close (T5 deletes the canonical duplicates, T7 the variants)" "what": "asm-bearing #define blocks outside the GTE header: 0 at the close (T5 deletes the canonical duplicates, T7 the variants)"
}, },
"pins": { "pins": {
@@ -457,21 +499,21 @@
"volatile_qualified": 134, "volatile_qualified": 134,
"zero": 1321 "zero": 1321
}, },
"src_stamp": "c88fc710f6e5a7ec", "src_stamp": "edd0ed12e734c92d",
"tus": 4121, "tus": 4121,
"unclassified": 0, "unclassified": 0,
"union_AD": { "union_AD": {
"bodies": 15955, "bodies": 15692,
"by_kind": { "by_kind": {
"main": 180, "main": 159,
"md": 182, "md": 169,
"ov": 15258, "ov": 15029,
"resident": 12, "resident": 12,
"shared": 323 "shared": 323
}, },
"copies_in_multi": 14326, "copies_in_multi": 14161,
"distinct_bodies": 2023, "distinct_bodies": 1917,
"multi_copy_classes": 394 "multi_copy_classes": 386
}, },
"verbatim_excluded": { "verbatim_excluded": {
"functions": 13, "functions": 13,
+15 -15
View File
@@ -1,31 +1,31 @@
lever_census: 218 binaries · 4,121 TUs + 3,181 headers · coverage OK · unclassified 0 · verbatim excluded 13 fn / 14 sites (manifest 13) lever_census: 218 binaries · 4,121 TUs + 3,181 headers · coverage OK · unclassified 0 · verbatim excluded 13 fn / 14 sites (manifest 13)
coverage asm raw 60785 = live 46804 + macro-block 7189 + comment/dead 6792 coverage asm raw 52269 = live 45070 + macro-block 407 + comment/dead 6792
coverage register raw 29301 = live 20696 + macro-block 18 + comment/dead 8587 coverage register raw 29301 = live 20696 + macro-block 18 + comment/dead 8587
coverage volatile raw 12554 = live 3437 + macro-block 6510 + comment/dead 2607 coverage volatile raw 4936 = live 2172 + macro-block 157 + comment/dead 2607
coverage builtin raw 599 = live 445 + macro-block 0 + comment/dead 154 coverage builtin raw 599 = live 445 + macro-block 0 + comment/dead 154
coverage attribute raw 76 = live 76 + macro-block 0 + comment/dead 0 coverage attribute raw 76 = live 76 + macro-block 0 + comment/dead 0
class sites in-bodies file-scope bodies distinct TUs marked unmarked kinds class sites in-bodies file-scope bodies distinct TUs marked unmarked kinds
A pins 20646 20646 0 10329 1330 2580 20646 0 {'pin': 20646} A pins 20646 20646 0 10329 1332 2580 20646 0 {'pin': 20646}
B asm 22552 22539 13 9758 1054 2289 13155 9397 {'gte': 6839, 'barrier': 4578, 'gte-lever': 49, 'gte-unsigned': 3, 'launder': 4676, 'instruction': 1712, 'keepalive': 2000, 'asm-body': 13, 'verbatim-body': 2682} B asm 17352 17339 13 9469 928 2287 13154 4198 {'gte': 1412, 'barrier': 4578, 'gte-lever': 276, 'gte-unsigned': 3, 'launder': 4676, 'instruction': 1712, 'keepalive': 2000, 'asm-body': 13, 'verbatim-body': 2682}
C volatile 1722 1570 152 628 97 612 14 1708 {'decl-body': 58, 'decl-file': 152, 'cast': 1510, 'param': 2} C volatile 1722 1570 152 628 99 612 14 1708 {'cast': 1510, 'decl-body': 58, 'decl-file': 152, 'param': 2}
D register 50 50 0 47 47 6 0 50 {'register': 50} D register 50 50 0 47 47 6 0 50 {'register': 50}
E asm-label 7428 1005 6423 737 117 2080 0 7428 {'asm-label': 7428} E asm-label 7428 1005 6423 737 117 2080 0 7428 {'asm-label': 7428}
F builtin 445 445 0 428 27 302 0 445 {'builtin': 445} F builtin 445 445 0 428 27 302 0 445 {'builtin': 445}
G attribute 76 1 75 1 1 40 0 76 {'attribute': 76} G attribute 76 1 75 1 1 40 0 76 {'attribute': 76}
UNION A–D: 15,955 bodies · 2,023 distinct (addresses normalized) · 394 multi-copy classes holding 14,326 bodies · by kind {'ov': 15258, 'shared': 323, 'main': 180, 'md': 182, 'resident': 12} UNION A–D: 15,692 bodies · 1,917 distinct (addresses normalized) · 386 multi-copy classes holding 14,161 bodies · by kind {'ov': 15029, 'md': 169, 'shared': 323, 'main': 159, 'resident': 12}
THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,674 sites in 12,518 bodies (1,745 distinct) · marked !FAKE 33,625 · UNMARKED 49 THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,901 sites in 12,601 bodies (1,756 distinct) · marked !FAKE 33,665 · UNMARKED 236
orphan !FAKE markers (no pin/asm site on the line nor below): 0 orphan !FAKE markers (no pin/asm site on the line nor below): 241
GTE levers (clobbers beyond the canonical macro's): 49 sites (0 via a variant macro, 49 direct) · marked 0 · UNMARKED 49 · unsigned GTE statements 3 GTE levers (clobbers beyond the canonical macro's): 276 sites (24 via a variant macro, 252 direct) · marked 40 · UNMARKED 236 · unsigned GTE statements 3
per-TU asm macro definitions outside the GTE header: 9,540 {'gte': 9102, 'launder': 428, 'instruction': 9, 'barrier': 1} (GTE variants 0) per-TU asm macro definitions outside the GTE header: 1,484 {'gte': 1046, 'instruction': 9, 'barrier': 1, 'launder': 428} (GTE variants 5)
pins: 20,646 · $0 1,321 · $sp 13 · with initializer 2,776 · volatile-qualified 134 · bare-name 25 · spellings {'__asm__': 20544, 'asm': 102} pins: 20,646 · $0 1,321 · $sp 13 · with initializer 2,776 · volatile-qualified 134 · bare-name 25 · spellings {'__asm__': 20544, 'asm': 102}
whole-body asm routines in C shells, manifest PERMANENT (hand asm, NOT levers): 22 routines · 2,682 sites (2,660 private copies + 22 shared headers); asm-bodies NOT permanent (levers): 13 site(s) ['func_8001E378:DECOMPILE-NOW', 'func_80020F34:DECOMPILE-NOW', 'func_800249F0:DECOMPILE-NOW', 'func_80025CBC:DECOMPILE-NOW', 'func_80026514:UNCERTAIN', 'func_800268D0:UNCERTAIN', 'func_80027058:DECOMPILE-NOW', 'func_80027200:DECOMPILE-NOW', 'func_800CBA44:DECOMPILE-NOW', 'func_8017D810:DECOMPILE-NOW', 'func_8017E26C:UNCERTAIN', 'func_80184440:DECOMPILE-NOW', 'func_801A3BCC:DECOMPILE-NOW'] whole-body asm routines in C shells, manifest PERMANENT (hand asm, NOT levers): 22 routines · 2,682 sites (2,660 private copies + 22 shared headers); asm-bodies NOT permanent (levers): 13 site(s) ['func_8001E378:DECOMPILE-NOW', 'func_80020F34:DECOMPILE-NOW', 'func_800249F0:DECOMPILE-NOW', 'func_80025CBC:DECOMPILE-NOW', 'func_80026514:UNCERTAIN', 'func_800268D0:UNCERTAIN', 'func_80027058:DECOMPILE-NOW', 'func_80027200:DECOMPILE-NOW', 'func_800CBA44:DECOMPILE-NOW', 'func_8017D810:DECOMPILE-NOW', 'func_8017E26C:UNCERTAIN', 'func_80184440:DECOMPILE-NOW', 'func_801A3BCC:DECOMPILE-NOW']
asm kinds: {'asm-body/direct': 13, 'barrier/direct': 4576, 'barrier/via-macro': 2, 'gte/direct': 1088, 'gte/via-macro': 5751, 'gte-lever/direct': 49, 'gte-unsigned/direct': 3, 'instruction/direct': 1690, 'instruction/via-macro': 22, 'keepalive/direct': 2000, 'launder/direct': 4236, 'launder/via-macro': 440, 'verbatim-body/direct': 2682} asm kinds: {'asm-body/direct': 13, 'barrier/direct': 4576, 'barrier/via-macro': 2, 'gte/direct': 425, 'gte/via-macro': 987, 'gte-lever/direct': 252, 'gte-lever/via-macro': 24, 'gte-unsigned/direct': 3, 'instruction/direct': 1690, 'instruction/via-macro': 22, 'keepalive/direct': 2000, 'launder/direct': 4236, 'launder/via-macro': 440, 'verbatim-body/direct': 2682}
instruction mnemonics: {'addu': 966, 'move': 406, 'la': 142, 'lh': 134, 'addiu': 22, 'RTP_SND': 22, '.section': 7, 'lui': 4, 'and': 2, 'mult': 1, 'mfhi': 1, 'sll': 1, 'li': 1, 'lw': 1, 'nop': 1, 'srl': 1} instruction mnemonics: {'addu': 966, 'move': 406, 'la': 142, 'lh': 134, 'addiu': 22, 'RTP_SND': 22, '.section': 7, 'lui': 4, 'and': 2, 'mult': 1, 'mfhi': 1, 'li': 1, 'nop': 1, 'srl': 1, 'sll': 1, 'lw': 1}
gte mnemonics: {'gte_ldv0': 653, 'swc2': 449, 'lwc2': 432, 'gte_stsxy': 361, 'gte_rtps': 356, 'gte_stflg': 319, 'gte_rtpt': 289, 'gte_stsxy3': 191, 'gte_ldrgb': 162, 'gte_ldv3c': 159, 'gte_rt': 155, 'gte_SetRotMatrix': 150, 'gte_SetTransMatrix': 145, 'gte_stsv': 145, 'gte_stlvnl': 143, 'gte_ldv3': 140, 'gte_ldIR0z': 133, 'gte_ldIRGB': 133, 'gte_dpcl': 133, 'gte_stORGB': 133, 'gte_mvmva0': 131, 'gte_stsz4': 126, 'gte_stsz3': 123, 'gte_stszotz': 113, 'gte_nclip': 96, 'gte_stopz': 96, 'gte_stsxy3c': 94, 'lhu': 66, 'mfc2': 61, 'gte_stsxy3_f3': 61} gte mnemonics: {'lwc2': 267, 'gte_ldIR0z': 133, 'gte_ldrgb': 133, 'gte_ldIRGB': 133, 'gte_dpcl': 133, 'gte_stORGB': 133, 'swc2': 129, 'gte_ldv0': 71, 'gte_stlvnl': 53, 'gte_mvmva0': 52, 'gte_SetRotMatrix': 33, 'gte_SetTransMatrix': 32, 'lw': 26, 'gte_rt': 21, 'gte_stsv': 18, 'SRM_80186B78': 12, 'STM_80186B78': 12, 'LDV': 3, 'STSV': 3, 'nop': 1, 'cfc2': 1, 'gte_ldlv0': 1, 'gte_rtps': 1, 'gte_stsxy': 1, 'gte_ldv3_80181E04': 1, 'gte_rtpt_80181E04': 1, 'gte_stflg_80181E04': 1, 'gte_stsxy01_80181E04': 1, 'gte_stsz3_80181E04': 1, 'gte_rtv0': 1}
asm-bearing macro definitions: 9,540 (338 names, 32 with >1 text) kinds {'gte': 9102, 'launder': 428, 'instruction': 9, 'barrier': 1} asm-bearing macro definitions: 1,484 (45 names, 5 with >1 text) kinds {'gte': 1046, 'instruction': 9, 'barrier': 1, 'launder': 428}
controls (R39): controls (R39):
src/800.c func_800226C0 pins got 14 expected 45 N-A src/800.c func_800226C0 pins got 14 expected 45 N-A
src/shared/ov/func_80178004.h pins got 8 expected 26 N-A src/shared/ov/func_80178004.h pins got 8 expected 26 N-A
ov_SC03_006 func_80184034 bare-name pins got 0 expected 3 N-A ov_SC03_006 func_80184034 bare-name pins got 0 expected 3 N-A
engine_prelude.h asm sites (a macro definition only) got 0 expected 0 OK engine_prelude.h asm sites (a macro definition only) got 0 expected 0 OK
elapsed 50.8 s elapsed 36.4 s
+5
View File
@@ -0,0 +1,5 @@
delever_oracle --calibrate main ov_SC03_014 ov_SC03_015 ov_SC04_011: 177/177 objects byte-identical untouched; twin checks 32 (0 mismatch); positive control DIFFERS on build/src/800.o; 3.3 s — OK
main 85/85 identical, mean 0.116 s per object
ov_SC03_014 32/32 identical, mean 0.207 s per object
ov_SC03_015 32/32 identical, mean 0.185 s per object
ov_SC04_011 28/28 identical, mean 0.201 s per object
+183 -183
View File
@@ -1,7 +1,7 @@
{ {
"head": "0cb78a6a7", "head": "0bd784c64",
"stamp": "b44c5a8a3423", "stamp": "b44c5a8a3423",
"generated": "2026-09-09 04:51", "generated": "2026-09-09 05:29",
"aliases": [ "aliases": [
"main", "main",
"ov_SC03_014", "ov_SC03_014",
@@ -21,207 +21,207 @@
"main": { "main": {
"objects": 85, "objects": 85,
"identical": 85, "identical": 85,
"seconds": 9.617999999999999, "seconds": 9.876999999999999,
"mean_s": 0.113 "mean_s": 0.116
}, },
"ov_SC03_014": { "ov_SC03_014": {
"objects": 32, "objects": 32,
"identical": 32, "identical": 32,
"seconds": 6.0600000000000005, "seconds": 6.617,
"mean_s": 0.189 "mean_s": 0.207
}, },
"ov_SC03_015": { "ov_SC03_015": {
"objects": 32, "objects": 32,
"identical": 32, "identical": 32,
"seconds": 5.9430000000000005, "seconds": 5.929000000000002,
"mean_s": 0.186 "mean_s": 0.185
}, },
"ov_SC04_011": { "ov_SC04_011": {
"objects": 28, "objects": 28,
"identical": 28, "identical": 28,
"seconds": 4.99, "seconds": 5.6160000000000005,
"mean_s": 0.178 "mean_s": 0.201
} }
}, },
"per_object_seconds": { "per_object_seconds": {
"build/src/800.o": 1.301, "build/src/800.o": 1.092,
"build/src/800_b.o": 0.086, "build/src/800_b.o": 0.108,
"build/src/800_b_2.o": 0.373, "build/src/800_b_2.o": 0.447,
"build/src/800_b_o0a.o": 0.081, "build/src/800_b_o0a.o": 0.167,
"build/src/800_c.o": 0.281, "build/src/800_c.o": 0.345,
"build/src/800b2.o": 0.085, "build/src/800b2.o": 0.11,
"build/src/apicard1.o": 0.107, "build/src/apicard1.o": 0.08,
"build/src/apicard2.o": 0.084, "build/src/apicard2.o": 0.129,
"build/src/apicard3.o": 0.108, "build/src/apicard3.o": 0.089,
"build/src/apicard4.o": 0.116, "build/src/apicard4.o": 0.088,
"build/src/apicard5.o": 0.145, "build/src/apicard5.o": 0.138,
"build/src/apicard6.o": 0.113, "build/src/apicard6.o": 0.08,
"build/src/apicard7.o": 0.078, "build/src/apicard7.o": 0.11,
"build/src/boot.o": 0.102, "build/src/boot.o": 0.118,
"build/src/gap.o": 0.086, "build/src/gap.o": 0.105,
"build/src/libapi1.o": 0.171, "build/src/libapi1.o": 0.096,
"build/src/libapi2.o": 0.103, "build/src/libapi2.o": 0.086,
"build/src/libc2_1.o": 0.077, "build/src/libc2_1.o": 0.083,
"build/src/libc2_2.o": 0.072, "build/src/libc2_2.o": 0.078,
"build/src/libcd1.o": 0.103, "build/src/libcd1.o": 0.123,
"build/src/libcd2.o": 0.067, "build/src/libcd2.o": 0.07,
"build/src/libetc.o": 0.082, "build/src/libetc.o": 0.069,
"build/src/libgpu.o": 0.078, "build/src/libgpu.o": 0.136,
"build/src/libgpu2.o": 0.091, "build/src/libgpu2.o": 0.145,
"build/src/libgs1.o": 0.106, "build/src/libgs1.o": 0.071,
"build/src/libgs2.o": 0.103, "build/src/libgs2.o": 0.076,
"build/src/libgs3.o": 0.099, "build/src/libgs3.o": 0.067,
"build/src/libgs4.o": 0.086, "build/src/libgs4.o": 0.09,
"build/src/libgs5.o": 0.113, "build/src/libgs5.o": 0.082,
"build/src/libgs6.o": 0.112, "build/src/libgs6.o": 0.144,
"build/src/libgs7.o": 0.089, "build/src/libgs7.o": 0.076,
"build/src/libgs8.o": 0.066, "build/src/libgs8.o": 0.066,
"build/src/libgte1.o": 0.132, "build/src/libgte1.o": 0.076,
"build/src/libgte10.o": 0.08, "build/src/libgte10.o": 0.065,
"build/src/libgte11.o": 0.077, "build/src/libgte11.o": 0.067,
"build/src/libgte12.o": 0.154, "build/src/libgte12.o": 0.074,
"build/src/libgte13.o": 0.078, "build/src/libgte13.o": 0.075,
"build/src/libgte14.o": 0.086, "build/src/libgte14.o": 0.064,
"build/src/libgte15.o": 0.061, "build/src/libgte15.o": 0.159,
"build/src/libgte16.o": 0.178, "build/src/libgte16.o": 0.074,
"build/src/libgte17.o": 0.072, "build/src/libgte17.o": 0.074,
"build/src/libgte18.o": 0.079, "build/src/libgte18.o": 0.137,
"build/src/libgte19.o": 0.088, "build/src/libgte19.o": 0.062,
"build/src/libgte2.o": 0.068, "build/src/libgte2.o": 0.135,
"build/src/libgte20.o": 0.069, "build/src/libgte20.o": 0.069,
"build/src/libgte21.o": 0.084, "build/src/libgte21.o": 0.067,
"build/src/libgte22.o": 0.101, "build/src/libgte22.o": 0.084,
"build/src/libgte23.o": 0.126, "build/src/libgte23.o": 0.077,
"build/src/libgte24.o": 0.069, "build/src/libgte24.o": 0.092,
"build/src/libgte25.o": 0.126, "build/src/libgte25.o": 0.109,
"build/src/libgte26.o": 0.114, "build/src/libgte26.o": 0.08,
"build/src/libgte27.o": 0.091, "build/src/libgte27.o": 0.078,
"build/src/libgte28.o": 0.064, "build/src/libgte28.o": 0.097,
"build/src/libgte29.o": 0.066, "build/src/libgte29.o": 0.073,
"build/src/libgte3.o": 0.064, "build/src/libgte3.o": 0.076,
"build/src/libgte30.o": 0.122, "build/src/libgte30.o": 0.108,
"build/src/libgte4.o": 0.08, "build/src/libgte4.o": 0.082,
"build/src/libgte5.o": 0.084, "build/src/libgte5.o": 0.076,
"build/src/libgte6.o": 0.068, "build/src/libgte6.o": 0.098,
"build/src/libgte7.o": 0.066, "build/src/libgte7.o": 0.15,
"build/src/libgte8.o": 0.104, "build/src/libgte8.o": 0.205,
"build/src/libgte9.o": 0.062, "build/src/libgte9.o": 0.162,
"build/src/libmcrd1.o": 0.079, "build/src/libmcrd1.o": 0.078,
"build/src/libmcrd2.o": 0.08, "build/src/libmcrd2.o": 0.077,
"build/src/libpad1.o": 0.063, "build/src/libpad1.o": 0.12,
"build/src/libpad2.o": 0.104, "build/src/libpad2.o": 0.069,
"build/src/sgap.o": 0.102, "build/src/sgap.o": 0.085,
"build/src/sgap_2.o": 0.205, "build/src/sgap_2.o": 0.076,
"build/src/sgap_3.o": 0.113, "build/src/sgap_3.o": 0.09,
"build/src/sgap_4.o": 0.155, "build/src/sgap_4.o": 0.107,
"build/src/sgap_5.o": 0.073, "build/src/sgap_5.o": 0.067,
"build/src/sgap_6.o": 0.078, "build/src/sgap_6.o": 0.217,
"build/src/sgap_8.o": 0.079, "build/src/sgap_8.o": 0.088,
"build/src/snd1.o": 0.071, "build/src/snd1.o": 0.094,
"build/src/snd10.o": 0.079, "build/src/snd10.o": 0.079,
"build/src/snd11.o": 0.093, "build/src/snd11.o": 0.076,
"build/src/snd12.o": 0.12, "build/src/snd12.o": 0.16,
"build/src/snd2.o": 0.073, "build/src/snd2.o": 0.097,
"build/src/snd3.o": 0.081, "build/src/snd3.o": 0.071,
"build/src/snd4.o": 0.071, "build/src/snd4.o": 0.073,
"build/src/snd5.o": 0.073, "build/src/snd5.o": 0.117,
"build/src/snd6.o": 0.075, "build/src/snd6.o": 0.097,
"build/src/snd7.o": 0.067, "build/src/snd7.o": 0.091,
"build/src/snd8.o": 0.13, "build/src/snd8.o": 0.114,
"build/src/snd9.o": 0.077, "build/src/snd9.o": 0.125,
"build/src/ov_SC03_014/ov_SC03_014.o": 0.146, "build/src/ov_SC03_014/ov_SC03_014.o": 0.254,
"build/src/ov_SC03_014/ov_SC03_014_after.o": 0.621, "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.677,
"build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.473, "build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.457,
"build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.07, "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.093,
"build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.065, "build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.098,
"build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.133, "build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.175,
"build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.169, "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.302,
"build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.134, "build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.129,
"build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.193, "build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.18,
"build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.082, "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.11,
"build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.299, "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.279,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.127, "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.08,
"build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.226, "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.203,
"build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.136, "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.109,
"build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.078, "build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.077,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.119, "build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.098,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.14, "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.131,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.656, "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.684,
"build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.318, "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.465,
"build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.123, "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.105,
"build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.228, "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.218,
"build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.072, "build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.07,
"build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.116, "build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.157,
"build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.08, "build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.084,
"build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.213, "build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.2,
"build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.236, "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.233,
"build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.057, "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.133,
"build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.417, "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.503,
"build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.067, "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.083,
"build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.073, "build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.077,
"build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.073, "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.071,
"build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.12, "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.082,
"build/src/ov_SC03_015/ov_SC03_015.o": 0.168, "build/src/ov_SC03_015/ov_SC03_015.o": 0.139,
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.732, "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.592,
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.495, "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.473,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.066, "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.085,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.06, "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.06,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.123, "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.21,
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.172, "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.177,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.118, "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.18,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.117, "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.078,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.105, "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.069,
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.263, "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.201,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.131, "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.122,
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.185, "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.214,
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.109, "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.1,
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.096, "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.075,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.082, "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.085,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.109, "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.109,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.53, "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.545,
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.341, "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.333,
"build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.104, "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.116,
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.232, "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.324,
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.069, "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.073,
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.118, "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.114,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.101, "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.093,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.195, "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.187,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.257, "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.335,
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.059, "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.069,
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.472, "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.331,
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.068, "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.106,
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.067, "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.089,
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.065, "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.08,
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.134, "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.165,
"build/src/ov_SC04_011/ov_SC04_011.o": 0.229, "build/src/ov_SC04_011/ov_SC04_011.o": 0.142,
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.513, "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.502,
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.426, "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.45,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.055, "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.139,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.08, "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.103,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.165, "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.131,
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.184, "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.187,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.127, "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.217,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.078, "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.12,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.094, "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.148,
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.213, "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.206,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.126, "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.119,
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.173, "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.269,
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.093, "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.135,
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.105, "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.084,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.086, "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.123,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.103, "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.104,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.428, "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.433,
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.251, "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.274,
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.117, "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.122,
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.225, "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.303,
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.085, "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.075,
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.134, "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.118,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.099, "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.088,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.125, "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.139,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.541, "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.733,
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.06, "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.079,
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.075 "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.073
}, },
"ok": true, "ok": true,
"seconds": 3.0 "seconds": 3.3
} }
File diff suppressed because one or more lines are too long
+405
View File
@@ -0,0 +1,405 @@
delever: the census describes another tree (stamp 95f31b0d3534a95a); rerun tools/lever_census.py --sites -j 16 — running the census now
gte_consolidate --apply gte1: 400 files of 644 with work (0 done) — 8141 definitions, 897 direct statements
05:49:26 src/ov_SC03_090/ov_SC03_090_jr_8017CA80.c: CONSOLIDATED — deleted 38 defs, renamed 0, use renames 0, direct calls 4, direct levers 6, unmatched 0, marked 6
05:49:26 src/md_MAIN_034/md_MAIN_034.c: CONSOLIDATED — deleted 94 defs, renamed 0, use renames 8, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:28 src/ov_SC07_001/ov_SC07_001_jr_8017BEBC.c: CONSOLIDATED — deleted 67 defs, renamed 0, use renames 30, direct calls 0, direct levers 0, unmatched 1, marked 0
05:49:28 src/ov_SC03_112/ov_SC03_112_jr_8017C294.c: CONSOLIDATED — deleted 50 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 1, marked 0
05:49:29 src/ov_SC06_029/ov_SC06_029_jr_8017C954.c: CONSOLIDATED — deleted 74 defs, renamed 0, use renames 4, direct calls 1, direct levers 1, unmatched 1, marked 1
05:49:29 src/ov_SC03_030/ov_SC03_030_jr_8017AE2C.c: CONSOLIDATED — deleted 35 defs, renamed 0, use renames 10, direct calls 5, direct levers 7, unmatched 1, marked 7
05:49:29 src/ov_SC04_007/ov_SC04_007_jr_8017BEBC.c: CONSOLIDATED — deleted 58 defs, renamed 0, use renames 39, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:30 src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c: CONSOLIDATED — deleted 58 defs, renamed 0, use renames 39, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:30 src/ov_SC06_032/ov_SC06_032_jr_80182890.c: CONSOLIDATED — deleted 66 defs, renamed 0, use renames 0, direct calls 2, direct levers 0, unmatched 0, marked 0
05:49:30 src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: CONSOLIDATED — deleted 45 defs, renamed 0, use renames 42, direct calls 0, direct levers 0, unmatched 1, marked 0
05:49:31 src/ov_SC05_003/ov_SC05_003_jr_8017BEBC.c: CONSOLIDATED — deleted 44 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 1, marked 0
05:49:31 src/ov_SC05_002/ov_SC05_002_jr_8017BEBC.c: CONSOLIDATED — deleted 46 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:31 src/ov_SC03_113/ov_SC03_113_jr_8017C294.c: CONSOLIDATED — deleted 50 defs, renamed 0, use renames 8, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:32 src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c: CONSOLIDATED — deleted 43 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:32 src/ov_SC03_101/ov_SC03_101_jr_8017CA80.c: CONSOLIDATED — deleted 36 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:32 src/ov_SC03_089/ov_SC03_089_jr_8017CA80.c: CONSOLIDATED — deleted 34 defs, renamed 0, use renames 0, direct calls 4, direct levers 6, unmatched 0, marked 6
05:49:33 src/ov_SC04_002/ov_SC04_002_jr_8017BEBC.c: CONSOLIDATED — deleted 40 defs, renamed 0, use renames 39, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:33 src/ov_SC03_102/ov_SC03_102_jr_8017BEBC.c: CONSOLIDATED — deleted 37 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:34 src/ov_SC02_027/ov_SC02_027_jr_8017D898.c: CONSOLIDATED — deleted 34 defs, renamed 0, use renames 3, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:35 src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c: CONSOLIDATED — deleted 41 defs, renamed 0, use renames 38, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:35 src/ov_SC06_032/ov_SC06_032_jr_8017C24C.c: CONSOLIDATED — deleted 19 defs, renamed 0, use renames 6, direct calls 14, direct levers 0, unmatched 2, marked 0
05:49:36 src/ov_SC04_011/ov_SC04_011_jr_8017D494.c: CONSOLIDATED — deleted 46 defs, renamed 0, use renames 11, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:36 src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c: CONSOLIDATED — deleted 31 defs, renamed 0, use renames 9, direct calls 1, direct levers 2, unmatched 1, marked 2
05:49:37 src/ov_SC04_003/ov_SC04_003_jr_8017BEBC.c: CONSOLIDATED — deleted 34 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:37 src/ov_SC03_111/ov_SC03_111_jr_8017EC58.c: CONSOLIDATED — deleted 43 defs, renamed 0, use renames 9, direct calls 0, direct levers 0, unmatched 1, marked 0
05:49:37 src/md_SC07_004/md_SC07_004.c: CONSOLIDATED — deleted 33 defs, renamed 0, use renames 28, direct calls 0, direct levers 2, unmatched 0, marked 2
05:49:38 src/ov_SC06_018/ov_SC06_018_jr_8017C24C.c: CONSOLIDATED — deleted 19 defs, renamed 0, use renames 6, direct calls 14, direct levers 0, unmatched 4, marked 0
05:49:38 src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c: CONSOLIDATED — deleted 55 defs, renamed 0, use renames 13, direct calls 2, direct levers 6, unmatched 1, marked 6
05:49:39 src/ov_SC06_020/ov_SC06_020_jr_8017C24C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 16, direct levers 0, unmatched 2, marked 0
05:49:39 src/ov_SC07_000/ov_SC07_000_jr_8017BEBC.c: CONSOLIDATED — deleted 31 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:39 src/ov_SC03_103/ov_SC03_103_jr_8017C294.c: CONSOLIDATED — deleted 34 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:39 src/ov_SC03_091/ov_SC03_091_jr_8017D898.c: CONSOLIDATED — deleted 30 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:39 src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.c: CONSOLIDATED — deleted 31 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:39 src/ov_SC06_024/ov_SC06_024_jr_8017BEBC.c: CONSOLIDATED — deleted 32 defs, renamed 0, use renames 24, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:39 src/ov_SC03_104/ov_SC03_104_jr_8017CA80.c: CONSOLIDATED — deleted 30 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:40 src/ov_SC03_104/ov_SC03_104_jr_80182038.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 4, direct levers 6, unmatched 0, marked 6
05:49:40 src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c: CONSOLIDATED — deleted 32 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:40 src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c: CONSOLIDATED — deleted 33 defs, renamed 0, use renames 6, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:41 src/ov_SC01_001/ov_SC01_001_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:41 src/ov_SC01_000/ov_SC01_000_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:41 src/ov_SC01_004/ov_SC01_004_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:41 src/ov_SC01_009/ov_SC01_009_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:41 src/ov_SC01_008/ov_SC01_008_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:41 src/ov_SC01_074/ov_SC01_074_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:41 src/ov_SC01_080/ov_SC01_080_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:41 src/ov_SC01_084/ov_SC01_084_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:42 src/ov_SC01_005/ov_SC01_005_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:42 src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:42 src/ov_SC02_004/ov_SC02_004_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:42 src/ov_SC02_011/ov_SC02_011_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:42 src/ov_SC02_015/ov_SC02_015_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:42 src/ov_SC02_016/ov_SC02_016_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:42 src/ov_SC02_017/ov_SC02_017_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:42 src/ov_SC02_000/ov_SC02_000_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:42 src/ov_SC02_021/ov_SC02_021_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:42 src/ov_SC02_026/ov_SC02_026_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:42 src/ov_SC02_037/ov_SC02_037.c: CONSOLIDATED — deleted 29 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:43 src/ov_SC02_027/ov_SC02_027_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:43 src/ov_SC02_031/ov_SC02_031_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:43 src/ov_SC02_035/ov_SC02_035_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:43 src/ov_SC02_039/ov_SC02_039_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:43 src/ov_SC02_028/ov_SC02_028_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:43 src/ov_SC02_041/ov_SC02_041_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:44 src/ov_SC03_010/ov_SC03_010_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:44 src/ov_SC03_003/ov_SC03_003_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:44 src/ov_SC03_011/ov_SC03_011_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:44 src/ov_SC03_006/ov_SC03_006_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:44 src/ov_SC03_012/ov_SC03_012_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:44 src/ov_SC03_023/ov_SC03_023_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:44 src/ov_SC03_007/ov_SC03_007_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:44 src/ov_SC03_002/ov_SC03_002_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:44 src/ov_SC03_001/ov_SC03_001_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:44 src/ov_SC03_013/ov_SC03_013_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:45 src/ov_SC03_024/ov_SC03_024_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:45 src/ov_SC03_028/ov_SC03_028_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:45 src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:45 src/ov_SC03_029/ov_SC03_029_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:46 src/ov_SC03_030/ov_SC03_030_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:46 src/ov_SC03_091/ov_SC03_091_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:47 src/ov_SC03_092/ov_SC03_092_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:48 src/ov_SC03_089/ov_SC03_089_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:48 src/ov_SC03_031/ov_SC03_031_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:48 src/ov_SC03_090/ov_SC03_090_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:49 src/ov_SC03_100/ov_SC03_100_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:49 src/ov_SC03_093/ov_SC03_093_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:49 src/ov_SC03_094/ov_SC03_094_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:50 src/ov_SC03_097/ov_SC03_097_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:50 src/ov_SC03_103/ov_SC03_103_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:51 src/ov_SC03_098/ov_SC03_098_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:51 src/ov_SC03_095/ov_SC03_095_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:51 src/ov_SC03_096/ov_SC03_096_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:51 src/ov_SC03_099/ov_SC03_099_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:52 src/ov_SC03_101/ov_SC03_101_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:53 src/ov_SC03_107/ov_SC03_107.c: CONSOLIDATED — deleted 29 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:49:53 src/ov_SC03_102/ov_SC03_102_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:53 src/ov_SC03_111/ov_SC03_111_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:54 src/ov_SC03_104/ov_SC03_104_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:54 src/ov_SC03_105/ov_SC03_105_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:54 src/ov_SC03_113/ov_SC03_113_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:54 src/ov_SC03_109/ov_SC03_109_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:54 src/ov_SC03_108/ov_SC03_108_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:55 src/ov_SC03_110/ov_SC03_110_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:56 src/ov_SC03_112/ov_SC03_112_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:57 src/ov_SC03_125/ov_SC03_125_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:58 src/ov_SC03_114/ov_SC03_114_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:58 src/ov_SC03_116/ov_SC03_116_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:58 src/ov_SC03_121/ov_SC03_121_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:58 src/ov_SC03_118/ov_SC03_118_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:58 src/ov_SC03_115/ov_SC03_115_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:59 src/ov_SC03_117/ov_SC03_117_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:49:59 src/ov_SC03_124/ov_SC03_124_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:00 src/ov_SC04_000/ov_SC04_000_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:00 src/ov_SC04_002/ov_SC04_002_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:00 src/ov_SC04_003/ov_SC04_003_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:00 src/ov_SC04_006/ov_SC04_006_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:01 src/ov_SC04_004/ov_SC04_004_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:02 src/ov_SC04_008/ov_SC04_008_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:03 src/ov_SC04_005/ov_SC04_005_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:03 src/ov_SC04_007/ov_SC04_007_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:03 src/ov_SC04_009/ov_SC04_009_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:03 src/ov_SC04_010/ov_SC04_010_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:04 src/ov_SC04_020/ov_SC04_020_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:05 src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:05 src/ov_SC04_012/ov_SC04_012_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:05 src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:05 src/ov_SC04_015/ov_SC04_015_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:05 src/ov_SC04_016/ov_SC04_016_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:06 src/ov_SC05_003/ov_SC05_003_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:07 src/ov_SC05_000/ov_SC05_000_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:08 src/ov_SC05_001/ov_SC05_001_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:08 src/ov_SC05_002/ov_SC05_002_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:08 src/ov_SC05_004/ov_SC05_004_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:08 src/ov_SC05_017/ov_SC05_017_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:09 src/ov_SC05_007/ov_SC05_007_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:09 src/ov_SC05_008/ov_SC05_008_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:09 src/ov_SC05_005/ov_SC05_005_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:09 src/ov_SC05_011/ov_SC05_011_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:10 src/ov_SC05_006/ov_SC05_006_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:10 src/ov_SC05_009/ov_SC05_009_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:10 src/ov_SC05_010/ov_SC05_010_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:13 src/ov_SC06_000/ov_SC06_000_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:13 src/ov_SC06_006/ov_SC06_006_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:13 src/ov_SC05_018/ov_SC05_018_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:13 src/ov_SC06_016/ov_SC06_016_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:14 src/ov_SC06_008/ov_SC06_008_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:14 src/ov_SC06_013/ov_SC06_013_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:14 src/ov_SC06_010/ov_SC06_010_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:14 src/ov_SC06_011/ov_SC06_011_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:14 src/ov_SC06_014/ov_SC06_014_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:15 src/ov_SC06_015/ov_SC06_015_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:15 src/ov_SC06_018/ov_SC06_018_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:16 src/ov_SC06_008/ov_SC06_008_jr_8017C294.c: CONSOLIDATED — deleted 27 defs, renamed 1, use renames 12, direct calls 0, direct levers 0, unmatched 0, marked 6
05:50:17 src/ov_SC06_027/ov_SC06_027_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:17 src/ov_SC07_000/ov_SC07_000_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:17 src/ov_SC06_020/ov_SC06_020_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:17 src/ov_SC06_022/ov_SC06_022_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:17 src/ov_SC06_030/ov_SC06_030_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:18 src/ov_SC06_024/ov_SC06_024_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:19 src/ov_SC06_032/ov_SC06_032_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:19 src/ov_SC06_029/ov_SC06_029_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:19 src/ov_SC06_025/ov_SC06_025_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:20 src/ov_SC07_002/ov_SC07_002_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:20 src/ov_SC07_008/ov_SC07_008_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:21 src/ov_SC07_001/ov_SC07_001_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:21 src/ov_SC06_033/ov_SC06_033_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:21 src/ov_SC02_016/ov_SC02_016_jr_8017DC70.c: CONSOLIDATED — deleted 23 defs, renamed 0, use renames 1, direct calls 3, direct levers 1, unmatched 0, marked 1
05:50:21 src/ov_SC02_028/ov_SC02_028_jr_8017D898.c: CONSOLIDATED — deleted 24 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:21 src/ov_SC03_126/ov_SC03_126_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:22 src/ov_SC07_009/ov_SC07_009_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:23 src/ov_SC02_039/ov_SC02_039_jr_8017BEBC.c: CONSOLIDATED — deleted 22 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 1, marked 0
05:50:23 src/ov_SC05_019/ov_SC05_019_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:24 src/ov_SC03_097/ov_SC03_097_jr_8017D898.c: CONSOLIDATED — deleted 24 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:24 src/ov_SC04_021/ov_SC04_021_jr_8012ACE0.c: CONSOLIDATED — deleted 27 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:25 src/ov_SC04_009/ov_SC04_009_jr_8017BEBC.c: CONSOLIDATED — deleted 22 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:25 src/ov_SC02_015/ov_SC02_015_jr_8017AE2C.c: CONSOLIDATED — deleted 23 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:25 src/ov_SC02_021/ov_SC02_021_jr_8017C294.c: CONSOLIDATED — deleted 23 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:25 src/ov_SC03_108/ov_SC03_108_jr_8017BEBC.c: CONSOLIDATED — deleted 22 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 1, marked 0
05:50:26 src/ov_SC03_114/ov_SC03_114_jr_8017BEBC.c: CONSOLIDATED — deleted 24 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:27 src/ov_SC02_026/ov_SC02_026_jr_8017C180.c: CONSOLIDATED — deleted 18 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 4, marked 0
05:50:27 src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c: CONSOLIDATED — deleted 25 defs, renamed 0, use renames 12, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:27 src/ov_SC04_006/ov_SC04_006_jr_8017BEBC.c: CONSOLIDATED — deleted 18 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 3, marked 0
05:50:27 src/ov_SC06_033/ov_SC06_033_jr_8017C24C.c: CONSOLIDATED — deleted 19 defs, renamed 0, use renames 6, direct calls 0, direct levers 0, unmatched 4, marked 0
05:50:28 src/ov_SC03_031/ov_SC03_031_jr_8017DB5C.c: CONSOLIDATED — deleted 19 defs, renamed 0, use renames 1, direct calls 1, direct levers 2, unmatched 0, marked 2
05:50:28 src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c: CONSOLIDATED — deleted 21 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:29 src/ov_SC03_107/ov_SC03_107_jr_801789AC.c: CONSOLIDATED — deleted 28 defs, renamed 0, use renames 8, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:29 src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c: CONSOLIDATED — deleted 22 defs, renamed 0, use renames 6, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:29 src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 5, marked 0
05:50:30 src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c: CONSOLIDATED — deleted 22 defs, renamed 0, use renames 4, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:30 src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c: CONSOLIDATED — deleted 22 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:30 src/ov_SC06_033/ov_SC06_033_jr_80186574.c: CONSOLIDATED — deleted 22 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:31 src/ov_SC02_037/ov_SC02_037_jr_8017AE2C.c: CONSOLIDATED — deleted 21 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:32 src/ov_SC03_095/ov_SC03_095_jr_8017BEBC.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:32 src/ov_SC02_035/ov_SC02_035_jr_8017BEBC.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:32 src/ov_SC03_094/ov_SC03_094_jr_8017BEBC.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:32 src/ov_SC03_093/ov_SC03_093_jr_8017D898.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:33 src/ov_SC03_096/ov_SC03_096_jr_8017BEBC.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:34 src/ov_SC03_100/ov_SC03_100_jr_8017D898.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:34 src/ov_SC03_099/ov_SC03_099_jr_8017BEBC.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:34 src/ov_SC05_009/ov_SC05_009_jr_8017BEBC.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:34 src/ov_SC03_098/ov_SC03_098_jr_8017D898.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:34 src/ov_SC03_109/ov_SC03_109_jr_8017C180.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:36 src/ov_MAIN_012/ov_MAIN_012.c: CONSOLIDATED — deleted 19 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:36 src/md_SC07_003/md_SC07_003.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:37 src/ov_SC07_007/ov_SC07_007.c: CONSOLIDATED — deleted 19 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:37 src/ov_SC03_105/ov_SC03_105_jr_80181C84.c: CONSOLIDATED — deleted 20 defs, renamed 0, use renames 44, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:37 src/ov_SC03_010/ov_SC03_010_jr_8017C730.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 1, marked 0
05:50:38 src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:39 src/ov_SC05_005/ov_SC05_005_jr_8017D898.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 2, marked 0
05:50:39 src/ov_SC07_006/ov_SC07_006.c: CONSOLIDATED — deleted 19 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:39 src/ov_SC06_011/ov_SC06_011_jr_8017BEBC.c: CONSOLIDATED — deleted 18 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:39 src/ov_SC04_000/ov_SC04_000_jr_8017BEBC.c: CONSOLIDATED — deleted 19 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:39 src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.c: CONSOLIDATED — deleted 19 defs, renamed 1, use renames 12, direct calls 0, direct levers 0, unmatched 0, marked 6
05:50:40 src/ov_SC03_092/ov_SC03_092_jr_80181694.c: CONSOLIDATED — deleted 18 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:40 src/ov_SC03_091/ov_SC03_091_jr_8018326C.c: CONSOLIDATED — deleted 8 defs, renamed 0, use renames 0, direct calls 4, direct levers 6, unmatched 0, marked 6
05:50:40 src/ov_SC03_105/ov_SC03_105_jr_80186DDC.c: CONSOLIDATED — deleted 18 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:41 src/ov_SC07_010/ov_SC07_010.c: CONSOLIDATED — deleted 19 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:41 src/ov_SC03_013/ov_SC03_013_jr_8017C730.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:42 src/ov_SC07_011/ov_SC07_011.c: CONSOLIDATED — deleted 19 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:42 src/ov_SC01_001/ov_SC01_001_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:42 src/ov_SC02_031/ov_SC02_031_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:50:43 src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:43 src/ov_SC06_014/ov_SC06_014_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 1, unmatched 0, marked 1
05:50:43 src/ov_SC06_013/ov_SC06_013_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 1, unmatched 0, marked 1
05:50:44 src/ov_SC06_015/ov_SC06_015_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 1, unmatched 0, marked 1
05:50:44 src/ov_SC01_000/ov_SC01_000_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:44 src/ov_SC06_027/ov_SC06_027_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 1, marked 0
05:50:45 src/ov_SC01_084/ov_SC01_084_jr_8017CA80.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:45 src/ov_SC01_004/ov_SC01_004_jr_8017BE9C.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:45 src/ov_SC01_005/ov_SC01_005_jr_8017C340.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:46 src/ov_SC01_009/ov_SC01_009_jr_8017BE9C.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:46 src/ov_SC03_011/ov_SC03_011_jr_8017C730.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:46 src/ov_SC01_074/ov_SC01_074_jr_8017BE9C.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:47 src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:47 src/ov_SC03_002/ov_SC03_002_jr_8017D604.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:48 src/ov_SC03_003/ov_SC03_003_jr_8017D5C0.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:48 src/ov_SC03_105/ov_SC03_105_jr_8017C8D0.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:48 src/ov_SC03_117/ov_SC03_117_jr_8017BEBC.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:48 src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:49 src/ov_SC03_029/ov_SC03_029_jr_8017DC70.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:50 src/ov_SC03_115/ov_SC03_115_jr_8017BEBC.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:50 src/ov_SC03_110/ov_SC03_110_jr_8017D898.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:50 src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:50 src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:50 src/ov_SC03_121/ov_SC03_121_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:51 src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:51 src/ov_SC03_126/ov_SC03_126_jr_8017D5C0.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:52 src/ov_SC03_125/ov_SC03_125_jr_8017D604.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:52 src/ov_SC04_021/ov_SC04_021_jr_8017D5C0.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:53 src/ov_SC04_008/ov_SC04_008_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:53 src/ov_SC04_010/ov_SC04_010_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:53 src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:53 src/ov_SC05_004/ov_SC05_004_jr_8017BEBC.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:54 src/ov_SC04_016/ov_SC04_016_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:54 src/ov_SC05_000/ov_SC05_000_jr_8017BEBC.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:55 src/ov_SC04_020/ov_SC04_020_jr_8017D604.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:55 src/ov_SC05_007/ov_SC05_007_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:55 src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:55 src/ov_SC06_006/ov_SC06_006_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:55 src/ov_SC05_008/ov_SC05_008_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:55 src/ov_SC05_018/ov_SC05_018_jr_8017D604.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:56 src/ov_SC05_006/ov_SC05_006_jr_8017BEBC.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:56 src/ov_SC05_019/ov_SC05_019_jr_8017D5C0.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:57 src/ov_SC05_010/ov_SC05_010_jr_8017C8D0.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:57 src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:57 src/ov_SC05_011/ov_SC05_011_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:58 src/ov_SC06_029/ov_SC06_029_jr_801867D0.c: CONSOLIDATED — deleted 17 defs, renamed 0, use renames 2, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:59 src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:59 src/ov_SC07_006/ov_SC07_006_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:59 src/ov_SC06_016/ov_SC06_016_jr_8017C8D0.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:50:59 src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:00 src/ov_SC06_025/ov_SC06_025_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:00 src/ov_SC07_008/ov_SC07_008_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:01 src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:01 src/ov_SC01_077/ov_SC01_077_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:01 src/ov_SC02_005/ov_SC02_005_jr_8017CF90.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:01 src/ov_SC07_009/ov_SC07_009_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:02 src/ov_SC07_011/ov_SC07_011_jr_8017BEBC.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:03 src/ov_SC02_004/ov_SC02_004_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:03 src/ov_SC02_000/ov_SC02_000_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:03 src/ov_SC03_023/ov_SC03_023_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:04 src/ov_SC03_012/ov_SC03_012_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:04 src/ov_SC03_003/ov_SC03_003_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:04 src/ov_SC04_021/ov_SC04_021_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:04 src/ov_SC03_092/ov_SC03_092_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:05 src/ov_SC02_011/ov_SC02_011_jr_80183178.c: CONSOLIDATED — deleted 11 defs, renamed 0, use renames 2, direct calls 1, direct levers 3, unmatched 0, marked 3
05:51:05 src/ov_SC03_126/ov_SC03_126_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:05 src/ov_SC05_019/ov_SC05_019_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:06 src/ov_SC07_010/ov_SC07_010_jr_8017AE2C.c: CONSOLIDATED — deleted 16 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:06 src/ov_SC06_024/ov_SC06_024_jr_801851E0.c: CONSOLIDATED — deleted 0 defs, renamed 0, use renames 0, direct calls 14, direct levers 0, unmatched 0, marked 0
05:51:06 src/ov_SC02_037/ov_SC02_037_jr_80131340.c: CONSOLIDATED — deleted 12 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:51:08 src/ov_MAIN_012/ov_MAIN_012_jr_80131340.c: CONSOLIDATED — deleted 12 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:51:08 src/ov_SC03_029/ov_SC03_029_jr_8017FF7C.c: CONSOLIDATED — deleted 14 defs, renamed 0, use renames 4, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:08 src/ov_SC06_022/ov_SC06_022_jr_80182D08.c: CONSOLIDATED — deleted 0 defs, renamed 0, use renames 0, direct calls 14, direct levers 0, unmatched 0, marked 0
05:51:08 src/ov_SC03_107/ov_SC03_107_jr_80131340.c: CONSOLIDATED — deleted 12 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:51:09 src/ov_SC03_014/ov_SC03_014_jr_801848E4.c: CONSOLIDATED — deleted 13 defs, renamed 0, use renames 12, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:09 src/ov_SC02_011/ov_SC02_011_jr_80188E3C.c: CONSOLIDATED — deleted 12 defs, renamed 0, use renames 8, direct calls 0, direct levers 0, unmatched 1, marked 0
05:51:09 src/ov_SC03_116/ov_SC03_116_jr_8017AE2C.c: CONSOLIDATED — deleted 14 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:09 src/ov_SC06_006/ov_SC06_006_jr_8017DB90.c: CONSOLIDATED — deleted 13 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:10 src/ov_SC06_033/ov_SC06_033_jr_801836FC.c: CONSOLIDATED — deleted 0 defs, renamed 0, use renames 0, direct calls 14, direct levers 0, unmatched 0, marked 0
05:51:10 src/ov_SC04_016/ov_SC04_016_jr_8017F03C.c: CONSOLIDATED — deleted 13 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:11 src/ov_SC06_030/ov_SC06_030_jr_8017F65C.c: CONSOLIDATED — deleted 13 defs, renamed 0, use renames 14, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:12 src/ov_SC02_005/ov_SC02_005_jr_80185E80.c: CONSOLIDATED — deleted 0 defs, renamed 0, use renames 0, direct calls 6, direct levers 3, unmatched 0, marked 3
05:51:12 src/ov_SC02_000/ov_SC02_000_jr_8018173C.c: CONSOLIDATED — deleted 11 defs, renamed 0, use renames 1, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:13 src/ov_SC07_011/ov_SC07_011_jr_80131340.c: CONSOLIDATED — deleted 8 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:51:13 src/ov_SC07_007/ov_SC07_007_jr_80131340.c: CONSOLIDATED — deleted 8 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:51:13 src/ov_SC03_089/ov_SC03_089_jr_80185E50.c: CONSOLIDATED — deleted 8 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:13 src/ov_SC07_006/ov_SC07_006_jr_80131340.c: CONSOLIDATED — deleted 8 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:51:14 src/ov_SC07_010/ov_SC07_010_jr_80131340.c: CONSOLIDATED — deleted 8 defs, renamed 0, use renames 0, direct calls 1, direct levers 0, unmatched 1, marked 0
05:51:14 src/md_MAIN_019/md_MAIN_019.c: CONSOLIDATED — deleted 2 defs, renamed 0, use renames 0, direct calls 3, direct levers 3, unmatched 0, marked 3
05:51:15 src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c: CONSOLIDATED — deleted 10 defs, renamed 0, use renames 12, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:15 src/md_MAIN_031/md_MAIN_031.c: CONSOLIDATED — deleted 5 defs, renamed 3, use renames 32, direct calls 0, direct levers 0, unmatched 0, marked 12
05:51:15 src/ov_SC03_090/ov_SC03_090_jr_80188274.c: CONSOLIDATED — deleted 8 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:16 src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c: CONSOLIDATED — deleted 10 defs, renamed 0, use renames 12, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:16 src/ov_SC03_091/ov_SC03_091_jr_8018911C.c: CONSOLIDATED — deleted 8 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:17 src/ov_SC01_000/ov_SC01_000_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:17 src/ov_SC01_008/ov_SC01_008_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:18 src/ov_SC01_001/ov_SC01_001_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:18 src/ov_MAIN_012/ov_MAIN_012_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:18 src/ov_SC01_004/ov_SC01_004_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:19 src/ov_SC01_077/ov_SC01_077_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:19 src/ov_SC01_074/ov_SC01_074_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:19 src/ov_SC03_117/ov_SC03_117_jr_80181C80.c: CONSOLIDATED — deleted 8 defs, renamed 0, use renames 8, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:19 src/ov_SC01_009/ov_SC01_009_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:20 src/ov_SC01_005/ov_SC01_005_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:20 src/ov_SC01_080/ov_SC01_080_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:21 src/ov_SC02_021/ov_SC02_021_jr_8017ECFC.c: CONSOLIDATED — deleted 7 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:21 src/ov_SC01_084/ov_SC01_084_jr_80182A00.c: CONSOLIDATED — deleted 7 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:21 src/ov_SC02_011/ov_SC02_011_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:22 src/ov_SC01_084/ov_SC01_084_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:22 src/ov_SC02_004/ov_SC02_004_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:23 src/ov_SC02_026/ov_SC02_026_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:23 src/ov_SC02_005/ov_SC02_005_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:23 src/ov_SC02_015/ov_SC02_015_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:23 src/ov_SC02_000/ov_SC02_000_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:23 src/ov_SC02_017/ov_SC02_017_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:24 src/ov_SC02_016/ov_SC02_016_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:24 src/ov_SC02_027/ov_SC02_027_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:24 src/ov_SC02_021/ov_SC02_021_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:25 src/ov_SC02_028/ov_SC02_028_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:26 src/ov_SC02_035/ov_SC02_035_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:26 src/ov_SC02_041/ov_SC02_041_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:27 src/ov_SC02_031/ov_SC02_031_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:28 src/ov_SC03_001/ov_SC03_001_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:28 src/ov_SC02_039/ov_SC02_039_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:28 src/ov_SC02_037/ov_SC02_037_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:28 src/ov_SC03_010/ov_SC03_010_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:28 src/ov_SC03_003/ov_SC03_003_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:28 src/ov_SC03_002/ov_SC03_002_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:29 src/ov_SC03_011/ov_SC03_011_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:29 src/ov_SC03_012/ov_SC03_012_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:29 src/ov_SC03_007/ov_SC03_007_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:29 src/ov_SC03_006/ov_SC03_006_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:30 src/ov_SC03_013/ov_SC03_013_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:30 src/ov_SC03_024/ov_SC03_024_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:31 src/ov_SC03_014/ov_SC03_014_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:31 src/ov_SC03_030/ov_SC03_030_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:31 src/ov_SC03_031/ov_SC03_031_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:31 src/ov_SC03_091/ov_SC03_091_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:32 src/ov_SC03_023/ov_SC03_023_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:32 src/ov_SC03_029/ov_SC03_029_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:33 src/ov_SC03_028/ov_SC03_028_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:33 src/ov_SC03_092/ov_SC03_092_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:33 src/ov_SC03_093/ov_SC03_093_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:33 src/ov_SC03_089/ov_SC03_089_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:34 src/ov_SC03_090/ov_SC03_090_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:35 src/ov_SC03_095/ov_SC03_095_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:35 src/ov_SC03_094/ov_SC03_094_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:36 src/ov_SC03_096/ov_SC03_096_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:36 src/ov_SC03_098/ov_SC03_098_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:36 src/ov_SC03_104/ov_SC03_104_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:36 src/ov_SC03_097/ov_SC03_097_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:36 src/ov_SC03_102/ov_SC03_102_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:37 src/ov_SC03_101/ov_SC03_101_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:37 src/ov_SC03_099/ov_SC03_099_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:37 src/ov_SC03_100/ov_SC03_100_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:38 src/ov_SC03_103/ov_SC03_103_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:40 src/ov_SC03_107/ov_SC03_107_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:40 src/ov_SC03_108/ov_SC03_108_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:41 src/ov_SC03_105/ov_SC03_105_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:41 src/ov_SC03_111/ov_SC03_111_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:41 src/ov_SC03_110/ov_SC03_110_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:41 src/ov_SC03_109/ov_SC03_109_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:41 src/ov_SC03_112/ov_SC03_112_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:42 src/ov_SC03_114/ov_SC03_114_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:42 src/ov_SC03_113/ov_SC03_113_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:42 src/ov_SC03_115/ov_SC03_115_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:43 src/ov_SC03_116/ov_SC03_116_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:43 src/ov_SC03_117/ov_SC03_117_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:44 src/ov_SC03_117/ov_SC03_117_jr_8017E6EC.c: CONSOLIDATED — deleted 7 defs, renamed 0, use renames 0, direct calls 0, direct levers 0, unmatched 0, marked 0
05:51:45 src/ov_SC04_000/ov_SC04_000_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:45 src/ov_SC04_002/ov_SC04_002_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:46 src/ov_SC04_003/ov_SC04_003_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:46 src/ov_SC03_121/ov_SC03_121_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:46 src/ov_SC03_125/ov_SC03_125_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:46 src/ov_SC03_124/ov_SC03_124_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:46 src/ov_SC03_118/ov_SC03_118_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:51:46 src/ov_SC04_004/ov_SC04_004_jr_801380E0.c: CONSOLIDATED — deleted 3 defs, renamed 0, use renames 1, direct calls 2, direct levers 2, unmatched 0, marked 2
05:53:00 src/800.c: CONSOLIDATED — deleted 349 defs, renamed 0, use renames 237, direct calls 29, direct levers 19, unmatched 11, marked 19
05:53:04 src/shared/ov/func_80132784.h: CONSOLIDATED — deleted 0 defs, renamed 0, use renames 0, direct calls 8, direct levers 12, unmatched 0, marked 12
05:53:09 src/shared/ov/func_8012EC04.h: CONSOLIDATED — deleted 0 defs, renamed 0, use renames 0, direct calls 4, direct levers 6, unmatched 0, marked 6
05:53:09 gte_consolidate: batch gte1 — 400 files: 400 consolidated, 0 defs-only, 0 unchanged, 0 refused, 0 no-recipe · definitions deleted 8056 / renamed as lever variants 5 (variant trials: 416 freed, 5 kept) · header-bound definitions kept 80 · use renames 930 · direct statements → calls 460 / lever 252 / unmatched 185 · markers 276 · compiles 1146 · final 400/400 identical
gte1 wall=298.10 s
exit=0
+3 -1
View File
@@ -440,7 +440,9 @@ accumulate here as the phase produces them.**
`.run/P36/baseline/r22_t5_header.log`)**. Census after the header step (before any apply): GTE levers (clobbers beyond the canonical macro's): 49 sites (0 via a variant macro, 49 direct) · marked 0 · UNMARKED 49 · unsigned GTE statements 3 · per-TU asm macro definitions outside the GTE header: 9,540 {'gte': 9102, 'launder': 428, 'instruction': 9, 'barrier': 1} (GTE variants 0). Next: the apply batches `.run/P36/baseline/r22_t5_header.log`)**. Census after the header step (before any apply): GTE levers (clobbers beyond the canonical macro's): 49 sites (0 via a variant macro, 49 direct) · marked 0 · UNMARKED 49 · unsigned GTE statements 3 · per-TU asm macro definitions outside the GTE header: 9,540 {'gte': 9102, 'launder': 428, 'instruction': 9, 'barrier': 1} (GTE variants 0). Next: the apply batches
(`tools/delever_cycle.sh 1 4 400 gte`, detached), then `--sweep`, then the T5 verify line. (`tools/delever_cycle.sh 1 4 400 gte`, detached), then `--sweep`, then the T5 verify line.
## 🛑 SESSION CHECKPOINT — S98 (2026-09-09): T0 ☑ T1 ☑ T1b ☑ T2 ☑ T3 ☑ T4 ☑ — all committed (T4 = 13 batch commits `a605e1dba`…`f087282a3` + the tool commits; this close); NEXT = T5 the GTE consolidation + the dead lever-macro sweep | the number: 33,625 sites in 12,501 bodies (1,728 distinct) · marked 33,625 · UNMARKED 0 · orphans 0 — `lever_census --check` OK - **2026-09-09 — T5 batch `gte1`** (`.run/P36/delever/run_gte1.log`, `batch_gte1.json`): `gte_consolidate: batch gte1 — 400 files: 400 consolidated, 0 defs-only, 0 unchanged, 0 refused, 0 no-recipe · definitions deleted 8056 / renamed as lever variants 5 (variant trials: 416 freed, 5 kept) · header-bound definitions kept 80 · use renames 930 · direct statements → calls 460 / lever 252 / unmatched 185 · markers 276 · compiles 1146 · final 400/400 identical` → R22 (`.run/P36/baseline/r22_gte1.log`) **`check-all: 218 passed, 0 failed of 218`** (`wall=117.27 s`) → census `THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,901 sites in 12,601 bodies (1,756 distinct) · marked !FAKE 33,665 · UNMARKED 236`.
## 🛑 SESSION CHECKPOINT — S98 (2026-09-09): T0 ☑ T1 ☑ T1b ☑ T2 ☑ T3 ☑ T4 ☑ — all committed (T4 = 13 batch commits `a605e1dba`…`f087282a3` + the tool commits; this close); NEXT = T5 the GTE consolidation + the dead lever-macro sweep | the number: 33,625 sites in 12,501 bodies (1,728 distinct) · marked 33,625 · UNMARKED 0 · orphans 0 — `lever_census --check` OK | last batch `gte1` on 0bd784c64: THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,901 sites in 12,601 bodies (1,756 distinct) · marked !FAKE 33,665 · UNMARKED 236
### 0. How to use this block ### 0. How to use this block
A fresh session reads CLAUDE.md's load order, replays this block verbatim, confirms the effort (T5/T6/T8/T9 xHigh per the plan; S98 ran A fresh session reads CLAUDE.md's load order, replays this block verbatim, confirms the effort (T5/T6/T8/T9 xHigh per the plan; S98 ran
+273 -2016
View File
File diff suppressed because it is too large Load Diff
+6 -61
View File
@@ -297,20 +297,6 @@ extern u8 D_800CC114[];
extern u8 D_800CC5B0[]; extern u8 D_800CC5B0[];
extern u8 D_800CC638[]; extern u8 D_800CC638[];
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14", "memory" )
#define gte_rt(p) \ #define gte_rt(p) \
__asm__ volatile ( \ __asm__ volatile ( \
@@ -411,20 +397,6 @@ void func_800CB578(void *arg0) {
extern s32 func_80017DC4(void *a0, void *a1); extern s32 func_80017DC4(void *a0, void *a1);
extern s32 func_80017758(void *a0, void *a1); extern s32 func_80017758(void *a0, void *a1);
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14", "memory" )
void func_800CB9F8(u16 *a0, u16 *a1, s32 *a2, s32 *a3, s32 stg) { void func_800CB9F8(u16 *a0, u16 *a1, s32 *a2, s32 *a3, s32 stg) {
struct { s16 v[4]; } p[4]; struct { s16 v[4]; } p[4];
@@ -467,17 +439,8 @@ void func_800CB9F8(u16 *a0, u16 *a1, s32 *a2, s32 *a3, s32 stg) {
"mvmva 1, 0, 3, 3, 0" "mvmva 1, 0, 3, 3, 0"
: :
: "r"((s32)mat) : "r"((s32)mat)
: "$12", "$13", "$14", "memory"); : "$12", "$13", "$14", "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldclmv+gte_rtir_m) beyond Sony's (P36 T5 gte1)
__asm__ volatile ( gte_stclmv((s32)mat);
"mfc2 $12, $9;"
"mfc2 $13, $10;"
"mfc2 $14, $11;"
"sh $12, 0( %0 );"
"sh $13, 6( %0 );"
"sh $14, 12( %0 )"
:
: "r"((s32)mat)
: "$12", "$13", "$14", "memory");
__asm__ volatile ( __asm__ volatile (
"lhu $12, 0( %0 );" "lhu $12, 0( %0 );"
"lhu $13, 6( %0 );" "lhu $13, 6( %0 );"
@@ -490,17 +453,8 @@ void func_800CB9F8(u16 *a0, u16 *a1, s32 *a2, s32 *a3, s32 stg) {
"mvmva 1, 0, 3, 3, 0" "mvmva 1, 0, 3, 3, 0"
: :
: "r"((s32)mat + 2) : "r"((s32)mat + 2)
: "$12", "$13", "$14", "memory"); : "$12", "$13", "$14", "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldclmv+gte_rtir_m) beyond Sony's (P36 T5 gte1)
__asm__ volatile ( gte_stclmv((s32)mat + 2);
"mfc2 $12, $9;"
"mfc2 $13, $10;"
"mfc2 $14, $11;"
"sh $12, 0( %0 );"
"sh $13, 6( %0 );"
"sh $14, 12( %0 )"
:
: "r"((s32)mat + 2)
: "$12", "$13", "$14", "memory");
__asm__ volatile ( __asm__ volatile (
"lhu $12, 0( %0 );" "lhu $12, 0( %0 );"
"lhu $13, 6( %0 );" "lhu $13, 6( %0 );"
@@ -513,17 +467,8 @@ void func_800CB9F8(u16 *a0, u16 *a1, s32 *a2, s32 *a3, s32 stg) {
"mvmva 1, 0, 3, 3, 0" "mvmva 1, 0, 3, 3, 0"
: :
: "r"((s32)mat + 4) : "r"((s32)mat + 4)
: "$12", "$13", "$14", "memory"); : "$12", "$13", "$14", "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldclmv+gte_rtir_m) beyond Sony's (P36 T5 gte1)
__asm__ volatile ( gte_stclmv((s32)mat + 4);
"mfc2 $12, $9;"
"mfc2 $13, $10;"
"mfc2 $14, $11;"
"sh $12, 0( %0 );"
"sh $13, 6( %0 );"
"sh $14, 12( %0 )"
:
: "r"((s32)mat + 4)
: "$12", "$13", "$14", "memory");
((s32 *)mat)[5] = a2[5]; ((s32 *)mat)[5] = a2[5];
((s32 *)mat)[6] = a2[6]; ((s32 *)mat)[6] = a2[6];
((s32 *)mat)[7] = a2[7]; ((s32 *)mat)[7] = a2[7];
+38 -72
View File
@@ -344,7 +344,8 @@ void func_800CB5C8(s32 arg0, s32 arg1) {
typedef struct { s16 m[3][4]; } Mat_CB6A0; typedef struct { s16 m[3][4]; } Mat_CB6A0;
#define SETROT_A(p) __asm__ __volatile__( \ /* !FAKE: gte variant `gte_SetRotMatrix_m` — memory beyond Sony's `gte_SetRotMatrix` (a scheduling steer; P36 T5) */
#define gte_SetRotMatrix_m(p) __asm__ __volatile__( \
"lw $12, 0(%0)\n" \ "lw $12, 0(%0)\n" \
"lw $13, 4(%0)\n" \ "lw $13, 4(%0)\n" \
"ctc2 $12, $0\n" \ "ctc2 $12, $0\n" \
@@ -357,25 +358,19 @@ typedef struct { s16 m[3][4]; } Mat_CB6A0;
"ctc2 $14, $4\n" \ "ctc2 $14, $4\n" \
: : "r"(p) : "$12", "$13", "$14", "memory") : : "r"(p) : "$12", "$13", "$14", "memory")
#define LDV_A(p) __asm__ __volatile__( \ /* !FAKE: gte variant `gte_ldv0_m` — memory beyond Sony's `gte_ldv0` (a scheduling steer; P36 T5) */
#define gte_ldv0_m(p) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \ "lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \ "lwc2 $1, 4(%0)\n" \
: : "r"(p) : "memory") : : "r"(p) : "memory")
#define MVMVA_A() __asm__ __volatile__( \ /* !FAKE: gte variant `gte_rtv0_m` — memory beyond Sony's `gte_rtv0` (a scheduling steer; P36 T5) */
#define gte_rtv0_m() __asm__ __volatile__( \
"nop\n" \ "nop\n" \
"nop\n" \ "nop\n" \
"mvmva 1, 0, 0, 3, 0\n" \ "mvmva 1, 0, 0, 3, 0\n" \
: : : "memory") : : : "memory")
#define STSV_A(p) __asm__ __volatile__( \
"mfc2 $12, $9\n" \
"mfc2 $13, $10\n" \
"mfc2 $14, $11\n" \
"sh $12, 0(%0)\n" \
"sh $13, 2(%0)\n" \
"sh $14, 4(%0)\n" \
: : "r"(p) : "$12", "$13", "$14", "memory")
extern s32 func_80017DC4(void *a0, void *a1); extern s32 func_80017DC4(void *a0, void *a1);
extern void func_80016ED4(void *a0); extern void func_80016ED4(void *a0);
@@ -401,31 +396,31 @@ void func_800CB6A0(void *a0, void *a1, void *a2, s32 a3) {
vin[2] = 0; vin[2] = 0;
vin[0] = *(u16 *)((u8 *)a1 + 0) - 0x30; vin[0] = *(u16 *)((u8 *)a1 + 0) - 0x30;
vin[1] = *(u16 *)((u8 *)a1 + 2) - 0x20; vin[1] = *(u16 *)((u8 *)a1 + 2) - 0x20;
SETROT_A(mat); gte_SetRotMatrix_m(mat); // !FAKE: gte via gte_SetRotMatrix_m — memory beyond Sony's `gte_SetRotMatrix` (P36 T5 gte1)
LDV_A(vin); gte_ldv0_m(vin); // !FAKE: gte via gte_ldv0_m — memory beyond Sony's `gte_ldv0` (P36 T5 gte1)
MVMVA_A(); gte_rtv0_m(); // !FAKE: gte via gte_rtv0_m — memory beyond Sony's `gte_rtv0` (P36 T5 gte1)
STSV_A(o0); gte_stsv(o0);
vin[0] = *(u16 *)((u8 *)a1 + 0) + 0x30; vin[0] = *(u16 *)((u8 *)a1 + 0) + 0x30;
vin[1] = *(u16 *)((u8 *)a1 + 2) - 0x20; vin[1] = *(u16 *)((u8 *)a1 + 2) - 0x20;
SETROT_A(mat); gte_SetRotMatrix_m(mat); // !FAKE: gte via gte_SetRotMatrix_m — memory beyond Sony's `gte_SetRotMatrix` (P36 T5 gte1)
LDV_A(vin); gte_ldv0_m(vin); // !FAKE: gte via gte_ldv0_m — memory beyond Sony's `gte_ldv0` (P36 T5 gte1)
MVMVA_A(); gte_rtv0_m(); // !FAKE: gte via gte_rtv0_m — memory beyond Sony's `gte_rtv0` (P36 T5 gte1)
STSV_A(vec[1]); gte_stsv(vec[1]);
vin[0] = *(u16 *)((u8 *)a1 + 0) - 0x30; vin[0] = *(u16 *)((u8 *)a1 + 0) - 0x30;
vin[1] = *(u16 *)((u8 *)a1 + 2) + 0x20; vin[1] = *(u16 *)((u8 *)a1 + 2) + 0x20;
SETROT_A(mat); gte_SetRotMatrix_m(mat); // !FAKE: gte via gte_SetRotMatrix_m — memory beyond Sony's `gte_SetRotMatrix` (P36 T5 gte1)
LDV_A(vin); gte_ldv0_m(vin); // !FAKE: gte via gte_ldv0_m — memory beyond Sony's `gte_ldv0` (P36 T5 gte1)
MVMVA_A(); gte_rtv0_m(); // !FAKE: gte via gte_rtv0_m — memory beyond Sony's `gte_rtv0` (P36 T5 gte1)
STSV_A(vec[2]); gte_stsv(vec[2]);
vin[0] = *(u16 *)((u8 *)a1 + 0) + 0x30; vin[0] = *(u16 *)((u8 *)a1 + 0) + 0x30;
vin[1] = *(u16 *)((u8 *)a1 + 2) + 0x20; vin[1] = *(u16 *)((u8 *)a1 + 2) + 0x20;
SETROT_A(mat); gte_SetRotMatrix_m(mat); // !FAKE: gte via gte_SetRotMatrix_m — memory beyond Sony's `gte_SetRotMatrix` (P36 T5 gte1)
LDV_A(vin); gte_ldv0_m(vin); // !FAKE: gte via gte_ldv0_m — memory beyond Sony's `gte_ldv0` (P36 T5 gte1)
MVMVA_A(); gte_rtv0_m(); // !FAKE: gte via gte_rtv0_m — memory beyond Sony's `gte_rtv0` (P36 T5 gte1)
STSV_A(vec[3]); gte_stsv(vec[3]);
tc[0] = tp[0]; tc[0] = tp[0];
tc[1] = tp[1]; tc[1] = tp[1];
@@ -448,38 +443,9 @@ void func_800CB6A0(void *a0, void *a1, void *a2, s32 a3) {
#define SETROT_A(p) __asm__ __volatile__( \
"lw $12, 0(%0)\n" \
"lw $13, 4(%0)\n" \
"ctc2 $12, $0\n" \
"ctc2 $13, $1\n" \
"lw $12, 8(%0)\n" \
"lw $13, 12(%0)\n" \
"lw $14, 16(%0)\n" \
"ctc2 $12, $2\n" \
"ctc2 $13, $3\n" \
"ctc2 $14, $4\n" \
: : "r"(p) : "$12", "$13", "$14", "memory")
#define LDV_A(p) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(p) : "memory")
#define MVMVA_A() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 3, 0\n" \
: : : "memory")
#define STSV_A(p) __asm__ __volatile__( \
"mfc2 $12, $9\n" \
"mfc2 $13, $10\n" \
"mfc2 $14, $11\n" \
"sh $12, 0(%0)\n" \
"sh $13, 2(%0)\n" \
"sh $14, 4(%0)\n" \
: : "r"(p) : "$12", "$13", "$14", "memory")
extern s32 func_80017DC4(void *a0, void *a1); extern s32 func_80017DC4(void *a0, void *a1);
extern void func_80017714(void *a0); extern void func_80017714(void *a0);
@@ -497,31 +463,31 @@ void func_800CB964(void *a0, void *a1, void *a2) {
vin[2] = 0; vin[2] = 0;
vin[0] = *(u16 *)((u8 *)a1 + 0) - 0x38; vin[0] = *(u16 *)((u8 *)a1 + 0) - 0x38;
vin[1] = *(u16 *)((u8 *)a1 + 2) - 0x28; vin[1] = *(u16 *)((u8 *)a1 + 2) - 0x28;
SETROT_A(mat); gte_SetRotMatrix(mat);
LDV_A(vin); gte_ldv0(vin);
MVMVA_A(); gte_rtv0();
STSV_A(o0); gte_stsv(o0);
vin[0] = *(u16 *)((u8 *)a1 + 0) + 0x38; vin[0] = *(u16 *)((u8 *)a1 + 0) + 0x38;
vin[1] = *(u16 *)((u8 *)a1 + 2) - 0x28; vin[1] = *(u16 *)((u8 *)a1 + 2) - 0x28;
SETROT_A(mat); gte_SetRotMatrix(mat);
LDV_A(vin); gte_ldv0(vin);
MVMVA_A(); gte_rtv0();
STSV_A(vec[1]); gte_stsv(vec[1]);
vin[0] = *(u16 *)((u8 *)a1 + 0) - 0x38; vin[0] = *(u16 *)((u8 *)a1 + 0) - 0x38;
vin[1] = *(u16 *)((u8 *)a1 + 2) + 0x28; vin[1] = *(u16 *)((u8 *)a1 + 2) + 0x28;
SETROT_A(mat); gte_SetRotMatrix(mat);
LDV_A(vin); gte_ldv0(vin);
MVMVA_A(); gte_rtv0();
STSV_A(vec[2]); gte_stsv(vec[2]);
vin[0] = *(u16 *)((u8 *)a1 + 0) + 0x38; vin[0] = *(u16 *)((u8 *)a1 + 0) + 0x38;
vin[1] = *(u16 *)((u8 *)a1 + 2) + 0x28; vin[1] = *(u16 *)((u8 *)a1 + 2) + 0x28;
SETROT_A(mat); gte_SetRotMatrix(mat);
LDV_A(vin); gte_ldv0(vin);
MVMVA_A(); gte_rtv0();
STSV_A(vec[3]); gte_stsv(vec[3]);
tail[0xE] = 0x80; tail[0xE] = 0x80;
tail[0xD] = 0x80; tail[0xD] = 0x80;
+8 -399
View File
@@ -179,65 +179,14 @@ void func_800CB00C(s32 arg0, s32 arg1, s32 arg2)
/* ---- PsyQ inline GTE macros (same spellings as the matched siblings /* ---- PsyQ inline GTE macros (same spellings as the matched siblings
* func_800CBA18 / func_800CBC2C in this TU) ---- */ * func_800CBA18 / func_800CBC2C in this TU) ---- */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldrgb(r0) __asm__ volatile ( \
"lwc2 $6, 0( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz3() __asm__ volatile ("nop;nop;avsz3")
#define gte_nccs() __asm__ volatile ("nop;nop;nccs")
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stotz(r0) __asm__ volatile ( \
"swc2 $7, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_strgb(r0) __asm__ volatile ( \
"swc2 $22, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
/* ---- types ------------------------------------------------------------- */ /* ---- types ------------------------------------------------------------- */
typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CB1F8; /* 0x08 */ typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CB1F8; /* 0x08 */
@@ -322,72 +271,15 @@ F3P_800CB1F8 *func_800CB1F8(Face10_800CB1F8 *f, SVEC8_800CB1F8 *verts,
*/ */
/* ---- PsyQ inline_c.h GTE macros (same spellings as the matched siblings) -- */ /* ---- PsyQ inline_c.h GTE macros (same spellings as the matched siblings) -- */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldrgb(r0) __asm__ volatile ( \
"lwc2 $6, 0( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
#define gte_nccs() __asm__ volatile ("nop;nop;nccs")
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stotz(r0) __asm__ volatile ( \
"swc2 $7, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_strgb(r0) __asm__ volatile ( \
"swc2 $22, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
/* ---- types ------------------------------------------------------------- */ /* ---- types ------------------------------------------------------------- */
typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CB3C0; /* 0x08 */ typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CB3C0; /* 0x08 */
@@ -435,7 +327,7 @@ PktF4_800CB3C0 *func_800CB3C0(FaceF4_800CB3C0 *face, SVEC8_800CB3C0 *vtx,
gte_nclip(); gte_nclip();
gte_stopz(&g.opz); gte_stopz(&g.opz);
if (g.opz > 0) { if (g.opz > 0) {
gte_stsxy3_f4(pkt); gte_stsxy3_f3(pkt);
gte_ldv0(&vtx[face->v3]); gte_ldv0(&vtx[face->v3]);
gte_rtps(); gte_rtps();
gte_stflg(&g.flag); gte_stflg(&g.flag);
@@ -468,61 +360,13 @@ PktF4_800CB3C0 *func_800CB3C0(FaceF4_800CB3C0 *face, SVEC8_800CB3C0 *vtx,
* store macros carry local names so they cannot collide with the * store macros carry local names so they cannot collide with the
* three-pointer gte_strgb3 defined by the func_800CBE28 block) ---- */ * three-pointer gte_strgb3 defined by the func_800CBE28 block) ---- */
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldrgb(r0) __asm__ volatile ( \
"lwc2 $6, 0( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz3() __asm__ volatile ("nop;nop;avsz3")
#define gte_ncct() __asm__ volatile ("nop;nop;ncct")
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stotz(r0) __asm__ volatile ( \
"swc2 $7, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_flat(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_strgb3_flat(r0) __asm__ volatile ( \
"swc2 $20, 4( %0 );" \
"swc2 $21, 12( %0 );" \
"swc2 $22, 20( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
/* ---- types ------------------------------------------------------------- */ /* ---- types ------------------------------------------------------------- */
typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CB5D0; /* 0x08 */ typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CB5D0; /* 0x08 */
@@ -572,7 +416,7 @@ Prim1C_800CB5D0 *func_800CB5D0(Face14_800CB5D0 *f, SVEC8_800CB5D0 *verts,
gte_nclip(); gte_nclip();
gte_stopz(&g.opz); gte_stopz(&g.opz);
if (g.opz > 0) { if (g.opz > 0) {
gte_stsxy3_flat(prim); gte_stsxy3_ft3(prim);
gte_avsz3(); gte_avsz3();
gte_stotz(&g.opz); gte_stotz(&g.opz);
if (func_800CC0A0(prim) != 0) { if (func_800CC0A0(prim) != 0) {
@@ -583,7 +427,7 @@ Prim1C_800CB5D0 *func_800CB5D0(Face14_800CB5D0 *f, SVEC8_800CB5D0 *verts,
gte_ldrgb(&f->rgb); gte_ldrgb(&f->rgb);
gte_ldv3(&norms[f->n0], &norms[f->n0], &norms[f->n0]); gte_ldv3(&norms[f->n0], &norms[f->n0], &norms[f->n0]);
gte_ncct(); gte_ncct();
gte_strgb3_flat(prim); gte_strgb3_g3(prim);
} }
func_800CC110(ot, g.opz, shift, prim, 0x6000000); func_800CC110(ot, g.opz, shift, prim, 0x6000000);
} }
@@ -594,81 +438,16 @@ Prim1C_800CB5D0 *func_800CB5D0(Face14_800CB5D0 *f, SVEC8_800CB5D0 *verts,
} }
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldrgb(r0) __asm__ volatile ( \
"lwc2 $6, 0( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
#define gte_ncct() __asm__ volatile ("nop;nop;ncct")
#define gte_nccs() __asm__ volatile ("nop;nop;nccs")
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stotz(r0) __asm__ volatile ( \
"swc2 $7, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_gt4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_strgb(r0) __asm__ volatile ( \
"swc2 $22, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_strgb3_gt4(r0) __asm__ volatile ( \
"swc2 $20, 4( %0 );" \
"swc2 $21, 12( %0 );" \
"swc2 $22, 20( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CB7BC; /* 0x08 */ typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CB7BC; /* 0x08 */
@@ -705,7 +484,7 @@ PktGT4_800CB7BC *func_800CB7BC(FaceGT4_800CB7BC *face, SVEC8_800CB7BC *vtx,
gte_nclip(); gte_nclip();
gte_stopz(&g.opz); gte_stopz(&g.opz);
if (g.opz > 0) { if (g.opz > 0) {
gte_stsxy3_gt4(pkt); gte_stsxy3_ft3(pkt);
gte_ldv0(&vtx[face->v3]); gte_ldv0(&vtx[face->v3]);
gte_rtps(); gte_rtps();
gte_stflg(&g.flag); gte_stflg(&g.flag);
@@ -722,7 +501,7 @@ PktGT4_800CB7BC *func_800CB7BC(FaceGT4_800CB7BC *face, SVEC8_800CB7BC *vtx,
gte_ldrgb(&face->rgb); gte_ldrgb(&face->rgb);
gte_ldv3(&nrm[face->n0], &nrm[face->n0], &nrm[face->n0]); gte_ldv3(&nrm[face->n0], &nrm[face->n0], &nrm[face->n0]);
gte_ncct(); gte_ncct();
gte_strgb3_gt4(pkt); gte_strgb3_g3(pkt);
gte_ldv0(&nrm[face->n0]); gte_ldv0(&nrm[face->n0]);
gte_nccs(); gte_nccs();
gte_strgb(&pkt->rgb3); gte_strgb(&pkt->rgb3);
@@ -763,72 +542,15 @@ PktGT4_800CB7BC *func_800CB7BC(FaceGT4_800CB7BC *face, SVEC8_800CB7BC *vtx,
*/ */
/* ---- PsyQ inline_c.h GTE macros (same spellings as the matched twins) ---- */ /* ---- PsyQ inline_c.h GTE macros (same spellings as the matched twins) ---- */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldrgb(r0) __asm__ volatile ( \
"lwc2 $6, 0( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
#define gte_nccs() __asm__ volatile ("nop;nop;nccs")
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stotz(r0) __asm__ volatile ( \
"swc2 $7, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_strgb(r0) __asm__ volatile ( \
"swc2 $22, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
/* ---- types ------------------------------------------------------------- */ /* ---- types ------------------------------------------------------------- */
typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CBA18; /* 0x08 */ typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CBA18; /* 0x08 */
@@ -886,7 +608,7 @@ Ft4_800CBA18 *func_800CBA18(Face20_800CBA18 *f, SVEC8_800CBA18 *verts,
gte_nclip(); gte_nclip();
gte_stopz(&g.otz); gte_stopz(&g.otz);
if (g.otz > 0) { if (g.otz > 0) {
gte_stsxy3_ft4(prim); gte_stsxy3_ft3(prim);
gte_ldv0(&verts[f->v3]); gte_ldv0(&verts[f->v3]);
gte_rtps(); gte_rtps();
gte_stflg(&g.flag); gte_stflg(&g.flag);
@@ -944,61 +666,13 @@ typedef struct { /* 0x28 */
/* ---- PsyQ inline GTE macros (same spellings as the matched func_80027D20) ---- */ /* ---- PsyQ inline GTE macros (same spellings as the matched func_80027D20) ---- */
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldrgb(r0) __asm__ volatile ( \
"lwc2 $6, 0( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz3() __asm__ volatile ("nop;nop;avsz3")
#define gte_ncct() __asm__ volatile ("nop;nop;ncct")
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stotz(r0) __asm__ volatile ( \
"swc2 $7, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_gt3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 20( %0 );" \
"swc2 $14, 32( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_strgb3_gt3(r0, r1, r2) __asm__ volatile ( \
"swc2 $20, 0( %0 );" \
"swc2 $21, 0( %1 );" \
"swc2 $22, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
extern s16 D_800C7C74; extern s16 D_800C7C74;
extern u32 D_80063884; extern u32 D_80063884;
@@ -1023,7 +697,7 @@ GT3P *func_800CBC2C(FaceT3 *f, SVEC2 *verts, SVEC2 *norms, GT3P *prims,
gte_nclip(); gte_nclip();
gte_stopz(&g.opz); gte_stopz(&g.opz);
if (g.opz > 0) { if (g.opz > 0) {
gte_stsxy3_gt3(prim); gte_stsxy3_gt4(prim);
gte_avsz3(); gte_avsz3();
gte_stotz(&g.opz); gte_stotz(&g.opz);
if (func_800CC0A0(prim) != 0) { if (func_800CC0A0(prim) != 0) {
@@ -1033,7 +707,7 @@ GT3P *func_800CBC2C(FaceT3 *f, SVEC2 *verts, SVEC2 *norms, GT3P *prims,
} else { } else {
gte_ldv3(&norms[f->n0], &norms[f->n0], &norms[f->n0]); gte_ldv3(&norms[f->n0], &norms[f->n0], &norms[f->n0]);
gte_ncct(); gte_ncct();
gte_strgb3_gt3(&prim->rgb0, &prim->rgb1, &prim->rgb2); gte_strgb3(&prim->rgb0, &prim->rgb1, &prim->rgb2);
} }
func_800CC110(ot, g.opz, shift, prim, 0x09000000); func_800CC110(ot, g.opz, shift, prim, 0x09000000);
} }
@@ -1048,81 +722,16 @@ GT3P *func_800CBC2C(FaceT3 *f, SVEC2 *verts, SVEC2 *norms, GT3P *prims,
/* ---- PsyQ inline GTE macros (same spellings as the matched func_800262D8 body) ---- */ /* ---- PsyQ inline GTE macros (same spellings as the matched func_800262D8 body) ---- */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldrgb(r0) __asm__ volatile ( \
"lwc2 $6, 0( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
#define gte_ncct() __asm__ volatile ("nop;nop;ncct")
#define gte_nccs() __asm__ volatile ("nop;nop;nccs")
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stotz(r0) __asm__ volatile ( \
"swc2 $7, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_gt4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 20( %0 );" \
"swc2 $14, 32( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_strgb(r0) __asm__ volatile ( \
"swc2 $22, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_strgb3(r0, r1, r2) __asm__ volatile ( \
"swc2 $20, 0( %0 );" \
"swc2 $21, 0( %1 );" \
"swc2 $22, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CBE28; /* 0x08 */ typedef struct { s16 vx, vy, vz, pad; } SVEC8_800CBE28; /* 0x08 */
-172
View File
@@ -1588,30 +1588,6 @@ void func_801A1F38(s32 arg0) {
/* --- PsyQ inline GTE macros (copied verbatim from the banked /* --- PsyQ inline GTE macros (copied verbatim from the banked
* src/ov_SC06_008/ov_SC06_008_jr_8017C294.c spelling) ------------------ */ * src/ov_SC06_008/ov_SC06_008_jr_8017C294.c spelling) ------------------ */
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
extern void RotTransSV(s32 a0, s32 a1, void *a2); extern void RotTransSV(s32 a0, s32 a1, void *a2);
extern void func_8002D4C8(s32 a0, s32 a1); extern void func_8002D4C8(s32 a0, s32 a1);
@@ -2051,56 +2027,6 @@ extern s16 D_800B9A02;
extern s32 D_800A5E60; extern s32 D_800A5E60;
/* PsyQ inline GTE macros (house spelling) */ /* PsyQ inline GTE macros (house spelling) */
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* libgpu P_TAG: the 24-bit addr field reproduces setaddr()/getaddr() (boot.c house spelling) */ /* libgpu P_TAG: the 24-bit addr field reproduces setaddr()/getaddr() (boot.c house spelling) */
typedef struct { typedef struct {
@@ -2823,30 +2749,6 @@ extern void func_8012EA90(s32 a0, s32 a1, s32 *a2);
extern void RotTransSV(s32 a0, s32 a1, void *a2); extern void RotTransSV(s32 a0, s32 a1, void *a2);
extern u8 D_801A6CE8[]; extern u8 D_801A6CE8[];
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
void func_801A38E4(void *a0, void *a1, s32 a2, s32 a3, s32 a4) void func_801A38E4(void *a0, void *a1, s32 a2, s32 a3, s32 a4)
{ {
@@ -3367,30 +3269,6 @@ s32 func_801A419C(s32 arg0) {
#include "common.h" #include "common.h"
/* --- PsyQ inline GTE macros (TU house spelling, copied from func_801A2014) --- */ /* --- PsyQ inline GTE macros (TU house spelling, copied from func_801A2014) --- */
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
extern void RotTransSV(s32 a0, s32 a1, void *a2); extern void RotTransSV(s32 a0, s32 a1, void *a2);
extern s32 func_8004787C(s32 a0); extern s32 func_8004787C(s32 a0);
@@ -4153,62 +4031,12 @@ typedef struct {
s32 f4; s32 f4;
} Prim_801A52DC; } Prim_801A52DC;
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
extern void func_80016714(s8 *a0, s32 a1); extern void func_80016714(s8 *a0, s32 a1);
extern void func_8012C218(void *a0); extern void func_8012C218(void *a0);
+30 -145
View File
@@ -4016,15 +4016,6 @@ void func_801A5D68(void *arg) {
typedef struct { u32 addr : 24; u32 len : 8; u8 r0, g0, b0, code; } P_TAG; typedef struct { u32 addr : 24; u32 len : 8; u8 r0, g0, b0, code; } P_TAG;
#define gte_ldv0(r0) __asm__ volatile ("lwc2 $0, 0( %0 );" "lwc2 $1, 4( %0 )" : : "r"( r0 ))
#define gte_ldv3(r0, r1, r2) __asm__ volatile ("lwc2 $0, 0( %0 );" "lwc2 $1, 4( %0 );" "lwc2 $2, 0( %1 );" "lwc2 $3, 4( %1 );" "lwc2 $4, 0( %2 );" "lwc2 $5, 4( %2 )" : : "r"( r0 ), "r"( r1 ), "r"( r2 ))
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
#define gte_stsxy(r0) __asm__ volatile ("swc2 $14, 0( %0 )" : : "r"( r0 ) : "memory")
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ("swc2 $12, 0( %0 );" "swc2 $13, 0( %1 );" "swc2 $14, 0( %2 )" : : "r"( r0 ), "r"( r1 ), "r"( r2 ) : "memory")
#define gte_stotz(r0) __asm__ volatile ("swc2 $7, 0( %0 )" : : "r"( r0 ) : "memory")
#define gte_stflg(r0) __asm__ volatile ("cfc2 $12, $31;" "nop;" "sw $12, 0( %0 )" : : "r"( r0 ) : "$12", "memory")
void func_801A5E60(s32 a0, u8 *v) void func_801A5E60(s32 a0, u8 *v)
{ {
@@ -5959,19 +5950,8 @@ typedef struct {
s16 x, y, z, pad; s16 x, y, z, pad;
} SXY_801A8B64; } SXY_801A8B64;
#define gte_ldv0_801A8B64(r0) __asm__ __volatile__ ( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)" \
: \
: "r"(r0))
#define gte_rtps_801A8B64() __asm__ __volatile__ ("nop\nnop\nrtps")
#define gte_stsxy_801A8B64(r0) __asm__ __volatile__ ( \
"swc2 $14, 0(%0)" \
: \
: "r"(r0) \
: "memory")
void func_801A8B64(s32 arg0, s32 arg1) void func_801A8B64(s32 arg0, s32 arg1)
{ {
@@ -5991,26 +5971,26 @@ void func_801A8B64(s32 arg0, s32 arg1)
"ctc2 $12, $0\n" "ctc2 $13, $1\n" "ctc2 $12, $0\n" "ctc2 $13, $1\n"
"lw $12, 8(%0)\n" "lw $13, 12(%0)\n" "lw $14, 16(%0)\n" "lw $12, 8(%0)\n" "lw $13, 12(%0)\n" "lw $14, 16(%0)\n"
"ctc2 $12, $2\n" "ctc2 $13, $3\n" "ctc2 $14, $4\n" "ctc2 $12, $2\n" "ctc2 $13, $3\n" "ctc2 $14, $4\n"
: : "r"(g) : "$12", "$13", "$14", "memory"); : : "r"(g) : "$12", "$13", "$14", "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_SetRotMatrix_m) beyond Sony's (P36 T5 gte1)
/* gte_SetTransMatrix(&D_800AF648) */ /* gte_SetTransMatrix(&D_800AF648) */
__asm__ __volatile__( __asm__ __volatile__(
"lw $12, 20(%0)\n" "lw $13, 24(%0)\n" "lw $12, 20(%0)\n" "lw $13, 24(%0)\n"
"ctc2 $12, $5\n" "lw $14, 28(%0)\n" "ctc2 $12, $5\n" "lw $14, 28(%0)\n"
"ctc2 $13, $6\n" "ctc2 $14, $7\n" "ctc2 $13, $6\n" "ctc2 $14, $7\n"
: : "r"(g) : "$12", "$13", "$14", "memory"); : : "r"(g) : "$12", "$13", "$14", "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_SetTransMatrix_m) beyond Sony's (P36 T5 gte1)
gte_ldv0_801A8B64(arg1); gte_ldv0(arg1);
gte_rtps_801A8B64(); gte_rtps();
gte_stsxy_801A8B64(&xy0); gte_stsxy(&xy0);
v.vx = *(u16 *)(arg0 + 0x6); v.vx = *(u16 *)(arg0 + 0x6);
v.vy = *(u16 *)(arg0 + 0xA); v.vy = *(u16 *)(arg0 + 0xA);
v.vz = *(u16 *)(arg0 + 0xE); v.vz = *(u16 *)(arg0 + 0xE);
gte_ldv0_801A8B64(&v); gte_ldv0(&v);
gte_rtps_801A8B64(); gte_rtps();
gte_stsxy_801A8B64(&xy1); gte_stsxy(&xy1);
dy = xy1.y - xy0.y; dy = xy1.y - xy0.y;
dx = xy1.x - xy0.x; dx = xy1.x - xy0.x;
@@ -10437,52 +10417,12 @@ extern void func_80020F34(s32 a0, s32 a1);
extern void func_8004914C(void *a0); extern void func_8004914C(void *a0);
extern void func_800491AC(void *a0); extern void func_800491AC(void *a0);
#define gte_SetRotMatrix_E38(r0) __asm__ __volatile__ ( \
"lw $12, 0(%0)\n" "lw $13, 4(%0)\n" \
"ctc2 $12, $0\n" "ctc2 $13, $1\n" \
"lw $12, 8(%0)\n" "lw $13, 12(%0)\n" "lw $14, 16(%0)\n" \
"ctc2 $12, $2\n" "ctc2 $13, $3\n" "ctc2 $14, $4\n" \
: : "r"(r0) : "$12", "$13", "$14", "memory")
#define gte_SetTransMatrix_E38(r0) __asm__ __volatile__ ( \
"lw $12, 20(%0)\n" "lw $13, 24(%0)\n" \
"ctc2 $12, $5\n" "lw $14, 28(%0)\n" \
"ctc2 $13, $6\n" "ctc2 $14, $7\n" \
: : "r"(r0) : "$12", "$13", "$14", "memory")
/* one column of a s16[3][3] through the rotation matrix, in place */ /* one column of a s16[3][3] through the rotation matrix, in place */
#define gte_mulcol_E38(r0) __asm__ __volatile__ ( \
"lhu $12, 0(%0)\n" "lhu $13, 6(%0)\n" "lhu $14, 12(%0)\n" \
"mtc2 $12, $9\n" "mtc2 $13, $10\n" "mtc2 $14, $11\n" \
"nop\n" "nop\n" "mvmva 1, 0, 3, 3, 0\n" \
"mfc2 $12, $9\n" "mfc2 $13, $10\n" "mfc2 $14, $11\n" \
"sh $12, 0(%0)\n" "sh $13, 6(%0)\n" "sh $14, 12(%0)\n" \
: : "r"(r0) : "$12", "$13", "$14", "memory")
/* the s32 t[3] through the same matrix, in place */ /* the s32 t[3] through the same matrix, in place */
#define gte_multrans_E38(r0) __asm__ __volatile__ ( \
"lhu $13, 4(%0)\n" "lhu $12, 0(%0)\n" \
"sll $13, $13, 16\n" "or $12, $12, $13\n" \
"mtc2 $12, $0\n" "lwc2 $1, 8(%0)\n" \
"nop\n" "nop\n" "mvmva 1, 0, 0, 0, 0\n" \
"swc2 $25, 0(%0)\n" "swc2 $26, 4(%0)\n" "swc2 $27, 8(%0)\n" \
: : "r"(r0) : "$12", "$13", "memory")
#define gte_ldv0_E38(r0) __asm__ __volatile__ ("lwc2 $0, 0(%0)\nlwc2 $1, 4(%0)" : : "r"(r0))
#define gte_ldv3_E38(r0, r1, r2) __asm__ __volatile__ ( \
"lwc2 $0, 0(%0)\n" "lwc2 $1, 4(%0)\n" \
"lwc2 $2, 0(%1)\n" "lwc2 $3, 4(%1)\n" \
"lwc2 $4, 0(%2)\n" "lwc2 $5, 4(%2)\n" \
: : "r"(r0), "r"(r1), "r"(r2))
#define gte_rtps_E38() __asm__ __volatile__ ("nop\nnop\nrtps")
#define gte_rtpt_E38() __asm__ __volatile__ ("nop\nnop\nrtpt")
#define gte_avsz4_E38() __asm__ __volatile__ ("nop\nnop\navsz4")
#define gte_stsxy_E38(r0) __asm__ __volatile__ ("swc2 $14, 0(%0)" : : "r"(r0) : "memory")
#define gte_stsxy3_E38(r0, r1, r2) __asm__ __volatile__ ( \
"swc2 $12, 0(%0)\n" "swc2 $13, 0(%1)\n" "swc2 $14, 0(%2)" \
: : "r"(r0), "r"(r1), "r"(r2) : "memory")
#define gte_stotz_E38(r0) __asm__ __volatile__ ("swc2 $7, 0(%0)" : : "r"(r0) : "memory")
#define gte_stflg_E38(r0) __asm__ __volatile__ ("cfc2 $12, $31\nnop\nsw $12, 0(%0)" : : "r"(r0) : "$12", "memory")
/* Levers that closed this one (all byte-verified with match_one): /* Levers that closed this one (all byte-verified with match_one):
* 1. Params used DIRECTLY (no `s2 = (u8 *)a1;` locals). The explicit copy * 1. Params used DIRECTLY (no `s2 = (u8 *)a1;` locals). The explicit copy
@@ -10544,19 +10484,19 @@ void func_801AEC38(s32 a0, s32 a1, s32 a2)
mtx.t[0] = 0; mtx.t[0] = 0;
func_80020F34((s32)&mtx, (s32)(((u8 *)a1) + 0xC)); func_80020F34((s32)&mtx, (s32)(((u8 *)a1) + 0xC));
gte_SetRotMatrix_E38(((u8 *)a2)); gte_SetRotMatrix(((u8 *)a2));
gte_mulcol_E38((u8 *)&mtx); gte_mulcol((u8 *)&mtx);
gte_mulcol_E38((u8 *)&mtx + 2); gte_mulcol((u8 *)&mtx + 2);
gte_mulcol_E38((u8 *)&mtx + 4); gte_mulcol((u8 *)&mtx + 4);
gte_SetTransMatrix_E38(((u8 *)a2)); gte_SetTransMatrix(((u8 *)a2));
gte_multrans_E38((u8 *)mtx.t); gte_multrans((u8 *)mtx.t);
gte_SetRotMatrix_E38(&D_800AF648); gte_SetRotMatrix(&D_800AF648);
gte_mulcol_E38((u8 *)&mtx); gte_mulcol((u8 *)&mtx);
gte_mulcol_E38((u8 *)&mtx + 2); gte_mulcol((u8 *)&mtx + 2);
gte_mulcol_E38((u8 *)&mtx + 4); gte_mulcol((u8 *)&mtx + 4);
gte_SetTransMatrix_E38(&D_800AF648); gte_SetTransMatrix(&D_800AF648);
gte_multrans_E38((u8 *)mtx.t); gte_multrans((u8 *)mtx.t);
func_8004914C(&mtx); func_8004914C(&mtx);
func_800491AC(&mtx); func_800491AC(&mtx);
@@ -10583,17 +10523,17 @@ void func_801AEC38(s32 a0, s32 a1, s32 a2)
pkt[7] = 0x3A; pkt[7] = 0x3A;
} }
gte_ldv3_E38(&sv[0], &sv[1], &sv[2]); gte_ldv3(&sv[0], &sv[1], &sv[2]);
gte_rtpt_E38(); gte_rtpt();
gte_stflg_E38(&flag); gte_stflg(&flag);
gte_stsxy3_E38(pkt + 8, pkt + 0x10, pkt + 0x18); gte_stsxy3(pkt + 8, pkt + 0x10, pkt + 0x18);
gte_ldv0_E38(&sv[3]); gte_ldv0(&sv[3]);
gte_rtps_E38(); gte_rtps();
gte_stflg_E38(&flag2); gte_stflg(&flag2);
flag |= flag2; flag |= flag2;
gte_stsxy_E38(pkt + 0x20); gte_stsxy(pkt + 0x20);
gte_avsz4_E38(); gte_avsz4();
gte_stotz_E38(&otz); gte_stotz(&otz);
if ((flag & ~0x1000) == 0) { if ((flag & ~0x1000) == 0) {
u8 pad1[8]; /* sp+0x90 */ u8 pad1[8]; /* sp+0x90 */
@@ -10723,68 +10663,13 @@ void func_801AF2EC(void *a0) {
} }
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz(r0) __asm__ volatile ( \
"swc2 $19, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define RD16(p) (((struct { u16 v; } *)(p))->v) #define RD16(p) (((struct { u16 v; } *)(p))->v)
#define RW32(p) (((struct { u32 v; } *)(p))->v) #define RW32(p) (((struct { u32 v; } *)(p))->v)
-148
View File
@@ -1550,50 +1550,10 @@ void func_8012E364(s32 arg0_)
extern u8 D_800AF648; extern u8 D_800AF648;
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8012E778.h" #include "../shared/ov/func_8012E778.h"
@@ -1667,114 +1627,6 @@ void func_8012E9C0(int param_1)
typedef struct { s8 c[8]; } Blk8_8012EFB8; typedef struct { s8 c[8]; } Blk8_8012EFB8;
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
+1 -115
View File
@@ -1341,116 +1341,6 @@ void func_8013277C(void) {
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -1793,11 +1683,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8017E924) : "$9", "$10", "$11", "memory"); : : "r"(D_8017E924) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8017E928);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8017E928) : "memory");
pc0 = D_8017E924; pc0 = D_8017E924;
pc4 = D_8017E928; pc4 = D_8017E928;
+5 -27
View File
@@ -1057,20 +1057,6 @@ extern void func_8013AA24(s32 a0, s32 a1);
#include "../shared/ov/func_8013AB54.h" #include "../shared/ov/func_8013AB54.h"
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1094,7 +1080,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair *)out2)[i].x = res[0]; ((Pair *)out2)[i].x = res[0];
((Pair *)out2)[i].y = res[1]; ((Pair *)out2)[i].y = res[1];
@@ -1173,12 +1159,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1192,12 +1174,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+1 -227
View File
@@ -821,46 +821,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -936,114 +896,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2271,80 +2123,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2681,11 +2459,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8017F1AC) : "$9", "$10", "$11", "memory"); : : "r"(D_8017F1AC) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8017F1B0);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8017F1B0) : "memory");
pc0 = D_8017F1AC; pc0 = D_8017F1AC;
pc4 = D_8017F1B0; pc4 = D_8017F1B0;
+5 -27
View File
@@ -1010,22 +1010,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_8017F2D8[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_8017F2D8[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1046,7 +1032,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1123,12 +1109,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1142,12 +1124,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-94
View File
@@ -2669,73 +2669,14 @@ extern void func_8017BEB4(void);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \ #define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \ "swc2 $12, 8( %0 );" \
@@ -2745,45 +2686,10 @@ extern void func_8017BEB4(void);
: "r"( r0 ) \ : "r"( r0 ) \
: "memory" ) : "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8017BEBC__t67f11bf2.h" #include "../shared/ov/func_8017BEBC__t67f11bf2.h"
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2271,80 +2123,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2681,11 +2459,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_80183DFC) : "$9", "$10", "$11", "memory"); : : "r"(D_80183DFC) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_80183E00);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_80183E00) : "memory");
pc0 = D_80183DFC; pc0 = D_80183DFC;
pc4 = D_80183E00; pc4 = D_80183E00;
+5 -27
View File
@@ -1010,22 +1010,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_80183F28[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_80183F28[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1046,7 +1032,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1123,12 +1109,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1142,12 +1124,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-94
View File
@@ -2686,73 +2686,14 @@ extern void func_8017BEB4(void);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \ #define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \ "swc2 $12, 8( %0 );" \
@@ -2762,45 +2703,10 @@ extern void func_8017BEB4(void);
: "r"( r0 ) \ : "r"( r0 ) \
: "memory" ) : "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8017BEBC__t67f11bf2.h" #include "../shared/ov/func_8017BEBC__t67f11bf2.h"
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8017F7C0) : "$9", "$10", "$11", "memory"); : : "r"(D_8017F7C0) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8017F7C4);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8017F7C4) : "memory");
pc0 = D_8017F7C0; pc0 = D_8017F7C0;
pc4 = D_8017F7C4; pc4 = D_8017F7C4;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_8017F8EC[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_8017F8EC[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+1 -102
View File
@@ -2693,121 +2693,20 @@ extern void func_8017BE60(void *a0);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017BE9C(s32 arg0) void func_8017BE9C(s32 arg0)
{ {
@@ -3046,7 +2945,7 @@ void func_8017BE9C(s32 arg0)
break; break;
case 0: case 0:
case 1: case 1:
gte_stsxy3_f4(pkt); gte_stsxy3_f3(pkt);
gte_ldv0(vd); gte_ldv0(vd);
gte_rtps(); gte_rtps();
if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) { if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) {
+1 -227
View File
@@ -806,46 +806,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -921,114 +881,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2264,80 +2116,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2674,11 +2452,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_80182954) : "$9", "$10", "$11", "memory"); : : "r"(D_80182954) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_80182958);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_80182958) : "memory");
pc0 = D_80182954; pc0 = D_80182954;
pc4 = D_80182958; pc4 = D_80182958;
+5 -27
View File
@@ -1010,22 +1010,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_80182A80[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_80182A80[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1046,7 +1032,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1123,12 +1109,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1142,12 +1124,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+1 -102
View File
@@ -2702,121 +2702,20 @@ extern void func_8017C338(void);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017C340(s32 arg0) void func_8017C340(s32 arg0)
{ {
@@ -3055,7 +2954,7 @@ void func_8017C340(s32 arg0)
break; break;
case 0: case 0:
case 1: case 1:
gte_stsxy3_f4(pkt); gte_stsxy3_f3(pkt);
gte_ldv0(vd); gte_ldv0(vd);
gte_rtps(); gte_rtps();
if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) { if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) {
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8017FD34) : "$9", "$10", "$11", "memory"); : : "r"(D_8017FD34) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8017FD38);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8017FD38) : "memory");
pc0 = D_8017FD34; pc0 = D_8017FD34;
pc4 = D_8017FD38; pc4 = D_8017FD38;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_8017FE60[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_8017FE60[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+1 -102
View File
@@ -2693,121 +2693,20 @@ extern void func_8017BE60(void *a0);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017BE9C(s32 arg0) void func_8017BE9C(s32 arg0)
{ {
@@ -3046,7 +2945,7 @@ void func_8017BE9C(s32 arg0)
break; break;
case 0: case 0:
case 1: case 1:
gte_stsxy3_f4(pkt); gte_stsxy3_f3(pkt);
gte_ldv0(vd); gte_ldv0(vd);
gte_rtps(); gte_rtps();
if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) { if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) {
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_80182F1C) : "$9", "$10", "$11", "memory"); : : "r"(D_80182F1C) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_80182F20);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_80182F20) : "memory");
pc0 = D_80182F1C; pc0 = D_80182F1C;
pc4 = D_80182F20; pc4 = D_80182F20;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_80183048[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_80183048[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+1 -102
View File
@@ -2686,121 +2686,20 @@ extern void func_8017BE60(void *a0);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017BE9C(s32 arg0) void func_8017BE9C(s32 arg0)
{ {
@@ -3039,7 +2938,7 @@ void func_8017BE9C(s32 arg0)
break; break;
case 0: case 0:
case 1: case 1:
gte_stsxy3_f4(pkt); gte_stsxy3_f3(pkt);
gte_ldv0(vd); gte_ldv0(vd);
gte_rtps(); gte_rtps();
if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) { if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) {
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8017EB9C) : "$9", "$10", "$11", "memory"); : : "r"(D_8017EB9C) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8017EBA0);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8017EBA0) : "memory");
pc0 = D_8017EB9C; pc0 = D_8017EB9C;
pc4 = D_8017EBA0; pc4 = D_8017EBA0;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_8017ECC8[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_8017ECC8[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+1 -102
View File
@@ -2693,121 +2693,20 @@ extern void func_8017BE60(void *a0);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017BE9C(s32 arg0) void func_8017BE9C(s32 arg0)
{ {
@@ -3046,7 +2945,7 @@ void func_8017BE9C(s32 arg0)
break; break;
case 0: case 0:
case 1: case 1:
gte_stsxy3_f4(pkt); gte_stsxy3_f3(pkt);
gte_ldv0(vd); gte_ldv0(vd);
gte_rtps(); gte_rtps();
if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) { if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) {
+1 -137
View File
@@ -984,50 +984,10 @@ void func_8012E364(s32 arg0_)
* `rtps` assembler macro (include/gte_macros.inc, pulled in by common.h -> * `rtps` assembler macro (include/gte_macros.inc, pulled in by common.h ->
* include_asm.h -> labels.inc) which encodes 0x4A180001 — NOT the psyq * include_asm.h -> labels.inc) which encodes 0x4A180001 — NOT the psyq
* `.word 0x0000007f`, which assembles to the wrong word for this target. */ * `.word 0x0000007f`, which assembles to the wrong word for this target. */
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8012E778.h" #include "../shared/ov/func_8012E778.h"
@@ -1113,53 +1073,11 @@ extern void func_80049CAC(s32 a0, s32 a1);
* address taken by a "memory"-clobbering asm, so it lives at 0($sp) and the * address taken by a "memory"-clobbering asm, so it lives at 0($sp) and the
* `return flag` reloads it -> lw $v0, 0($sp) in the epilogue. */ * `return flag` reloads it -> lw $v0, 0($sp) in the epilogue. */
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2532,61 +2450,11 @@ extern s16 D_80126CB0;
// @stuck: none — MATCH (110/110 ins, symcheck SYMS-OK). PsyQ GTE inline-asm block (SetTransMatrix before SetRotMatrix, ldv0/rtv0tr/stlvnl/stflg) + §43 K&R s16 param_3 (in-place `sll $a2,$a2,16` tell) + 16-byte s32[4] locals for the 0x10/0x20/0x30 slot order. // @stuck: none — MATCH (110/110 ins, symcheck SYMS-OK). PsyQ GTE inline-asm block (SetTransMatrix before SetRotMatrix, ldv0/rtv0tr/stlvnl/stflg) + §43 K&R s16 param_3 (in-place `sll $a2,$a2,16` tell) + 16-byte s32[4] locals for the 0x10/0x20/0x30 slot order.
#include "common.h" #include "common.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2984,11 +2852,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_801870C0) : "$9", "$10", "$11", "memory"); : : "r"(D_801870C0) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_801870C4);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_801870C4) : "memory");
pc0 = D_801870C0; pc0 = D_801870C0;
pc4 = D_801870C4; pc4 = D_801870C4;
+5 -27
View File
@@ -1273,22 +1273,8 @@ struct S8013A4C4;
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_801871EC[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_801871EC[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1309,7 +1295,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair *)out2)[i].x = res[0]; ((Pair *)out2)[i].x = res[0];
((Pair *)out2)[i].y = res[1]; ((Pair *)out2)[i].y = res[1];
@@ -1427,12 +1413,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1446,12 +1428,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-81
View File
@@ -3602,98 +3602,17 @@ typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_C974;
typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_C974; typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_C974;
typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_C974; typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_C974;
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz3() __asm__ volatile ("nop;nop;avsz3")
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017C974(s32 arg0) void func_8017C974(s32 arg0)
{ {
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_80183AFC) : "$9", "$10", "$11", "memory"); : : "r"(D_80183AFC) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_80183B00);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_80183B00) : "memory");
pc0 = D_80183AFC; pc0 = D_80183AFC;
pc4 = D_80183B00; pc4 = D_80183B00;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_80183C28[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_80183C28[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+1 -104
View File
@@ -3376,98 +3376,17 @@ typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_C59C;
typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_C59C; typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_C59C;
typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_C59C; typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_C59C;
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz3() __asm__ volatile ("nop;nop;avsz3")
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017C59C(s32 arg0) void func_8017C59C(s32 arg0)
{ {
@@ -5626,30 +5545,8 @@ typedef struct {
u16 x3, y3; u32 uv3; u16 x3, y3; u32 uv3;
} PFT4_FD64; } PFT4_FD64;
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_stsxy0(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 )" : : "r"( r0 ) : "memory" )
#define gte_stsxy1(r0) __asm__ volatile ( \
"swc2 $13, 0( %0 )" : : "r"( r0 ) : "memory" )
#define gte_stotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
void func_8017FD64(s32 arg0) void func_8017FD64(s32 arg0)
{ {
@@ -5687,7 +5584,7 @@ void func_8017FD64(s32 arg0)
gte_rtpt(); gte_rtpt();
gte_stsxy0(&sxy[0]); gte_stsxy0(&sxy[0]);
gte_stsxy1(&sxy[1]); gte_stsxy1(&sxy[1]);
gte_stotz(&opz); gte_stszotz(&opz);
if (!((u16)(sxy[0].vx + 0xA0) < 0x141)) continue; if (!((u16)(sxy[0].vx + 0xA0) < 0x141)) continue;
if (!((u16)(sxy[0].vy + 0x78) < 0xF1)) continue; if (!((u16)(sxy[0].vy + 0x78) < 0xF1)) continue;
q = (PFT4_FD64 *)pkt; q = (PFT4_FD64 *)pkt;
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_80186DF0) : "$9", "$10", "$11", "memory"); : : "r"(D_80186DF0) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_80186DF4);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_80186DF4) : "memory");
pc0 = D_80186DF0; pc0 = D_80186DF0;
pc4 = D_80186DF4; pc4 = D_80186DF4;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_80186F1C[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_80186F1C[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-94
View File
@@ -2695,73 +2695,14 @@ extern void func_8017C7C4(void *a0);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \ #define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \ "swc2 $12, 8( %0 );" \
@@ -2771,45 +2712,10 @@ extern void func_8017C7C4(void *a0);
: "r"( r0 ) \ : "r"( r0 ) \
: "memory" ) : "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8017CA80__t67f11bf2.h" #include "../shared/ov/func_8017CA80__t67f11bf2.h"
-56
View File
@@ -2640,68 +2640,12 @@ extern s16 D_8018AC64; /* vert1 .vz */
extern s16 D_8018AC68; /* vert2 .vx/.vy */ extern s16 D_8018AC68; /* vert2 .vx/.vy */
extern s16 D_8018AC6C; /* vert2 .vz */ extern s16 D_8018AC6C; /* vert2 .vz */
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
typedef struct { typedef struct {
s16 x; /* +0x0 */ s16 x; /* +0x0 */
+1 -227
View File
@@ -811,46 +811,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -926,114 +886,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2269,80 +2121,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2679,11 +2457,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8018B1A0) : "$9", "$10", "$11", "memory"); : : "r"(D_8018B1A0) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8018B1A4);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8018B1A4) : "memory");
pc0 = D_8018B1A0; pc0 = D_8018B1A0;
pc4 = D_8018B1A4; pc4 = D_8018B1A4;
+5 -27
View File
@@ -1010,22 +1010,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_8018B2CC[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_8018B2CC[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1046,7 +1032,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1123,12 +1109,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1142,12 +1124,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-81
View File
@@ -3871,98 +3871,17 @@ typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_D538;
typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_D538; typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_D538;
typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_D538; typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_D538;
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz3() __asm__ volatile ("nop;nop;avsz3")
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017D538(s32 arg0) void func_8017D538(s32 arg0)
{ {
+1 -55
View File
@@ -4439,19 +4439,8 @@ extern void func_801824CC(void);
extern void func_8004914C(void *a0); extern void func_8004914C(void *a0);
extern void func_800491AC(void *a0); extern void func_800491AC(void *a0);
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsz(r0) __asm__ volatile ( \
"swc2 $19, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_80184BD8(s32 p) { void func_80184BD8(s32 p) {
s32 sz[1]; s32 sz[1];
@@ -4869,56 +4858,13 @@ extern void func_800491AC(void *a0);
extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_8005A600(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); extern s32 func_8005A600(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4);
#define gte_ldv3(r0,r1,r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stsxy3(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
void func_80185910(SVECTOR *a0, SVECTOR *a1, SVECTOR *a2, SVECTOR *a3) void func_80185910(SVECTOR *a0, SVECTOR *a1, SVECTOR *a2, SVECTOR *a3)
{ {
@@ -4938,7 +4884,7 @@ void func_80185910(SVECTOR *a0, SVECTOR *a1, SVECTOR *a2, SVECTOR *a3)
gte_stflg(&flag); gte_stflg(&flag);
if ((flag & 0x7F85E000) == 0) { if ((flag & 0x7F85E000) == 0) {
p = *(u8 **)&D_800A5E60; p = *(u8 **)&D_800A5E60;
gte_stsxy3(xy); gte_stsxy3c(xy);
gte_ldv0(a3); gte_ldv0(a3);
gte_rtps(); gte_rtps();
((u8 *)p)[7] = 0x3A; ((u8 *)p)[7] = 0x3A;
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8017E280) : "$9", "$10", "$11", "memory"); : : "r"(D_8017E280) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8017E284);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8017E284) : "memory");
pc0 = D_8017E280; pc0 = D_8017E280;
pc4 = D_8017E284; pc4 = D_8017E284;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_8017E3AC[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_8017E3AC[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-81
View File
@@ -3375,98 +3375,17 @@ typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_C59C;
typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_C59C; typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_C59C;
typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_C59C; typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_C59C;
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz3() __asm__ volatile ("nop;nop;avsz3")
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017C59C(s32 arg0) void func_8017C59C(s32 arg0)
{ {
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_80190E84) : "$9", "$10", "$11", "memory"); : : "r"(D_80190E84) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_80190E88);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_80190E88) : "memory");
pc0 = D_80190E84; pc0 = D_80190E84;
pc4 = D_80190E88; pc4 = D_80190E88;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_80190FB0[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_80190FB0[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-81
View File
@@ -2720,98 +2720,17 @@ typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_CF90;
typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_CF90; typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_CF90;
typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_CF90; typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_CF90;
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_avsz3() __asm__ volatile ("nop;nop;avsz3")
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017CF90(s32 arg0) void func_8017CF90(s32 arg0)
{ {
+9 -59
View File
@@ -3256,7 +3256,7 @@ void func_8018A4C4(s32 a0)
: :
: "r"((u8 *)*(s32 *)(a0 + 0x20) + 0x34) : "r"((u8 *)*(s32 *)(a0 + 0x20) + 0x34)
: "$12", "$13", "$14", "memory" : "$12", "$13", "$14", "memory"
); ); // !FAKE: gte direct — clobbers ['memory'] (gte_SetTransMatrix_m) beyond Sony's (P36 T5 gte1)
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
s0 = func_8012913C(0xC); s0 = func_8012913C(0xC);
@@ -3301,24 +3301,7 @@ void func_8018A6A0(s32 a0, u16 *a1)
func_8012B2CC(a0); func_8012B2CC(a0);
__asm__ __volatile__( gte_SetRotTransMatrix((u8 *)*(s32 *)(s0 + 0x20) + 0x34);
"lw $12, 0(%0)\n"
"lw $13, 4(%0)\n"
"ctc2 $12, $0\n"
"ctc2 $13, $1\n"
"lw $12, 8(%0)\n"
"lw $13, 12(%0)\n"
"lw $14, 16(%0)\n"
"ctc2 $12, $2\n"
"ctc2 $13, $3\n"
"ctc2 $14, $4\n"
"lw $12, 20(%0)\n"
"lw $13, 24(%0)\n"
"ctc2 $12, $5\n"
"lw $14, 28(%0)\n"
"ctc2 $13, $6\n"
"ctc2 $14, $7\n"
: : "r"((u8 *)*(s32 *)(s0 + 0x20) + 0x34) : "$12", "$13", "$14");
vec0[2] = 0; vec0[2] = 0;
vec0[0] = 0; vec0[0] = 0;
@@ -3334,17 +3317,9 @@ body:
"nop\n" "nop\n"
"nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(vec0) : "memory"); : : "r"(vec0) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl(res);
"swc2 $25, 0(%0)\n" gte_stflg(&flags);
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(res) : "memory");
__asm__ __volatile__(
"cfc2 $12, $31\n"
"nop\n"
"sw $12, 0(%0)\n"
: : "r"(&flags) : "$12", "memory");
*(u16 *)(puVar + 6) = (u16)res[0]; *(u16 *)(puVar + 6) = (u16)res[0];
*(u16 *)(puVar + 0xA) = (u16)res[1]; *(u16 *)(puVar + 0xA) = (u16)res[1];
*(u16 *)(puVar + 0xE) = (u16)(res[2] - 8); *(u16 *)(puVar + 0xE) = (u16)(res[2] - 8);
@@ -4781,24 +4756,7 @@ void func_8018C454(void *a0)
func_8004978C(angle, &mtx); func_8004978C(angle, &mtx);
__asm__ __volatile__( gte_SetRotTransMatrix(&mtx);
"lw $12, 0(%0)\n"
"lw $13, 4(%0)\n"
"ctc2 $12, $0\n"
"ctc2 $13, $1\n"
"lw $12, 8(%0)\n"
"lw $13, 12(%0)\n"
"lw $14, 16(%0)\n"
"ctc2 $12, $2\n"
"ctc2 $13, $3\n"
"ctc2 $14, $4\n"
"lw $12, 20(%0)\n"
"lw $13, 24(%0)\n"
"ctc2 $12, $5\n"
"lw $14, 28(%0)\n"
"ctc2 $13, $6\n"
"ctc2 $14, $7\n"
: : "r"(&mtx) : "$12", "$13", "$14");
__asm__ __volatile__( __asm__ __volatile__(
"lwc2 $0, 0(%0)\n" "lwc2 $0, 0(%0)\n"
@@ -4806,19 +4764,11 @@ void func_8018C454(void *a0)
"nop\n" "nop\n"
"nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(vec0) : "memory"); : : "r"(vec0) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl(s0 + 4);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(s0 + 4) : "memory");
__asm__ __volatile__( gte_stflg(&flags);
"cfc2 $12, $31\n"
"nop\n"
"sw $12, 0(%0)\n"
: : "r"(&flags) : "$12", "memory");
*(s32 *)(s0 + 4) <<= 16; *(s32 *)(s0 + 4) <<= 16;
*(s32 *)(s0 + 8) <<= 16; *(s32 *)(s0 + 8) <<= 16;
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_801912D4) : "$9", "$10", "$11", "memory"); : : "r"(D_801912D4) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_801912D8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_801912D8) : "memory");
pc0 = D_801912D4; pc0 = D_801912D4;
pc4 = D_801912D8; pc4 = D_801912D8;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_80191400[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_80191400[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+12 -155
View File
@@ -5253,25 +5253,8 @@ extern void func_80017714(void *);
extern struct PW8017E72C D_80194BA4[]; extern struct PW8017E72C D_80194BA4[];
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_rt() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stsv(r0) __asm__ __volatile__( \
"mfc2 $12, $9\n" \
"mfc2 $13, $10\n" \
"mfc2 $14, $11\n" \
"sh $12, 0(%0)\n" \
"sh $13, 2(%0)\n" \
"sh $14, 4(%0)\n" \
: : "r"(r0) : "$12", "$13", "$14", "memory")
void func_8017E72C(int a, s16 *b, SVECTOR_8017E72C *c, SVECTOR_8017E72C *d, void func_8017E72C(int a, s16 *b, SVECTOR_8017E72C *c, SVECTOR_8017E72C *d,
SVECTOR_8017E72C *e, SVECTOR_8017E72C *f, s16 *g) SVECTOR_8017E72C *e, SVECTOR_8017E72C *f, s16 *g)
@@ -5324,15 +5307,15 @@ void func_8017E72C(int a, s16 *b, SVECTOR_8017E72C *c, SVECTOR_8017E72C *d,
{ int t = f->vy - 0x10; f->vy = t + (r & 0x1f); } { int t = f->vy - 0x10; f->vy = t + (r & 0x1f); }
gte_ldv0(c); gte_ldv0(c);
gte_rt(); gte_rtv0tr();
gte_stsv(r0_00); gte_stsv(r0_00);
gte_ldv0(f); gte_ldv0(f);
gte_rt(); gte_rtv0tr();
gte_stsv(r0_00 + 1); gte_stsv(r0_00 + 1);
gte_ldv0(d); gte_ldv0(d);
gte_rt(); gte_rtv0tr();
r0 = r0_00 + 2; r0 = r0_00 + 2;
gte_stsv(r0); gte_stsv(r0);
@@ -5341,7 +5324,7 @@ void func_8017E72C(int a, s16 *b, SVECTOR_8017E72C *c, SVECTOR_8017E72C *d,
d->vx = d->vx - (f->pad & r); d->vx = d->vx - (f->pad & r);
gte_ldv0(d); gte_ldv0(d);
gte_rt(); gte_rtv0tr();
pSVar6 = r0_00 + 3; pSVar6 = r0_00 + 3;
gte_stsv(pSVar6); gte_stsv(pSVar6);
@@ -5349,7 +5332,7 @@ void func_8017E72C(int a, s16 *b, SVECTOR_8017E72C *c, SVECTOR_8017E72C *d,
func_80017714(r0_00); func_80017714(r0_00);
gte_ldv0(e); gte_ldv0(e);
gte_rt(); gte_rtv0tr();
gte_stsv(r0); gte_stsv(r0);
*e = *f; *e = *f;
@@ -5357,7 +5340,7 @@ void func_8017E72C(int a, s16 *b, SVECTOR_8017E72C *c, SVECTOR_8017E72C *d,
e->vx = e->vx + (f->pad & r); e->vx = e->vx + (f->pad & r);
gte_ldv0(e); gte_ldv0(e);
gte_rt(); gte_rtv0tr();
gte_stsv(pSVar6); gte_stsv(pSVar6);
r0_00->vz = ((u16 *)b)[2]; r0_00->vz = ((u16 *)b)[2];
@@ -5990,45 +5973,6 @@ extern void func_80013F3C(s32 a0);
extern void func_80017714(void *); extern void func_80017714(void *);
extern void func_8004914C(); extern void func_8004914C();
extern void func_800491AC(); extern void func_800491AC();
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_rt() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stsv(r0) __asm__ __volatile__( \
"mfc2 $12, $9\n" \
"mfc2 $13, $10\n" \
"mfc2 $14, $11\n" \
"sh $12, 0(%0)\n" \
"sh $13, 2(%0)\n" \
"sh $14, 4(%0)\n" \
: : "r"(r0) : "$12", "$13", "$14", "memory")
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_rt() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stsv(r0) __asm__ __volatile__( \
"mfc2 $12, $9\n" \
"mfc2 $13, $10\n" \
"mfc2 $14, $11\n" \
"sh $12, 0(%0)\n" \
"sh $13, 2(%0)\n" \
"sh $14, 4(%0)\n" \
: : "r"(r0) : "$12", "$13", "$14", "memory")
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
void func_8017F7B4(int a0, SVECTOR_8017C290 *a1, SVECTOR_8017C290 *a2, s32 a3) void func_8017F7B4(int a0, SVECTOR_8017C290 *a1, SVECTOR_8017C290 *a2, s32 a3)
{ {
@@ -6063,22 +6007,22 @@ void func_8017F7B4(int a0, SVECTOR_8017C290 *a1, SVECTOR_8017C290 *a2, s32 a3)
r0_00 = &D_801EB4C8[0]; r0_00 = &D_801EB4C8[0];
gte_ldv0(a1); gte_ldv0(a1);
gte_rt(); gte_rtv0tr();
gte_stsv(r0_00); gte_stsv(r0_00);
gte_ldv0(a2); gte_ldv0(a2);
gte_rt(); gte_rtv0tr();
gte_stsv(r0_00 + 1); gte_stsv(r0_00 + 1);
a1->vx = a1->vx - 2; a1->vx = a1->vx - 2;
gte_ldv0(a1); gte_ldv0(a1);
gte_rt(); gte_rtv0tr();
r0 = r0_00 + 2; r0 = r0_00 + 2;
gte_stsv(r0); gte_stsv(r0);
a2->vx = a2->vx - 2; a2->vx = a2->vx - 2;
gte_ldv0(a2); gte_ldv0(a2);
gte_rt(); gte_rtv0tr();
pSVar6 = r0_00 + 3; pSVar6 = r0_00 + 3;
gte_stsv(pSVar6); gte_stsv(pSVar6);
@@ -6087,12 +6031,12 @@ void func_8017F7B4(int a0, SVECTOR_8017C290 *a1, SVECTOR_8017C290 *a2, s32 a3)
a1->vx = a1->vx + 4; a1->vx = a1->vx + 4;
gte_ldv0(a1); gte_ldv0(a1);
gte_rt(); gte_rtv0tr();
gte_stsv(r0); gte_stsv(r0);
a2->vx = a2->vx + 4; a2->vx = a2->vx + 4;
gte_ldv0(a2); gte_ldv0(a2);
gte_rt(); gte_rtv0tr();
gte_stsv(pSVar6); gte_stsv(pSVar6);
r0_00->vz = *(u16 *)(a0 + 0xE); r0_00->vz = *(u16 *)(a0 + 0xE);
@@ -7207,105 +7151,18 @@ typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1;
typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1;
s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PolyFT4_80180FE4; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PolyFT4_80180FE4;
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_80180FE4(s32 arg0) void func_80180FE4(s32 arg0)
{ {
+6 -71
View File
@@ -1690,53 +1690,12 @@ s32 func_8018567C(s32 a0, s32 a1) {
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stotz(r0) __asm__ volatile ( \
"swc2 $7, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
void func_8018576C(u8 *vb) void func_8018576C(u8 *vb)
{ {
@@ -3566,30 +3525,6 @@ extern void func_80015978(s32 a0, s32 *a1);
extern void func_80187FA0(u8 *a0, u8 *a1); extern void func_80187FA0(u8 *a0, u8 *a1);
extern void func_80188034(s32 a0); extern void func_80188034(s32 a0);
#define gte_SetRotMatrix_87E08(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"(r0) \
: "$12", "$13", "$14")
#define gte_SetTransMatrix_87E08(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"(r0) \
: "$12", "$13", "$14")
void func_80187E08(s32 param_1) void func_80187E08(s32 param_1)
{ {
@@ -3612,15 +3547,15 @@ void func_80187E08(s32 param_1)
__asm__ volatile(""); // !FAKE: barrier — NEEDED DIFFERS (P36 rung B tus9) __asm__ volatile(""); // !FAKE: barrier — NEEDED DIFFERS (P36 rung B tus9)
mtx = (s32)&D_800AF648; mtx = (s32)&D_800AF648;
gte_SetRotMatrix_87E08(mtx); gte_SetRotMatrix(mtx);
gte_SetTransMatrix_87E08(mtx); gte_SetTransMatrix(mtx);
func_80015978(param_1 + 4, (s32 *)sxy); func_80015978(param_1 + 4, (s32 *)sxy);
__asm__ volatile("lwc2 $0, 0(%0)\n\tlwc2 $1, 4(%0)" : : "r"(sxy) : "memory"); __asm__ volatile("lwc2 $0, 0(%0)\n\tlwc2 $1, 4(%0)" : : "r"(sxy) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0_m) beyond Sony's (P36 T5 gte1)
__asm__ volatile("nop\n\tnop\n\trtps" : : : "memory"); __asm__ volatile("nop\n\tnop\n\trtps" : : : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_rtps_m) beyond Sony's (P36 T5 gte1)
__asm__ volatile("swc2 $14, 0(%0)" : : "r"(sxy) : "memory"); gte_stsxy(sxy);
__asm__ volatile("cfc2 $12, $31\n\tnop\n\tsw $12, 0(%0)" : : "r"(&flag) : "$12"); __asm__ volatile("cfc2 $12, $31\n\tnop\n\tsw $12, 0(%0)" : : "r"(&flag) : "$12"); // !FAKE: gte direct — clobbers ['memory'] (gte_stflg_v) beyond Sony's (P36 T5 gte1)
xt = sxy[0]; xt = sxy[0];
lim = ((u32)D_800AF7BC >> 1) + 0x20; lim = ((u32)D_800AF7BC >> 1) + 0x20;
+8 -152
View File
@@ -800,30 +800,6 @@ extern void RotTransSV(void *a0, void *a1, void *a2);
extern s32 func_80143BDC(u16 *a0); extern s32 func_80143BDC(u16 *a0);
extern s32 rand(void); extern s32 rand(void);
#define SRM_80189F30(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define STM_80189F30(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
void func_80189F30(void *param_1) { void func_80189F30(void *param_1) {
s16 v[8]; s16 v[8];
@@ -835,8 +811,8 @@ void func_80189F30(void *param_1) {
v[1] = D_801961CE; v[1] = D_801961CE;
m = (s32 *)(*(s32 *)((s32)param_1 + 0x20) + 0x34); m = (s32 *)(*(s32 *)((s32)param_1 + 0x20) + 0x34);
SRM_80189F30(m); gte_SetRotMatrix(m);
STM_80189F30(m); gte_SetTransMatrix(m);
for (i = 0; i < 10; i++) { for (i = 0; i < 10; i++) {
r = rand() % 144; r = rand() % 144;
if (rand() & 1) { if (rand() & 1) {
@@ -3821,30 +3797,6 @@ extern void RotTransSV(void *a0, void *a1, void *a2);
extern u8 D_801DF68C[]; extern u8 D_801DF68C[];
extern u8 D_801DF694[]; extern u8 D_801DF694[];
#define SRM_8018D720(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define STM_8018D720(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
void func_8018D720(void *param_1) void func_8018D720(void *param_1)
{ {
@@ -3856,8 +3808,8 @@ void func_8018D720(void *param_1)
m = (s32 *)(*(s32 *)((s32)param_1 + 0x20) + 0x34); m = (s32 *)(*(s32 *)((s32)param_1 + 0x20) + 0x34);
SRM_8018D720(m); gte_SetRotMatrix(m);
STM_8018D720(m); gte_SetTransMatrix(m);
RotTransSV(D_801DF68C, sv0, &flag); RotTransSV(D_801DF68C, sv0, &flag);
RotTransSV(D_801DF694, sv1, &flag); RotTransSV(D_801DF694, sv1, &flag);
@@ -4454,30 +4406,6 @@ extern u8 D_801DF7B8[];
/* NOT named gte_SetRotMatrix/gte_SetTransMatrix: the host TU already defines /* NOT named gte_SetRotMatrix/gte_SetTransMatrix: the host TU already defines
* those two names twice and a third definition would collide. */ * those two names twice and a third definition would collide. */
#define SRM_8018E208(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define STM_8018E208(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
s32 func_8018E208(void *a0) s32 func_8018E208(void *a0)
{ {
@@ -4507,8 +4435,8 @@ s32 func_8018E208(void *a0)
p0 = base; p0 = base;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
SRM_8018E208(matrix); gte_SetRotMatrix(matrix);
STM_8018E208(matrix); gte_SetTransMatrix(matrix);
RotTransSV(p0, sv0, &flag); RotTransSV(p0, sv0, &flag);
RotTransSV(p1, sv1, &flag); RotTransSV(p1, sv1, &flag);
@@ -4828,30 +4756,6 @@ extern s32 func_80017758(void *a0, void *a1);
extern u32 D_801DF7F8[]; extern u32 D_801DF7F8[];
extern u8 D_801DF85C[]; extern u8 D_801DF85C[];
#define SRM_8018E8A0(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define STM_8018E8A0(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
typedef struct { s16 vx, vy, vz, pad; } SVec8_8018E8A0; /* 0x08 */ typedef struct { s16 vx, vy, vz, pad; } SVec8_8018E8A0; /* 0x08 */
typedef struct { s32 vx, vy, vz, pad; } Vec16_8018E8A0; /* 0x10 */ typedef struct { s32 vx, vy, vz, pad; } Vec16_8018E8A0; /* 0x10 */
@@ -4948,8 +4852,8 @@ void func_8018E8A0(void *a0)
((s32)(s16)*(u16 *)((s32)a0 + 0x70) / 2) * 0x20); ((s32)(s16)*(u16 *)((s32)a0 + 0x70) / 2) * 0x20);
dst = prim.v; dst = prim.v;
SRM_8018E8A0(&mtx); gte_SetRotMatrix(&mtx);
STM_8018E8A0(&mtx); gte_SetTransMatrix(&mtx);
for (j = 0; j < 4; j++, src++, dst++) { for (j = 0; j < 4; j++, src++, dst++) {
RotTransSV(src, dst, &flag); RotTransSV(src, dst, &flag);
@@ -5377,30 +5281,6 @@ extern s32 func_8012BDBC(s32 a0, s32 a1);
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3);
extern void func_80172710(void); extern void func_80172710(void);
extern s32 func_80178BF8(); extern s32 func_80178BF8();
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
s32 aF8018A224() __asm__("func_8018F390"); s32 aF8018A224() __asm__("func_8018F390");
@@ -6192,30 +6072,6 @@ extern void RotTransSV(void *a0, void *a1, void *a2);
* touching the shared header. */ * touching the shared header. */
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
/* §71 sibling: identical shape to func_8018F390 (same TU, this file, D_80126B78/RotTransSV/ /* §71 sibling: identical shape to func_8018F390 (same TU, this file, D_80126B78/RotTransSV/
* func_80135888/func_8012BDBC/func_80178BF8/func_80172710 idiom) already MATCHED -- only the * func_80135888/func_8012BDBC/func_80178BF8/func_80172710 idiom) already MATCHED -- only the
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8017E7E8) : "$9", "$10", "$11", "memory"); : : "r"(D_8017E7E8) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8017E7EC);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8017E7EC) : "memory");
pc0 = D_8017E7E8; pc0 = D_8017E7E8;
pc4 = D_8017E7EC; pc4 = D_8017E7EC;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_8017E914[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_8017E914[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-150
View File
@@ -3435,65 +3435,6 @@ void func_8017C18C(s32 a0) {
#include "../shared/ov/func_8017C230.h" #include "../shared/ov/func_8017C230.h"
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \ #define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \ "swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \ "swc2 $13, 12( %0 );" \
@@ -3501,41 +3442,6 @@ void func_8017C18C(s32 a0) {
: \ : \
: "r"( r0 ) \ : "r"( r0 ) \
: "memory" ) : "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8017C294__t67f11bf2.h" #include "../shared/ov/func_8017C294__t67f11bf2.h"
@@ -3900,68 +3806,12 @@ extern s32 func_8012EF34(s32 a0, s32 a1);
extern void func_80017D98(void *a0); extern void func_80017D98(void *a0);
extern void func_8001739C(void *a0); extern void func_8001739C(void *a0);
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
typedef struct { typedef struct {
s16 x; /* +0x0 */ s16 x; /* +0x0 */
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_80184A20) : "$9", "$10", "$11", "memory"); : : "r"(D_80184A20) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_80184A24);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_80184A24) : "memory");
pc0 = D_80184A20; pc0 = D_80184A20;
pc4 = D_80184A24; pc4 = D_80184A24;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_80184B4C[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_80184B4C[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+5 -173
View File
@@ -2703,121 +2703,20 @@ extern void func_8017D9B4(void *a0);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017DC70(s32 arg0) void func_8017DC70(s32 arg0)
{ {
@@ -3056,7 +2955,7 @@ void func_8017DC70(s32 arg0)
break; break;
case 0: case 0:
case 1: case 1:
gte_stsxy3_f4(pkt); gte_stsxy3_f3(pkt);
gte_ldv0(vd); gte_ldv0(vd);
gte_rtps(); gte_rtps();
if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) { if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) {
@@ -3791,24 +3690,7 @@ void func_8017F8C0(void *a0) {
func_8004978C(angle, &mtx); func_8004978C(angle, &mtx);
__asm__ __volatile__( gte_SetRotTransMatrix(&mtx);
"lw $12, 0(%0)\n"
"lw $13, 4(%0)\n"
"ctc2 $12, $0\n"
"ctc2 $13, $1\n"
"lw $12, 8(%0)\n"
"lw $13, 12(%0)\n"
"lw $14, 16(%0)\n"
"ctc2 $12, $2\n"
"ctc2 $13, $3\n"
"ctc2 $14, $4\n"
"lw $12, 20(%0)\n"
"lw $13, 24(%0)\n"
"ctc2 $12, $5\n"
"lw $14, 28(%0)\n"
"ctc2 $13, $6\n"
"ctc2 $14, $7\n"
: : "r"(&mtx) : "$12", "$13", "$14");
__asm__ __volatile__( __asm__ __volatile__(
"lwc2 $0, 0(%0)\n" "lwc2 $0, 0(%0)\n"
@@ -3816,19 +3698,11 @@ void func_8017F8C0(void *a0) {
"nop\n" "nop\n"
"nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(vec0) : "memory"); : : "r"(vec0) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl(s0 + 4);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(s0 + 4) : "memory");
__asm__ __volatile__( gte_stflg(&flags);
"cfc2 $12, $31\n"
"nop\n"
"sw $12, 0(%0)\n"
: : "r"(&flags) : "$12", "memory");
*(s32 *)(s0 + 4) <<= 16; *(s32 *)(s0 + 4) <<= 16;
*(s32 *)(s0 + 8) <<= 16; *(s32 *)(s0 + 8) <<= 16;
@@ -4153,48 +4027,6 @@ extern u8 *D_8018850C[];
extern void func_80015978(s32 a0, s32 *a1); extern void func_80015978(s32 a0, s32 *a1);
extern void func_801802C8(u8 *a0, u8 *a1); extern void func_801802C8(u8 *a0, u8 *a1);
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
void func_80180154(s32 param_1) void func_80180154(s32 param_1)
{ {
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8018AA78) : "$9", "$10", "$11", "memory"); : : "r"(D_8018AA78) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8018AA7C);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8018AA7C) : "memory");
pc0 = D_8018AA78; pc0 = D_8018AA78;
pc4 = D_8018AA7C; pc4 = D_8018AA7C;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_8018ABA4[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_8018ABA4[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+12 -208
View File
@@ -2708,121 +2708,20 @@ extern void func_8017DE98(void *a0);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017DF34(s32 arg0) void func_8017DF34(s32 arg0)
{ {
@@ -3061,7 +2960,7 @@ void func_8017DF34(s32 arg0)
break; break;
case 0: case 0:
case 1: case 1:
gte_stsxy3_f4(pkt); gte_stsxy3_f3(pkt);
gte_ldv0(vd); gte_ldv0(vd);
gte_rtps(); gte_rtps();
if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) { if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) {
@@ -4171,30 +4070,6 @@ extern void RotTransSV(void *a0, void *a1, void *a2);
/* not declared anywhere in src/ or include/ */ /* not declared anywhere in src/ or include/ */
extern u8 D_8018E27C[]; extern u8 D_8018E27C[];
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
void func_80180410(s32 a0, s32 a1, s32 a2) void func_80180410(s32 a0, s32 a1, s32 a2)
{ {
@@ -5091,30 +4966,6 @@ extern void func_80172710(void);
extern s32 func_80178BF8(); extern s32 func_80178BF8();
extern void RotTransSV(void *a0, void *a1, void *a2); extern void RotTransSV(void *a0, void *a1, void *a2);
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
@@ -5373,48 +5224,6 @@ s32 func_80181E5C(void *a0) {
} }
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* TU RECONCILE (ov_SC02_017_jr_8017DF34.c:5281): the file's authoritative forward declaration is /* TU RECONCILE (ov_SC02_017_jr_8017DF34.c:5281): the file's authoritative forward declaration is
`extern void func_80181E98(u8 *a0);` -- a stale guess from before this function was matched (the `extern void func_80181E98(u8 *a0);` -- a stale guess from before this function was matched (the
@@ -5522,10 +5331,6 @@ ret0:
typedef struct { s16 vx, vy, vz, pad; } SV_8018209C; typedef struct { s16 vx, vy, vz, pad; } SV_8018209C;
typedef struct { s16 x, y; s32 flag; } RES_8018209C; typedef struct { s16 x, y; s32 flag; } RES_8018209C;
#define GTE_LDXY_8018209C(r) __asm__ __volatile__ ("lwc2 $0, 0(%0)\nlwc2 $1, 4(%0)" : : "r"(r))
#define GTE_RTPS_8018209C() __asm__ __volatile__ ("nop\nnop\nrtps")
#define GTE_STXY_8018209C(r) __asm__ __volatile__ ("swc2 $14, 0(%0)" : : "r"(r))
#define GTE_STFLG_8018209C(r) __asm__ __volatile__ ("cfc2 $12, $31\nnop\nsw $12, 0(%0)" : : "r"(r) : "$12", "memory")
extern u8 D_800AF648; extern u8 D_800AF648;
extern u8 D_8018E56C[]; extern u8 D_8018E56C[];
@@ -5550,17 +5355,17 @@ void func_8018209C(void *arg0)
"ctc2 $12, $0\n" "ctc2 $13, $1\n" "ctc2 $12, $0\n" "ctc2 $13, $1\n"
"lw $12, 8(%0)\n" "lw $13, 12(%0)\n" "lw $14, 16(%0)\n" "lw $12, 8(%0)\n" "lw $13, 12(%0)\n" "lw $14, 16(%0)\n"
"ctc2 $12, $2\n" "ctc2 $13, $3\n" "ctc2 $14, $4\n" "ctc2 $12, $2\n" "ctc2 $13, $3\n" "ctc2 $14, $4\n"
: : "r"(g) : "$12", "$13", "$14", "memory"); : : "r"(g) : "$12", "$13", "$14", "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_SetRotMatrix_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( __asm__ __volatile__(
"lw $12, 20(%0)\n" "lw $13, 24(%0)\n" "lw $12, 20(%0)\n" "lw $13, 24(%0)\n"
"ctc2 $12, $5\n" "lw $14, 28(%0)\n" "ctc2 $12, $5\n" "lw $14, 28(%0)\n"
"ctc2 $13, $6\n" "ctc2 $14, $7\n" "ctc2 $13, $6\n" "ctc2 $14, $7\n"
: : "r"(g) : "$12", "$13", "$14", "memory"); : : "r"(g) : "$12", "$13", "$14", "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_SetTransMatrix_m) beyond Sony's (P36 T5 gte1)
GTE_LDXY_8018209C(&vin); gte_ldv0(&vin);
GTE_RTPS_8018209C(); gte_rtps();
GTE_STXY_8018209C(&res.x); gte_stsxy(&res.x);
GTE_STFLG_8018209C(&res.flag); gte_stflg(&res.flag);
if ((res.flag & -0x1001) != 0) { rv = 0; goto out; } if ((res.flag & -0x1001) != 0) { rv = 0; goto out; }
if ((res.x < 0 ? -res.x : res.x) >= 0xAB) if ((res.x < 0 ? -res.x : res.x) >= 0xAB)
@@ -5573,10 +5378,10 @@ L2:
w.vx = *(u16 *)((s32)arg0 + 6); w.vx = *(u16 *)((s32)arg0 + 6);
w.vy = *(u16 *)((s32)arg0 + 0xA); w.vy = *(u16 *)((s32)arg0 + 0xA);
w.vz = *(u16 *)((s32)arg0 + 0xE); w.vz = *(u16 *)((s32)arg0 + 0xE);
GTE_LDXY_8018209C(&w); gte_ldv0(&w);
GTE_RTPS_8018209C(); gte_rtps();
GTE_STXY_8018209C(&res.x); gte_stsxy(&res.x);
GTE_STFLG_8018209C(&res.flag); gte_stflg(&res.flag);
if ((res.flag & -0x1001) != 0) { rv = 0; goto out; } if ((res.flag & -0x1001) != 0) { rv = 0; goto out; }
if ((res.x < 0 ? -res.x : res.x) >= 0x105) { rv = 0; goto out; } if ((res.x < 0 ? -res.x : res.x) >= 0x105) { rv = 0; goto out; }
@@ -6189,8 +5994,7 @@ void func_80182FD0(int param)
__asm__ volatile("lwc2 $0,0(%0);lwc2 $1,4(%0);nop;nop;rtps;swc2 $14,0(%0)" __asm__ volatile("lwc2 $0,0(%0);lwc2 $1,4(%0);nop;nop;rtps;swc2 $14,0(%0)"
: : "r"(buf) : "memory"); : : "r"(buf) : "memory");
/* gte_stflg(&buf[2]); */ /* gte_stflg(&buf[2]); */
__asm__ volatile("cfc2 $12,$31;nop;sw $12,0(%0)" gte_stflg(buf + 2);
: : "r"(buf + 2) : "$12", "memory");
lim = (D_800AF7BC >> 1) + 0x20; lim = (D_800AF7BC >> 1) + 0x20;
x = (int)(s16)buf[0]; x = (int)(s16)buf[0];
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8018006C) : "$9", "$10", "$11", "memory"); : : "r"(D_8018006C) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_80180070);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_80180070) : "memory");
pc0 = D_8018006C; pc0 = D_8018006C;
pc4 = D_80180070; pc4 = D_80180070;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_80180198[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_80180198[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-130
View File
@@ -2696,73 +2696,14 @@ extern void func_8017C230(int a0);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \ #define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \ "swc2 $12, 8( %0 );" \
@@ -2772,45 +2713,10 @@ extern void func_8017C230(int a0);
: "r"( r0 ) \ : "r"( r0 ) \
: "memory" ) : "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8017C294__t67f11bf2.h" #include "../shared/ov/func_8017C294__t67f11bf2.h"
@@ -3283,47 +3189,11 @@ extern u8 D_800A6610[];
extern short D_800B9A02; extern short D_800B9A02;
extern u8 *D_800A5E60; extern u8 *D_800A5E60;
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
s32 func_8017DC10(s32 *a) s32 func_8017DC10(s32 *a)
{ {
-56
View File
@@ -3188,68 +3188,12 @@ extern s16 D_80183958;
extern s16 D_80183960; extern s16 D_80183960;
extern s16 D_80183968; extern s16 D_80183968;
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
typedef struct { typedef struct {
s16 x; /* +0x0 */ s16 x; /* +0x0 */
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_801866C0) : "$9", "$10", "$11", "memory"); : : "r"(D_801866C0) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_801866C4);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_801866C4) : "memory");
pc0 = D_801866C0; pc0 = D_801866C0;
pc4 = D_801866C4; pc4 = D_801866C4;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_801867EC[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_801867EC[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-118
View File
@@ -2686,73 +2686,14 @@ extern void func_8017C0E4(void *a0);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \ #define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \ "swc2 $12, 8( %0 );" \
@@ -2762,45 +2703,10 @@ extern void func_8017C0E4(void *a0);
: "r"( r0 ) \ : "r"( r0 ) \
: "memory" ) : "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8017C180__t67f11bf2.h" #include "../shared/ov/func_8017C180__t67f11bf2.h"
@@ -5108,30 +5014,6 @@ extern s32 func_80143B6C(s32 a0, s32 a1);
extern s32 rand(void); extern s32 rand(void);
extern void RotTransSV(void *a0, void *a1, void *a2); extern void RotTransSV(void *a0, void *a1, void *a2);
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
void func_80180520(void *a0) void func_80180520(void *a0)
{ {
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8018B7E4) : "$9", "$10", "$11", "memory"); : : "r"(D_8018B7E4) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8018B7E8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8018B7E8) : "memory");
pc0 = D_8018B7E4; pc0 = D_8018B7E4;
pc4 = D_8018B7E8; pc4 = D_8018B7E8;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_8018B910[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_8018B910[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+3 -244
View File
@@ -2692,73 +2692,14 @@ extern void func_8017D5DC(void *a0);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \ #define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \ "swc2 $12, 8( %0 );" \
@@ -2768,45 +2709,10 @@ extern void func_8017D5DC(void *a0);
: "r"( r0 ) \ : "r"( r0 ) \
: "memory" ) : "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8017D898__t67f11bf2.h" #include "../shared/ov/func_8017D898__t67f11bf2.h"
@@ -3936,30 +3842,6 @@ extern void func_8012F038(int param_1, short *param_2, short *param_3);
typedef struct { s32 w[8]; } Mtx32_80180088; typedef struct { s32 w[8]; } Mtx32_80180088;
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
void func_80180088(s32 param_1) void func_80180088(s32 param_1)
{ {
@@ -4374,81 +4256,6 @@ typedef struct { s16 vx, vy; } DV_80180B3C;
(((PTag_80180B3C *)(p))->addr = ((PTag_80180B3C *)(o))->addr, \ (((PTag_80180B3C *)(p))->addr = ((PTag_80180B3C *)(o))->addr, \
((PTag_80180B3C *)(o))->addr = (u32)(p)) ((PTag_80180B3C *)(o))->addr = (u32)(p))
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy0_80180B3C(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy1_80180B3C(r0) __asm__ volatile ( \
"swc2 $13, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz_80180B3C(r0) __asm__ volatile ( \
"swc2 $19, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
void func_80180B3C(s32 a0) void func_80180B3C(s32 a0)
{ {
@@ -4507,7 +4314,7 @@ void func_80180B3C(s32 a0)
gte_ldv0(&sv); gte_ldv0(&sv);
gte_rtps(); gte_rtps();
gte_stsxy(&sxy0); gte_stsxy(&sxy0);
gte_stsz_80180B3C(&sz); gte_stsz(&sz);
*(u16 *)&D_801DA730 = *(u16 *)(a0 + 8); *(u16 *)&D_801DA730 = *(u16 *)(a0 + 8);
D_801DA738 = *(u16 *)(a0 + 0xA); D_801DA738 = *(u16 *)(a0 + 0xA);
@@ -4522,8 +4329,8 @@ void func_80180B3C(s32 a0)
sv2.vz = sz; sv2.vz = sz;
gte_ldv3(&sv, &sv2, &sv2); gte_ldv3(&sv, &sv2, &sv2);
gte_rtpt(); gte_rtpt();
gte_stsxy0_80180B3C(&sxy1); gte_stsxy0(&sxy1);
gte_stsxy1_80180B3C(&sxy2); gte_stsxy1(&sxy2);
gte_stflg(&flg); gte_stflg(&flg);
gte_stszotz(&otz); gte_stszotz(&otz);
@@ -7044,54 +6851,6 @@ void func_801846A0(void *a0) {
extern void func_8012C218(void *a0); extern void func_8012C218(void *a0);
extern s32 func_80143B6C(s32 a0, s32 a1); extern s32 func_80143B6C(s32 a0, s32 a1);
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
void func_80184834(void *a0) void func_80184834(void *a0)
{ {
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8018B9E8) : "$9", "$10", "$11", "memory"); : : "r"(D_8018B9E8) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8018B9EC);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8018B9EC) : "memory");
pc0 = D_8018B9E8; pc0 = D_8018B9E8;
pc4 = D_8018B9EC; pc4 = D_8018B9EC;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_8018BB14[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_8018BB14[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-137
View File
@@ -2692,73 +2692,14 @@ extern void func_8017D5DC(void *a0);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \ #define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \ "swc2 $12, 8( %0 );" \
@@ -2768,45 +2709,10 @@ extern void func_8017D5DC(void *a0);
: "r"( r0 ) \ : "r"( r0 ) \
: "memory" ) : "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8017D898__t67f11bf2.h" #include "../shared/ov/func_8017D898__t67f11bf2.h"
@@ -6280,55 +6186,12 @@ void func_80182F88(s32 param) {
* well after that block); the reconciler may also just drop them. * well after that block); the reconciler may also just drop them.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
void func_80182FD4(void *a0, void *a1) void func_80182FD4(void *a0, void *a1)
{ {
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_80185214) : "$9", "$10", "$11", "memory"); : : "r"(D_80185214) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_80185218);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_80185218) : "memory");
pc0 = D_80185214; pc0 = D_80185214;
pc4 = D_80185218; pc4 = D_80185218;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_80185340[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_80185340[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+1 -109
View File
@@ -5646,86 +5646,6 @@ void func_8017F590(void *a0) {
#include "common.h" #include "common.h"
#include "../shared/engine_types.h" #include "../shared/engine_types.h"
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define BOXTEST(F, X, Y, Z) \ #define BOXTEST(F, X, Y, Z) \
if (lo_x < (X) && (X) < hi_x && lo_y < (Y) && (Y) < hi_y && lo_z < (Z) && (Z) < hi_z) F = 1 if (lo_x < (X) && (X) < hi_x && lo_y < (Y) && (Y) < hi_y && lo_z < (Z) && (Z) < hi_z) F = 1
#define ATTEN(A, X, Y, Z) \ #define ATTEN(A, X, Y, Z) \
@@ -8119,11 +8039,7 @@ void func_80183DC0(void *a0) {
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(p) : "$9", "$10", "$11", "memory"); : : "r"(p) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(p);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(p) : "memory");
} }
if (*(s16 *)((s32)a0 + 0x36) == 0) { if (*(s16 *)((s32)a0 + 0x36) == 0) {
@@ -8720,30 +8636,6 @@ extern s32 func_8012BDBC(s32 a0, s32 a1);
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3);
extern void func_80172710(void); extern void func_80172710(void);
extern s32 func_80178BF8(); extern s32 func_80178BF8();
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
s32 aF8018A224() __asm__("func_80184A9C"); s32 aF8018A224() __asm__("func_80184A9C");
+1 -227
View File
@@ -813,46 +813,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -928,114 +888,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2272,80 +2124,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2682,11 +2460,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_80184A74) : "$9", "$10", "$11", "memory"); : : "r"(D_80184A74) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_80184A78);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_80184A78) : "memory");
pc0 = D_80184A74; pc0 = D_80184A74;
pc4 = D_80184A78; pc4 = D_80184A78;
+5 -27
View File
@@ -1011,22 +1011,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_80184BA0[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_80184BA0[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1047,7 +1033,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1124,12 +1110,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1143,12 +1125,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-142
View File
@@ -2681,73 +2681,14 @@ extern void func_8017BEB4(void);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \ #define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \ "swc2 $12, 8( %0 );" \
@@ -2757,45 +2698,10 @@ extern void func_8017BEB4(void);
: "r"( r0 ) \ : "r"( r0 ) \
: "memory" ) : "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8017BEBC__t67f11bf2.h" #include "../shared/ov/func_8017BEBC__t67f11bf2.h"
@@ -3587,54 +3493,6 @@ void func_8017E1E0(void *a0) {
extern void func_8012C218(void *a0); extern void func_8012C218(void *a0);
extern s32 func_80143B6C(s32 a0, s32 a1); extern s32 func_80143B6C(s32 a0, s32 a1);
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
void func_8017E374(void *a0) void func_8017E374(void *a0)
{ {
-232
View File
@@ -1536,130 +1536,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#include "../shared/ov/func_8012E778.h" #include "../shared/ov/func_8012E778.h"
@@ -1733,114 +1609,6 @@ void func_8012E9C0(int param_1)
typedef struct { s8 c[8]; } Blk8_8012EFB8; typedef struct { s8 c[8]; } Blk8_8012EFB8;
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
+1 -115
View File
@@ -1340,116 +1340,6 @@ void func_8013277C(void) {
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -1794,11 +1684,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_801841B0) : "$9", "$10", "$11", "memory"); : : "r"(D_801841B0) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_801841B4);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_801841B4) : "memory");
pc0 = D_801841B0; pc0 = D_801841B0;
pc4 = D_801841B4; pc4 = D_801841B4;
+5 -27
View File
@@ -1058,20 +1058,6 @@ extern void func_8013AA24(s32 a0, s32 a1);
#include "../shared/ov/func_8013AB54.h" #include "../shared/ov/func_8013AB54.h"
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1095,7 +1081,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair *)out2)[i].x = res[0]; ((Pair *)out2)[i].x = res[0];
((Pair *)out2)[i].y = res[1]; ((Pair *)out2)[i].y = res[1];
@@ -1174,12 +1160,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1193,12 +1175,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
+1 -150
View File
@@ -5339,121 +5339,20 @@ extern s32 D_800A5E60;
extern u8 D_800A6610[]; extern u8 D_800A6610[];
extern short D_800B9A02; extern short D_800B9A02;
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
void func_8017D898(s32 arg0) void func_8017D898(s32 arg0)
{ {
@@ -5685,7 +5584,7 @@ void func_8017D898(s32 arg0)
break; break;
case 0: case 0:
case 1: case 1:
gte_stsxy3_f4(pkt); gte_stsxy3_f3(pkt);
gte_ldv0(vd); gte_ldv0(vd);
gte_rtps(); gte_rtps();
if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) { if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) {
@@ -8831,54 +8730,6 @@ void func_80182614(void *a0) {
extern void func_8012C218(void *a0); extern void func_8012C218(void *a0);
extern s32 func_80143B6C(s32 a0, s32 a1); extern s32 func_80143B6C(s32 a0, s32 a1);
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
void func_801827A8(void *a0) void func_801827A8(void *a0)
{ {
+1 -227
View File
@@ -815,46 +815,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -930,114 +890,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2273,80 +2125,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2683,11 +2461,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_8017F6A0) : "$9", "$10", "$11", "memory"); : : "r"(D_8017F6A0) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_8017F6A4);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_8017F6A4) : "memory");
pc0 = D_8017F6A0; pc0 = D_8017F6A0;
pc4 = D_8017F6A4; pc4 = D_8017F6A4;
+5 -27
View File
@@ -1009,22 +1009,8 @@ s32 func_80139BE0(int param_1)
extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */
extern u8 D_8017F7CC[]; /* sign table, alt (when a1 < 0xC00) */ extern u8 D_8017F7CC[]; /* sign table, alt (when a1 < 0xC00) */
#define gte_ldv0(r0) __asm__ __volatile__( \
"lwc2 $0, 0(%0)\n" \
"lwc2 $1, 4(%0)\n" \
: : "r"(r0) : "memory")
#define gte_mvmva0() __asm__ __volatile__( \
"nop\n" \
"nop\n" \
"mvmva 1, 0, 0, 0, 0\n" \
: : : "memory")
#define gte_stlvnl(r0) __asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(r0) : "memory")
void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
{ {
@@ -1045,7 +1031,7 @@ void func_8013AD38(void *flag, s32 a1, void *out2, void *out3)
vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12);
vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12);
gte_ldv0(vec); gte_ldv0(vec);
gte_mvmva0(); gte_rtv0tr();
gte_stlvnl(res); gte_stlvnl(res);
((Pair_8013AD38 *)out2)[i].x = res[0]; ((Pair_8013AD38 *)out2)[i].x = res[0];
((Pair_8013AD38 *)out2)[i].y = res[1]; ((Pair_8013AD38 *)out2)[i].y = res[1];
@@ -1122,12 +1108,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 0, 0\n" "mvmva 1, 0, 0, 0, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0tr_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 8);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 8) : "memory");
if (((s16*)a2)[1] > 0) if (((s16*)a2)[1] > 0)
*(s32 *)((u8 *)L + 0xC) -= 1; *(s32 *)((u8 *)L + 0xC) -= 1;
@@ -1141,12 +1123,8 @@ void func_8013B274(s32 a0, s32 a1, void *a2)
"lwc2 $1, 4(%0)\n" "lwc2 $1, 4(%0)\n"
"nop\n" "nop\n" "nop\n" "nop\n"
"mvmva 1, 0, 0, 3, 0\n" "mvmva 1, 0, 0, 3, 0\n"
: : "r"(L) : "memory"); : : "r"(L) : "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_ldv0+gte_rtv0_m) beyond Sony's (P36 T5 gte1)
__asm__ __volatile__( gte_stlvnl((u8 *)L + 0x18);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"((u8 *)L + 0x18) : "memory");
*(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8); *(s16 *)(p + 8) = *(s32 *)((u8 *)L + 8);
*(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC); *(s16 *)(p + 0xA) = *(s32 *)((u8 *)L + 0xC);
-138
View File
@@ -2696,73 +2696,14 @@ extern void func_8017BEB4(void);
* because the later-defined pseudo always has the shorter range. Cookbook §47. * because the later-defined pseudo always has the shorter range. Cookbook §47.
*/ */
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 0( %1 );" \
"lwc2 $3, 4( %1 );" \
"lwc2 $4, 0( %2 );" \
"lwc2 $5, 4( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
#define gte_ldv3c(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 );" \
"lwc2 $2, 8( %0 );" \
"lwc2 $3, 12( %0 );" \
"lwc2 $4, 16( %0 );" \
"lwc2 $5, 20( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
#define gte_nclip() __asm__ volatile ("nop;nop;nclip")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 0( %1 );" \
"swc2 $14, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsxy3c(r0) __asm__ volatile ( \
"swc2 $12, 0( %0 );" \
"swc2 $13, 4( %0 );" \
"swc2 $14, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 12( %0 );" \
"swc2 $14, 16( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_ft3(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \
"swc2 $13, 16( %0 );" \
"swc2 $14, 24( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stsxy3_f4(r0) __asm__ volatile ( \ #define gte_stsxy3_f4(r0) __asm__ volatile ( \
"swc2 $12, 8( %0 );" \ "swc2 $12, 8( %0 );" \
@@ -2772,45 +2713,10 @@ extern void func_8017BEB4(void);
: "r"( r0 ) \ : "r"( r0 ) \
: "memory" ) : "memory" )
#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \
"swc2 $17, 0( %0 );" \
"swc2 $18, 0( %1 );" \
"swc2 $19, 0( %2 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
: "memory" )
#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \
"swc2 $16, 0( %0 );" \
"swc2 $17, 0( %1 );" \
"swc2 $18, 0( %2 );" \
"swc2 $19, 0( %3 )" \
: \
: "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \
: "memory" )
#define gte_stszotz(r0) __asm__ volatile ( \
"mfc2 $12, $19;" \
"nop;" \
"sra $12, $12, 2;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_stopz(r0) __asm__ volatile ( \
"swc2 $24, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#include "../shared/ov/func_8017BEBC__t67f11bf2.h" #include "../shared/ov/func_8017BEBC__t67f11bf2.h"
@@ -3571,55 +3477,11 @@ extern u8 D_8019F93C[]; /* byte symbol -> alignment 2 -> lwl/lwr block-move p
extern s16 D_8019B584; extern s16 D_8019B584;
/* --- GTE inline-asm macros (project-standard spelling) -------------------------------------- */ /* --- GTE inline-asm macros (project-standard spelling) -------------------------------------- */
#define gte_SetRotMatrix(r0) __asm__ __volatile__ ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ __volatile__ ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ __volatile__ ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ __volatile__ ("nop;nop;.word 0x4A480012")
#define gte_stlvnl(r0) __asm__ __volatile__ ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ __volatile__ ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
void func_8017E024(s32 a0) void func_8017E024(s32 a0)
{ {
+1 -227
View File
@@ -815,46 +815,6 @@ void func_8012E364(s32 arg0_)
#include "../shared/ov/func_8012E688.h" #include "../shared/ov/func_8012E688.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldlv0(r0) __asm__ volatile ( \
"lhu $13, 4( %0 );" \
"lhu $12, 0( %0 );" \
"sll $13, $13, 16;" \
"or $12, $12, $13;" \
"mtc2 $12, $0;" \
"lwc2 $1, 8( %0 )" \
: \
: "r"( r0 ) \
: "$12", "$13" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
@@ -930,114 +890,6 @@ extern void func_80049CAC(s32 a0, s32 a1);
#include "../shared/ov/func_8012EF70.h" #include "../shared/ov/func_8012EF70.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
#define gte_stsxy(r0) __asm__ volatile ( \
"swc2 $14, 0( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
/* §37/§124 asm-label alias: the fleet canon declares this `extern void /* §37/§124 asm-label alias: the fleet canon declares this `extern void
* func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in
@@ -2273,80 +2125,6 @@ void func_8013221C(int param_1)
#include "../shared/ov/func_80133060.h" #include "../shared/ov/func_80133060.h"
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetRotMatrix(r0) __asm__ volatile ( \
"lw $12, 0( %0 );" \
"lw $13, 4( %0 );" \
"ctc2 $12, $0;" \
"ctc2 $13, $1;" \
"lw $12, 8( %0 );" \
"lw $13, 12( %0 );" \
"lw $14, 16( %0 );" \
"ctc2 $12, $2;" \
"ctc2 $13, $3;" \
"ctc2 $14, $4" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_SetTransMatrix(r0) __asm__ volatile ( \
"lw $12, 20( %0 );" \
"lw $13, 24( %0 );" \
"ctc2 $12, $5;" \
"lw $14, 28( %0 );" \
"ctc2 $13, $6;" \
"ctc2 $14, $7" \
: \
: "r"( r0 ) \
: "$12", "$13", "$14" )
#define gte_ldv0(r0) __asm__ volatile ( \
"lwc2 $0, 0( %0 );" \
"lwc2 $1, 4( %0 )" \
: \
: "r"( r0 ) )
#define gte_rtv0tr() __asm__ volatile ( \
"nop;" \
"nop;" \
"mvmva 1, 0, 0, 0, 0" \
: \
: \
: "memory" )
#define gte_stlvnl(r0) __asm__ volatile ( \
"swc2 $25, 0( %0 );" \
"swc2 $26, 4( %0 );" \
"swc2 $27, 8( %0 )" \
: \
: "r"( r0 ) \
: "memory" )
#define gte_stflg(r0) __asm__ volatile ( \
"cfc2 $12, $31;" \
"nop;" \
"sw $12, 0( %0 )" \
: \
: "r"( r0 ) \
: "$12", "memory" )
#include "../shared/ov/func_801330E0.h" #include "../shared/ov/func_801330E0.h"
@@ -2683,11 +2461,7 @@ s32 func_80133CD4(arg0, cmd, base, arr)
"nop\n" "nop\n"
"sqr 0\n" "sqr 0\n"
: : "r"(D_80185370) : "$9", "$10", "$11", "memory"); : : "r"(D_80185370) : "$9", "$10", "$11", "memory");
__asm__ __volatile__( gte_stlvnl(D_80185374);
"swc2 $25, 0(%0)\n"
"swc2 $26, 4(%0)\n"
"swc2 $27, 8(%0)\n"
: : "r"(D_80185374) : "memory");
pc0 = D_80185370; pc0 = D_80185370;
pc4 = D_80185374; pc4 = D_80185374;

Some files were not shown because too many files have changed in this diff Show More