mirror of
https://github.com/pret/pokediamond.git
synced 2026-09-29 20:06:38 -05:00
Merge branch 'master' into decomp-unk_02024E64
This commit is contained in:
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -18,13 +18,13 @@ jobs:
|
||||
- name: Update and Install Software
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo ACCEPT_EULA=Y apt -y --fix-missing upgrade
|
||||
sudo apt -y install g++-8-multilib linux-libc-dev binutils-arm-none-eabi
|
||||
sudo ACCEPT_EULA=Y apt -y --fix-missing --allow-downgrades upgrade
|
||||
sudo apt -y --allow-downgrades install g++-8-multilib linux-libc-dev binutils-arm-none-eabi
|
||||
sudo dpkg --add-architecture i386
|
||||
wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
|
||||
sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport
|
||||
sudo apt-add-repository "deb https://dl.winehq.org/wine-builds/ubuntu $(lsb_release -cs) main"
|
||||
sudo apt install --install-recommends winehq-stable
|
||||
sudo apt -y --allow-downgrades install --install-recommends winehq-stable
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v2
|
||||
- name: Setup Repo
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.extern UNK_021C570C
|
||||
.extern UNK_021C5734
|
||||
.section .text
|
||||
|
||||
glabel GenerateFontHalfRowLookupTable
|
||||
|
||||
.extern UNK_021C570C
|
||||
.extern UNK_021C5734
|
||||
|
||||
thumb_func_start GenerateFontHalfRowLookupTable
|
||||
GenerateFontHalfRowLookupTable: ; 0x0201C05C
|
||||
push {r3-r7, lr}
|
||||
sub sp, #0x30
|
||||
ldr r3, _0201C0F8 ; =UNK_021C570C
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start FUN_0204AEA8
|
||||
FUN_0204AEA8: ; 0x0204AEA8
|
||||
push {r3-r5, lr}
|
||||
add r4, r0, #0x0
|
||||
bl FUN_02046528
|
||||
add r5, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
bl FUN_0204652C
|
||||
add r4, r0, #0x0
|
||||
ldr r1, [r4, #0x0]
|
||||
cmp r1, #0x0
|
||||
beq _0204AEC6
|
||||
cmp r1, #0x1
|
||||
beq _0204AEE6
|
||||
b _0204AEF4
|
||||
_0204AEC6:
|
||||
ldr r0, [r4, #0x8]
|
||||
add r1, r5, #0x0
|
||||
add r2, r4, #0x4
|
||||
bl MOD05_021E3444
|
||||
ldr r1, [r4, #0xc]
|
||||
mov r0, #0x5
|
||||
lsl r1, r1, #0x10
|
||||
lsr r1, r1, #0x10
|
||||
mov r2, #0x1
|
||||
bl FUN_0200433C
|
||||
ldr r0, [r4, #0x0]
|
||||
add r0, r0, #0x1
|
||||
str r0, [r4, #0x0]
|
||||
b _0204AEF4
|
||||
_0204AEE6:
|
||||
ldr r1, [r4, #0x4]
|
||||
cmp r1, #0x1
|
||||
bne _0204AEF4
|
||||
bl FreeToHeap
|
||||
mov r0, #0x1
|
||||
pop {r3-r5, pc}
|
||||
_0204AEF4:
|
||||
mov r0, #0x0
|
||||
pop {r3-r5, pc}
|
||||
|
||||
thumb_func_start FUN_0204AEF8
|
||||
FUN_0204AEF8: ; 0x0204AEF8
|
||||
push {r4-r6, lr}
|
||||
add r6, r0, #0x0
|
||||
add r5, r1, #0x0
|
||||
mov r0, #0xb
|
||||
mov r1, #0x10
|
||||
add r4, r2, #0x0
|
||||
bl AllocFromHeapAtEnd
|
||||
add r2, r0, #0x0
|
||||
mov r0, #0x0
|
||||
str r0, [r2, #0x0]
|
||||
str r0, [r2, #0x4]
|
||||
str r5, [r2, #0x8]
|
||||
ldr r1, _0204AF20 ; =FUN_0204AEA8
|
||||
add r0, r6, #0x0
|
||||
str r4, [r2, #0xc]
|
||||
bl FUN_0204640C
|
||||
pop {r4-r6, pc}
|
||||
nop
|
||||
_0204AF20: .word FUN_0204AEA8
|
||||
43
arm9/src/unk_0204AEA8.c
Normal file
43
arm9/src/unk_0204AEA8.c
Normal file
@@ -0,0 +1,43 @@
|
||||
#include "global.h"
|
||||
#include "heap.h"
|
||||
#include "unk_0204639C.h"
|
||||
#include "unk_0204AEA8.h"
|
||||
|
||||
extern void MOD05_021E3444(u32, struct UnkStruct_0204639C *, u32);
|
||||
extern void FUN_0200433C(u32, u16, u32);
|
||||
|
||||
THUMB_FUNC BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0)
|
||||
{
|
||||
struct UnkStruct_0204639C *v0 = FUN_02046528(a0);
|
||||
u32 *v1 = FUN_0204652C(a0);
|
||||
|
||||
switch (v1[0])
|
||||
{
|
||||
case 0:
|
||||
MOD05_021E3444(v1[2], v0, (u32)v1 + 4);
|
||||
FUN_0200433C(5, (u16)v1[3], 1);
|
||||
v1[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (v1[1] == 1)
|
||||
{
|
||||
FreeToHeap(v1);
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
THUMB_FUNC void FUN_0204AEF8(struct UnkStruct_0204639C *a0, u32 a1, u32 a2)
|
||||
{
|
||||
u32 *v0 = AllocFromHeapAtEnd(11, 4 * sizeof(u32));
|
||||
|
||||
v0[0] = 0;
|
||||
v0[1] = 0;
|
||||
v0[2] = a1;
|
||||
v0[3] = a2;
|
||||
|
||||
FUN_0204640C(a0, FUN_0204AEA8, v0);
|
||||
}
|
||||
7
include/unk_0204AEA8.h
Normal file
7
include/unk_0204AEA8.h
Normal file
@@ -0,0 +1,7 @@
|
||||
#ifndef POKEDIAMOND_UNK_0204AEA8_H
|
||||
#define POKEDIAMOND_UNK_0204AEA8_H
|
||||
|
||||
BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0);
|
||||
void FUN_0204AEF8(struct UnkStruct_0204639C *a0, u32 a1, u32 a2);
|
||||
|
||||
#endif
|
||||
@@ -575,7 +575,7 @@ class GlobalAsmBlock:
|
||||
self.add_sized(int(line.split()[1], 0), real_line)
|
||||
elif line.startswith('.balign') or line.startswith('.align'):
|
||||
align = int(line.split()[1])
|
||||
if align != 2:
|
||||
if align != 4:
|
||||
self.fail("only .balign 4 is supported", real_line)
|
||||
self.align4()
|
||||
elif line.startswith('.asci'):
|
||||
@@ -586,9 +586,6 @@ class GlobalAsmBlock:
|
||||
# Branches are 4 bytes long
|
||||
elif line.startswith('bl'):
|
||||
self.add_sized(4, real_line)
|
||||
elif line.startswith('.'):
|
||||
# .macro, ...
|
||||
self.fail("asm directive not supported", real_line)
|
||||
else:
|
||||
# Unfortunately, macros are hard to support for .rodata --
|
||||
# we don't know how how space they will expand to before
|
||||
@@ -1027,8 +1024,11 @@ def fixup_objfile(objfile_name, functions, asm_prelude, assembler, output_enc):
|
||||
loc1 = asm_objfile.symtab.find_symbol_in_section(temp_name + '_asm_start', source)
|
||||
loc2 = asm_objfile.symtab.find_symbol_in_section(temp_name + '_asm_end', source)
|
||||
assert loc1 == pos, "assembly and C files don't line up for section " + sectype + ", " + fn_desc
|
||||
if loc2 - loc1 != count:
|
||||
raise Failure("incorrectly computed size for section " + sectype + ", " + fn_desc + ". If using .double, make sure to provide explicit alignment padding.")
|
||||
# Since we are nonmatching whole functions, we don't need to insert the correct
|
||||
# amount of padding into the src file. We don't actually need to insert padding
|
||||
# at all. We can just plop the asm's text section into the objfile.
|
||||
# if loc2 - loc1 != count:
|
||||
# raise Failure("incorrectly computed size for section " + sectype + ", " + fn_desc + ". If using .double, make sure to provide explicit alignment padding.")
|
||||
if sectype == '.bss' or sectype == '.sbss2':
|
||||
continue
|
||||
target = objfile.find_section(sectype, n_text if sectype == '.text' else 0)
|
||||
|
||||
@@ -1,19 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
CC="$1"
|
||||
shift
|
||||
AS="$1"
|
||||
shift
|
||||
AS="$2"
|
||||
OBJ="$3"
|
||||
SRC="$4"
|
||||
|
||||
temp="$(mktemp)"
|
||||
../tools/asm_processor/asm_processor.py "$2" --assembler "$AS" > "$temp.c" &&
|
||||
$CC -c "$temp.c" -o "$1"
|
||||
PADDED_SRC="$(mktemp --suffix=.c padded-XXXXXX)"
|
||||
PADDED_OBJ="$(mktemp --suffix=.o padded-XXXXXX)"
|
||||
|
||||
prelude=$(mktemp prelude.XXXXXX)
|
||||
cat ../include/macros.inc >> "$prelude"
|
||||
cat global.inc >> "$prelude"
|
||||
# Create a .c file replacing the nonmatching function with volatile int writes,
|
||||
# and compile.
|
||||
../tools/asm_processor/asm_processor.py "$SRC" --assembler "$AS" > "$PADDED_SRC"
|
||||
$CC -c "$PADDED_SRC" -o "$PADDED_OBJ"
|
||||
|
||||
../tools/asm_processor/asm_processor.py "$2" --post-process "$1" --assembler "$AS" --asm-prelude "$prelude"
|
||||
arm-none-eabi-objcopy --remove-section .comment "$1" "$1"
|
||||
rm "$prelude"
|
||||
rm "$temp"
|
||||
PRELUDE=$(mktemp)
|
||||
cat ../include/macros.inc >> "$PRELUDE"
|
||||
cat global.inc >> "$PRELUDE"
|
||||
|
||||
# Inject the matching assembly into the padded obj file.
|
||||
../tools/asm_processor/asm_processor.py "$SRC" --post-process "$PADDED_OBJ" --assembler "$AS" --asm-prelude "$PRELUDE"
|
||||
|
||||
$DEVKITARM/bin/arm-none-eabi-objcopy --remove-section .comment "$PADDED_OBJ" "$OBJ"
|
||||
|
||||
rm "$PADDED_SRC"
|
||||
rm "$PADDED_OBJ"
|
||||
rm "$PRELUDE"
|
||||
|
||||
Reference in New Issue
Block a user