mirror of
				https://github.com/coop-deluxe/sm64coopdx.git
				synced 2025-10-30 08:01:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			149 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
# assembler directives
 | 
						|
.set noat      # allow manual use of $at
 | 
						|
.set noreorder # don't insert nops after branches
 | 
						|
.set gp=64
 | 
						|
 | 
						|
.include "macros.inc"
 | 
						|
 | 
						|
 | 
						|
.section .text, "ax"
 | 
						|
 | 
						|
# This file is handwritten.
 | 
						|
 | 
						|
glabel decompress
 | 
						|
.if VERSION_SH == 1
 | 
						|
    lw    $a3, 8($a0)
 | 
						|
    lw    $t9, 0xc($a0)
 | 
						|
    lw    $t8, 4($a0)
 | 
						|
    add   $a3, $a3, $a0
 | 
						|
    add   $t9, $t9, $a0
 | 
						|
    move  $a2, $zero
 | 
						|
    addi  $a0, $a0, 0x10
 | 
						|
    add   $t8, $t8, $a1
 | 
						|
.L802772C0:
 | 
						|
    bnel  $a2, $zero, .L802772D8
 | 
						|
     slt   $t1, $t0, $zero
 | 
						|
    lw    $t0, ($a0)
 | 
						|
    li    $a2, 32
 | 
						|
    addi  $a0, $a0, 4
 | 
						|
    slt   $t1, $t0, $zero
 | 
						|
.L802772D8:
 | 
						|
    beql  $t1, $zero, .L802772F8
 | 
						|
     lhu   $t2, ($a3)
 | 
						|
    lb    $t2, ($t9)
 | 
						|
    addi  $t9, $t9, 1
 | 
						|
    addi  $a1, $a1, 1
 | 
						|
    b     .L80277324
 | 
						|
     sb    $t2, -1($a1)
 | 
						|
    lhu   $t2, ($a3)
 | 
						|
.L802772F8:
 | 
						|
    addi  $a3, $a3, 2
 | 
						|
    srl   $t3, $t2, 0xc
 | 
						|
    andi  $t2, $t2, 0xfff
 | 
						|
    sub   $t1, $a1, $t2
 | 
						|
    addi  $t3, $t3, 3
 | 
						|
.L8027730C:
 | 
						|
    lb    $t2, -1($t1)
 | 
						|
    addi  $t3, $t3, -1
 | 
						|
    addi  $t1, $t1, 1
 | 
						|
    addi  $a1, $a1, 1
 | 
						|
    bnez  $t3, .L8027730C
 | 
						|
     sb    $t2, -1($a1)
 | 
						|
.L80277324:
 | 
						|
    sll   $t0, $t0, 1
 | 
						|
    bne   $a1, $t8, .L802772C0
 | 
						|
     addi  $a2, $a2, -1
 | 
						|
    jr    $ra
 | 
						|
     nop   
 | 
						|
.elseif VERSION_EU == 1
 | 
						|
    lw    $a3, 8($a0)
 | 
						|
    lw    $t9, 0xc($a0)
 | 
						|
    lw    $t8, 4($a0)
 | 
						|
    add   $a3, $a3, $a0
 | 
						|
    add   $t9, $t9, $a0
 | 
						|
    move  $a2, $zero
 | 
						|
    addi  $a0, $a0, 0x10
 | 
						|
    add   $t8, $t8, $a1
 | 
						|
.L8026ED80:
 | 
						|
    bnezl $a2, .L8026ED98
 | 
						|
     slt   $t1, $t0, $zero
 | 
						|
    lw    $t0, ($a0)
 | 
						|
    li    $a2, 32
 | 
						|
    addi  $a0, $a0, 4
 | 
						|
    slt   $t1, $t0, $zero
 | 
						|
.L8026ED98:
 | 
						|
    beql  $t1, $zero, .L8026EDB8
 | 
						|
     lhu   $t2, ($a3)
 | 
						|
    lb    $t2, ($t9)
 | 
						|
    addi  $t9, $t9, 1
 | 
						|
    addi  $a1, $a1, 1
 | 
						|
    b     .L8026EDE4
 | 
						|
     sb    $t2, -1($a1)
 | 
						|
    lhu   $t2, ($a3)
 | 
						|
.L8026EDB8:
 | 
						|
    addi  $a3, $a3, 2
 | 
						|
    srl   $t3, $t2, 0xc
 | 
						|
    andi  $t2, $t2, 0xfff
 | 
						|
    sub   $t1, $a1, $t2
 | 
						|
    addi  $t3, $t3, 3
 | 
						|
.L8026EDCC:
 | 
						|
    lb    $t2, -1($t1)
 | 
						|
    addi  $t3, $t3, -1
 | 
						|
    addi  $t1, $t1, 1
 | 
						|
    addi  $a1, $a1, 1
 | 
						|
    bnez  $t3, .L8026EDCC
 | 
						|
     sb    $t2, -1($a1)
 | 
						|
.L8026EDE4:
 | 
						|
    sll   $t0, $t0, 1
 | 
						|
    bne   $a1, $t8, .L8026ED80
 | 
						|
     addi  $a2, $a2, -1
 | 
						|
    jr    $ra
 | 
						|
     nop
 | 
						|
.else
 | 
						|
    lw    $t8, 4($a0)
 | 
						|
    lw    $a3, 8($a0)
 | 
						|
    lw    $t9, 0xc($a0)
 | 
						|
    move  $a2, $zero
 | 
						|
    add   $t8, $t8, $a1
 | 
						|
    add   $a3, $a3, $a0
 | 
						|
    add   $t9, $t9, $a0
 | 
						|
    addi  $a0, $a0, 0x10
 | 
						|
.L8027EF50:
 | 
						|
    bnez  $a2, .L8027EF64
 | 
						|
     nop
 | 
						|
    lw    $t0, ($a0)
 | 
						|
    li    $a2, 32
 | 
						|
    addi  $a0, $a0, 4
 | 
						|
.L8027EF64:
 | 
						|
    slt   $t1, $t0, $zero
 | 
						|
    beqz  $t1, .L8027EF88
 | 
						|
     nop
 | 
						|
    lb    $t2, ($t9)
 | 
						|
    addi  $t9, $t9, 1
 | 
						|
    sb    $t2, ($a1)
 | 
						|
    addi  $a1, $a1, 1
 | 
						|
    b     .L8027EFBC
 | 
						|
     nop
 | 
						|
.L8027EF88:
 | 
						|
    lhu   $t2, ($a3)
 | 
						|
    addi  $a3, $a3, 2
 | 
						|
    srl   $t3, $t2, 0xc
 | 
						|
    andi  $t2, $t2, 0xfff
 | 
						|
    sub   $t1, $a1, $t2
 | 
						|
    addi  $t3, $t3, 3
 | 
						|
.L8027EFA0:
 | 
						|
    lb    $t2, -1($t1)
 | 
						|
    addi  $t3, $t3, -1
 | 
						|
    addi  $t1, $t1, 1
 | 
						|
    sb    $t2, ($a1)
 | 
						|
    addi  $a1, $a1, 1
 | 
						|
    bnez  $t3, .L8027EFA0
 | 
						|
     nop
 | 
						|
.L8027EFBC:
 | 
						|
    sll   $t0, $t0, 1
 | 
						|
    addi  $a2, $a2, -1
 | 
						|
    bne   $a1, $t8, .L8027EF50
 | 
						|
     nop
 | 
						|
    jr    $ra
 | 
						|
     nop
 | 
						|
.endif
 |