mirror of
https://github.com/pret/pmd-red.git
synced 2025-02-12 00:05:38 +00:00
"Finish" decompiling bg_palette_buffer.s and m4a_2.s, and rename text variables
We all have our breaking points :matchlikethis:
This commit is contained in:
parent
48d3cbf8b7
commit
a611b9673e
@ -1,148 +0,0 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start InitBGPaletteBuffer
|
||||
InitBGPaletteBuffer:
|
||||
push {lr}
|
||||
movs r2, 0
|
||||
ldr r1, =gBGPaletteBuffer
|
||||
movs r0, 0x80
|
||||
lsls r0, 2
|
||||
_0800463E:
|
||||
strh r2, [r1]
|
||||
adds r1, 0x2
|
||||
subs r0, 0x1
|
||||
cmp r0, 0
|
||||
bne _0800463E
|
||||
ldr r1, =gBGPaletteUsed
|
||||
movs r2, 0x1
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x1F
|
||||
_08004650:
|
||||
strb r2, [r0]
|
||||
subs r0, 0x1
|
||||
cmp r0, r1
|
||||
bge _08004650
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
.pool
|
||||
thumb_func_end InitBGPaletteBuffer
|
||||
|
||||
thumb_func_start SetBGPaletteBufferColorRGB
|
||||
SetBGPaletteBufferColorRGB:
|
||||
push {r4-r7,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
cmp r2, 0
|
||||
bge _08004670
|
||||
movs r2, 0
|
||||
_08004670:
|
||||
cmp r2, 0x1F
|
||||
ble _08004676
|
||||
movs r2, 0x1F
|
||||
_08004676:
|
||||
ldr r1, =gBGPaletteUsed
|
||||
adds r0, r4, 0
|
||||
cmp r4, 0
|
||||
bge _08004680
|
||||
adds r0, 0xF
|
||||
_08004680:
|
||||
asrs r0, 4
|
||||
adds r0, r1
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
cmp r3, 0
|
||||
bne _080046D4
|
||||
ldr r0, =gBGPaletteBuffer
|
||||
lsls r1, r4, 1
|
||||
adds r6, r1, r0
|
||||
ldrb r0, [r5, 0x2]
|
||||
muls r0, r2
|
||||
cmp r0, 0
|
||||
bge _0800469C
|
||||
adds r0, 0xFF
|
||||
_0800469C:
|
||||
asrs r0, 8
|
||||
movs r3, 0x1F
|
||||
ands r0, r3
|
||||
lsls r4, r0, 10
|
||||
ldrb r0, [r5, 0x1]
|
||||
muls r0, r2
|
||||
cmp r0, 0
|
||||
bge _080046AE
|
||||
adds r0, 0xFF
|
||||
_080046AE:
|
||||
asrs r0, 8
|
||||
ands r0, r3
|
||||
lsls r1, r0, 5
|
||||
orrs r1, r4
|
||||
ldrb r0, [r5]
|
||||
muls r0, r2
|
||||
cmp r0, 0
|
||||
bge _080046C0
|
||||
adds r0, 0xFF
|
||||
_080046C0:
|
||||
asrs r0, 8
|
||||
ands r0, r3
|
||||
orrs r1, r0
|
||||
strh r1, [r6]
|
||||
b _08004722
|
||||
.align 2, 0
|
||||
.pool
|
||||
_080046D4:
|
||||
ldr r1, =gBGPaletteBuffer
|
||||
lsls r0, r4, 1
|
||||
adds r7, r0, r1
|
||||
ldrb r0, [r5, 0x2]
|
||||
lsls r0, 2
|
||||
adds r0, r3
|
||||
ldrb r0, [r0, 0x2]
|
||||
muls r0, r2
|
||||
cmp r0, 0
|
||||
bge _080046EA
|
||||
adds r0, 0xFF
|
||||
_080046EA:
|
||||
asrs r0, 8
|
||||
movs r4, 0x1F
|
||||
ands r0, r4
|
||||
lsls r6, r0, 10
|
||||
ldrb r0, [r5, 0x1]
|
||||
lsls r0, 2
|
||||
adds r0, r3
|
||||
ldrb r0, [r0, 0x1]
|
||||
muls r0, r2
|
||||
cmp r0, 0
|
||||
bge _08004702
|
||||
adds r0, 0xFF
|
||||
_08004702:
|
||||
asrs r0, 8
|
||||
ands r0, r4
|
||||
lsls r1, r0, 5
|
||||
orrs r1, r6
|
||||
ldrb r0, [r5]
|
||||
lsls r0, 2
|
||||
adds r0, r3
|
||||
ldrb r0, [r0]
|
||||
muls r0, r2
|
||||
cmp r0, 0
|
||||
bge _0800471A
|
||||
adds r0, 0xFF
|
||||
_0800471A:
|
||||
asrs r0, 8
|
||||
ands r0, r4
|
||||
orrs r1, r0
|
||||
strh r1, [r7]
|
||||
_08004722:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
.pool
|
||||
thumb_func_end SetBGPaletteBufferColorRGB
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
70
asm/m4a_2.s
70
asm/m4a_2.s
@ -1,70 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "constants/m4a_constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start CgbModVol
|
||||
CgbModVol:
|
||||
push {r4,lr}
|
||||
adds r1, r0, 0
|
||||
ldrb r0, [r1, 0x2]
|
||||
lsls r2, r0, 24
|
||||
lsrs r4, r2, 24
|
||||
ldrb r3, [r1, 0x3]
|
||||
lsls r0, r3, 24
|
||||
lsrs r3, r0, 24
|
||||
cmp r4, r3
|
||||
bcc _080AFA94
|
||||
lsrs r0, r2, 25
|
||||
cmp r0, r3
|
||||
bcc _080AFAA0
|
||||
movs r0, 0xF
|
||||
strb r0, [r1, 0x1B]
|
||||
b _080AFAAE
|
||||
_080AFA94:
|
||||
lsrs r0, 25
|
||||
cmp r0, r4
|
||||
bcc _080AFAA0
|
||||
movs r0, 0xF0
|
||||
strb r0, [r1, 0x1B]
|
||||
b _080AFAAE
|
||||
_080AFAA0:
|
||||
movs r0, 0xFF
|
||||
strb r0, [r1, 0x1B]
|
||||
ldrb r2, [r1, 0x3]
|
||||
ldrb r3, [r1, 0x2]
|
||||
adds r0, r2, r3
|
||||
lsrs r0, 4
|
||||
b _080AFABE
|
||||
_080AFAAE:
|
||||
ldrb r2, [r1, 0x3]
|
||||
ldrb r3, [r1, 0x2]
|
||||
adds r0, r2, r3
|
||||
lsrs r0, 4
|
||||
strb r0, [r1, 0xA]
|
||||
cmp r0, 0xF
|
||||
bls _080AFAC0
|
||||
movs r0, 0xF
|
||||
_080AFABE:
|
||||
strb r0, [r1, 0xA]
|
||||
_080AFAC0:
|
||||
ldrb r2, [r1, 0x6]
|
||||
ldrb r3, [r1, 0xA]
|
||||
adds r0, r2, 0
|
||||
muls r0, r3
|
||||
adds r0, 0xF
|
||||
asrs r0, 4
|
||||
strb r0, [r1, 0x19]
|
||||
ldrb r0, [r1, 0x1C]
|
||||
ldrb r2, [r1, 0x1B]
|
||||
ands r0, r2
|
||||
strb r0, [r1, 0x1B]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end CgbModVol
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
@ -4468,7 +4468,7 @@ sub_8008584:
|
||||
adds r1, r5, r1
|
||||
b _08008624
|
||||
.align 2, 0
|
||||
_080085C4: .4byte gUnknown_2027490
|
||||
_080085C4: .4byte gKanji
|
||||
_080085C8: .4byte gUnknown_20274AC
|
||||
_080085CC: .4byte 0xffff0800
|
||||
_080085D0: .4byte 0x000007fe
|
||||
|
@ -24,6 +24,8 @@
|
||||
|
||||
#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided\n")
|
||||
|
||||
#define NAKED __attribute__((naked))
|
||||
|
||||
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
|
||||
|
||||
#endif // GUARD_GLOBAL_H
|
||||
|
@ -48,7 +48,6 @@ SECTIONS {
|
||||
asm/code_80035F0.o(.text);
|
||||
src/other_random.o(.text);
|
||||
src/util.o(.text);
|
||||
asm/bg_palette_buffer.o(.text);
|
||||
src/bg_palette_buffer.o(.text);
|
||||
asm/input.o(.text);
|
||||
asm/code_8004AA0.o(.text);
|
||||
@ -57,6 +56,7 @@ SECTIONS {
|
||||
asm/code_800558C.o(.text);
|
||||
src/random.o(.text);
|
||||
src/text.o(.text);
|
||||
. = ALIGN(4);
|
||||
asm/text.o(.text);
|
||||
asm/code_8009804.o(.text);
|
||||
src/file_system.o(.text);
|
||||
@ -71,7 +71,6 @@ SECTIONS {
|
||||
asm/code_8012A18.o(.text);
|
||||
asm/m4a_1.o(.text);
|
||||
src/m4a_2.o(.text);
|
||||
asm/m4a_2.o(.text);
|
||||
asm/m4a_3.o(.text);
|
||||
src/m4a_4.o(.text);
|
||||
asm/syscall.o(.text);
|
||||
|
@ -8,9 +8,12 @@ extern bool8 gBGPaletteUsed[BG_PALETTE_BUFFER_SIZE / BG_PALETTE_BUFFER_CHUNK_SIZ
|
||||
|
||||
extern void CpuCopy(void* src, void* dest, u32 size);
|
||||
|
||||
/*
|
||||
#ifndef NONMATCHING
|
||||
NAKED
|
||||
#endif
|
||||
void InitBGPaletteBuffer(void)
|
||||
{
|
||||
#ifdef NONMATCHING
|
||||
u16 color = 0;
|
||||
u16* ptr;
|
||||
u32 i;
|
||||
@ -36,25 +39,165 @@ void InitBGPaletteBuffer(void)
|
||||
do
|
||||
*p-- = paletteUsed;
|
||||
while ((s32) p >= (s32) &gBGPaletteUsed);
|
||||
#else
|
||||
asm_unified("\tpush {lr}\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tldr r1, =gBGPaletteBuffer\n"
|
||||
"\tmovs r0, 0x80\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"_0800463E:\n"
|
||||
"\tstrh r2, [r1]\n"
|
||||
"\tadds r1, 0x2\n"
|
||||
"\tsubs r0, 0x1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _0800463E\n"
|
||||
"\tldr r1, =gBGPaletteUsed\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tadds r0, r1, 0\n"
|
||||
"\tadds r0, 0x1F\n"
|
||||
"_08004650:\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tsubs r0, 0x1\n"
|
||||
"\tcmp r0, r1\n"
|
||||
"\tbge _08004650\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"\t.pool");
|
||||
#endif
|
||||
}
|
||||
void SetBGPaletteBufferColorRGB(s32 index, u8 *RGBArray, s32 a3, u8 *a4)
|
||||
|
||||
#ifndef NONMATCHING
|
||||
NAKED
|
||||
#endif
|
||||
void SetBGPaletteBufferColorRGB(s32 index, u8 *RGBArray, s32 a1, u8 *a2)
|
||||
{
|
||||
if (a3 < 0) {
|
||||
a3 = 0;
|
||||
#ifdef NONMATCHING
|
||||
if (a1 < 0) {
|
||||
a1 = 0;
|
||||
}
|
||||
if (a3 > 31) {
|
||||
a3 = 31;
|
||||
if (a1 > 31) {
|
||||
a1 = 31;
|
||||
}
|
||||
gBGPaletteUsed[index / 16] = 1;
|
||||
if (!a4) {
|
||||
gBGPaletteBuffer[index] = ((RGBArray[2] * a3 / 256 & 0x1F) << 10) | ((RGBArray[1] * a3 / 256 & 0x1F) << 5) | (RGBArray[0] * a3 / 256 & 0x1F);
|
||||
if (!a2) {
|
||||
gBGPaletteBuffer[index] = ((RGBArray[2] * a1 / 256 & 0x1F) << 10) | ((RGBArray[1] * a1 / 256 & 0x1F) << 5) | (RGBArray[0] * a1 / 256 & 0x1F);
|
||||
}
|
||||
else
|
||||
{
|
||||
gBGPaletteBuffer[index] = ((a4[4 * RGBArray[2] + 2] * a3 / 256 & 0x1F) << 10) | ((a4[4 * RGBArray[1] + 1] * a3 / 256 & 0x1F) << 5) | (a4[4 * RGBArray[0]] * a3 / 256 & 0x1F);
|
||||
gBGPaletteBuffer[index] = ((a2[4 * RGBArray[2] + 2] * a1 / 256 & 0x1F) << 10) | ((a2[4 * RGBArray[1] + 1] * a1 / 256 & 0x1F) << 5) | (a2[4 * RGBArray[0]] * a1 / 256 & 0x1F);
|
||||
}
|
||||
#else
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tadds r4, r0, 0\n"
|
||||
"\tadds r5, r1, 0\n"
|
||||
"\tcmp r2, 0\n"
|
||||
"\tbge _08004670\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"_08004670:\n"
|
||||
"\tcmp r2, 0x1F\n"
|
||||
"\tble _08004676\n"
|
||||
"\tmovs r2, 0x1F\n"
|
||||
"_08004676:\n"
|
||||
"\tldr r1, =gBGPaletteUsed\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tcmp r4, 0\n"
|
||||
"\tbge _08004680\n"
|
||||
"\tadds r0, 0xF\n"
|
||||
"_08004680:\n"
|
||||
"\tasrs r0, 4\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tcmp r3, 0\n"
|
||||
"\tbne _080046D4\n"
|
||||
"\tldr r0, =gBGPaletteBuffer\n"
|
||||
"\tlsls r1, r4, 1\n"
|
||||
"\tadds r6, r1, r0\n"
|
||||
"\tldrb r0, [r5, 0x2]\n"
|
||||
"\tmuls r0, r2\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbge _0800469C\n"
|
||||
"\tadds r0, 0xFF\n"
|
||||
"_0800469C:\n"
|
||||
"\tasrs r0, 8\n"
|
||||
"\tmovs r3, 0x1F\n"
|
||||
"\tands r0, r3\n"
|
||||
"\tlsls r4, r0, 10\n"
|
||||
"\tldrb r0, [r5, 0x1]\n"
|
||||
"\tmuls r0, r2\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbge _080046AE\n"
|
||||
"\tadds r0, 0xFF\n"
|
||||
"_080046AE:\n"
|
||||
"\tasrs r0, 8\n"
|
||||
"\tands r0, r3\n"
|
||||
"\tlsls r1, r0, 5\n"
|
||||
"\torrs r1, r4\n"
|
||||
"\tldrb r0, [r5]\n"
|
||||
"\tmuls r0, r2\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbge _080046C0\n"
|
||||
"\tadds r0, 0xFF\n"
|
||||
"_080046C0:\n"
|
||||
"\tasrs r0, 8\n"
|
||||
"\tands r0, r3\n"
|
||||
"\torrs r1, r0\n"
|
||||
"\tstrh r1, [r6]\n"
|
||||
"\tb _08004722\n"
|
||||
"\t.align 2, 0\n"
|
||||
"\t.pool\n"
|
||||
"_080046D4:\n"
|
||||
"\tldr r1, =gBGPaletteBuffer\n"
|
||||
"\tlsls r0, r4, 1\n"
|
||||
"\tadds r7, r0, r1\n"
|
||||
"\tldrb r0, [r5, 0x2]\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tldrb r0, [r0, 0x2]\n"
|
||||
"\tmuls r0, r2\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbge _080046EA\n"
|
||||
"\tadds r0, 0xFF\n"
|
||||
"_080046EA:\n"
|
||||
"\tasrs r0, 8\n"
|
||||
"\tmovs r4, 0x1F\n"
|
||||
"\tands r0, r4\n"
|
||||
"\tlsls r6, r0, 10\n"
|
||||
"\tldrb r0, [r5, 0x1]\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tldrb r0, [r0, 0x1]\n"
|
||||
"\tmuls r0, r2\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbge _08004702\n"
|
||||
"\tadds r0, 0xFF\n"
|
||||
"_08004702:\n"
|
||||
"\tasrs r0, 8\n"
|
||||
"\tands r0, r4\n"
|
||||
"\tlsls r1, r0, 5\n"
|
||||
"\torrs r1, r6\n"
|
||||
"\tldrb r0, [r5]\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tmuls r0, r2\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbge _0800471A\n"
|
||||
"\tadds r0, 0xFF\n"
|
||||
"_0800471A:\n"
|
||||
"\tasrs r0, 8\n"
|
||||
"\tands r0, r4\n"
|
||||
"\torrs r1, r0\n"
|
||||
"\tstrh r1, [r7]\n"
|
||||
"_08004722:\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"\t.pool");
|
||||
#endif
|
||||
}
|
||||
*/
|
||||
|
||||
void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray)
|
||||
{
|
||||
@ -68,7 +211,7 @@ void SetBGPaletteBufferColor(s32 index, u16 *color)
|
||||
gBGPaletteBuffer[index] = *color;
|
||||
}
|
||||
|
||||
void nullsub_4()
|
||||
void nullsub_4(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
113
src/m4a_2.c
113
src/m4a_2.c
@ -1,4 +1,5 @@
|
||||
#include "gba/m4a_internal.h"
|
||||
#include "global.h"
|
||||
|
||||
extern char SoundMainRAM_Buffer[0x400];
|
||||
|
||||
@ -832,3 +833,115 @@ void CgbOscOff(u8 chanNum)
|
||||
REG_NR44 = 0x80;
|
||||
}
|
||||
}
|
||||
|
||||
static inline int CgbPan(struct CgbChannel *chan)
|
||||
{
|
||||
u32 rightVolume = chan->rightVolume;
|
||||
u32 leftVolume = chan->leftVolume;
|
||||
|
||||
if ((rightVolume = (u8)rightVolume) >= (leftVolume = (u8)leftVolume))
|
||||
{
|
||||
if (rightVolume / 2 >= leftVolume)
|
||||
{
|
||||
chan->pan = 0x0F;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (leftVolume / 2 >= rightVolume)
|
||||
{
|
||||
chan->pan = 0xF0;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#ifndef NONMATCHING
|
||||
NAKED
|
||||
#endif
|
||||
void CgbModVol(struct CgbChannel *chan)
|
||||
{
|
||||
#ifdef NONMATCHING
|
||||
struct SoundInfo *soundInfo = SOUND_INFO_PTR;
|
||||
|
||||
if ((soundInfo->mode & 1) || !CgbPan(chan))
|
||||
{
|
||||
chan->pan = 0xFF;
|
||||
chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Force chan->rightVolume and chan->leftVolume to be read from memory again,
|
||||
// even though there is no reason to do so.
|
||||
// The command line option "-fno-gcse" achieves the same result as this.
|
||||
asm("" : : : "memory");
|
||||
|
||||
chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
|
||||
if (chan->eg > 15)
|
||||
chan->eg = 15;
|
||||
}
|
||||
|
||||
chan->sg = (chan->eg * chan->su + 15) >> 4;
|
||||
chan->pan &= chan->panMask;
|
||||
#else
|
||||
asm_unified("\tpush {r4,lr}\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tldrb r0, [r1, 0x2]\n"
|
||||
"\tlsls r2, r0, 24\n"
|
||||
"\tlsrs r4, r2, 24\n"
|
||||
"\tldrb r3, [r1, 0x3]\n"
|
||||
"\tlsls r0, r3, 24\n"
|
||||
"\tlsrs r3, r0, 24\n"
|
||||
"\tcmp r4, r3\n"
|
||||
"\tbcc _080AFA94\n"
|
||||
"\tlsrs r0, r2, 25\n"
|
||||
"\tcmp r0, r3\n"
|
||||
"\tbcc _080AFAA0\n"
|
||||
"\tmovs r0, 0xF\n"
|
||||
"\tstrb r0, [r1, 0x1B]\n"
|
||||
"\tb _080AFAAE\n"
|
||||
"_080AFA94:\n"
|
||||
"\tlsrs r0, 25\n"
|
||||
"\tcmp r0, r4\n"
|
||||
"\tbcc _080AFAA0\n"
|
||||
"\tmovs r0, 0xF0\n"
|
||||
"\tstrb r0, [r1, 0x1B]\n"
|
||||
"\tb _080AFAAE\n"
|
||||
"_080AFAA0:\n"
|
||||
"\tmovs r0, 0xFF\n"
|
||||
"\tstrb r0, [r1, 0x1B]\n"
|
||||
"\tldrb r2, [r1, 0x3]\n"
|
||||
"\tldrb r3, [r1, 0x2]\n"
|
||||
"\tadds r0, r2, r3\n"
|
||||
"\tlsrs r0, 4\n"
|
||||
"\tb _080AFABE\n"
|
||||
"_080AFAAE:\n"
|
||||
"\tldrb r2, [r1, 0x3]\n"
|
||||
"\tldrb r3, [r1, 0x2]\n"
|
||||
"\tadds r0, r2, r3\n"
|
||||
"\tlsrs r0, 4\n"
|
||||
"\tstrb r0, [r1, 0xA]\n"
|
||||
"\tcmp r0, 0xF\n"
|
||||
"\tbls _080AFAC0\n"
|
||||
"\tmovs r0, 0xF\n"
|
||||
"_080AFABE:\n"
|
||||
"\tstrb r0, [r1, 0xA]\n"
|
||||
"_080AFAC0:\n"
|
||||
"\tldrb r2, [r1, 0x6]\n"
|
||||
"\tldrb r3, [r1, 0xA]\n"
|
||||
"\tadds r0, r2, 0\n"
|
||||
"\tmuls r0, r3\n"
|
||||
"\tadds r0, 0xF\n"
|
||||
"\tasrs r0, 4\n"
|
||||
"\tstrb r0, [r1, 0x19]\n"
|
||||
"\tldrb r0, [r1, 0x1C]\n"
|
||||
"\tldrb r2, [r1, 0x1B]\n"
|
||||
"\tands r0, r2\n"
|
||||
"\tstrb r0, [r1, 0x1B]\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n");
|
||||
#endif
|
||||
}
|
18
src/text.c
18
src/text.c
@ -23,13 +23,13 @@ struct UnkTextStruct2 {
|
||||
extern char gUnknown_3000E94[];
|
||||
|
||||
EWRAM_DATA struct UnkTextStruct1 gUnknown_2027370[4];
|
||||
EWRAM_DATA u8 *gUnknown_2027490[2];
|
||||
EWRAM_DATA u8 *gKanji[2];
|
||||
EWRAM_DATA u16 gUnknown_2027498;
|
||||
EWRAM_DATA u8 gUnknown_20274A5;
|
||||
EWRAM_DATA u32 gUnknown_20274AC;
|
||||
EWRAM_DATA vu32 gUnknown_20274B0;
|
||||
EWRAM_DATA u8 gUnknown_20274B4[0x3b00];
|
||||
EWRAM_DATA struct OpenedFile *gKanji[2];
|
||||
EWRAM_DATA struct OpenedFile *gKanjiFiles[2];
|
||||
EWRAM_DATA struct UnkTextStruct2 gUnknown_202AFC0[4];
|
||||
EWRAM_DATA u32 gUnknown_202B020;
|
||||
EWRAM_DATA u32 gUnknown_202B024;
|
||||
@ -60,10 +60,10 @@ void sub_8006218(void)
|
||||
int k;
|
||||
|
||||
gUnknown_20274AC = 0;
|
||||
gKanji[0] = OpenFileAndGetFileDataPtr(gUnknown_80B87B4, &gUnknown_8300500);
|
||||
gKanji[1] = OpenFileAndGetFileDataPtr(gUnknown_80B87BC, &gUnknown_8300500);
|
||||
gUnknown_2027490[0] = gKanji[0]->data;
|
||||
gUnknown_2027490[1] = gKanji[1]->data;
|
||||
gKanjiFiles[0] = OpenFileAndGetFileDataPtr(gUnknown_80B87B4, &gUnknown_8300500);
|
||||
gKanjiFiles[1] = OpenFileAndGetFileDataPtr(gUnknown_80B87BC, &gUnknown_8300500);
|
||||
gKanji[0] = gKanjiFiles[0]->data;
|
||||
gKanji[1] = gKanjiFiles[1]->data;
|
||||
gUnknown_202B028[0] = 11;
|
||||
gUnknown_202B028[1] = 12;
|
||||
for (k = 0; k < 4; k++)
|
||||
@ -188,13 +188,11 @@ void sub_8006438(const struct UnkTextStruct2 *a0, u8 a1, u8 a2, u32 *a3)
|
||||
gUnknown_203B078 = gUnknown_3000E94;
|
||||
gUnknown_20274A5 = 1;
|
||||
#else
|
||||
asm(".syntax unified\n"
|
||||
"\tldr r2, =gUnknown_203B078\n"
|
||||
asm_unified("\tldr r2, =gUnknown_203B078\n"
|
||||
"\tldr r0, =gUnknown_3000E94\n"
|
||||
"\tldr r1, =gUnknown_20274A5\n"
|
||||
"\tstr r0, [r2]\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
".syntax divided");
|
||||
"\tstrb r0, [r1]");
|
||||
#endif
|
||||
}
|
||||
|
@ -133,7 +133,7 @@ gUnknown_2027370 = .; /* 2027370 */
|
||||
gUnknown_20273B8 = .; /* 20273B8 */
|
||||
. += 0xD8;
|
||||
|
||||
gUnknown_2027490 = .; /* 2027490 */
|
||||
gKanji = .; /* 2027490 */
|
||||
. += 0x8;
|
||||
|
||||
gUnknown_2027498 = .; /* 2027498 */
|
||||
@ -157,7 +157,7 @@ gUnknown_20274B0 = .; /* 20274B0 */
|
||||
gUnknown_20274B4 = .; /* 20274B4 */
|
||||
. += 0x3B00;
|
||||
|
||||
gKanji = .; /* 202AFB4 */
|
||||
gKanjiFiles = .; /* 202AFB4 */
|
||||
. += 0x8;
|
||||
|
||||
gUnknown_202AFBC = .; /* 202AFBC */
|
||||
|
Loading…
x
Reference in New Issue
Block a user