Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MorsGames
GitHub Repository: MorsGames/sm64plus
Path: blob/master/asm/decompress.s
7854 views
1
// assembler directives
2
.set noat // allow manual use of $at
3
.set noreorder // don't insert nops after branches
4
.set gp=64
5
6
#include "macros.inc"
7
8
9
.section .text, "ax"
10
11
// This file is handwritten.
12
13
glabel decompress
14
#if defined(VERSION_EU) || defined(VERSION_SH)
15
lw $a3, 8($a0)
16
lw $t9, 0xc($a0)
17
lw $t8, 4($a0)
18
add $a3, $a3, $a0
19
add $t9, $t9, $a0
20
move $a2, $zero
21
addi $a0, $a0, 0x10
22
add $t8, $t8, $a1
23
.L8026ED80:
24
bnezl $a2, .L8026ED98
25
slt $t1, $t0, $zero
26
lw $t0, ($a0)
27
li $a2, 32
28
addi $a0, $a0, 4
29
slt $t1, $t0, $zero
30
.L8026ED98:
31
beql $t1, $zero, .L8026EDB8
32
lhu $t2, ($a3)
33
lb $t2, ($t9)
34
addi $t9, $t9, 1
35
addi $a1, $a1, 1
36
b .L8026EDE4
37
sb $t2, -1($a1)
38
lhu $t2, ($a3)
39
.L8026EDB8:
40
addi $a3, $a3, 2
41
srl $t3, $t2, 0xc
42
andi $t2, $t2, 0xfff
43
sub $t1, $a1, $t2
44
addi $t3, $t3, 3
45
.L8026EDCC:
46
lb $t2, -1($t1)
47
addi $t3, $t3, -1
48
addi $t1, $t1, 1
49
addi $a1, $a1, 1
50
bnez $t3, .L8026EDCC
51
sb $t2, -1($a1)
52
.L8026EDE4:
53
sll $t0, $t0, 1
54
bne $a1, $t8, .L8026ED80
55
addi $a2, $a2, -1
56
jr $ra
57
nop
58
#else
59
lw $t8, 4($a0)
60
lw $a3, 8($a0)
61
lw $t9, 0xc($a0)
62
move $a2, $zero
63
add $t8, $t8, $a1
64
add $a3, $a3, $a0
65
add $t9, $t9, $a0
66
addi $a0, $a0, 0x10
67
.L8027EF50:
68
bnez $a2, .L8027EF64
69
nop
70
lw $t0, ($a0)
71
li $a2, 32
72
addi $a0, $a0, 4
73
.L8027EF64:
74
slt $t1, $t0, $zero
75
beqz $t1, .L8027EF88
76
nop
77
lb $t2, ($t9)
78
addi $t9, $t9, 1
79
sb $t2, ($a1)
80
addi $a1, $a1, 1
81
b .L8027EFBC
82
nop
83
.L8027EF88:
84
lhu $t2, ($a3)
85
addi $a3, $a3, 2
86
srl $t3, $t2, 0xc
87
andi $t2, $t2, 0xfff
88
sub $t1, $a1, $t2
89
addi $t3, $t3, 3
90
.L8027EFA0:
91
lb $t2, -1($t1)
92
addi $t3, $t3, -1
93
addi $t1, $t1, 1
94
sb $t2, ($a1)
95
addi $a1, $a1, 1
96
bnez $t3, .L8027EFA0
97
nop
98
.L8027EFBC:
99
sll $t0, $t0, 1
100
addi $a2, $a2, -1
101
bne $a1, $t8, .L8027EF50
102
nop
103
jr $ra
104
nop
105
#endif
106
107