#
#     ___  _ _      ___
#    |    | | |    |
# ___|    |   | ___|    PS2DEV Open Source Project.
#----------------------------------------------------------
# (c) 2006 Eugene Plotnikov <e-plotnikov@operamail.com>
# Licenced under Academic Free License version 2.0
# Review ps2sdk README & LICENSE files for further details.
#
#
.set noreorder
.set noat
.set nomacro
.set volatile

.globl g_RCData
.globl RC_ReadDummy
.globl RC_ReadX
.globl RC_ReadI
.globl RC_SetTranslator

.section ".sbss"
.align 6
g_RCData:       .space  256

.section ".sdata"
RC_Translator:  .word   RC_DefTranslator

.text

RC_ReadDummy:
    jr      $ra
    addu    $v0, $zero, $zero

RC_ReadX:
    la      $a0, g_RCData
2:
    lui     $v1, 0x2000
    or      $a0, $a0, $v1
    lw      $v0, 4($a0)
    lui     $a0, 0x00FF
    ori     $a0, $a0, 0xFFFF
    beql    $v0, $a0, 1f
    addu    $v0, $zero, $zero
3:
    beq     $v0, $zero, 1f
    andi    $a0, $v0, 0x07FF
    lw      $v1, RC_Translator
    srl     $v0, $v0, 8
    jr      $v1
    or      $a0, $a0, $v0
1:
    jr      $ra
    nop

RC_ReadI:
    la      $a0, g_RCData
    lui     $v1, 0x2000
    or      $a0, $a0, $v1
    lw      $v0, 0($a0)
    beq     $zero, $zero, 3b
    srl     $v0, $v0, 8

RC_DefTranslator:
    addiu   $at, $zero, 0x05DF
    andi    $v1, $a0, 0x0FFF
    beql    $v1, $at, 1f
    srl     $a0, $a0, 12
    jr      $ra
    addu    $v0, $zero, $a0
1:
    addiu   $v0, $zero, 1
    jr      $ra
    sllv    $v0, $v0, $a0

RC_SetTranslator:
    lw      $v0, RC_Translator
    jr      $ra
    sw      $a0, RC_Translator