mirror of
https://github.com/pret/pokediamond.git
synced 2026-10-04 08:21:17 -04:00
Merge branch 'master' of github.com:pret/pokediamond
This commit is contained in:
Executable → Regular
+5
-4
@@ -1,18 +1,19 @@
|
||||
#!/bin/bash -ex
|
||||
|
||||
# Only run this script if it's the master branch build.
|
||||
if [[ "$TRAVIS_BRANCH" != "master" || "$TRAVIS_PULL_REQUEST" != "false" ]]; then
|
||||
if [[ "$GITHUB_REF" != "refs/heads/master" || "$GITHUB_EVENT_NAME" != "push" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
build_name=$1
|
||||
url=$2
|
||||
map_file=$(dirname "$0")/../../arm9/build/diamond.us/arm9.elf.xMAP
|
||||
if [ ! -f $map_file ]; then
|
||||
echo "$map_file does not exist!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
make -C ${TRAVIS_BUILD_DIR}/.travis/calcrom
|
||||
output=$(${TRAVIS_BUILD_DIR}/.travis/calcrom/calcrom ${TRAVIS_BUILD_DIR} | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g')
|
||||
curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`$build_name progress:\\n$output\`\`\`\"}" -H "Content-Type: application/json" -X POST $CALCROM_DISCORD_WEBHOOK_URL
|
||||
make -C ${GITHUB_WORKSPACE}/.github/calcrom
|
||||
output=$(${GITHUB_WORKSPACE}/.github/calcrom/calcrom ${GITHUB_WORKSPACE} | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g')
|
||||
curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`$build_name progress:\\n$output\`\`\`\"}" -H "Content-Type: application/json" -X POST $url
|
||||
popd
|
||||
@@ -0,0 +1,52 @@
|
||||
name: build
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
env:
|
||||
LM_LICENSE_FILE: "$GITHUB_WORKSPACE/tools/mwccarm/license.dat"
|
||||
CC: gcc-8
|
||||
CXX: g++-8
|
||||
CALCROM_DISCORD_WEBHOOK_AVATAR_URL: "https://i.imgur.com/38BQHdd.png"
|
||||
CALCROM_DISCORD_WEBHOOK_USERNAME: OK
|
||||
CALCROM_WEBHOOK_URL: ${{ secrets.WEBHOOKURL }}
|
||||
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-18.04
|
||||
|
||||
steps:
|
||||
- name: Update and Install Software
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt -y --fix-missing upgrade
|
||||
sudo apt -y 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
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v2
|
||||
- name: Setup Repo
|
||||
run: |
|
||||
mkdir -p ~/download
|
||||
cd ~/download
|
||||
wget http://private.martmists.com/mwccarm.zip
|
||||
wget http://private.martmists.com/nitro.tar.gz
|
||||
unzip mwccarm.zip
|
||||
mv mwccarm $GITHUB_WORKSPACE/tools
|
||||
tar xzf nitro.tar.gz
|
||||
mv tools/bin $GITHUB_WORKSPACE/tools
|
||||
mv include/nitro/specfiles/ARM7-TS.lcf.template $GITHUB_WORKSPACE/arm7
|
||||
mv include/nitro/specfiles/ARM9-TS.lcf.template $GITHUB_WORKSPACE/arm9
|
||||
working-directory: ~
|
||||
- name: Build Diamond
|
||||
run: make diamond
|
||||
- name: Build Pearl
|
||||
run: make pearl
|
||||
- name: Webhook
|
||||
run: |
|
||||
sudo chmod 755 $GITHUB_WORKSPACE/.github/calcrom/webhook.sh
|
||||
$GITHUB_WORKSPACE/.github/calcrom/webhook.sh pokediamond "$CALCROM_WEBHOOK_URL"
|
||||
continue-on-error: true
|
||||
-41
@@ -1,41 +0,0 @@
|
||||
dist: bionic
|
||||
os: linux
|
||||
language: c
|
||||
env:
|
||||
global:
|
||||
- LM_LICENSE_FILE="$TRAVIS_BUILD_DIR/tools/mwccarm/license.dat"
|
||||
- CC=gcc-8
|
||||
- CXX=g++-8
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-8-multilib
|
||||
- linux-libc-dev
|
||||
- binutils-arm-none-eabi
|
||||
- wine32
|
||||
- wine-stable
|
||||
cache:
|
||||
apt: true
|
||||
install:
|
||||
# These files are only accessible from Travis CI IP Addresses to prevent piracy.
|
||||
- mkdir -p $HOME/download
|
||||
- pushd $HOME/download
|
||||
- wget http://private.martmists.com/mwccarm.zip
|
||||
- wget http://private.martmists.com/nitro.tar.gz
|
||||
- unzip mwccarm.zip
|
||||
- mv mwccarm $TRAVIS_BUILD_DIR/tools
|
||||
- tar xzf nitro.tar.gz
|
||||
- mv tools/bin $TRAVIS_BUILD_DIR/tools
|
||||
- mv include/nitro/specfiles/ARM7-TS.lcf.template $TRAVIS_BUILD_DIR/arm7
|
||||
- mv include/nitro/specfiles/ARM9-TS.lcf.template $TRAVIS_BUILD_DIR/arm9
|
||||
- popd
|
||||
|
||||
script:
|
||||
- travis_retry make
|
||||
- travis_retry make pearl
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
|
||||
after_success:
|
||||
- .travis/calcrom/webhook.sh pokediamond
|
||||
+2
-2
@@ -16,9 +16,9 @@ add_compile_options(-fms-extensions)
|
||||
file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp")
|
||||
|
||||
add_executable(PokeDiamond ${SOURCES})
|
||||
target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include arm7/lib/include arm9/modules/63/include)
|
||||
target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include arm7/lib/include arm9/modules/05/include arm9/modules/21/include arm9/modules/59/include arm9/modules/63/include)
|
||||
|
||||
add_executable(calcrom .travis/calcrom/calcrom.cpp)
|
||||
add_executable(calcrom .github/calcrom/calcrom.cpp)
|
||||
target_include_directories(calcrom PRIVATE /usr/local/include)
|
||||
|
||||
add_executable(knarc tools/knarc/Source.cpp tools/knarc/Narc.cpp tools/knarc/fnmatch.c)
|
||||
|
||||
+44
-1
@@ -48,12 +48,55 @@ Install them using either the Cygwin package manager or using pacman on Msys2.
|
||||
|
||||
**NOTE FOR MSYS2:** You will need to compile and install [libpng](https://www.libpng.org/pub/png/libpng.html) from source.
|
||||
|
||||
#### macOS
|
||||
|
||||
**macOS 10.14 Mojave or older is required**. macOS 10.15 Catalina is not supported due to missing support for 32-bit binaries (thus making wine emulation unfeasible). You will also require the following packages:
|
||||
|
||||
* GNU make
|
||||
* LLVM 8 clang compiler
|
||||
* gcc@5 (for mwasmarm_patcher)
|
||||
* arm-gcc-bin
|
||||
* git
|
||||
* libpng
|
||||
* wine-stable and xquartz dependency
|
||||
|
||||
They can be installed with the following commands:
|
||||
|
||||
```console
|
||||
$ brew tap osx-cross/homebrew-arm
|
||||
$ brew tap homebrew/cask-versions
|
||||
$ brew install make llvm@8 gcc@5 arm-gcc-bin libpng git
|
||||
$ brew install --cask xquartz
|
||||
$ brew install --cask --no-quarantine wine-stable
|
||||
```
|
||||
|
||||
### 4. Build ROM
|
||||
|
||||
Run `make` to build the ROM. The ROM will be output as `build/diamond.us/pokediamond.us.nds`
|
||||
|
||||
To build Pokemon Pearl, run `make pearl`. You do not need to clean your working tree in between compiling. Pokemon Pearl will be built as `build/pearl.us/pokepearl.us.nds`.
|
||||
|
||||
Windows Users:
|
||||
#### Windows
|
||||
|
||||
If you get an error in saving configuration settings when specifying the license file, you need to add a system environment variable called LM_LICENSE_FILE and point it to the license.dat file. Alternatively, run mwccarm.exe from an Administrator command prompt, PowerShell, or WSL session.
|
||||
|
||||
#### Docker
|
||||
|
||||
If you find issues building the ROMs with the above methods, you can try the Docker-specific build script. It will build an Alpine-based Docker image with the system requirements above, and run the `make` scripts (any specified parameter will be passed to the `make` command):
|
||||
|
||||
```console
|
||||
$ make clean
|
||||
$ ./contrib/docker/build_docker.sh # build pokediamond
|
||||
$ ./contrib/docker/build_docker.sh pearl # build pokepearl
|
||||
```
|
||||
|
||||
Note: Docker may not run at a full performance if its underlying Linux kernel is being virtualized (mainly Windows and macOS hosts).
|
||||
|
||||
#### macOS
|
||||
|
||||
To avoid issues run the build as shown below. This avoids issues with missing features (i.e. "introduced in macOS 10.15" errors) and Apple's make not following standards.
|
||||
|
||||
```console
|
||||
$ export PATH=/usr/local/opt/llvm@8/bin:$PATH CC=clang CXX=clang++
|
||||
$ gmake
|
||||
```
|
||||
|
||||
@@ -109,7 +109,11 @@ LDFLAGS = -map -nodead -w off -proc v5te -interworking -map -symtab -m _start
|
||||
|
||||
# DS TOOLS
|
||||
TOOLS_DIR = tools
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
SHA1SUM = shasum
|
||||
else
|
||||
SHA1SUM = sha1sum
|
||||
endif
|
||||
CSV2BIN = $(TOOLS_DIR)/csv2bin/csv2bin$(EXE)
|
||||
JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc$(EXE)
|
||||
O2NARC = $(TOOLS_DIR)/o2narc/o2narc$(EXE)
|
||||
@@ -120,7 +124,7 @@ MAKEROM = $(WINE) $(TOOLS_DIR)/bin/makerom.exe
|
||||
FIXROM = $(TOOLS_DIR)/fixrom/fixrom$(EXE)
|
||||
NTRCOMP = $(WINE) $(TOOLS_DIR)/bin/ntrcomp.exe
|
||||
|
||||
TOOLDIRS = $(filter-out $(TOOLS_DIR)/mwccarm $(TOOLS_DIR)/bin,$(wildcard $(TOOLS_DIR)/*))
|
||||
TOOLDIRS = $(filter-out $(TOOLS_DIR)/asm_processor $(TOOLS_DIR)/mwccarm $(TOOLS_DIR)/bin,$(wildcard $(TOOLS_DIR)/*))
|
||||
TOOLBASE = $(TOOLDIRS:$(TOOLS_DIR)/%=%)
|
||||
TOOLS = $(foreach tool,$(TOOLBASE),$(TOOLS_DIR)/$(tool)/$(tool)$(EXE))
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
# Pokémon Diamond
|
||||
|
||||
[](https://travis-ci.org/pret/pokediamond)
|
||||

|
||||
[](https://travis-ci.com/pret/pokediamond)
|
||||
|
||||
This is a decompilation of Pokémon Diamond.
|
||||
|
||||
|
||||
+6
-1
@@ -96,13 +96,18 @@ LDFLAGS = -map -nodead -w off -proc v4t -interworking -map -symtab -m _start
|
||||
####################### Other Tools #########################
|
||||
|
||||
# DS TOOLS
|
||||
UNAME_S := $(shell uname -s)
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
SHA1SUM = shasum
|
||||
else
|
||||
SHA1SUM = sha1sum
|
||||
endif
|
||||
JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc
|
||||
GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx
|
||||
SCANINC = $(TOOLS_DIR)/scaninc/scaninc$(EXE)
|
||||
MWASMARM_PATCHER = $(TOOLS_DIR)/mwasmarm_patcher/mwasmarm_patcher$(EXE) -q
|
||||
|
||||
TOOLDIRS = $(filter-out $(TOOLS_DIR)/mwccarm $(TOOLS_DIR)/bin,$(wildcard $(TOOLS_DIR)/*))
|
||||
TOOLDIRS = $(filter-out $(TOOLS_DIR)/asm_processor $(TOOLS_DIR)/mwccarm $(TOOLS_DIR)/bin,$(wildcard $(TOOLS_DIR)/*))
|
||||
TOOLBASE = $(TOOLDIRS:$(TOOLS_DIR)/%=%)
|
||||
TOOLS = $(foreach tool,$(TOOLBASE),$(TOOLS_DIR)/$(tool)/$(tool)$(EXE))
|
||||
|
||||
|
||||
+17
-2
@@ -69,6 +69,9 @@ LIBS_OBJS = $(LIBS_FILES:%.s=$(BUILD_DIR)/%.o)
|
||||
# Object files
|
||||
O_FILES := $(C_OBJS) $(CXX_OBJS) $(S_OBJS)
|
||||
|
||||
GLOBAL_ASM_C_FILES != grep -rl 'GLOBAL_ASM(' $(C_FILES)
|
||||
GLOBAL_ASM_O_FILES = $(addprefix $(BUILD_DIR)/,$(GLOBAL_ASM_C_FILES:.c=.o))
|
||||
|
||||
# Overlay modules
|
||||
OVERLAYS := $(shell grep -oE "Overlay \w+" $(LD_SPEC) | cut -d' ' -f2)
|
||||
|
||||
@@ -102,6 +105,9 @@ AR := $(CROSS)ar
|
||||
OBJDUMP := $(CROSS)objdump
|
||||
OBJCOPY := $(CROSS)objcopy
|
||||
|
||||
ASM_PROCESSOR_DIR := ../tools/asm_processor
|
||||
ASM_PROCESSOR := $(ASM_PROCESSOR_DIR)/compile.sh
|
||||
|
||||
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
|
||||
ASFLAGS = -proc arm5te -i ../include -i .. -D$(GAME_VERSION) -D$(GAME_LANGUAGE)
|
||||
CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off $(foreach dir,$(INCLUDE_DIRS),-i $(dir)) $(foreach dir,$(INCLUDE_RECURSIVE_DIRS),-ir $(dir)) -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE)
|
||||
@@ -114,17 +120,22 @@ STATIC_LIBS := $(addprefix $(BUILD_DIR)/lib/,libsyscall.a)
|
||||
####################### Other Tools #########################
|
||||
|
||||
# DS TOOLS
|
||||
UNAME_S := $(shell uname -s)
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
SHA1SUM = shasum
|
||||
else
|
||||
ifndef BUSYBOX
|
||||
SHA1SUM = sha1sum --quiet
|
||||
else
|
||||
SHA1SUM = sha1sum
|
||||
endif
|
||||
endif
|
||||
JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc$(EXE)
|
||||
GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx$(EXE)
|
||||
SCANINC = $(TOOLS_DIR)/scaninc/scaninc$(EXE)
|
||||
MWASMARM_PATCHER = $(TOOLS_DIR)/mwasmarm_patcher/mwasmarm_patcher$(EXE) -q
|
||||
|
||||
TOOLDIRS = $(filter-out $(TOOLS_DIR)/mwccarm $(TOOLS_DIR)/bin,$(wildcard $(TOOLS_DIR)/*))
|
||||
TOOLDIRS = $(filter-out $(TOOLS_DIR)/asm_processor $(TOOLS_DIR)/mwccarm $(TOOLS_DIR)/bin,$(wildcard $(TOOLS_DIR)/*))
|
||||
TOOLBASE = $(TOOLDIRS:$(TOOLS_DIR)/%=%)
|
||||
TOOLS = $(foreach tool,$(TOOLBASE),$(TOOLS_DIR)/$(tool)/$(tool)$(EXE))
|
||||
|
||||
@@ -190,8 +201,12 @@ else
|
||||
$(BUILD_DIR)/%.o: dep :=
|
||||
endif
|
||||
|
||||
# Cpp asm processor is not supported at this time.
|
||||
$(GLOBAL_ASM_O_FILES): BUILD_C := $(ASM_PROCESSOR) "$(CC) $(CFLAGS)" "$(AS) $(ASFLAGS)"
|
||||
BUILD_C ?= $(CC) -c $(CFLAGS) -o
|
||||
|
||||
$(C_OBJS): $(BUILD_DIR)/%.o: %.c $$(dep)
|
||||
$(CC) -c $(CFLAGS) -o $@ $<
|
||||
$(BUILD_C) $@ $<
|
||||
|
||||
$(CXX_OBJS): $(BUILD_DIR)/%.o: %.cpp $$(dep)
|
||||
$(CXX) -c $(CXXFLAGS) -o $@ $<
|
||||
|
||||
+15
-5
@@ -19,7 +19,7 @@ Static arm9
|
||||
Object unk_02005CFC.o
|
||||
Object poke_overlay.o
|
||||
Object unk_020061E8.o
|
||||
Object unk_02006234.o
|
||||
Object overlay_manager.o
|
||||
Object filesystem.o
|
||||
Object unk_02006864.o
|
||||
Object unk_02006D98.o
|
||||
@@ -452,11 +452,13 @@ Static arm9
|
||||
Object WM_ds.o
|
||||
Object WM_ks.o
|
||||
Object WM_etc.o
|
||||
Object CTRDG.o
|
||||
Object CTRDG_common.o
|
||||
Object CTRDG_proc.o
|
||||
Object CTRDG_backup.o
|
||||
Object CTRDG_flash_common.o
|
||||
Object CTRDG_flash_AT29LV512_asm.o
|
||||
Object CTRDG_flash_AT29LV512.o
|
||||
Object CTRDG_flash_LE26FV10N1TS-10.o
|
||||
Object CTRDG_flash_LE39FW512.o
|
||||
Object CTRDG_flash_MX29L010.o
|
||||
Object CTRDG_flash_MX29L512.o
|
||||
@@ -554,6 +556,12 @@ Overlay MODULE_05
|
||||
Object mod05_021E5C8C.o
|
||||
Object mod05_021E5E10.o
|
||||
Object mod05_021E5FD8.o
|
||||
Object mod05_021E72FC.o
|
||||
Object mod05_021E7504.o
|
||||
Object mod05_021E779C.o
|
||||
Object mod05_021E7C00.o
|
||||
Object mod05_021E80F8.o
|
||||
Object mod05_021E8310.o
|
||||
Object module_05.o
|
||||
}
|
||||
|
||||
@@ -661,8 +669,8 @@ Overlay MODULE_21
|
||||
{
|
||||
##Pokétch Clock##
|
||||
After MODULE_20
|
||||
Object module_21_sinit.o
|
||||
Object module_21.o
|
||||
Object mod21_02254854.o
|
||||
Object mod21_02254A6C.o
|
||||
}
|
||||
|
||||
Overlay MODULE_22
|
||||
@@ -937,7 +945,9 @@ Overlay MODULE_59
|
||||
{
|
||||
##Rowan's intro##
|
||||
After arm9
|
||||
Object module_59.o
|
||||
Object mod59_021D74E0_src.o
|
||||
Object mod59_021D74E0_asm.o
|
||||
Object mod59_021D9868.o
|
||||
}
|
||||
|
||||
Overlay MODULE_60
|
||||
|
||||
@@ -1,670 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .bss
|
||||
|
||||
.global UNK_021D6940
|
||||
UNK_021D6940: ; 0x021D6940
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6944
|
||||
UNK_021D6944: ; 0x021D6944
|
||||
.space 0x4
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start CTRDG_CheckEnabled
|
||||
CTRDG_CheckEnabled:
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
bl CTRDG_IsOptionCartridge
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x4
|
||||
ldmneia sp!, {lr}
|
||||
bxne lr
|
||||
bl CTRDG_IsEnabled
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x4
|
||||
ldmneia sp!, {lr}
|
||||
bxne lr
|
||||
bl OS_Terminate
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CTRDG_Enable
|
||||
CTRDG_Enable: ; 0x020DB15C
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
bl OS_DisableInterrupts
|
||||
ldr r1, _020DB1AC ; =UNK_021D6940
|
||||
mov r4, r0
|
||||
str r5, [r1, #0x0]
|
||||
bl CTRDG_IsOptionCartridge
|
||||
cmp r0, #0x0
|
||||
bne _020DB198
|
||||
cmp r5, #0x0
|
||||
movne r1, #0x1000
|
||||
moveq r1, #0x5000
|
||||
mov r0, #0xf000
|
||||
bl OS_SetDPermissionsForProtectionRegion
|
||||
_020DB198:
|
||||
mov r0, r4
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB1AC: .word UNK_021D6940
|
||||
|
||||
arm_func_start CTRDG_IsEnabled
|
||||
CTRDG_IsEnabled:
|
||||
ldr r0, _020DB1BC ; =UNK_021D6940
|
||||
ldr r0, [r0, #0x0]
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB1BC: .word UNK_021D6940
|
||||
|
||||
arm_func_start CTRDGi_AccessCommon
|
||||
CTRDGi_AccessCommon: ; 0x020DB1C0
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r5, r2
|
||||
mov r4, r3
|
||||
bl CTRDG_IsExisting
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4-r7,lr}
|
||||
bxeq lr
|
||||
bl CTRDG_CheckEnabled
|
||||
ldr r0, _020DB2BC ; =UNK_021D6944
|
||||
ldrh r0, [r0, #0x2]
|
||||
bl OS_LockCartridge
|
||||
cmp r4, #0x21
|
||||
bhi _020DB240
|
||||
cmp r4, #0x21
|
||||
bhs _020DB270
|
||||
cmp r4, #0x11
|
||||
bhi _020DB234
|
||||
cmp r4, #0x10
|
||||
blo _020DB294
|
||||
cmp r4, #0x10
|
||||
beq _020DB290
|
||||
cmp r4, #0x11
|
||||
beq _020DB260
|
||||
b _020DB294
|
||||
_020DB234:
|
||||
cmp r4, #0x20
|
||||
streqh r6, [r7, #0x0]
|
||||
b _020DB294
|
||||
_020DB240:
|
||||
cmp r4, #0x40
|
||||
bhi _020DB254
|
||||
cmp r4, #0x40
|
||||
streq r6, [r7, #0x0]
|
||||
b _020DB294
|
||||
_020DB254:
|
||||
cmp r4, #0x41
|
||||
beq _020DB280
|
||||
b _020DB294
|
||||
_020DB260:
|
||||
cmp r5, #0x0
|
||||
ldrneb r0, [r7, #0x0]
|
||||
strneb r0, [r5, #0x0]
|
||||
b _020DB294
|
||||
_020DB270:
|
||||
cmp r5, #0x0
|
||||
ldrneh r0, [r7, #0x0]
|
||||
strneh r0, [r5, #0x0]
|
||||
b _020DB294
|
||||
_020DB280:
|
||||
cmp r5, #0x0
|
||||
ldrne r0, [r7, #0x0]
|
||||
strne r0, [r5, #0x0]
|
||||
b _020DB294
|
||||
_020DB290:
|
||||
strb r6, [r7, #0x0]
|
||||
_020DB294:
|
||||
ldr r0, _020DB2BC ; =UNK_021D6944
|
||||
ldrh r0, [r0, #0x2]
|
||||
bl OS_UnLockCartridge
|
||||
bl CTRDG_IsExisting
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB2BC: .word UNK_021D6944
|
||||
|
||||
arm_func_start CTRDG_Read32
|
||||
CTRDG_Read32: ; 0x020DB2C0
|
||||
ldr ip, _020DB2D4 ; =CTRDGi_AccessCommon
|
||||
mov r2, r1
|
||||
mov r1, #0x0
|
||||
mov r3, #0x41
|
||||
bx r12
|
||||
.balign 4
|
||||
_020DB2D4: .word CTRDGi_AccessCommon
|
||||
|
||||
arm_func_start CTRDGi_CopyCommon
|
||||
CTRDGi_CopyCommon: ; 0x020DB2D8
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r5, r2
|
||||
mov r4, r3
|
||||
bl CTRDG_IsExisting
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4-r7,lr}
|
||||
bxeq lr
|
||||
bl CTRDG_CheckEnabled
|
||||
ldr r0, _020DB42C ; =UNK_021D6944
|
||||
ldrh r0, [r0, #0x2]
|
||||
bl OS_LockCartridge
|
||||
ldr r0, [sp, #0x18]
|
||||
ands r0, r0, #0x1
|
||||
bne _020DB338
|
||||
mov r0, r7
|
||||
bl MI_StopDma
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl DC_FlushRange
|
||||
_020DB338:
|
||||
ldr r0, [sp, #0x18]
|
||||
cmp r0, #0x11
|
||||
bhi _020DB36C
|
||||
cmp r0, #0x10
|
||||
blo _020DB360
|
||||
cmp r0, #0x10
|
||||
beq _020DB38C
|
||||
cmp r0, #0x11
|
||||
beq _020DB3BC
|
||||
b _020DB404
|
||||
_020DB360:
|
||||
cmp r0, #0x1
|
||||
beq _020DB3E4
|
||||
b _020DB404
|
||||
_020DB36C:
|
||||
cmp r0, #0x20
|
||||
bhi _020DB380
|
||||
cmp r0, #0x20
|
||||
beq _020DB3A4
|
||||
b _020DB404
|
||||
_020DB380:
|
||||
cmp r0, #0x21
|
||||
beq _020DB3D0
|
||||
b _020DB404
|
||||
_020DB38C:
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
mov r3, r4
|
||||
bl MI_DmaCopy16
|
||||
b _020DB404
|
||||
_020DB3A4:
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
mov r3, r4
|
||||
bl MI_DmaCopy32
|
||||
b _020DB404
|
||||
_020DB3BC:
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
bl MIi_CpuCopy16
|
||||
b _020DB404
|
||||
_020DB3D0:
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
bl MIi_CpuCopy32
|
||||
b _020DB404
|
||||
_020DB3E4:
|
||||
cmp r4, #0x0
|
||||
mov r1, #0x0
|
||||
bls _020DB404
|
||||
_020DB3F0:
|
||||
ldrb r0, [r6], #0x1
|
||||
add r1, r1, #0x1
|
||||
cmp r1, r4
|
||||
strb r0, [r5], #0x1
|
||||
blo _020DB3F0
|
||||
_020DB404:
|
||||
ldr r0, _020DB42C ; =UNK_021D6944
|
||||
ldrh r0, [r0, #0x2]
|
||||
bl OS_UnLockCartridge
|
||||
bl CTRDG_IsExisting
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB42C: .word UNK_021D6944
|
||||
|
||||
arm_func_start CTRDG_CpuCopy32
|
||||
CTRDG_CpuCopy32: ; 0x020DB430
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
mov lr, r1
|
||||
mov r3, r2
|
||||
mov r12, #0x21
|
||||
mov r1, r0
|
||||
mov r2, lr
|
||||
mov r0, #0x0
|
||||
str r12, [sp, #0x0]
|
||||
bl CTRDGi_CopyCommon
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CTRDG_CpuCopy16
|
||||
CTRDG_CpuCopy16: ; 0x020DB464
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
mov lr, r1
|
||||
mov r3, r2
|
||||
mov r12, #0x11
|
||||
mov r1, r0
|
||||
mov r2, lr
|
||||
mov r0, #0x0
|
||||
str r12, [sp, #0x0]
|
||||
bl CTRDGi_CopyCommon
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CTRDG_CpuCopy8
|
||||
CTRDG_CpuCopy8: ; 0x020DB498
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
mov lr, r1
|
||||
mov r3, r2
|
||||
cmp lr, #0x8000000
|
||||
blo _020DB4DC
|
||||
ldr r2, _020DB500 ; =0x0A010000
|
||||
cmp lr, r2
|
||||
bhs _020DB4DC
|
||||
mov r12, #0x1
|
||||
mov r2, r0
|
||||
mov r0, #0x0
|
||||
str r12, [sp, #0x0]
|
||||
bl CTRDGi_CopyCommon
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
_020DB4DC:
|
||||
mov r12, #0x1
|
||||
mov r1, r0
|
||||
mov r2, lr
|
||||
mov r0, #0x0
|
||||
str r12, [sp, #0x0]
|
||||
bl CTRDGi_CopyCommon
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB500: .word 0x0A010000
|
||||
|
||||
arm_func_start CTRDGi_SendtoPxi
|
||||
CTRDGi_SendtoPxi: ; 0x020DB504
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r7, r0
|
||||
mov r1, r7
|
||||
mov r0, #0xd
|
||||
mov r2, #0x0
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
ldmeqia sp!, {r4-r7,lr}
|
||||
bxeq lr
|
||||
mov r6, #0x1
|
||||
mov r5, #0xd
|
||||
mov r4, #0x0
|
||||
_020DB53C:
|
||||
mov r0, r6
|
||||
bl SVC_WaitByLoop
|
||||
mov r0, r5
|
||||
mov r1, r7
|
||||
mov r2, r4
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
bne _020DB53C
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CTRDGi_UnlockByProcessor
|
||||
CTRDGi_UnlockByProcessor: ; 0x020DB568
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r1
|
||||
ldr r1, [r4, #0x0]
|
||||
cmp r1, #0x0
|
||||
bne _020DB580
|
||||
bl OS_UnLockCartridge
|
||||
_020DB580:
|
||||
ldr r0, [r4, #0x4]
|
||||
bl OS_RestoreInterrupts
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CTRDGi_LockByProcessor
|
||||
CTRDGi_LockByProcessor: ; 0x020DB590
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
ldr r5, _020DB60C ; =0x027FFFE8
|
||||
mov r4, #0x1
|
||||
_020DB5A8:
|
||||
bl OS_DisableInterrupts
|
||||
str r0, [r6, #0x4]
|
||||
mov r0, r5
|
||||
bl OS_ReadOwnerOfLockWord
|
||||
and r0, r0, #0x40
|
||||
str r0, [r6, #0x0]
|
||||
ldr r0, [r6, #0x0]
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x4
|
||||
ldmneia sp!, {r4-r7,lr}
|
||||
bxne lr
|
||||
mov r0, r7
|
||||
bl OS_TryLockCartridge
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
ldmeqia sp!, {r4-r7,lr}
|
||||
bxeq lr
|
||||
ldr r0, [r6, #0x4]
|
||||
bl OS_RestoreInterrupts
|
||||
mov r0, r4
|
||||
bl SVC_WaitByLoop
|
||||
b _020DB5A8
|
||||
_020DB600: ; 0x020DB600
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB60C: .word 0x027FFFE8
|
||||
|
||||
arm_func_start CTRDGi_RestoreAccessCycle
|
||||
CTRDGi_RestoreAccessCycle: ; 0x020DB610
|
||||
ldr r3, _020DB640 ; =0x04000204
|
||||
ldr r2, [r0, #0x0]
|
||||
ldrh r1, [r3, #0x0]
|
||||
bic r1, r1, #0xc
|
||||
orr r1, r1, r2, lsl #0x2
|
||||
strh r1, [r3, #0x0]
|
||||
ldrh r1, [r3, #0x0]
|
||||
ldr r2, [r0, #0x4]
|
||||
bic r0, r1, #0x10
|
||||
orr r0, r0, r2, lsl #0x4
|
||||
strh r0, [r3, #0x0]
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB640: .word 0x04000204
|
||||
|
||||
arm_func_start CTRDGi_ChangeLatestAccessCycle
|
||||
CTRDGi_ChangeLatestAccessCycle: ; 0x020DB644
|
||||
ldr r2, _020DB688 ; =0x04000204
|
||||
ldrh r1, [r2, #0x0]
|
||||
and r1, r1, #0xc
|
||||
mov r1, r1, asr #0x2
|
||||
str r1, [r0, #0x0]
|
||||
ldrh r1, [r2, #0x0]
|
||||
and r1, r1, #0x10
|
||||
mov r1, r1, asr #0x4
|
||||
str r1, [r0, #0x4]
|
||||
ldrh r0, [r2, #0x0]
|
||||
bic r0, r0, #0xc
|
||||
orr r0, r0, #0xc
|
||||
strh r0, [r2, #0x0]
|
||||
ldrh r0, [r2, #0x0]
|
||||
bic r0, r0, #0x10
|
||||
strh r0, [r2, #0x0]
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB688: .word 0x04000204
|
||||
|
||||
arm_func_start CTRDG_IsExisting
|
||||
CTRDG_IsExisting:
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x10
|
||||
ldr r2, _020DB798 ; =0x027FFC30
|
||||
ldr r0, _020DB79C ; =0x0000FFFF
|
||||
ldrh r1, [r2, #0x0]
|
||||
mov r4, #0x1
|
||||
cmp r1, r0
|
||||
addeq sp, sp, #0x10
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldrb r0, [r2, #0x5]
|
||||
mov r0, r0, lsl #0x1e
|
||||
mov r0, r0, lsr #0x1f
|
||||
cmp r0, #0x1
|
||||
addeq sp, sp, #0x10
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldr r0, _020DB7A0 ; =UNK_021D6944
|
||||
add r1, sp, #0x0
|
||||
ldrh r0, [r0, #0x2]
|
||||
bl CTRDGi_LockByProcessor
|
||||
add r0, sp, #0x8
|
||||
bl CTRDGi_ChangeLatestAccessCycle
|
||||
mov r0, #0x8000000
|
||||
ldrb r2, [r0, #0xb2]
|
||||
cmp r2, #0x96
|
||||
bne _020DB714
|
||||
ldr r1, _020DB798 ; =0x027FFC30
|
||||
ldrh r0, [r0, #0xbe]
|
||||
ldrh r1, [r1, #0x0]
|
||||
cmp r1, r0
|
||||
bne _020DB75C
|
||||
_020DB714:
|
||||
cmp r2, #0x96
|
||||
beq _020DB734
|
||||
ldr r1, _020DB798 ; =0x027FFC30
|
||||
ldr r0, _020DB7A4 ; =0x0801FFFE
|
||||
ldrh r1, [r1, #0x0]
|
||||
ldrh r0, [r0, #0x0]
|
||||
cmp r1, r0
|
||||
bne _020DB75C
|
||||
_020DB734:
|
||||
ldr r2, _020DB798 ; =0x027FFC30
|
||||
mov r0, #0x8000000
|
||||
ldr r1, [r2, #0x8]
|
||||
ldr r0, [r0, #0xac]
|
||||
cmp r1, r0
|
||||
beq _020DB770
|
||||
ldrb r0, [r2, #0x5]
|
||||
mov r0, r0, lsl #0x1f
|
||||
movs r0, r0, lsr #0x1f
|
||||
beq _020DB770
|
||||
_020DB75C:
|
||||
ldr r1, _020DB798 ; =0x027FFC30
|
||||
mov r4, #0x0
|
||||
ldrb r0, [r1, #0x5]
|
||||
orr r0, r0, #0x2
|
||||
strb r0, [r1, #0x5]
|
||||
_020DB770:
|
||||
add r0, sp, #0x8
|
||||
bl CTRDGi_RestoreAccessCycle
|
||||
ldr r0, _020DB7A0 ; =UNK_021D6944
|
||||
add r1, sp, #0x0
|
||||
ldrh r0, [r0, #0x2]
|
||||
bl CTRDGi_UnlockByProcessor
|
||||
mov r0, r4
|
||||
add sp, sp, #0x10
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB798: .word 0x027FFC30
|
||||
_020DB79C: .word 0x0000FFFF
|
||||
_020DB7A0: .word UNK_021D6944
|
||||
_020DB7A4: .word 0x0801FFFE
|
||||
|
||||
arm_func_start CTRDG_IsPulledOut
|
||||
CTRDG_IsPulledOut: ; 0x020DB7A8
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r2, _020DB800 ; =0x027FFC30
|
||||
ldr r0, _020DB804 ; =0x0000FFFF
|
||||
ldrh r1, [r2, #0x0]
|
||||
cmp r1, r0
|
||||
addeq sp, sp, #0x4
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {lr}
|
||||
bxeq lr
|
||||
ldrb r0, [r2, #0x5]
|
||||
mov r0, r0, lsl #0x1e
|
||||
movs r0, r0, lsr #0x1f
|
||||
bne _020DB7E4
|
||||
bl CTRDG_IsExisting
|
||||
_020DB7E4:
|
||||
ldr r0, _020DB800 ; =0x027FFC30
|
||||
ldrb r0, [r0, #0x5]
|
||||
mov r0, r0, lsl #0x1e
|
||||
mov r0, r0, lsr #0x1f
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB800: .word 0x027FFC30
|
||||
_020DB804: .word 0x0000FFFF
|
||||
|
||||
arm_func_start CTRDGi_GetAgbMakerCodeAtInit
|
||||
CTRDGi_GetAgbMakerCodeAtInit: ; 0x020DB808
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, #0x0
|
||||
bl CTRDGi_IsAgbCartridgeAtInit
|
||||
cmp r0, #0x0
|
||||
ldrne r0, _020DB82C ; =0x027FFC30
|
||||
ldrneh r4, [r0, #0x6]
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB82C: .word 0x027FFC30
|
||||
|
||||
arm_func_start CTRDG_GetAgbMakerCode
|
||||
CTRDG_GetAgbMakerCode: ; 0x020DB830
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, #0x0
|
||||
bl CTRDG_IsExisting
|
||||
cmp r0, #0x0
|
||||
beq _020DB84C
|
||||
bl CTRDGi_GetAgbMakerCodeAtInit
|
||||
mov r4, r0
|
||||
_020DB84C:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CTRDGi_GetAgbGameCodeAtInit
|
||||
CTRDGi_GetAgbGameCodeAtInit: ; 0x020DB858
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, #0x0
|
||||
bl CTRDGi_IsAgbCartridgeAtInit
|
||||
cmp r0, #0x0
|
||||
ldrne r0, _020DB87C ; =0x027FFC30
|
||||
ldrne r4, [r0, #0x8]
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB87C: .word 0x027FFC30
|
||||
|
||||
arm_func_start CTRDG_GetAgbGameCode
|
||||
CTRDG_GetAgbGameCode: ; 0x020DB880
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, #0x0
|
||||
bl CTRDG_IsExisting
|
||||
cmp r0, #0x0
|
||||
beq _020DB89C
|
||||
bl CTRDGi_GetAgbGameCodeAtInit
|
||||
mov r4, r0
|
||||
_020DB89C:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CTRDGi_IsAgbCartridgeAtInit
|
||||
CTRDGi_IsAgbCartridgeAtInit:
|
||||
ldr r0, _020DB8BC ; =0x027FFC30
|
||||
ldrb r0, [r0, #0x5]
|
||||
mov r0, r0, lsl #0x1f
|
||||
mov r0, r0, lsr #0x1f
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB8BC: .word 0x027FFC30
|
||||
|
||||
arm_func_start CTRDG_IsOptionCartridge
|
||||
CTRDG_IsOptionCartridge:
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
bl CTRDG_IsExisting
|
||||
cmp r0, #0x0
|
||||
beq _020DB8EC
|
||||
bl CTRDGi_IsAgbCartridgeAtInit
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
moveq r0, #0x1
|
||||
ldmeqia sp!, {lr}
|
||||
bxeq lr
|
||||
_020DB8EC:
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CTRDG_IsAgbCartridge
|
||||
CTRDG_IsAgbCartridge: ; 0x020DB8FC
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
bl CTRDG_IsExisting
|
||||
cmp r0, #0x0
|
||||
beq _020DB928
|
||||
bl CTRDGi_IsAgbCartridgeAtInit
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x4
|
||||
movne r0, #0x1
|
||||
ldmneia sp!, {lr}
|
||||
bxne lr
|
||||
_020DB928:
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CTRDGi_InitCommon
|
||||
CTRDGi_InitCommon: ; 0x020DB938
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r1, _020DB970 ; =UNK_021D6944
|
||||
mov r3, #0x0
|
||||
ldr r2, _020DB974 ; =0x05000001
|
||||
add r0, sp, #0x0
|
||||
str r3, [sp, #0x0]
|
||||
bl SVC_CpuSet
|
||||
bl OS_GetLockID
|
||||
ldr r1, _020DB970 ; =UNK_021D6944
|
||||
strh r0, [r1, #0x2]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DB970: .word UNK_021D6944
|
||||
_020DB974: .word 0x05000001
|
||||
@@ -1,306 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.extern CTRDGi_EraseFlash4KBAT
|
||||
.extern CTRDGi_EraseFlash4KBAsyncAT
|
||||
.extern CTRDGi_EraseFlashChipAT
|
||||
.extern CTRDGi_EraseFlashChipAsyncAT
|
||||
.extern CTRDGi_EraseFlashChipAsyncLE
|
||||
.extern CTRDGi_EraseFlashChipAsyncMX
|
||||
.extern CTRDGi_EraseFlashChipLE
|
||||
.extern CTRDGi_EraseFlashChipMX
|
||||
.extern CTRDGi_EraseFlashSectorAT
|
||||
.extern CTRDGi_EraseFlashSectorAsyncAT
|
||||
.extern CTRDGi_EraseFlashSectorAsyncLE
|
||||
.extern CTRDGi_EraseFlashSectorAsyncMX
|
||||
.extern CTRDGi_EraseFlashSectorMX
|
||||
.extern CTRDGi_PollingSR1MCOMMON
|
||||
.extern CTRDGi_PollingSR512kCOMMON
|
||||
.extern CTRDGi_WriteFlash4KBAT
|
||||
.extern CTRDGi_WriteFlash4KBAsyncAT
|
||||
.extern CTRDGi_WriteFlashSectorAT
|
||||
.extern CTRDGi_WriteFlashSectorAsyncAT
|
||||
.extern CTRDGi_WriteFlashSectorAsyncLE
|
||||
.extern CTRDGi_WriteFlashSectorAsyncMX
|
||||
.extern CTRDGi_WriteFlashSectorLE
|
||||
.extern CTRDGi_WriteFlashSectorMX
|
||||
.extern CTRDGi_WriteFlashSectorAsyncMX5
|
||||
.extern CTRDGi_WriteFlashSectorMX5
|
||||
.extern UNK_021D6B14
|
||||
.extern UNK_021D6B30
|
||||
.extern UNK_021D6B28
|
||||
.extern UNK_021D6B1C
|
||||
.extern UNK_021D6B24
|
||||
.extern UNK_021D6B20
|
||||
.extern UNK_021D6B0C
|
||||
.extern UNK_021D6B34
|
||||
.extern UNK_021D6B2C
|
||||
.extern UNK_021D6B4C
|
||||
.extern UNK_021D6B18
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global UNK_02103FE4
|
||||
UNK_02103FE4: ; 0x02103FE4
|
||||
.byte 0x14, 0x00, 0x00, 0x00
|
||||
|
||||
.global UNK_02103FE8
|
||||
UNK_02103FE8: ; 0x02103FE8
|
||||
.word UNK_02104150
|
||||
.word UNK_0210408C
|
||||
.word UNK_0210418C
|
||||
|
||||
.global UNK_02103FF4
|
||||
UNK_02103FF4: ; 0x02103FF4
|
||||
.word UNK_0210410C
|
||||
.word UNK_0210400C
|
||||
.word UNK_021041D0
|
||||
.word UNK_021040D0
|
||||
|
||||
.global UNK_02104004
|
||||
UNK_02104004: ; 0x02104004
|
||||
.byte 0x0A, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x00
|
||||
|
||||
.global UNK_0210400C
|
||||
UNK_0210400C: ; 0x0210400C
|
||||
.word CTRDGi_WriteFlash4KBAT
|
||||
.word CTRDGi_EraseFlashChipAT
|
||||
.word CTRDGi_EraseFlash4KBAT
|
||||
.word CTRDGi_WriteFlash4KBAsyncAT
|
||||
.word CTRDGi_EraseFlashChipAsyncAT
|
||||
.word CTRDGi_EraseFlash4KBAsyncAT
|
||||
.word CTRDGi_PollingSR512kCOMMON
|
||||
.word UNK_02104004
|
||||
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00
|
||||
|
||||
.global UNK_02104048
|
||||
UNK_02104048: ; 0x02104048
|
||||
.word CTRDGi_WriteFlashSectorAT
|
||||
.word CTRDGi_EraseFlashChipAT
|
||||
.word CTRDGi_EraseFlashSectorAT
|
||||
.word CTRDGi_WriteFlashSectorAsyncAT
|
||||
.word CTRDGi_EraseFlashChipAsyncAT
|
||||
.word CTRDGi_EraseFlashSectorAsyncAT
|
||||
.word CTRDGi_PollingSR512kCOMMON
|
||||
.word UNK_02104004
|
||||
.byte 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00
|
||||
|
||||
.global UNK_02104084
|
||||
UNK_02104084: ; 0x02104084
|
||||
.byte 0x0A, 0x00, 0x0A, 0x00, 0xD0, 0x07, 0x88, 0x13
|
||||
|
||||
.global UNK_0210408C
|
||||
UNK_0210408C: ; 0x0210408C
|
||||
.word CTRDGi_WriteFlashSectorMX
|
||||
.word CTRDGi_EraseFlashChipMX
|
||||
.word CTRDGi_EraseFlashSectorMX
|
||||
.word CTRDGi_WriteFlashSectorAsyncMX
|
||||
.word CTRDGi_EraseFlashChipAsyncMX
|
||||
.word CTRDGi_EraseFlashSectorAsyncMX
|
||||
.word CTRDGi_PollingSR1MCOMMON
|
||||
.word UNK_02104084
|
||||
.byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x00, 0x13, 0x00
|
||||
|
||||
.global UNK_021040C8
|
||||
UNK_021040C8: ; 0x021040C8
|
||||
.byte 0x0A, 0x00, 0x0A, 0x00, 0x28, 0x00, 0xC8, 0x00
|
||||
|
||||
.global UNK_021040D0
|
||||
UNK_021040D0: ; 0x021040D0
|
||||
.word CTRDGi_WriteFlashSectorLE
|
||||
.word CTRDGi_EraseFlashChipLE
|
||||
.word CTRDGi_EraseFlashSectorLE
|
||||
.word CTRDGi_WriteFlashSectorAsyncLE
|
||||
.word CTRDGi_EraseFlashChipAsyncLE
|
||||
.word CTRDGi_EraseFlashSectorAsyncLE
|
||||
.word CTRDGi_PollingSR512kCOMMON
|
||||
.word UNK_021040C8
|
||||
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global UNK_0210410C
|
||||
UNK_0210410C: ; 0x0210410C
|
||||
.word CTRDGi_WriteFlashSectorLE
|
||||
.word CTRDGi_EraseFlashChipLE
|
||||
.word CTRDGi_EraseFlashSectorLE
|
||||
.word CTRDGi_WriteFlashSectorAsyncLE
|
||||
.word CTRDGi_EraseFlashChipAsyncLE
|
||||
.word CTRDGi_EraseFlashSectorAsyncLE
|
||||
.word CTRDGi_PollingSR512kCOMMON
|
||||
.word UNK_021040C8
|
||||
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xD4, 0x00
|
||||
|
||||
.global UNK_02104148
|
||||
UNK_02104148: ; 0x02104148
|
||||
.byte 0x0A, 0x00, 0x0A, 0x00, 0xD0, 0x07, 0xD0, 0x07
|
||||
|
||||
.global UNK_02104150
|
||||
UNK_02104150: ; 0x02104150
|
||||
.word CTRDGi_WriteFlashSectorMX
|
||||
.word CTRDGi_EraseFlashChipMX
|
||||
.word CTRDGi_EraseFlashSectorMX
|
||||
.word CTRDGi_WriteFlashSectorAsyncMX
|
||||
.word CTRDGi_EraseFlashChipAsyncMX
|
||||
.word CTRDGi_EraseFlashSectorAsyncMX
|
||||
.word CTRDGi_PollingSR1MCOMMON
|
||||
.word UNK_02104148
|
||||
.byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x09, 0x00
|
||||
|
||||
.global UNK_0210418C
|
||||
UNK_0210418C: ; 0x0210418C
|
||||
.word CTRDGi_WriteFlashSectorMX
|
||||
.word CTRDGi_EraseFlashChipMX
|
||||
.word CTRDGi_EraseFlashSectorMX
|
||||
.word CTRDGi_WriteFlashSectorAsyncMX
|
||||
.word CTRDGi_EraseFlashChipAsyncMX
|
||||
.word CTRDGi_EraseFlashSectorAsyncMX
|
||||
.word CTRDGi_PollingSR1MCOMMON
|
||||
.word UNK_02104148
|
||||
.byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global UNK_021041C8
|
||||
UNK_021041C8: ; 0x021041C8
|
||||
.byte 0x0A, 0x00, 0x0A, 0x00, 0xF4, 0x01, 0xF4, 0x01
|
||||
|
||||
.global UNK_021041D0
|
||||
UNK_021041D0: ; 0x021041D0
|
||||
.word CTRDGi_WriteFlashSectorMX5
|
||||
.word CTRDGi_EraseFlashChipLE
|
||||
.word CTRDGi_EraseFlashSectorLE
|
||||
.word CTRDGi_WriteFlashSectorAsyncMX5
|
||||
.word CTRDGi_EraseFlashChipAsyncLE
|
||||
.word CTRDGi_EraseFlashSectorAsyncLE
|
||||
.word CTRDGi_PollingSR512kCOMMON
|
||||
.word UNK_021041C8
|
||||
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x1B, 0x00
|
||||
|
||||
.section .bss
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start CTRDG_IdentifyAgbBackup
|
||||
CTRDG_IdentifyAgbBackup: ; 0x020DBD50
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r7, r0
|
||||
cmp r7, #0x1
|
||||
mov r0, #0x1
|
||||
bhi _020DBEAC
|
||||
bl OS_GetLockID
|
||||
ldr r1, _020DBED8 ; =UNK_021D6B0C
|
||||
strh r0, [r1, #0x0]
|
||||
ldrh r0, [r1, #0x0]
|
||||
bl OS_LockCartridge
|
||||
ldr r6, _020DBEDC ; =0x04000204
|
||||
ldr r1, _020DBEE0 ; =UNK_02103FE4
|
||||
ldrh r3, [r6, #0x0]
|
||||
ldrh r2, [r6, #0x0]
|
||||
ldr r0, _020DBEE4 ; =UNK_021D6B28
|
||||
and r4, r3, #0x3
|
||||
bic r2, r2, #0x3
|
||||
orr r2, r2, #0x3
|
||||
strh r2, [r6, #0x0]
|
||||
str r1, [r0, #0x0]
|
||||
bl CTRDGi_ReadFlashID
|
||||
ldr r2, _020DBEDC ; =0x04000204
|
||||
mov r6, r0
|
||||
ldrh r1, [r2, #0x0]
|
||||
cmp r7, #0x0
|
||||
ldreq r5, _020DBEE8 ; =UNK_02103FF4
|
||||
bic r1, r1, #0x3
|
||||
orr r1, r1, r4
|
||||
cmp r7, #0x1
|
||||
ldr r0, _020DBED8 ; =UNK_021D6B0C
|
||||
strh r1, [r2, #0x0]
|
||||
ldrh r0, [r0, #0x0]
|
||||
ldreq r5, _020DBEEC ; =UNK_02103FE8
|
||||
bl OS_UnlockCartridge
|
||||
ldr r2, [r5, #0x0]
|
||||
mov r0, #0x1
|
||||
ldrh r1, [r2, #0x38]
|
||||
cmp r1, #0x0
|
||||
beq _020DBE14
|
||||
and r3, r6, #0xff
|
||||
_020DBDF4:
|
||||
ldrh r1, [r2, #0x38]
|
||||
cmp r3, r1
|
||||
moveq r0, #0x0
|
||||
beq _020DBE14
|
||||
ldr r2, [r5, #0x4]!
|
||||
ldrh r1, [r2, #0x38]
|
||||
cmp r1, #0x0
|
||||
bne _020DBDF4
|
||||
_020DBE14:
|
||||
ldr r2, [r2, #0x0]
|
||||
ldr r1, _020DBEF0 ; =UNK_021D6B14
|
||||
ldr r3, _020DBEF4 ; =UNK_021D6B34
|
||||
str r2, [r1, #0x0]
|
||||
ldr r1, [r5, #0x0]
|
||||
ldr r2, _020DBEF8 ; =UNK_021D6B2C
|
||||
ldr r4, [r1, #0x4]
|
||||
ldr r1, _020DBEFC ; =UNK_021D6B18
|
||||
str r4, [r3, #0x0]
|
||||
ldr r3, [r5, #0x0]
|
||||
ldr r6, _020DBF00 ; =UNK_021D6B1C
|
||||
ldr r3, [r3, #0x8]
|
||||
ldr r4, _020DBF04 ; =UNK_021D6B30
|
||||
str r3, [r2, #0x0]
|
||||
ldr r2, [r5, #0x0]
|
||||
ldr r3, _020DBF08 ; =UNK_021D6B24
|
||||
ldr r7, [r2, #0xc]
|
||||
ldr r2, _020DBEE4 ; =UNK_021D6B28
|
||||
str r7, [r1, #0x0]
|
||||
ldr r7, [r5, #0x0]
|
||||
ldr r1, _020DBF0C ; =UNK_021D6B20
|
||||
ldr r7, [r7, #0x10]
|
||||
add sp, sp, #0x4
|
||||
str r7, [r6, #0x0]
|
||||
ldr r6, [r5, #0x0]
|
||||
ldr r6, [r6, #0x14]
|
||||
str r6, [r4, #0x0]
|
||||
ldr r4, [r5, #0x0]
|
||||
ldr r4, [r4, #0x18]
|
||||
str r4, [r3, #0x0]
|
||||
ldr r3, [r5, #0x0]
|
||||
ldr r3, [r3, #0x1c]
|
||||
str r3, [r2, #0x0]
|
||||
ldr r2, [r5, #0x0]
|
||||
add r2, r2, #0x20
|
||||
str r2, [r1, #0x0]
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
_020DBEAC:
|
||||
cmp r7, #0x2
|
||||
addne sp, sp, #0x4
|
||||
ldmneia sp!, {r4-r7,lr}
|
||||
bxne lr
|
||||
bl OS_GetLockID
|
||||
ldr r1, _020DBF10 ; =UNK_021D6B4C
|
||||
strh r0, [r1, #0x0]
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DBED8: .word UNK_021D6B0C
|
||||
_020DBEDC: .word 0x04000204
|
||||
_020DBEE0: .word UNK_02103FE4
|
||||
_020DBEE4: .word UNK_021D6B28
|
||||
_020DBEE8: .word UNK_02103FF4
|
||||
_020DBEEC: .word UNK_02103FE8
|
||||
_020DBEF0: .word UNK_021D6B14
|
||||
_020DBEF4: .word UNK_021D6B34
|
||||
_020DBEF8: .word UNK_021D6B2C
|
||||
_020DBEFC: .word UNK_021D6B18
|
||||
_020DBF00: .word UNK_021D6B1C
|
||||
_020DBF04: .word UNK_021D6B30
|
||||
_020DBF08: .word UNK_021D6B24
|
||||
_020DBF0C: .word UNK_021D6B20
|
||||
_020DBF10: .word UNK_021D6B4C
|
||||
@@ -1,13 +1,15 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.extern UNK_0210400C
|
||||
.extern UNK_021D6B20
|
||||
.extern UNK_021D6B24
|
||||
.extern UNK_021D6B0C
|
||||
.extern UNK_021D6B38
|
||||
.extern UNK_02104048
|
||||
.extern CTRDGi_PollingSR512kCOMMON
|
||||
.extern AgbFlash
|
||||
.extern CTRDGi_PollingSR
|
||||
.extern ctrdgi_flash_lock_id
|
||||
.extern UNK_021D6B08
|
||||
.extern CTRDGi_EraseFlashChipCoreAT
|
||||
.extern CTRDGi_EraseFlashSectorCoreAT
|
||||
.extern AT29LV512_org
|
||||
.extern AT29LV512_lib
|
||||
|
||||
.text
|
||||
|
||||
@@ -170,7 +172,7 @@ CTRDGi_WriteFlash4KBCoreAT: ; 0x020DC780
|
||||
ldrhs r0, _020DC85C ; =0x000080FF
|
||||
ldmcsia sp!, {r4-r9,lr}
|
||||
bxcs lr
|
||||
ldr r1, _020DC860 ; =UNK_0210400C
|
||||
ldr r1, _020DC860 ; =AT29LV512_lib
|
||||
mov r0, r0, lsl #0x15
|
||||
ldr r1, [r1, #0x24]
|
||||
ldr r4, _020DC864 ; =UNK_021D6B08
|
||||
@@ -179,7 +181,7 @@ CTRDGi_WriteFlash4KBCoreAT: ; 0x020DC780
|
||||
ldrh r0, [r4, #0x0]
|
||||
cmp r0, #0x0
|
||||
beq _020DC84C
|
||||
ldr r0, _020DC868 ; =UNK_02104048
|
||||
ldr r0, _020DC868 ; =AT29LV512_org
|
||||
ldr r6, [r0, #0x24]
|
||||
mov r5, #0x2
|
||||
_020DC7F4:
|
||||
@@ -214,9 +216,9 @@ _020DC84C:
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DC85C: .word 0x000080FF
|
||||
_020DC860: .word UNK_0210400C
|
||||
_020DC860: .word AT29LV512_lib
|
||||
_020DC864: .word UNK_021D6B08
|
||||
_020DC868: .word UNK_02104048
|
||||
_020DC868: .word AT29LV512_org
|
||||
|
||||
arm_func_start CTRDGi_WriteFlashSectorCoreAT
|
||||
CTRDGi_WriteFlashSectorCoreAT: ; 0x020DC86C
|
||||
@@ -228,19 +230,19 @@ CTRDGi_WriteFlashSectorCoreAT: ; 0x020DC86C
|
||||
stmia r4!, {r0-r3}
|
||||
ldmia r5!, {r0-r3}
|
||||
stmia r4!, {r0-r3}
|
||||
ldr r0, _020DC984 ; =UNK_021D6B0C
|
||||
ldr r0, _020DC984 ; =ctrdgi_flash_lock_id
|
||||
ldr r1, [r5, #0x0]
|
||||
ldrh r0, [r0, #0x0]
|
||||
str r1, [r4, #0x0]
|
||||
ldr r4, [sp, #0xc]
|
||||
bl OS_LockCartridge
|
||||
ldr r5, _020DC988 ; =0x04000204
|
||||
ldr r1, _020DC98C ; =UNK_021D6B20
|
||||
ldr r1, _020DC98C ; =AgbFlash
|
||||
ldrh r0, [r5, #0x0]
|
||||
ldr r1, [r1, #0x0]
|
||||
ldrh r2, [r5, #0x0]
|
||||
ldr r3, [r1, #0x10]
|
||||
ldr r1, _020DC990 ; =UNK_02104048
|
||||
ldr r1, _020DC990 ; =AT29LV512_org
|
||||
bic r2, r2, #0x3
|
||||
orr r2, r2, r3
|
||||
strh r2, [r5, #0x0]
|
||||
@@ -271,7 +273,7 @@ _020DC91C:
|
||||
bne _020DC91C
|
||||
_020DC92C:
|
||||
ldr ip, _020DC994 ; =0x04000208
|
||||
ldr r3, _020DC9A0 ; =UNK_021D6B24
|
||||
ldr r3, _020DC9A0 ; =CTRDGi_PollingSR
|
||||
ldrh r0, [r12, #0x0]
|
||||
sub r1, r1, #0x1
|
||||
mov r0, #0x1
|
||||
@@ -280,7 +282,7 @@ _020DC92C:
|
||||
ldr r3, [r3, #0x0]
|
||||
blx r3
|
||||
ldr r3, _020DC988 ; =0x04000204
|
||||
ldr r1, _020DC984 ; =UNK_021D6B0C
|
||||
ldr r1, _020DC984 ; =ctrdgi_flash_lock_id
|
||||
ldrh r2, [r3, #0x0]
|
||||
mov r4, r0
|
||||
bic r0, r2, #0x3
|
||||
@@ -293,14 +295,14 @@ _020DC92C:
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DC984: .word UNK_021D6B0C
|
||||
_020DC984: .word ctrdgi_flash_lock_id
|
||||
_020DC988: .word 0x04000204
|
||||
_020DC98C: .word UNK_021D6B20
|
||||
_020DC990: .word UNK_02104048
|
||||
_020DC98C: .word AgbFlash
|
||||
_020DC990: .word AT29LV512_org
|
||||
_020DC994: .word 0x04000208
|
||||
_020DC998: .word 0x0A005555
|
||||
_020DC99C: .word 0x0A002AAA
|
||||
_020DC9A0: .word UNK_021D6B24
|
||||
_020DC9A0: .word CTRDGi_PollingSR
|
||||
|
||||
arm_func_start CTRDGi_EraseFlash4KBCoreAT
|
||||
CTRDGi_EraseFlash4KBCoreAT: ; 0x020DC9A4
|
||||
@@ -354,158 +356,3 @@ _020DCA18:
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DCA54: .word 0x000080FF
|
||||
|
||||
arm_func_start CTRDGi_EraseFlashSectorCoreAT
|
||||
CTRDGi_EraseFlashSectorCoreAT: ; 0x020DCA58
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x24
|
||||
mov r5, r0
|
||||
ldmia r5!, {r0-r3}
|
||||
add r4, sp, #0x0
|
||||
stmia r4!, {r0-r3}
|
||||
ldmia r5!, {r0-r3}
|
||||
stmia r4!, {r0-r3}
|
||||
ldr r0, [r5, #0x0]
|
||||
ldr r1, _020DCB80 ; =UNK_02104048
|
||||
str r0, [r4, #0x0]
|
||||
ldr r0, _020DCB84 ; =UNK_021D6B0C
|
||||
ldrh r2, [sp, #0x20]
|
||||
ldrh r1, [r1, #0x28]
|
||||
ldrh r0, [r0, #0x0]
|
||||
mov r1, r2, lsl r1
|
||||
add r5, r1, #0xa000000
|
||||
bl OS_LockCartridge
|
||||
ldr r4, _020DCB88 ; =0x04000204
|
||||
ldr r1, _020DCB8C ; =UNK_021D6B20
|
||||
ldrh r0, [r4, #0x0]
|
||||
ldr r2, [r1, #0x0]
|
||||
ldrh r1, [r4, #0x0]
|
||||
ldr r2, [r2, #0x10]
|
||||
ldr r3, _020DCB90 ; =0x04000208
|
||||
bic r1, r1, #0x3
|
||||
orr r1, r1, r2
|
||||
strh r1, [r4, #0x0]
|
||||
ldrh r2, [r3, #0x0]
|
||||
mov r1, #0x0
|
||||
ldr r4, _020DCB94 ; =0x0A005555
|
||||
strh r1, [r3, #0x0]
|
||||
mov r3, #0xaa
|
||||
strb r3, [r4, #0x0]
|
||||
ldr r1, _020DCB98 ; =0x0A002AAA
|
||||
mov r3, #0x55
|
||||
strb r3, [r1, #0x0]
|
||||
mov r3, #0xa0
|
||||
strb r3, [r4, #0x0]
|
||||
ldr r1, _020DCB80 ; =UNK_02104048
|
||||
and r4, r0, #0x3
|
||||
ldr r1, [r1, #0x24]
|
||||
cmp r1, #0x0
|
||||
beq _020DCB18
|
||||
mov r0, #0xff
|
||||
_020DCB0C:
|
||||
strb r0, [r5], #0x1
|
||||
subs r1, r1, #0x1
|
||||
bne _020DCB0C
|
||||
_020DCB18:
|
||||
ldr ip, _020DCB90 ; =0x04000208
|
||||
ldr r3, _020DCB9C ; =UNK_021D6B24
|
||||
ldrh r0, [r12, #0x0]
|
||||
sub r1, r5, #0x1
|
||||
strh r2, [r12, #0x0]
|
||||
ldr r3, [r3, #0x0]
|
||||
mov r0, #0x1
|
||||
mov r2, #0xff
|
||||
blx r3
|
||||
ldr r2, _020DCB88 ; =0x04000204
|
||||
movs r5, r0
|
||||
ldrh r1, [r2, #0x0]
|
||||
andne r0, r5, #0xff00
|
||||
orrne r0, r0, #0x2
|
||||
movne r0, r0, lsl #0x10
|
||||
bic r1, r1, #0x3
|
||||
movne r5, r0, lsr #0x10
|
||||
orr r1, r1, r4
|
||||
ldr r0, _020DCB84 ; =UNK_021D6B0C
|
||||
strh r1, [r2, #0x0]
|
||||
ldrh r0, [r0, #0x0]
|
||||
bl OS_UnlockCartridge
|
||||
mov r0, r5
|
||||
add sp, sp, #0x24
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DCB80: .word UNK_02104048
|
||||
_020DCB84: .word UNK_021D6B0C
|
||||
_020DCB88: .word 0x04000204
|
||||
_020DCB8C: .word UNK_021D6B20
|
||||
_020DCB90: .word 0x04000208
|
||||
_020DCB94: .word 0x0A005555
|
||||
_020DCB98: .word 0x0A002AAA
|
||||
_020DCB9C: .word UNK_021D6B24
|
||||
|
||||
arm_func_start CTRDGi_EraseFlashChipCoreAT
|
||||
CTRDGi_EraseFlashChipCoreAT: ; 0x020DCBA0
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r0, _020DCC7C ; =UNK_021D6B0C
|
||||
ldrh r0, [r0, #0x0]
|
||||
bl OS_LockCartridge
|
||||
ldr r4, _020DCC80 ; =0x04000204
|
||||
ldr r0, _020DCC84 ; =UNK_021D6B20
|
||||
ldrh r3, [r4, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
ldrh r1, [r4, #0x0]
|
||||
ldr r2, [r0, #0x10]
|
||||
ldr r0, _020DCC88 ; =0x04000208
|
||||
bic r1, r1, #0x3
|
||||
orr r1, r1, r2
|
||||
strh r1, [r4, #0x0]
|
||||
ldrh r4, [r0, #0x0]
|
||||
mov r2, #0x0
|
||||
ldr r1, _020DCC8C ; =UNK_021D6B38
|
||||
strh r2, [r0, #0x0]
|
||||
ldr lr, _020DCC90 ; =0x0A005555
|
||||
str r4, [r1, #0x0]
|
||||
mov r5, #0xaa
|
||||
ldr r4, _020DCC94 ; =0x0A002AAA
|
||||
strb r5, [lr, #0x0]
|
||||
mov r12, #0x55
|
||||
strb r12, [r4, #0x0]
|
||||
mov r2, #0x80
|
||||
strb r2, [lr, #0x0]
|
||||
strb r5, [lr, #0x0]
|
||||
strb r12, [r4, #0x0]
|
||||
mov r2, #0x10
|
||||
strb r2, [lr, #0x0]
|
||||
ldrh r2, [r0, #0x0]
|
||||
ldr r2, [r1, #0x0]
|
||||
ldr r1, _020DCC98 ; =UNK_021D6B24
|
||||
strh r2, [r0, #0x0]
|
||||
ldr r4, [r1, #0x0]
|
||||
mov r0, #0x3
|
||||
mov r1, #0xa000000
|
||||
mov r2, #0xff
|
||||
and r5, r3, #0x3
|
||||
blx r4
|
||||
ldr r3, _020DCC80 ; =0x04000204
|
||||
ldr r1, _020DCC7C ; =UNK_021D6B0C
|
||||
ldrh r2, [r3, #0x0]
|
||||
mov r4, r0
|
||||
bic r0, r2, #0x3
|
||||
orr r0, r0, r5
|
||||
strh r0, [r3, #0x0]
|
||||
ldrh r0, [r1, #0x0]
|
||||
bl OS_UnlockCartridge
|
||||
mov r0, r4
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DCC7C: .word UNK_021D6B0C
|
||||
_020DCC80: .word 0x04000204
|
||||
_020DCC84: .word UNK_021D6B20
|
||||
_020DCC88: .word 0x04000208
|
||||
_020DCC8C: .word UNK_021D6B38
|
||||
_020DCC90: .word 0x0A005555
|
||||
_020DCC94: .word 0x0A002AAA
|
||||
_020DCC98: .word UNK_021D6B24
|
||||
@@ -0,0 +1,29 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.extern CTRDGi_EraseFlashChipAsyncMX
|
||||
.extern CTRDGi_EraseFlashChipMX
|
||||
.extern CTRDGi_EraseFlashSectorAsyncMX
|
||||
.extern CTRDGi_EraseFlashSectorMX
|
||||
.extern CTRDGi_PollingSR1MCOMMON
|
||||
.extern CTRDGi_WriteFlashSectorAsyncMX
|
||||
.extern CTRDGi_WriteFlashSectorMX
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global LeMaxTime
|
||||
LeMaxTime: ; 0x02104084
|
||||
.short 10, 10, 2000, 5000
|
||||
|
||||
.global LE26FV10N1TS_10
|
||||
LE26FV10N1TS_10: ; 0x0210408C
|
||||
.word CTRDGi_WriteFlashSectorMX
|
||||
.word CTRDGi_EraseFlashChipMX
|
||||
.word CTRDGi_EraseFlashSectorMX
|
||||
.word CTRDGi_WriteFlashSectorAsyncMX
|
||||
.word CTRDGi_EraseFlashChipAsyncMX
|
||||
.word CTRDGi_EraseFlashSectorAsyncMX
|
||||
.word CTRDGi_PollingSR1MCOMMON
|
||||
.word LeMaxTime
|
||||
.byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x00, 0x13, 0x00
|
||||
@@ -1,12 +1,45 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.extern UNK_021D6B20
|
||||
.extern UNK_021D6B24
|
||||
.extern UNK_021D6B0C
|
||||
.extern UNK_021D6B38
|
||||
.extern CTRDGi_PollingSR512kCOMMON
|
||||
.extern AgbFlash
|
||||
.extern CTRDGi_PollingSR
|
||||
.extern ctrdgi_flash_lock_id
|
||||
.extern ctrdgi_backup_irq
|
||||
.extern UNK_021D6B08
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global leMaxTime
|
||||
leMaxTime: ; 0x021040C8
|
||||
.byte 0x0A, 0x00, 0x0A, 0x00, 0x28, 0x00, 0xC8, 0x00
|
||||
|
||||
.global defaultFlash512
|
||||
defaultFlash512: ; 0x021040D0
|
||||
.word CTRDGi_WriteFlashSectorLE
|
||||
.word CTRDGi_EraseFlashChipLE
|
||||
.word CTRDGi_EraseFlashSectorLE
|
||||
.word CTRDGi_WriteFlashSectorAsyncLE
|
||||
.word CTRDGi_EraseFlashChipAsyncLE
|
||||
.word CTRDGi_EraseFlashSectorAsyncLE
|
||||
.word CTRDGi_PollingSR512kCOMMON
|
||||
.word leMaxTime
|
||||
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global LE39FW512
|
||||
LE39FW512: ; 0x0210410C
|
||||
.word CTRDGi_WriteFlashSectorLE
|
||||
.word CTRDGi_EraseFlashChipLE
|
||||
.word CTRDGi_EraseFlashSectorLE
|
||||
.word CTRDGi_WriteFlashSectorAsyncLE
|
||||
.word CTRDGi_EraseFlashChipAsyncLE
|
||||
.word CTRDGi_EraseFlashSectorAsyncLE
|
||||
.word CTRDGi_PollingSR512kCOMMON
|
||||
.word leMaxTime
|
||||
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xD4, 0x00
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start CTRDGi_WriteFlashSectorAsyncLE
|
||||
@@ -95,13 +128,13 @@ CTRDGi_EraseFlashChipLE: ; 0x020DCD70
|
||||
arm_func_start CTRDGi_VerifyFlashErase
|
||||
CTRDGi_VerifyFlashErase: ; 0x020DCD94
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
ldr r2, _020DCE14 ; =UNK_021D6B0C
|
||||
ldr r2, _020DCE14 ; =ctrdgi_flash_lock_id
|
||||
mov r4, r0
|
||||
ldrh r0, [r2, #0x0]
|
||||
mov r5, r1
|
||||
bl OS_LockCartridge
|
||||
ldr ip, _020DCE18 ; =0x04000204
|
||||
ldr r0, _020DCE1C ; =UNK_021D6B20
|
||||
ldr r0, _020DCE1C ; =AgbFlash
|
||||
ldrh r3, [r12, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
ldrh r1, [r12, #0x0]
|
||||
@@ -115,7 +148,7 @@ CTRDGi_VerifyFlashErase: ; 0x020DCD94
|
||||
blx r5
|
||||
cmp r0, #0x0
|
||||
ldr r2, _020DCE18 ; =0x04000204
|
||||
ldr r0, _020DCE14 ; =UNK_021D6B0C
|
||||
ldr r0, _020DCE14 ; =ctrdgi_flash_lock_id
|
||||
ldrh r1, [r2, #0x0]
|
||||
ldrne r4, _020DCE20 ; =0x00008004
|
||||
bic r1, r1, #0x3
|
||||
@@ -127,14 +160,14 @@ CTRDGi_VerifyFlashErase: ; 0x020DCD94
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DCE14: .word UNK_021D6B0C
|
||||
_020DCE14: .word ctrdgi_flash_lock_id
|
||||
_020DCE18: .word 0x04000204
|
||||
_020DCE1C: .word UNK_021D6B20
|
||||
_020DCE1C: .word AgbFlash
|
||||
_020DCE20: .word 0x00008004
|
||||
|
||||
arm_func_start CTRDGi_VerifyFlashCoreFF
|
||||
CTRDGi_VerifyFlashCoreFF: ; 0x020DCE24
|
||||
ldr r1, _020DCE54 ; =UNK_021D6B20
|
||||
ldr r1, _020DCE54 ; =AgbFlash
|
||||
ldr r1, [r1, #0x0]
|
||||
ldr r2, [r1, #0x4]
|
||||
cmp r2, #0x0
|
||||
@@ -149,7 +182,7 @@ _020DCE4C:
|
||||
mov r0, r2
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DCE54: .word UNK_021D6B20
|
||||
_020DCE54: .word AgbFlash
|
||||
|
||||
arm_func_start CTRDGi_WriteFlashSectorCoreLE
|
||||
CTRDGi_WriteFlashSectorCoreLE: ; 0x020DCE58
|
||||
@@ -170,7 +203,7 @@ CTRDGi_WriteFlashSectorCoreLE: ; 0x020DCE58
|
||||
ldrhs r0, _020DD018 ; =0x000080FF
|
||||
ldmcsia sp!, {r4-r9,lr}
|
||||
bxcs lr
|
||||
ldr r0, _020DD01C ; =UNK_021D6B20
|
||||
ldr r0, _020DD01C ; =AgbFlash
|
||||
mov r9, #0x0
|
||||
ldr r0, [r0, #0x0]
|
||||
ldrh r0, [r0, #0x8]
|
||||
@@ -214,11 +247,11 @@ _020DCF1C:
|
||||
cmp r9, r5
|
||||
bls _020DCF1C
|
||||
_020DCF38:
|
||||
ldr r0, _020DD024 ; =UNK_021D6B0C
|
||||
ldr r0, _020DD024 ; =ctrdgi_flash_lock_id
|
||||
ldrh r0, [r0, #0x0]
|
||||
bl OS_LockCartridge
|
||||
ldr r5, _020DD028 ; =0x04000204
|
||||
ldr r1, _020DD01C ; =UNK_021D6B20
|
||||
ldr r1, _020DD01C ; =AgbFlash
|
||||
ldrh r0, [r5, #0x0]
|
||||
ldr r3, [r1, #0x0]
|
||||
ldrh r2, [r5, #0x0]
|
||||
@@ -233,7 +266,7 @@ _020DCF38:
|
||||
mov r2, #0x0
|
||||
strh r1, [r7, #0x0]
|
||||
ldrh r3, [r9, #0x0]
|
||||
ldr r1, _020DD034 ; =UNK_021D6B38
|
||||
ldr r1, _020DD034 ; =ctrdgi_backup_irq
|
||||
and r5, r0, #0x3
|
||||
strh r2, [r9, #0x0]
|
||||
ldrh r0, [r7, #0x0]
|
||||
@@ -256,13 +289,13 @@ _020DCFA0:
|
||||
bne _020DCFA0
|
||||
_020DCFD4:
|
||||
ldr r3, _020DD030 ; =0x04000208
|
||||
ldr r0, _020DD034 ; =UNK_021D6B38
|
||||
ldr r0, _020DD034 ; =ctrdgi_backup_irq
|
||||
ldrh r1, [r3, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
ldr r2, _020DD028 ; =0x04000204
|
||||
strh r0, [r3, #0x0]
|
||||
ldrh r1, [r2, #0x0]
|
||||
ldr r0, _020DD024 ; =UNK_021D6B0C
|
||||
ldr r0, _020DD024 ; =ctrdgi_flash_lock_id
|
||||
bic r1, r1, #0x3
|
||||
orr r1, r1, r5
|
||||
strh r1, [r2, #0x0]
|
||||
@@ -274,13 +307,13 @@ _020DCFD4:
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DD018: .word 0x000080FF
|
||||
_020DD01C: .word UNK_021D6B20
|
||||
_020DD01C: .word AgbFlash
|
||||
_020DD020: .word CTRDGi_VerifyFlashCoreFF
|
||||
_020DD024: .word UNK_021D6B0C
|
||||
_020DD024: .word ctrdgi_flash_lock_id
|
||||
_020DD028: .word 0x04000204
|
||||
_020DD02C: .word UNK_021D6B08
|
||||
_020DD030: .word 0x04000208
|
||||
_020DD034: .word UNK_021D6B38
|
||||
_020DD034: .word ctrdgi_backup_irq
|
||||
|
||||
arm_func_start CTRDGi_ProgramFlashByteLE
|
||||
CTRDGi_ProgramFlashByteLE: ; 0x020DD038
|
||||
@@ -296,7 +329,7 @@ CTRDGi_ProgramFlashByteLE: ; 0x020DD038
|
||||
mov r0, #0xa0
|
||||
strb r0, [r12, #0x0]
|
||||
ldrb r2, [lr, #0x0]
|
||||
ldr r3, _020DD094 ; =UNK_021D6B24
|
||||
ldr r3, _020DD094 ; =CTRDGi_PollingSR
|
||||
mov r0, #0x1
|
||||
strb r2, [r1, #0x0]
|
||||
ldrb r2, [lr, #0x0]
|
||||
@@ -308,7 +341,7 @@ CTRDGi_ProgramFlashByteLE: ; 0x020DD038
|
||||
.balign 4
|
||||
_020DD08C: .word 0x0A005555
|
||||
_020DD090: .word 0x0A002AAA
|
||||
_020DD094: .word UNK_021D6B24
|
||||
_020DD094: .word CTRDGi_PollingSR
|
||||
|
||||
arm_func_start CTRDGi_EraseFlashSectorCoreLE
|
||||
CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098
|
||||
@@ -328,11 +361,11 @@ CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098
|
||||
ldrhs r0, _020DD1B8 ; =0x000080FF
|
||||
ldmcsia sp!, {r4-r6,lr}
|
||||
bxcs lr
|
||||
ldr r0, _020DD1BC ; =UNK_021D6B0C
|
||||
ldr r0, _020DD1BC ; =ctrdgi_flash_lock_id
|
||||
ldrh r0, [r0, #0x0]
|
||||
bl OS_LockCartridge
|
||||
ldr r6, _020DD1C0 ; =0x04000204
|
||||
ldr r1, _020DD1C4 ; =UNK_021D6B20
|
||||
ldr r1, _020DD1C4 ; =AgbFlash
|
||||
ldrh r3, [r6, #0x0]
|
||||
ldr r0, [r1, #0x0]
|
||||
ldrh r2, [r6, #0x0]
|
||||
@@ -345,7 +378,7 @@ CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098
|
||||
ldrh r5, [r0, #0x0]
|
||||
ldrh r12, [r1, #0x8]
|
||||
mov r1, #0x0
|
||||
ldr r2, _020DD1CC ; =UNK_021D6B38
|
||||
ldr r2, _020DD1CC ; =ctrdgi_backup_irq
|
||||
strh r1, [r0, #0x0]
|
||||
mov r6, r4, lsl r12
|
||||
ldr lr, _020DD1D0 ; =0x0A005555
|
||||
@@ -364,7 +397,7 @@ CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098
|
||||
strb r4, [r1, #0x0]
|
||||
ldrh r4, [r0, #0x0]
|
||||
ldr r4, [r2, #0x0]
|
||||
ldr r2, _020DD1D8 ; =UNK_021D6B24
|
||||
ldr r2, _020DD1D8 ; =CTRDGi_PollingSR
|
||||
strh r4, [r0, #0x0]
|
||||
ldr r4, [r2, #0x0]
|
||||
mov r0, #0x2
|
||||
@@ -372,7 +405,7 @@ CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098
|
||||
and r5, r3, #0x3
|
||||
blx r4
|
||||
ldr r3, _020DD1C0 ; =0x04000204
|
||||
ldr r1, _020DD1BC ; =UNK_021D6B0C
|
||||
ldr r1, _020DD1BC ; =ctrdgi_flash_lock_id
|
||||
ldrh r2, [r3, #0x0]
|
||||
mov r4, r0
|
||||
bic r0, r2, #0x3
|
||||
@@ -386,24 +419,24 @@ CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DD1B8: .word 0x000080FF
|
||||
_020DD1BC: .word UNK_021D6B0C
|
||||
_020DD1BC: .word ctrdgi_flash_lock_id
|
||||
_020DD1C0: .word 0x04000204
|
||||
_020DD1C4: .word UNK_021D6B20
|
||||
_020DD1C4: .word AgbFlash
|
||||
_020DD1C8: .word 0x04000208
|
||||
_020DD1CC: .word UNK_021D6B38
|
||||
_020DD1CC: .word ctrdgi_backup_irq
|
||||
_020DD1D0: .word 0x0A005555
|
||||
_020DD1D4: .word 0x0A002AAA
|
||||
_020DD1D8: .word UNK_021D6B24
|
||||
_020DD1D8: .word CTRDGi_PollingSR
|
||||
|
||||
arm_func_start CTRDGi_EraseFlashChipCoreLE
|
||||
CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r0, _020DD2B8 ; =UNK_021D6B0C
|
||||
ldr r0, _020DD2B8 ; =ctrdgi_flash_lock_id
|
||||
ldrh r0, [r0, #0x0]
|
||||
bl OS_LockCartridge
|
||||
ldr r4, _020DD2BC ; =0x04000204
|
||||
ldr r0, _020DD2C0 ; =UNK_021D6B20
|
||||
ldr r0, _020DD2C0 ; =AgbFlash
|
||||
ldrh r3, [r4, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
ldrh r1, [r4, #0x0]
|
||||
@@ -414,7 +447,7 @@ CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC
|
||||
strh r1, [r4, #0x0]
|
||||
ldrh r4, [r0, #0x0]
|
||||
mov r2, #0x0
|
||||
ldr r1, _020DD2C8 ; =UNK_021D6B38
|
||||
ldr r1, _020DD2C8 ; =ctrdgi_backup_irq
|
||||
strh r2, [r0, #0x0]
|
||||
ldr lr, _020DD2CC ; =0x0A005555
|
||||
str r4, [r1, #0x0]
|
||||
@@ -431,7 +464,7 @@ CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC
|
||||
strb r2, [lr, #0x0]
|
||||
ldrh r2, [r0, #0x0]
|
||||
ldr r2, [r1, #0x0]
|
||||
ldr r1, _020DD2D4 ; =UNK_021D6B24
|
||||
ldr r1, _020DD2D4 ; =CTRDGi_PollingSR
|
||||
strh r2, [r0, #0x0]
|
||||
ldr r4, [r1, #0x0]
|
||||
mov r0, #0x3
|
||||
@@ -440,7 +473,7 @@ CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC
|
||||
and r5, r3, #0x3
|
||||
blx r4
|
||||
ldr r3, _020DD2BC ; =0x04000204
|
||||
ldr r1, _020DD2B8 ; =UNK_021D6B0C
|
||||
ldr r1, _020DD2B8 ; =ctrdgi_flash_lock_id
|
||||
ldrh r2, [r3, #0x0]
|
||||
mov r4, r0
|
||||
bic r0, r2, #0x3
|
||||
@@ -453,11 +486,11 @@ CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DD2B8: .word UNK_021D6B0C
|
||||
_020DD2B8: .word ctrdgi_flash_lock_id
|
||||
_020DD2BC: .word 0x04000204
|
||||
_020DD2C0: .word UNK_021D6B20
|
||||
_020DD2C0: .word AgbFlash
|
||||
_020DD2C4: .word 0x04000208
|
||||
_020DD2C8: .word UNK_021D6B38
|
||||
_020DD2C8: .word ctrdgi_backup_irq
|
||||
_020DD2CC: .word 0x0A005555
|
||||
_020DD2D0: .word 0x0A002AAA
|
||||
_020DD2D4: .word UNK_021D6B24
|
||||
_020DD2D4: .word CTRDGi_PollingSR
|
||||
|
||||
@@ -1,12 +1,45 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.extern UNK_021D6B20
|
||||
.extern UNK_021D6B24
|
||||
.extern UNK_021D6B0C
|
||||
.extern UNK_021D6B38
|
||||
.extern CTRDGi_PollingSR1MCOMMON
|
||||
.extern AgbFlash
|
||||
.extern CTRDGi_PollingSR
|
||||
.extern ctrdgi_flash_lock_id
|
||||
.extern ctrdgi_backup_irq
|
||||
.extern UNK_021D6B08
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global MxMaxTime
|
||||
MxMaxTime: ; 0x02104148
|
||||
.short 10, 10, 2000, 2000
|
||||
|
||||
.global MX29L010
|
||||
MX29L010: ; 0x02104150
|
||||
.word CTRDGi_WriteFlashSectorMX
|
||||
.word CTRDGi_EraseFlashChipMX
|
||||
.word CTRDGi_EraseFlashSectorMX
|
||||
.word CTRDGi_WriteFlashSectorAsyncMX
|
||||
.word CTRDGi_EraseFlashChipAsyncMX
|
||||
.word CTRDGi_EraseFlashSectorAsyncMX
|
||||
.word CTRDGi_PollingSR1MCOMMON
|
||||
.word MxMaxTime
|
||||
.byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x09, 0x00
|
||||
|
||||
.global defaultFlash1M
|
||||
defaultFlash1M: ; 0x0210418C
|
||||
.word CTRDGi_WriteFlashSectorMX
|
||||
.word CTRDGi_EraseFlashChipMX
|
||||
.word CTRDGi_EraseFlashSectorMX
|
||||
.word CTRDGi_WriteFlashSectorAsyncMX
|
||||
.word CTRDGi_EraseFlashChipAsyncMX
|
||||
.word CTRDGi_EraseFlashSectorAsyncMX
|
||||
.word CTRDGi_PollingSR1MCOMMON
|
||||
.word MxMaxTime
|
||||
.byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start CTRDGi_WriteFlashSectorAsyncMX
|
||||
@@ -102,7 +135,7 @@ CTRDGi_WriteFlashSectorCoreMX: ; 0x020DD3D0
|
||||
stmia r4!, {r0-r3}
|
||||
ldmia r5!, {r0-r3}
|
||||
stmia r4!, {r0-r3}
|
||||
ldr r0, _020DD540 ; =UNK_021D6B20
|
||||
ldr r0, _020DD540 ; =AgbFlash
|
||||
ldr r1, [r5, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
str r1, [r4, #0x0]
|
||||
@@ -120,11 +153,11 @@ CTRDGi_WriteFlashSectorCoreMX: ; 0x020DD3D0
|
||||
addne sp, sp, #0x28
|
||||
ldmneia sp!, {r4-r8,lr}
|
||||
bxne lr
|
||||
ldr r0, _020DD548 ; =UNK_021D6B0C
|
||||
ldr r0, _020DD548 ; =ctrdgi_flash_lock_id
|
||||
ldrh r0, [r0, #0x0]
|
||||
bl OS_LockCartridge
|
||||
ldr r7, _020DD54C ; =0x04000204
|
||||
ldr r0, _020DD540 ; =UNK_021D6B20
|
||||
ldr r0, _020DD540 ; =AgbFlash
|
||||
ldrh r3, [r7, #0x0]
|
||||
ldr r2, [r0, #0x0]
|
||||
ldrh r1, [r7, #0x0]
|
||||
@@ -136,7 +169,7 @@ CTRDGi_WriteFlashSectorCoreMX: ; 0x020DD3D0
|
||||
strh r1, [r7, #0x0]
|
||||
and r7, r3, #0x3
|
||||
bl CTRDGi_SetFlashBankMx
|
||||
ldr r0, _020DD540 ; =UNK_021D6B20
|
||||
ldr r0, _020DD540 ; =AgbFlash
|
||||
and r1, r5, #0xf
|
||||
ldr r3, [r0, #0x0]
|
||||
mov r0, r1, lsl #0x10
|
||||
@@ -151,7 +184,7 @@ CTRDGi_WriteFlashSectorCoreMX: ; 0x020DD3D0
|
||||
mov r3, r5, lsl r3
|
||||
strh r0, [r1, #0x0]
|
||||
ldrh r1, [r8, #0x0]
|
||||
ldr r0, _020DD558 ; =UNK_021D6B38
|
||||
ldr r0, _020DD558 ; =ctrdgi_backup_irq
|
||||
add r5, r3, #0xa000000
|
||||
str r2, [r0, #0x0]
|
||||
cmp r1, #0x0
|
||||
@@ -172,13 +205,13 @@ _020DD4C8:
|
||||
bne _020DD4C8
|
||||
_020DD4FC:
|
||||
ldr r3, _020DD554 ; =0x04000208
|
||||
ldr r0, _020DD558 ; =UNK_021D6B38
|
||||
ldr r0, _020DD558 ; =ctrdgi_backup_irq
|
||||
ldrh r1, [r3, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
ldr r2, _020DD54C ; =0x04000204
|
||||
strh r0, [r3, #0x0]
|
||||
ldrh r1, [r2, #0x0]
|
||||
ldr r0, _020DD548 ; =UNK_021D6B0C
|
||||
ldr r0, _020DD548 ; =ctrdgi_flash_lock_id
|
||||
bic r1, r1, #0x3
|
||||
orr r1, r1, r7
|
||||
strh r1, [r2, #0x0]
|
||||
@@ -189,13 +222,13 @@ _020DD4FC:
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DD540: .word UNK_021D6B20
|
||||
_020DD540: .word AgbFlash
|
||||
_020DD544: .word 0x000080FF
|
||||
_020DD548: .word UNK_021D6B0C
|
||||
_020DD548: .word ctrdgi_flash_lock_id
|
||||
_020DD54C: .word 0x04000204
|
||||
_020DD550: .word UNK_021D6B08
|
||||
_020DD554: .word 0x04000208
|
||||
_020DD558: .word UNK_021D6B38
|
||||
_020DD558: .word ctrdgi_backup_irq
|
||||
|
||||
arm_func_start CTRDGi_ProgramFlashByteMX
|
||||
CTRDGi_ProgramFlashByteMX: ; 0x020DD55C
|
||||
@@ -211,7 +244,7 @@ CTRDGi_ProgramFlashByteMX: ; 0x020DD55C
|
||||
mov r0, #0xa0
|
||||
strb r0, [r12, #0x0]
|
||||
ldrb r2, [lr, #0x0]
|
||||
ldr r3, _020DD5B8 ; =UNK_021D6B24
|
||||
ldr r3, _020DD5B8 ; =CTRDGi_PollingSR
|
||||
mov r0, #0x1
|
||||
strb r2, [r1, #0x0]
|
||||
ldrb r2, [lr, #0x0]
|
||||
@@ -223,7 +256,7 @@ CTRDGi_ProgramFlashByteMX: ; 0x020DD55C
|
||||
.balign 4
|
||||
_020DD5B0: .word 0x0A005555
|
||||
_020DD5B4: .word 0x0A002AAA
|
||||
_020DD5B8: .word UNK_021D6B24
|
||||
_020DD5B8: .word CTRDGi_PollingSR
|
||||
|
||||
arm_func_start CTRDGi_EraseFlashSectorCoreMX
|
||||
CTRDGi_EraseFlashSectorCoreMX: ; 0x020DD5BC
|
||||
@@ -235,7 +268,7 @@ CTRDGi_EraseFlashSectorCoreMX: ; 0x020DD5BC
|
||||
stmia r4!, {r0-r3}
|
||||
ldmia r5!, {r0-r3}
|
||||
stmia r4!, {r0-r3}
|
||||
ldr r0, _020DD748 ; =UNK_021D6B20
|
||||
ldr r0, _020DD748 ; =AgbFlash
|
||||
ldr r1, [r5, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
str r1, [r4, #0x0]
|
||||
@@ -246,11 +279,11 @@ CTRDGi_EraseFlashSectorCoreMX: ; 0x020DD5BC
|
||||
ldrhs r0, _020DD74C ; =0x000080FF
|
||||
ldmcsia sp!, {r4-r11,lr}
|
||||
bxcs lr
|
||||
ldr r0, _020DD750 ; =UNK_021D6B0C
|
||||
ldr r0, _020DD750 ; =ctrdgi_flash_lock_id
|
||||
ldrh r0, [r0, #0x0]
|
||||
bl OS_LockCartridge
|
||||
ldr r5, _020DD754 ; =0x04000204
|
||||
ldr r0, _020DD748 ; =UNK_021D6B20
|
||||
ldr r0, _020DD748 ; =AgbFlash
|
||||
ldrh r3, [r5, #0x0]
|
||||
ldr r2, [r0, #0x0]
|
||||
ldrh r1, [r5, #0x0]
|
||||
@@ -278,10 +311,10 @@ CTRDGi_EraseFlashSectorCoreMX: ; 0x020DD5BC
|
||||
mov r4, #0x30
|
||||
str r0, [sp, #0xc]
|
||||
_020DD684:
|
||||
ldr r0, _020DD748 ; =UNK_021D6B20
|
||||
ldr r0, _020DD748 ; =AgbFlash
|
||||
ldrh r12, [r8, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
ldr r3, _020DD75C ; =UNK_021D6B38
|
||||
ldr r3, _020DD75C ; =ctrdgi_backup_irq
|
||||
ldrh r1, [r0, #0x8]
|
||||
ldr r0, [sp, #0x8]
|
||||
ldr r2, [sp, #0xc]
|
||||
@@ -300,10 +333,10 @@ _020DD684:
|
||||
strb r6, [r3, #0x0]
|
||||
strb r4, [r1, #0x0]
|
||||
ldrh r3, [r8, #0x0]
|
||||
ldr r3, _020DD75C ; =UNK_021D6B38
|
||||
ldr r3, _020DD75C ; =ctrdgi_backup_irq
|
||||
ldr r3, [r3, #0x0]
|
||||
strh r3, [r8, #0x0]
|
||||
ldr r3, _020DD768 ; =UNK_021D6B24
|
||||
ldr r3, _020DD768 ; =CTRDGi_PollingSR
|
||||
ldr r3, [r3, #0x0]
|
||||
blx r3
|
||||
str r0, [sp, #0x4]
|
||||
@@ -316,7 +349,7 @@ _020DD684:
|
||||
beq _020DD684
|
||||
_020DD714:
|
||||
ldr r2, _020DD754 ; =0x04000204
|
||||
ldr r1, _020DD750 ; =UNK_021D6B0C
|
||||
ldr r1, _020DD750 ; =ctrdgi_flash_lock_id
|
||||
ldrh r0, [r2, #0x0]
|
||||
bic r3, r0, #0x3
|
||||
ldr r0, [sp, #0x0]
|
||||
@@ -329,25 +362,25 @@ _020DD714:
|
||||
ldmia sp!, {r4-r11,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DD748: .word UNK_021D6B20
|
||||
_020DD748: .word AgbFlash
|
||||
_020DD74C: .word 0x000080FF
|
||||
_020DD750: .word UNK_021D6B0C
|
||||
_020DD750: .word ctrdgi_flash_lock_id
|
||||
_020DD754: .word 0x04000204
|
||||
_020DD758: .word 0x04000208
|
||||
_020DD75C: .word UNK_021D6B38
|
||||
_020DD75C: .word ctrdgi_backup_irq
|
||||
_020DD760: .word 0x0A005555
|
||||
_020DD764: .word 0x0A002AAA
|
||||
_020DD768: .word UNK_021D6B24
|
||||
_020DD768: .word CTRDGi_PollingSR
|
||||
|
||||
arm_func_start CTRDGi_EraseFlashChipCoreMX
|
||||
CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r0, _020DD848 ; =UNK_021D6B0C
|
||||
ldr r0, _020DD848 ; =ctrdgi_flash_lock_id
|
||||
ldrh r0, [r0, #0x0]
|
||||
bl OS_LockCartridge
|
||||
ldr r4, _020DD84C ; =0x04000204
|
||||
ldr r0, _020DD850 ; =UNK_021D6B20
|
||||
ldr r0, _020DD850 ; =AgbFlash
|
||||
ldrh r3, [r4, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
ldrh r1, [r4, #0x0]
|
||||
@@ -358,7 +391,7 @@ CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C
|
||||
strh r1, [r4, #0x0]
|
||||
ldrh r4, [r0, #0x0]
|
||||
mov r2, #0x0
|
||||
ldr r1, _020DD858 ; =UNK_021D6B38
|
||||
ldr r1, _020DD858 ; =ctrdgi_backup_irq
|
||||
strh r2, [r0, #0x0]
|
||||
ldr lr, _020DD85C ; =0x0A005555
|
||||
str r4, [r1, #0x0]
|
||||
@@ -375,7 +408,7 @@ CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C
|
||||
strb r2, [lr, #0x0]
|
||||
ldrh r2, [r0, #0x0]
|
||||
ldr r2, [r1, #0x0]
|
||||
ldr r1, _020DD864 ; =UNK_021D6B24
|
||||
ldr r1, _020DD864 ; =CTRDGi_PollingSR
|
||||
strh r2, [r0, #0x0]
|
||||
ldr r4, [r1, #0x0]
|
||||
mov r0, #0x3
|
||||
@@ -384,7 +417,7 @@ CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C
|
||||
and r5, r3, #0x3
|
||||
blx r4
|
||||
ldr r3, _020DD84C ; =0x04000204
|
||||
ldr r1, _020DD848 ; =UNK_021D6B0C
|
||||
ldr r1, _020DD848 ; =ctrdgi_flash_lock_id
|
||||
ldrh r2, [r3, #0x0]
|
||||
mov r4, r0
|
||||
bic r0, r2, #0x3
|
||||
@@ -397,11 +430,11 @@ CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DD848: .word UNK_021D6B0C
|
||||
_020DD848: .word ctrdgi_flash_lock_id
|
||||
_020DD84C: .word 0x04000204
|
||||
_020DD850: .word UNK_021D6B20
|
||||
_020DD850: .word AgbFlash
|
||||
_020DD854: .word 0x04000208
|
||||
_020DD858: .word UNK_021D6B38
|
||||
_020DD858: .word ctrdgi_backup_irq
|
||||
_020DD85C: .word 0x0A005555
|
||||
_020DD860: .word 0x0A002AAA
|
||||
_020DD864: .word UNK_021D6B24
|
||||
_020DD864: .word CTRDGi_PollingSR
|
||||
|
||||
@@ -1,9 +1,32 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.extern CTRDGi_EraseFlashChipAsyncLE
|
||||
.extern CTRDGi_EraseFlashChipLE
|
||||
.extern CTRDGi_EraseFlashSectorAsyncLE
|
||||
.extern CTRDGi_PollingSR512kCOMMON
|
||||
.extern UNK_021D6B08
|
||||
.extern UNK_021D6B20
|
||||
.extern UNK_021D6B0C
|
||||
.extern AgbFlash
|
||||
.extern ctrdgi_flash_lock_id
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global PaMaxTime
|
||||
PaMaxTime: ; 0x021041C8
|
||||
.byte 0x0A, 0x00, 0x0A, 0x00, 0xF4, 0x01, 0xF4, 0x01
|
||||
|
||||
.global MN63F805MNP
|
||||
MN63F805MNP: ; 0x021041D0
|
||||
.word CTRDGi_WriteFlashSectorMX5
|
||||
.word CTRDGi_EraseFlashChipLE
|
||||
.word CTRDGi_EraseFlashSectorLE
|
||||
.word CTRDGi_WriteFlashSectorAsyncMX5
|
||||
.word CTRDGi_EraseFlashChipAsyncLE
|
||||
.word CTRDGi_EraseFlashSectorAsyncLE
|
||||
.word CTRDGi_PollingSR512kCOMMON
|
||||
.word PaMaxTime
|
||||
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x1B, 0x00
|
||||
|
||||
.text
|
||||
|
||||
@@ -46,7 +69,7 @@ CTRDGi_WriteFlashSectorCoreMX5: ; 0x020DD8C0
|
||||
stmia r4!, {r0-r3}
|
||||
ldmia r5!, {r0-r3}
|
||||
stmia r4!, {r0-r3}
|
||||
ldr r0, _020DD9E8 ; =UNK_021D6B20
|
||||
ldr r0, _020DD9E8 ; =AgbFlash
|
||||
ldr r1, [r5, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
str r1, [r4, #0x0]
|
||||
@@ -64,11 +87,11 @@ CTRDGi_WriteFlashSectorCoreMX5: ; 0x020DD8C0
|
||||
addne sp, sp, #0x28
|
||||
ldmneia sp!, {r4-r8,lr}
|
||||
bxne lr
|
||||
ldr r0, _020DD9F0 ; =UNK_021D6B0C
|
||||
ldr r0, _020DD9F0 ; =ctrdgi_flash_lock_id
|
||||
ldrh r0, [r0, #0x0]
|
||||
bl OS_LockCartridge
|
||||
ldr r7, _020DD9F4 ; =0x04000204
|
||||
ldr r0, _020DD9E8 ; =UNK_021D6B20
|
||||
ldr r0, _020DD9E8 ; =AgbFlash
|
||||
ldrh r3, [r7, #0x0]
|
||||
ldr r2, [r0, #0x0]
|
||||
ldrh r1, [r7, #0x0]
|
||||
@@ -103,7 +126,7 @@ _020DD984:
|
||||
bne _020DD984
|
||||
_020DD9B8:
|
||||
ldr r2, _020DD9F4 ; =0x04000204
|
||||
ldr r0, _020DD9F0 ; =UNK_021D6B0C
|
||||
ldr r0, _020DD9F0 ; =ctrdgi_flash_lock_id
|
||||
ldrh r1, [r2, #0x0]
|
||||
bic r1, r1, #0x3
|
||||
orr r1, r1, r7
|
||||
@@ -115,8 +138,8 @@ _020DD9B8:
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DD9E8: .word UNK_021D6B20
|
||||
_020DD9E8: .word AgbFlash
|
||||
_020DD9EC: .word 0x000080FF
|
||||
_020DD9F0: .word UNK_021D6B0C
|
||||
_020DD9F0: .word ctrdgi_flash_lock_id
|
||||
_020DD9F4: .word 0x04000204
|
||||
_020DD9F8: .word UNK_021D6B08
|
||||
|
||||
@@ -7,52 +7,52 @@
|
||||
UNK_021D6B08: ; 0x021D6B08
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B0C
|
||||
UNK_021D6B0C: ; 0x021D6B0C
|
||||
.global ctrdgi_flash_lock_id
|
||||
ctrdgi_flash_lock_id: ; 0x021D6B0C
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B10
|
||||
UNK_021D6B10: ; 0x021D6B10
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B14
|
||||
UNK_021D6B14: ; 0x021D6B14
|
||||
.global CTRDGi_WriteAgbFlashSector
|
||||
CTRDGi_WriteAgbFlashSector: ; 0x021D6B14
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B18
|
||||
UNK_021D6B18: ; 0x021D6B18
|
||||
.global CTRDGi_WriteAgbFlashSectorAsync
|
||||
CTRDGi_WriteAgbFlashSectorAsync: ; 0x021D6B18
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B1C
|
||||
UNK_021D6B1C: ; 0x021D6B1C
|
||||
.global CTRDGi_EraseAgbFlashChipAsync
|
||||
CTRDGi_EraseAgbFlashChipAsync: ; 0x021D6B1C
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B20
|
||||
UNK_021D6B20: ; 0x021D6B20
|
||||
.global AgbFlash
|
||||
AgbFlash: ; 0x021D6B20
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B24
|
||||
UNK_021D6B24: ; 0x021D6B24
|
||||
.global CTRDGi_PollingSR
|
||||
CTRDGi_PollingSR: ; 0x021D6B24
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B28
|
||||
UNK_021D6B28: ; 0x021D6B28
|
||||
.global ctrdgi_fl_maxtime
|
||||
ctrdgi_fl_maxtime: ; 0x021D6B28
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B2C
|
||||
UNK_021D6B2C: ; 0x021D6B2C
|
||||
.global CTRDGi_EraseAgbFlashSector
|
||||
CTRDGi_EraseAgbFlashSector: ; 0x021D6B2C
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B30
|
||||
UNK_021D6B30: ; 0x021D6B30
|
||||
.global CTRDGi_EraseAgbFlashSectorAsync
|
||||
CTRDGi_EraseAgbFlashSectorAsync: ; 0x021D6B30
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B34
|
||||
UNK_021D6B34: ; 0x021D6B34
|
||||
.global CTRDGi_EraseAgbFlashChip
|
||||
CTRDGi_EraseAgbFlashChip: ; 0x021D6B34
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B38
|
||||
UNK_021D6B38: ; 0x021D6B38
|
||||
.global ctrdgi_backup_irq
|
||||
ctrdgi_backup_irq: ; 0x021D6B38
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D6B3C
|
||||
@@ -63,8 +63,8 @@ UNK_021D6B3C: ; 0x021D6B3C
|
||||
UNK_021D6B44: ; 0x021D6B44
|
||||
.space 0x8
|
||||
|
||||
.global UNK_021D6B4C
|
||||
UNK_021D6B4C: ; 0x021D6B4C
|
||||
.global ctrdgi_sram_lock_id
|
||||
ctrdgi_sram_lock_id: ; 0x021D6B4C
|
||||
.space 0x4
|
||||
|
||||
.text
|
||||
@@ -103,14 +103,14 @@ CTRDG_VerifyAgbFlash:
|
||||
CTRDG_WriteAgbFlashSector:
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r2, _020DBF90 ; =UNK_021D6B14
|
||||
ldr r2, _020DBF90 ; =CTRDGi_WriteAgbFlashSector
|
||||
ldr r2, [r2, #0x0]
|
||||
blx r2
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DBF90: .word UNK_021D6B14
|
||||
_020DBF90: .word CTRDGi_WriteAgbFlashSector
|
||||
|
||||
arm_func_start CTRDG_ReadAgbFlash
|
||||
CTRDG_ReadAgbFlash: ; 0x020DBF94
|
||||
@@ -178,7 +178,7 @@ CTRDGi_VerifyAgbFlashCore: ; 0x020DC04C
|
||||
stmia r4!, {r0-r3}
|
||||
ldmia r5!, {r0-r3}
|
||||
stmia r4!, {r0-r3}
|
||||
ldr r0, _020DC128 ; =UNK_021D6B0C
|
||||
ldr r0, _020DC128 ; =ctrdgi_flash_lock_id
|
||||
ldr r1, [r5, #0x0]
|
||||
ldrh r0, [r0, #0x0]
|
||||
str r1, [r4, #0x0]
|
||||
@@ -187,7 +187,7 @@ CTRDGi_VerifyAgbFlashCore: ; 0x020DC04C
|
||||
ldr r4, [sp, #0x18]
|
||||
bl OS_LockCartridge
|
||||
ldr r3, _020DC12C ; =0x04000204
|
||||
ldr r0, _020DC130 ; =UNK_021D6B20
|
||||
ldr r0, _020DC130 ; =AgbFlash
|
||||
ldrh r2, [r3, #0x0]
|
||||
ldrh r1, [r3, #0x0]
|
||||
and r7, r2, #0x3
|
||||
@@ -205,7 +205,7 @@ CTRDGi_VerifyAgbFlashCore: ; 0x020DC04C
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r6, r0, lsr #0x10
|
||||
_020DC0D4:
|
||||
ldr r1, _020DC130 ; =UNK_021D6B20
|
||||
ldr r1, _020DC130 ; =AgbFlash
|
||||
mov r0, r5
|
||||
ldr r1, [r1, #0x0]
|
||||
mov r2, r4
|
||||
@@ -214,7 +214,7 @@ _020DC0D4:
|
||||
add r1, r1, #0xa000000
|
||||
bl CTRDGi_VerifyFlashSectorCore
|
||||
ldr r3, _020DC12C ; =0x04000204
|
||||
ldr r1, _020DC128 ; =UNK_021D6B0C
|
||||
ldr r1, _020DC128 ; =ctrdgi_flash_lock_id
|
||||
ldrh r2, [r3, #0x0]
|
||||
mov r4, r0
|
||||
bic r0, r2, #0x3
|
||||
@@ -227,9 +227,9 @@ _020DC0D4:
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DC128: .word UNK_021D6B0C
|
||||
_020DC128: .word ctrdgi_flash_lock_id
|
||||
_020DC12C: .word 0x04000204
|
||||
_020DC130: .word UNK_021D6B20
|
||||
_020DC130: .word AgbFlash
|
||||
|
||||
arm_func_start CTRDGi_VerifyFlashSectorCore
|
||||
CTRDGi_VerifyFlashSectorCore: ; 0x020DC134
|
||||
@@ -259,7 +259,7 @@ CTRDGi_ReadAgbFlashCore: ; 0x020DC168
|
||||
stmia r4!, {r0-r3}
|
||||
ldmia r5!, {r0-r3}
|
||||
stmia r4!, {r0-r3}
|
||||
ldr r0, _020DC25C ; =UNK_021D6B0C
|
||||
ldr r0, _020DC25C ; =ctrdgi_flash_lock_id
|
||||
ldr r1, [r5, #0x0]
|
||||
ldrh r0, [r0, #0x0]
|
||||
str r1, [r4, #0x0]
|
||||
@@ -269,7 +269,7 @@ CTRDGi_ReadAgbFlashCore: ; 0x020DC168
|
||||
ldr r4, [sp, #0x18]
|
||||
bl OS_LockCartridge
|
||||
ldr r3, _020DC260 ; =0x04000204
|
||||
ldr r0, _020DC264 ; =UNK_021D6B20
|
||||
ldr r0, _020DC264 ; =AgbFlash
|
||||
ldrh r2, [r3, #0x0]
|
||||
ldrh r1, [r3, #0x0]
|
||||
and r8, r2, #0x3
|
||||
@@ -287,7 +287,7 @@ CTRDGi_ReadAgbFlashCore: ; 0x020DC168
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, lsr #0x10
|
||||
_020DC1F4:
|
||||
ldr r0, _020DC264 ; =UNK_021D6B20
|
||||
ldr r0, _020DC264 ; =AgbFlash
|
||||
cmp r4, #0x0
|
||||
ldr r0, [r0, #0x0]
|
||||
sub r4, r4, #0x1
|
||||
@@ -304,7 +304,7 @@ _020DC218:
|
||||
bne _020DC218
|
||||
_020DC22C:
|
||||
ldr r2, _020DC260 ; =0x04000204
|
||||
ldr r0, _020DC25C ; =UNK_021D6B0C
|
||||
ldr r0, _020DC25C ; =ctrdgi_flash_lock_id
|
||||
ldrh r1, [r2, #0x0]
|
||||
bic r1, r1, #0x3
|
||||
orr r1, r1, r8
|
||||
@@ -316,9 +316,9 @@ _020DC22C:
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DC25C: .word UNK_021D6B0C
|
||||
_020DC25C: .word ctrdgi_flash_lock_id
|
||||
_020DC260: .word 0x04000204
|
||||
_020DC264: .word UNK_021D6B20
|
||||
_020DC264: .word AgbFlash
|
||||
|
||||
arm_func_start CTRDGi_PollingSR1MCOMMON
|
||||
CTRDGi_PollingSR1MCOMMON: ; 0x020DC268
|
||||
@@ -398,7 +398,7 @@ _020DC33C:
|
||||
_020DC360: ; 0x020DC360
|
||||
cmp r7, r0
|
||||
beq _020DC390
|
||||
ldr r0, _020DC3AC ; =UNK_021D6B20
|
||||
ldr r0, _020DC3AC ; =AgbFlash
|
||||
ldr r0, [r0, #0x0]
|
||||
ldrh r0, [r0, #0x18]
|
||||
cmp r0, #0xc2
|
||||
@@ -418,7 +418,7 @@ _020DC394: ; 0x020DC394
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DC3A8: .word UNK_021D6B10
|
||||
_020DC3AC: .word UNK_021D6B20
|
||||
_020DC3AC: .word AgbFlash
|
||||
_020DC3B0: .word 0x0A005555
|
||||
|
||||
arm_func_start CTRDGi_ReadSrFunc
|
||||
@@ -463,7 +463,7 @@ _020DC42C: .word UNK_021D6B10
|
||||
StartFlashTimer: ; 0x020DC430
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r1, _020DC47C ; =UNK_021D6B28
|
||||
ldr r1, _020DC47C ; =ctrdgi_fl_maxtime
|
||||
ldr r2, _020DC480 ; =UNK_021D6B10
|
||||
mov r3, #0x0
|
||||
ldr r1, [r1, #0x0]
|
||||
@@ -481,7 +481,7 @@ StartFlashTimer: ; 0x020DC430
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DC47C: .word UNK_021D6B28
|
||||
_020DC47C: .word ctrdgi_fl_maxtime
|
||||
_020DC480: .word UNK_021D6B10
|
||||
_020DC484: .word UNK_021D6B3C
|
||||
_020DC488: .word UNK_021D6B44
|
||||
@@ -493,7 +493,7 @@ CTRDGi_ReadFlashID: ; 0x020DC48C
|
||||
ldr r5, _020DC590 ; =0x04000208
|
||||
mov r0, #0x0
|
||||
ldrh r2, [r5, #0x0]
|
||||
ldr r1, _020DC594 ; =UNK_021D6B38
|
||||
ldr r1, _020DC594 ; =ctrdgi_backup_irq
|
||||
ldr r4, _020DC598 ; =0x0A005555
|
||||
strh r0, [r5, #0x0]
|
||||
str r2, [r1, #0x0]
|
||||
@@ -527,7 +527,7 @@ _020DC4FC:
|
||||
orr r4, r0, r4, lsr #0x10
|
||||
ldrh r2, [r12, #0x0]
|
||||
mov r0, #0x0
|
||||
ldr r1, _020DC594 ; =UNK_021D6B38
|
||||
ldr r1, _020DC594 ; =ctrdgi_backup_irq
|
||||
strh r0, [r12, #0x0]
|
||||
ldr r5, _020DC598 ; =0x0A005555
|
||||
str r2, [r1, #0x0]
|
||||
@@ -559,7 +559,7 @@ _020DC580:
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DC590: .word 0x04000208
|
||||
_020DC594: .word UNK_021D6B38
|
||||
_020DC594: .word ctrdgi_backup_irq
|
||||
_020DC598: .word 0x0A005555
|
||||
_020DC59C: .word 0x0A002AAA
|
||||
_020DC5A0: .word UNK_021D6B10
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.extern UNK_021D6944
|
||||
.extern CTRDGi_Work
|
||||
|
||||
.section .bss
|
||||
|
||||
@@ -104,7 +104,7 @@ CTRDGi_CallbackForInitModuleInfo: ; 0x020DBA2C
|
||||
sub sp, sp, #0x4
|
||||
and r0, r1, #0x3f
|
||||
cmp r0, #0x1
|
||||
ldreq r0, _020DBA64 ; =UNK_021D6944
|
||||
ldreq r0, _020DBA64 ; =CTRDGi_Work
|
||||
moveq r1, #0x1
|
||||
streqh r1, [r0, #0x0]
|
||||
addeq sp, sp, #0x4
|
||||
@@ -115,7 +115,7 @@ CTRDGi_CallbackForInitModuleInfo: ; 0x020DBA2C
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020DBA64: .word UNK_021D6944
|
||||
_020DBA64: .word CTRDGi_Work
|
||||
|
||||
arm_func_start CTRDGi_InitModuleInfo
|
||||
CTRDGi_InitModuleInfo: ; 0x020DBA68
|
||||
@@ -140,7 +140,7 @@ CTRDGi_InitModuleInfo: ; 0x020DBA68
|
||||
ldr r3, _020DBC58 ; =0x04000208
|
||||
mov r2, #0x1
|
||||
ldrh r4, [r3, #0x0]
|
||||
ldr r1, _020DBC5C ; =UNK_021D6944
|
||||
ldr r1, _020DBC5C ; =CTRDGi_Work
|
||||
mov r6, r0
|
||||
strh r2, [r3, #0x0]
|
||||
ldrh r0, [r1, #0x2]
|
||||
@@ -173,7 +173,7 @@ CTRDGi_InitModuleInfo: ; 0x020DBA68
|
||||
orr r1, r1, r5, lsl #0xf
|
||||
strh r1, [r2, #0x0]
|
||||
bl CTRDGi_RestoreAccessCycle
|
||||
ldr r0, _020DBC5C ; =UNK_021D6944
|
||||
ldr r0, _020DBC5C ; =CTRDGi_Work
|
||||
add r1, sp, #0x0
|
||||
ldrh r0, [r0, #0x2]
|
||||
bl CTRDGi_UnlockByProcessor
|
||||
@@ -227,7 +227,7 @@ _020DBBDC:
|
||||
mov r0, r0, lsl #0x6
|
||||
orr r0, r0, #0x1
|
||||
bl CTRDGi_SendtoPxi
|
||||
ldr r5, _020DBC5C ; =UNK_021D6944
|
||||
ldr r5, _020DBC5C ; =CTRDGi_Work
|
||||
ldrh r0, [r5, #0x0]
|
||||
cmp r0, #0x1
|
||||
beq _020DBC30
|
||||
@@ -251,7 +251,7 @@ _020DBC30:
|
||||
_020DBC50: .word UNK_021D6948
|
||||
_020DBC54: .word 0x04000300
|
||||
_020DBC58: .word 0x04000208
|
||||
_020DBC5C: .word UNK_021D6944
|
||||
_020DBC5C: .word CTRDGi_Work
|
||||
_020DBC60: .word 0x04000204
|
||||
_020DBC64: .word UNK_021D6960
|
||||
_020DBC68: .word 0x08000080
|
||||
|
||||
@@ -1,269 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
.section .bss
|
||||
|
||||
.global UNK_021D5364
|
||||
UNK_021D5364: ; 0x021D5364
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021D5368
|
||||
UNK_021D5368: ; 0x021D5368
|
||||
.space 0x80
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start PXIi_HandlerRecvFifoNotEmpty
|
||||
PXIi_HandlerRecvFifoNotEmpty: ; 0x020CFBBC
|
||||
stmdb sp!, {r4-r10,lr}
|
||||
sub sp, sp, #0x8
|
||||
ldr sl, _020CFCD4 ; =0x04000184
|
||||
ldr r5, _020CFCD8 ; =UNK_021D5368
|
||||
ldr r4, _020CFCDC ; =0x04000188
|
||||
mov r7, #0x4100000
|
||||
mov r6, #0x0
|
||||
mvn r8, #0x3
|
||||
mvn r9, #0x2
|
||||
_020CFBE0:
|
||||
ldrh r0, [r10, #0x0]
|
||||
ands r0, r0, #0x4000
|
||||
ldrneh r0, [r10, #0x0]
|
||||
movne r1, r9
|
||||
orrne r0, r0, #0xc000
|
||||
strneh r0, [r10, #0x0]
|
||||
bne _020CFC28
|
||||
bl OS_DisableInterrupts
|
||||
ldrh r1, [r10, #0x0]
|
||||
ands r1, r1, #0x100
|
||||
beq _020CFC18
|
||||
bl OS_RestoreInterrupts
|
||||
mov r1, r8
|
||||
b _020CFC28
|
||||
_020CFC18:
|
||||
ldr r1, [r7, #0x0]
|
||||
str r1, [sp, #0x0]
|
||||
bl OS_RestoreInterrupts
|
||||
mov r1, r6
|
||||
_020CFC28:
|
||||
cmp r1, r8
|
||||
addeq sp, sp, #0x8
|
||||
ldmeqia sp!, {r4-r10,lr}
|
||||
bxeq lr
|
||||
mvn r0, #0x2
|
||||
cmp r1, r0
|
||||
beq _020CFBE0
|
||||
ldr r1, [sp, #0x0]
|
||||
mov r0, r1, lsl #0x1b
|
||||
movs r0, r0, lsr #0x1b
|
||||
beq _020CFBE0
|
||||
ldr r3, [r5, r0, lsl #0x2]
|
||||
cmp r3, #0x0
|
||||
beq _020CFC74
|
||||
mov r2, r1, lsl #0x1a
|
||||
mov r1, r1, lsr #0x6
|
||||
mov r2, r2, lsr #0x1f
|
||||
blx r3
|
||||
b _020CFBE0
|
||||
_020CFC74:
|
||||
mov r0, r1, lsl #0x1a
|
||||
movs r0, r0, lsr #0x1f
|
||||
bne _020CFBE0
|
||||
orr r0, r1, #0x20
|
||||
str r0, [sp, #0x0]
|
||||
ldrh r0, [r10, #0x0]
|
||||
ands r0, r0, #0x4000
|
||||
ldrneh r0, [r10, #0x0]
|
||||
orrne r0, r0, #0xc000
|
||||
strneh r0, [r10, #0x0]
|
||||
bne _020CFBE0
|
||||
bl OS_DisableInterrupts
|
||||
ldrh r1, [r10, #0x0]
|
||||
ands r1, r1, #0x2
|
||||
beq _020CFCB8
|
||||
bl OS_RestoreInterrupts
|
||||
b _020CFBE0
|
||||
_020CFCB8:
|
||||
ldr r1, [sp, #0x0]
|
||||
str r1, [r4, #0x0]
|
||||
bl OS_RestoreInterrupts
|
||||
b _020CFBE0
|
||||
_020CFCC8:
|
||||
add sp, sp, #0x8
|
||||
ldmia sp!, {r4-r10, lr}
|
||||
bx lr
|
||||
_020CFCD4: .word 0x04000184
|
||||
_020CFCD8: .word UNK_021D5368
|
||||
_020CFCDC: .word 0x04000188
|
||||
|
||||
arm_func_start PXI_SendWordByFifo
|
||||
PXI_SendWordByFifo:
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r3, [sp, #0x0]
|
||||
and r0, r0, #0x1f
|
||||
bic r3, r3, #0x1f
|
||||
orr r12, r3, r0
|
||||
bic r3, r12, #0x20
|
||||
and r0, r2, #0x1
|
||||
orr r3, r3, r0, lsl #0x5
|
||||
str r12, [sp, #0x0]
|
||||
and r2, r3, #0x3f
|
||||
bic r0, r1, #0xfc000000
|
||||
orr r0, r2, r0, lsl #0x6
|
||||
str r3, [sp, #0x0]
|
||||
ldr r2, _020CFD8C ; =0x04000184
|
||||
str r0, [sp, #0x0]
|
||||
ldrh r0, [r2, #0x0]
|
||||
ands r0, r0, #0x4000
|
||||
ldrneh r1, [r2, #0x0]
|
||||
addne sp, sp, #0x4
|
||||
mvnne r0, #0x0
|
||||
orrne r1, r1, #0xc000
|
||||
strneh r1, [r2, #0x0]
|
||||
ldmneia sp!, {lr}
|
||||
bxne lr
|
||||
bl OS_DisableInterrupts
|
||||
ldr r1, _020CFD8C ; =0x04000184
|
||||
ldrh r1, [r1, #0x0]
|
||||
ands r1, r1, #0x2
|
||||
beq _020CFD6C
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #0x4
|
||||
mvn r0, #0x1
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
_020CFD6C:
|
||||
ldr r2, [sp, #0x0]
|
||||
ldr r1, _020CFD90 ; =0x04000188
|
||||
str r2, [r1, #0x0]
|
||||
bl OS_RestoreInterrupts
|
||||
_020CFD7C:
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmfd sp!, {lr}
|
||||
bx lr
|
||||
_020CFD8C: .word 0x04000184
|
||||
_020CFD90: .word 0x04000188
|
||||
|
||||
arm_func_start PXI_IsCallbackReady
|
||||
PXI_IsCallbackReady:
|
||||
ldr r2, _020CFDB8 ; =0x027FFC00
|
||||
mov r3, #0x1
|
||||
add r1, r2, r1, lsl #0x2
|
||||
mov r2, r3, lsl r0
|
||||
ldr r0, [r1, #0x388]
|
||||
ands r0, r2, r0
|
||||
moveq r3, #0x0
|
||||
mov r0, r3
|
||||
bx lr
|
||||
.balign 4
|
||||
_020CFDB8: .word 0x027FFC00
|
||||
|
||||
arm_func_start PXI_SetFifoRecvCallback
|
||||
PXI_SetFifoRecvCallback: ; 0x020CFDBC
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r4, r0
|
||||
mov r5, r1
|
||||
bl OS_DisableInterrupts
|
||||
ldr r1, _020CFE20 ; =UNK_021D5368
|
||||
cmp r5, #0x0
|
||||
str r5, [r1, r4, lsl #0x2]
|
||||
beq _020CFDF8
|
||||
ldr r3, _020CFE24 ; =0x027FFC00
|
||||
mov r1, #0x1
|
||||
ldr r2, [r3, #0x388]
|
||||
orr r1, r2, r1, lsl r4
|
||||
str r1, [r3, #0x388]
|
||||
b _020CFE10
|
||||
_020CFDF8:
|
||||
ldr r3, _020CFE24 ; =0x027FFC00
|
||||
mov r1, #0x1
|
||||
mvn r1, r1, lsl r4
|
||||
ldr r2, [r3, #0x388]
|
||||
and r1, r2, r1
|
||||
str r1, [r3, #0x388]
|
||||
_020CFE10:
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020CFE20: .word UNK_021D5368
|
||||
_020CFE24: .word 0x027FFC00
|
||||
|
||||
arm_func_start PXI_InitFifo
|
||||
PXI_InitFifo: ; 0x020CFE28
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
bl OS_DisableInterrupts
|
||||
ldr r1, _020CFF18 ; =UNK_021D5364
|
||||
mov r4, r0
|
||||
ldrh r0, [r1, #0x0]
|
||||
cmp r0, #0x0
|
||||
bne _020CFF04
|
||||
mov r2, #0x1
|
||||
ldr r0, _020CFF1C ; =0x027FFC00
|
||||
strh r2, [r1, #0x0]
|
||||
mov r2, #0x0
|
||||
str r2, [r0, #0x388]
|
||||
ldr r0, _020CFF20 ; =UNK_021D5368
|
||||
mov r1, r2
|
||||
_020CFE64:
|
||||
str r1, [r0, r2, lsl #0x2]
|
||||
add r2, r2, #0x1
|
||||
cmp r2, #0x20
|
||||
blt _020CFE64
|
||||
ldr r2, _020CFF24 ; =0x0000C408
|
||||
ldr r1, _020CFF28 ; =0x04000184
|
||||
mov r0, #0x40000
|
||||
strh r2, [r1, #0x0]
|
||||
bl OS_ResetRequestIrqMask
|
||||
ldr r1, _020CFF2C ; =PXIi_HandlerRecvFifoNotEmpty
|
||||
mov r0, #0x40000
|
||||
bl OS_SetIrqFunction
|
||||
mov r0, #0x40000
|
||||
bl OS_EnableIrqMask
|
||||
mov r12, #0x0
|
||||
ldr r3, _020CFF30 ; =0x04000180
|
||||
mov r1, r12
|
||||
mov r2, #0x3e8
|
||||
_020CFEAC:
|
||||
ldrh r0, [r3, #0x0]
|
||||
ands lr, r0, #0xf
|
||||
mov r0, lr, lsl #0x8
|
||||
strh r0, [r3, #0x0]
|
||||
bne _020CFEC8
|
||||
cmp r12, #0x4
|
||||
bgt _020CFF04
|
||||
_020CFEC8:
|
||||
ldrh r0, [r3, #0x0]
|
||||
mov r5, r2
|
||||
and r0, r0, #0xf
|
||||
cmp r0, lr
|
||||
bne _020CFEFC
|
||||
_020CFEDC:
|
||||
cmp r5, #0x0
|
||||
movle r12, r1
|
||||
ble _020CFEFC
|
||||
ldrh r0, [r3, #0x0]
|
||||
sub r5, r5, #0x1
|
||||
and r0, r0, #0xf
|
||||
cmp r0, lr
|
||||
beq _020CFEDC
|
||||
_020CFEFC:
|
||||
add r12, r12, #0x1
|
||||
b _020CFEAC
|
||||
_020CFF04:
|
||||
mov r0, r4
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020CFF18: .word UNK_021D5364
|
||||
_020CFF1C: .word 0x027FFC00
|
||||
_020CFF20: .word UNK_021D5368
|
||||
_020CFF24: .word 0x0000C408
|
||||
_020CFF28: .word 0x04000184
|
||||
_020CFF2C: .word PXIi_HandlerRecvFifoNotEmpty
|
||||
_020CFF30: .word 0x04000180
|
||||
@@ -1,239 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.extern gMain
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start FUN_02024F30
|
||||
FUN_02024F30: ; 0x02024F30
|
||||
push {r4, lr}
|
||||
mov r1, #0x2
|
||||
bl AllocFromHeap
|
||||
add r4, r0, #0x0
|
||||
bl Options_init
|
||||
add r0, r4, #0x0
|
||||
pop {r4, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start FUN_02024F44
|
||||
FUN_02024F44: ; 0x02024F44
|
||||
ldr r3, _02024F4C ; =MI_CpuCopy8
|
||||
mov r2, #0x2
|
||||
bx r3
|
||||
nop
|
||||
_02024F4C: .word MI_CpuCopy8
|
||||
|
||||
thumb_func_start Options_init
|
||||
Options_init: ; 0x02024F50
|
||||
push {r4, lr}
|
||||
add r4, r0, #0x0
|
||||
mov r1, #0x0
|
||||
mov r2, #0x2
|
||||
bl MI_CpuFill8
|
||||
ldrh r1, [r4, #0x0]
|
||||
mov r0, #0xf
|
||||
bic r1, r0
|
||||
mov r0, #0x1
|
||||
orr r0, r1
|
||||
strh r0, [r4, #0x0]
|
||||
ldrh r1, [r4, #0x0]
|
||||
mov r0, #0x30
|
||||
bic r1, r0
|
||||
strh r1, [r4, #0x0]
|
||||
ldrh r1, [r4, #0x0]
|
||||
mov r0, #0x40
|
||||
bic r1, r0
|
||||
strh r1, [r4, #0x0]
|
||||
ldrh r1, [r4, #0x0]
|
||||
mov r0, #0x80
|
||||
bic r1, r0
|
||||
strh r1, [r4, #0x0]
|
||||
ldrh r1, [r4, #0x0]
|
||||
ldr r0, _02024F94 ; =0xFFFFFCFF
|
||||
and r0, r1
|
||||
strh r0, [r4, #0x0]
|
||||
ldrh r1, [r4, #0x0]
|
||||
ldr r0, _02024F98 ; =0xFFFF83FF
|
||||
and r0, r1
|
||||
strh r0, [r4, #0x0]
|
||||
pop {r4, pc}
|
||||
nop
|
||||
_02024F94: .word 0xFFFFFCFF
|
||||
_02024F98: .word 0xFFFF83FF
|
||||
|
||||
thumb_func_start FUN_02024F9C
|
||||
FUN_02024F9C: ; 0x02024F9C
|
||||
push {r3, lr}
|
||||
cmp r0, #0x0
|
||||
beq _02024FAC
|
||||
bl Sav2_PlayerData_GetOptionsAddr
|
||||
bl FUN_02025064
|
||||
add r1, r0, #0x0
|
||||
_02024FAC:
|
||||
cmp r1, #0x0
|
||||
beq _02024FCA
|
||||
cmp r1, #0x1
|
||||
beq _02024FBA
|
||||
cmp r1, #0x2
|
||||
beq _02024FC2
|
||||
b _02024FCA
|
||||
_02024FBA:
|
||||
ldr r0, _02024FD4 ; =gMain
|
||||
mov r1, #0x1
|
||||
str r1, [r0, #0x34]
|
||||
pop {r3, pc}
|
||||
_02024FC2:
|
||||
ldr r0, _02024FD4 ; =gMain
|
||||
mov r1, #0x3
|
||||
str r1, [r0, #0x34]
|
||||
pop {r3, pc}
|
||||
_02024FCA:
|
||||
ldr r0, _02024FD4 ; =gMain
|
||||
mov r1, #0x0
|
||||
str r1, [r0, #0x34]
|
||||
pop {r3, pc}
|
||||
nop
|
||||
_02024FD4: .word gMain
|
||||
|
||||
thumb_func_start FUN_02024FD8
|
||||
FUN_02024FD8: ; 0x02024FD8
|
||||
ldrh r0, [r0, #0x0]
|
||||
lsl r0, r0, #0x1c
|
||||
lsr r0, r0, #0x1c
|
||||
bx lr
|
||||
|
||||
thumb_func_start FUN_02024FE0
|
||||
FUN_02024FE0: ; 0x02024FE0
|
||||
ldrh r3, [r0, #0x0]
|
||||
mov r2, #0xf
|
||||
lsl r1, r1, #0x10
|
||||
bic r3, r2
|
||||
lsr r2, r1, #0x10
|
||||
mov r1, #0xf
|
||||
and r1, r2
|
||||
orr r1, r3
|
||||
strh r1, [r0, #0x0]
|
||||
bx lr
|
||||
|
||||
thumb_func_start FUN_02024FF4
|
||||
FUN_02024FF4: ; 0x02024FF4
|
||||
push {r3, lr}
|
||||
bl FUN_02024FD8
|
||||
cmp r0, #0x0
|
||||
bne _02025002
|
||||
mov r0, #0x8
|
||||
pop {r3, pc}
|
||||
_02025002:
|
||||
cmp r0, #0x1
|
||||
bne _0202500A
|
||||
mov r0, #0x4
|
||||
pop {r3, pc}
|
||||
_0202500A:
|
||||
mov r0, #0x1
|
||||
pop {r3, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start FUN_02025010
|
||||
FUN_02025010: ; 0x02025010
|
||||
ldrh r0, [r0, #0x0]
|
||||
lsl r0, r0, #0x1a
|
||||
lsr r0, r0, #0x1e
|
||||
bx lr
|
||||
|
||||
thumb_func_start FUN_02025018
|
||||
FUN_02025018: ; 0x02025018
|
||||
lsl r1, r1, #0x10
|
||||
lsr r1, r1, #0x10
|
||||
lsl r1, r1, #0x1e
|
||||
ldrh r3, [r0, #0x0]
|
||||
mov r2, #0x30
|
||||
lsr r1, r1, #0x1a
|
||||
bic r3, r2
|
||||
orr r1, r3
|
||||
strh r1, [r0, #0x0]
|
||||
bx lr
|
||||
|
||||
thumb_func_start FUN_0202502C
|
||||
FUN_0202502C: ; 0x0202502C
|
||||
ldrh r0, [r0, #0x0]
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x1f
|
||||
bx lr
|
||||
|
||||
thumb_func_start FUN_02025034
|
||||
FUN_02025034: ; 0x02025034
|
||||
lsl r1, r1, #0x10
|
||||
lsr r1, r1, #0x10
|
||||
lsl r1, r1, #0x1f
|
||||
ldrh r3, [r0, #0x0]
|
||||
mov r2, #0x80
|
||||
lsr r1, r1, #0x18
|
||||
bic r3, r2
|
||||
orr r1, r3
|
||||
strh r1, [r0, #0x0]
|
||||
bx lr
|
||||
|
||||
thumb_func_start FUN_02025048
|
||||
FUN_02025048: ; 0x02025048
|
||||
ldrh r0, [r0, #0x0]
|
||||
lsl r0, r0, #0x19
|
||||
lsr r0, r0, #0x1f
|
||||
bx lr
|
||||
|
||||
thumb_func_start FUN_02025050
|
||||
FUN_02025050: ; 0x02025050
|
||||
lsl r1, r1, #0x10
|
||||
lsr r1, r1, #0x10
|
||||
lsl r1, r1, #0x1f
|
||||
ldrh r3, [r0, #0x0]
|
||||
mov r2, #0x40
|
||||
lsr r1, r1, #0x19
|
||||
bic r3, r2
|
||||
orr r1, r3
|
||||
strh r1, [r0, #0x0]
|
||||
bx lr
|
||||
|
||||
thumb_func_start FUN_02025064
|
||||
FUN_02025064: ; 0x02025064
|
||||
ldrh r0, [r0, #0x0]
|
||||
lsl r0, r0, #0x16
|
||||
lsr r0, r0, #0x1e
|
||||
bx lr
|
||||
|
||||
thumb_func_start FUN_0202506C
|
||||
FUN_0202506C: ; 0x0202506C
|
||||
lsl r1, r1, #0x10
|
||||
lsr r1, r1, #0x10
|
||||
lsl r1, r1, #0x1e
|
||||
ldrh r3, [r0, #0x0]
|
||||
ldr r2, _02025080 ; =0xFFFFFCFF
|
||||
lsr r1, r1, #0x16
|
||||
and r2, r3
|
||||
orr r1, r2
|
||||
strh r1, [r0, #0x0]
|
||||
bx lr
|
||||
.balign 4
|
||||
_02025080: .word 0xFFFFFCFF
|
||||
|
||||
thumb_func_start FUN_02025084
|
||||
FUN_02025084: ; 0x02025084
|
||||
ldrh r0, [r0, #0x0]
|
||||
lsl r0, r0, #0x11
|
||||
lsr r0, r0, #0x1b
|
||||
bx lr
|
||||
|
||||
thumb_func_start FUN_0202508C
|
||||
FUN_0202508C: ; 0x0202508C
|
||||
lsl r1, r1, #0x10
|
||||
lsr r1, r1, #0x10
|
||||
lsl r1, r1, #0x1b
|
||||
ldrh r3, [r0, #0x0]
|
||||
ldr r2, _020250A0 ; =0xFFFF83FF
|
||||
lsr r1, r1, #0x11
|
||||
and r2, r3
|
||||
orr r1, r2
|
||||
strh r1, [r0, #0x0]
|
||||
bx lr
|
||||
.balign 4
|
||||
_020250A0: .word 0xFFFF83FF
|
||||
+1
-1
@@ -2248,7 +2248,7 @@ FUN_0203AAA0: ; 0x0203AAA0
|
||||
ldr r1, _0203AAF8 ; =UNK_020F34E0
|
||||
ldr r2, _0203AAF4 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r6, #0x0]
|
||||
ldr r1, _0203AAFC ; =FUN_0203AB00
|
||||
add r0, r5, #0x0
|
||||
|
||||
+3
-3
@@ -366,7 +366,7 @@ FUN_02041970: ; 0x02041970
|
||||
add r5, r0, #0x0
|
||||
ldrh r0, [r4, #0x0]
|
||||
bl FUN_020395F4
|
||||
bl FUN_0203962C
|
||||
bl Field_TrainerIsDoubleBattle
|
||||
lsl r0, r0, #0x10
|
||||
lsr r0, r0, #0x10
|
||||
bne _020419D2
|
||||
@@ -430,7 +430,7 @@ FUN_020419F8: ; 0x020419F8
|
||||
add r5, r0, #0x0
|
||||
ldrh r0, [r4, #0x0]
|
||||
bl FUN_020395F4
|
||||
bl FUN_0203962C
|
||||
bl Field_TrainerIsDoubleBattle
|
||||
lsl r0, r0, #0x10
|
||||
lsr r0, r0, #0x10
|
||||
bne _02041A5A
|
||||
@@ -478,7 +478,7 @@ FUN_02041A80: ; 0x02041A80
|
||||
add r5, r0, #0x0
|
||||
ldrh r0, [r4, #0x0]
|
||||
bl FUN_020395F4
|
||||
bl FUN_0203962C
|
||||
bl Field_TrainerIsDoubleBattle
|
||||
strh r0, [r5, #0x0]
|
||||
mov r0, #0x0
|
||||
pop {r3-r5, pc}
|
||||
|
||||
@@ -755,8 +755,8 @@ FUN_020020B0: ; 0x020020B0
|
||||
pop {r3-r7, pc}
|
||||
.balign 4
|
||||
|
||||
thumb_func_start FUN_020020EC
|
||||
FUN_020020EC: ; 0x020020EC
|
||||
thumb_func_start CreateYesNoMenu
|
||||
CreateYesNoMenu: ; 0x020020EC
|
||||
push {r3-r7, lr}
|
||||
sub sp, #0x20
|
||||
ldr r5, [sp, #0x3c]
|
||||
@@ -777,13 +777,13 @@ FUN_020020EC: ; 0x020020EC
|
||||
mov r2, #0x29
|
||||
mov r3, #0x0
|
||||
add r6, r0, #0x0
|
||||
bl ListMenu_ItemFromMsgData
|
||||
bl ListMenu_ItemFromMsgData ; YES
|
||||
mov r3, #0x2a
|
||||
add r2, r3, #0x0
|
||||
add r0, r6, #0x0
|
||||
add r1, r4, #0x0
|
||||
sub r3, #0x2c
|
||||
bl ListMenu_ItemFromMsgData
|
||||
bl ListMenu_ItemFromMsgData ; NO
|
||||
add r0, r4, #0x0
|
||||
bl DestroyMsgData
|
||||
add r0, r5, #0x0
|
||||
@@ -834,15 +834,15 @@ FUN_020020EC: ; 0x020020EC
|
||||
nop
|
||||
_02002194: .word 0x00000141
|
||||
|
||||
thumb_func_start FUN_02002198
|
||||
FUN_02002198: ; 0x02002198
|
||||
thumb_func_start Std_CreateYesNoMenu
|
||||
Std_CreateYesNoMenu: ; 0x02002198
|
||||
push {r4, lr}
|
||||
sub sp, #0x8
|
||||
mov r4, #0x0
|
||||
str r4, [sp, #0x0]
|
||||
ldr r4, [sp, #0x10]
|
||||
str r4, [sp, #0x4]
|
||||
bl FUN_020020EC
|
||||
bl CreateYesNoMenu
|
||||
add sp, #0x8
|
||||
pop {r4, pc}
|
||||
|
||||
|
||||
@@ -2478,7 +2478,7 @@ FUN_020389CC: ; 0x020389CC
|
||||
mov r0, #0x0
|
||||
str r0, [r4, #0x18]
|
||||
ldr r0, [sp, #0x0]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
str r0, [r4, #0x1c]
|
||||
lsl r1, r6, #0x18
|
||||
ldr r0, [r5, #0xc]
|
||||
|
||||
+18
-18
@@ -879,7 +879,7 @@ FUN_02038C78: ; 0x02038C78
|
||||
add r5, r0, #0x0
|
||||
add r6, r1, #0x0
|
||||
add r7, r2, #0x0
|
||||
bl FUN_02038E20
|
||||
bl CreateFieldContext
|
||||
add r4, r0, #0x0
|
||||
mov r0, #0x0
|
||||
str r0, [sp, #0x0]
|
||||
@@ -932,7 +932,7 @@ FUN_02038CD8: ; 0x02038CD8
|
||||
add r5, r3, #0x0
|
||||
bl FUN_02046528
|
||||
str r0, [sp, #0x8]
|
||||
bl FUN_02038E20
|
||||
bl CreateFieldContext
|
||||
add r4, r0, #0x0
|
||||
ldr r0, [sp, #0x8]
|
||||
ldr r3, [sp, #0x4]
|
||||
@@ -958,7 +958,7 @@ FUN_02038D10: ; 0x02038D10
|
||||
add r7, r2, #0x0
|
||||
bl FUN_02046528
|
||||
str r0, [sp, #0x4]
|
||||
bl FUN_02038E20
|
||||
bl CreateFieldContext
|
||||
add r4, r0, #0x0
|
||||
mov r0, #0x0
|
||||
str r0, [sp, #0x0]
|
||||
@@ -1031,7 +1031,7 @@ _02038DA8:
|
||||
cmp r0, #0x0
|
||||
bne _02038DD2
|
||||
add r0, r6, #0x0
|
||||
bl FUN_02038E48
|
||||
bl DeleteScriptContext
|
||||
ldrb r0, [r4, #0x9]
|
||||
cmp r0, #0x0
|
||||
bne _02038DC8
|
||||
@@ -1081,8 +1081,8 @@ _02038E1A:
|
||||
add sp, #0x8
|
||||
pop {r3-r7, pc}
|
||||
|
||||
thumb_func_start FUN_02038E20
|
||||
FUN_02038E20: ; 0x02038E20
|
||||
thumb_func_start CreateFieldContext
|
||||
CreateFieldContext: ; 0x02038E20
|
||||
push {r4, lr}
|
||||
mov r0, #0xb
|
||||
mov r1, #0xdc
|
||||
@@ -1102,8 +1102,8 @@ _02038E32:
|
||||
.balign 4
|
||||
_02038E44: .word 0x0003643F
|
||||
|
||||
thumb_func_start FUN_02038E48
|
||||
FUN_02038E48: ; 0x02038E48
|
||||
thumb_func_start DeleteScriptContext
|
||||
DeleteScriptContext: ; 0x02038E48
|
||||
push {r4, lr}
|
||||
add r4, r0, #0x0
|
||||
ldr r0, [r4, #0x78]
|
||||
@@ -2139,8 +2139,8 @@ _02039622:
|
||||
nop
|
||||
_02039628: .word 0x00001388
|
||||
|
||||
thumb_func_start FUN_0203962C
|
||||
FUN_0203962C: ; 0x0203962C
|
||||
thumb_func_start Field_TrainerIsDoubleBattle
|
||||
Field_TrainerIsDoubleBattle: ; 0x0203962C
|
||||
push {r3, lr}
|
||||
mov r1, #0x9
|
||||
bl TrainerData_GetAttr
|
||||
@@ -2443,17 +2443,17 @@ _02039856:
|
||||
nop
|
||||
_02039870: .word 0x0000FFFF
|
||||
|
||||
thumb_func_start FUN_02039874
|
||||
FUN_02039874: ; 0x02039874
|
||||
ldr r3, _0203987C ; =FUN_02039880
|
||||
thumb_func_start RunPokemonCenterScriptsInNewContext
|
||||
RunPokemonCenterScriptsInNewContext: ; 0x02039874
|
||||
ldr r3, _0203987C ; =RunScriptInNewContext
|
||||
mov r1, #0x96
|
||||
lsl r1, r1, #0x6
|
||||
bx r3
|
||||
.balign 4
|
||||
_0203987C: .word FUN_02039880
|
||||
_0203987C: .word RunScriptInNewContext
|
||||
|
||||
thumb_func_start FUN_02039880
|
||||
FUN_02039880: ; 0x02039880
|
||||
thumb_func_start RunScriptInNewContext
|
||||
RunScriptInNewContext: ; 0x02039880
|
||||
push {r4, lr}
|
||||
bl CreateScriptContext
|
||||
add r4, r0, #0x0
|
||||
@@ -2463,7 +2463,7 @@ _02039888:
|
||||
cmp r0, #0x1
|
||||
beq _02039888
|
||||
add r0, r4, #0x0
|
||||
bl FUN_02038E48
|
||||
bl DeleteScriptContext
|
||||
pop {r4, pc}
|
||||
.balign 4
|
||||
|
||||
@@ -2503,7 +2503,7 @@ _020398CE:
|
||||
b _020398E2
|
||||
_020398DC:
|
||||
add r0, r5, #0x0
|
||||
bl FUN_02039880
|
||||
bl RunScriptInNewContext
|
||||
_020398E2:
|
||||
mov r0, #0x1
|
||||
pop {r3-r5, pc}
|
||||
|
||||
@@ -116,7 +116,7 @@ _02047774:
|
||||
lsl r1, r1, #0x4
|
||||
str r0, [r7, r1]
|
||||
add r0, r5, #0x0
|
||||
bl FUN_02024F30
|
||||
bl Options_new
|
||||
mov r1, #0x13
|
||||
lsl r1, r1, #0x4
|
||||
str r0, [r7, r1]
|
||||
@@ -237,7 +237,7 @@ FUN_02047814: ; 0x02047814
|
||||
lsl r1, r1, #0x4
|
||||
ldr r0, [sp, #0x14]
|
||||
ldr r1, [r4, r1]
|
||||
bl FUN_02024F44
|
||||
bl Options_copy
|
||||
add r0, r5, #0x0
|
||||
bl Script_GetTimeOfDay
|
||||
mov r1, #0x16
|
||||
@@ -513,7 +513,7 @@ FUN_02047A78: ; 0x02047A78
|
||||
lsl r1, r1, #0x4
|
||||
ldr r0, [sp, #0xc]
|
||||
ldr r1, [r5, r1]
|
||||
bl FUN_02024F44
|
||||
bl Options_copy
|
||||
ldr r1, [sp, #0x8]
|
||||
add r0, r5, #0x0
|
||||
mov r2, #0x0
|
||||
@@ -712,7 +712,7 @@ _02047C98:
|
||||
lsl r1, r1, #0x4
|
||||
ldr r0, [sp, #0x4]
|
||||
ldr r1, [r6, r1]
|
||||
bl FUN_02024F44
|
||||
bl Options_copy
|
||||
ldr r1, [sp, #0x8]
|
||||
add r0, r6, #0x0
|
||||
mov r2, #0x0
|
||||
@@ -896,7 +896,7 @@ _02047E2C:
|
||||
lsl r1, r1, #0x4
|
||||
ldr r0, [sp, #0x10]
|
||||
ldr r1, [r5, r1]
|
||||
bl FUN_02024F44
|
||||
bl Options_copy
|
||||
ldr r1, [sp, #0x14]
|
||||
add r0, r5, #0x0
|
||||
mov r2, #0x0
|
||||
|
||||
@@ -599,7 +599,7 @@ FUN_02048D90: ; 0x02048D90
|
||||
add r4, r0, #0x0
|
||||
mov r1, #0x0
|
||||
str r1, [r4, #0x6c]
|
||||
bl FUN_02039874
|
||||
bl RunPokemonCenterScriptsInNewContext
|
||||
ldr r1, _02048DA8 ; =FUN_02048D34
|
||||
add r0, r4, #0x0
|
||||
mov r2, #0x0
|
||||
@@ -2040,7 +2040,7 @@ _020498DC:
|
||||
ldr r0, [r5, #0x8]
|
||||
ldr r1, _02049ABC ; =UNK_020F46D8
|
||||
ldr r2, _02049AB8 ; =0x000003D9
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x3c]
|
||||
mov r0, #0x2
|
||||
str r0, [r4, #0x0]
|
||||
|
||||
@@ -74,7 +74,7 @@ FUN_02054608: ; 0x02054608
|
||||
bl FUN_0201AB08
|
||||
add r6, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp, #0x0]
|
||||
@@ -119,7 +119,7 @@ FUN_02054658: ; 0x02054658
|
||||
mov r0, #0x0
|
||||
bl FUN_02002BB8
|
||||
add r0, r6, #0x0
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
mov r3, #0x0
|
||||
str r3, [sp, #0x0]
|
||||
str r0, [sp, #0x4]
|
||||
@@ -131,8 +131,8 @@ FUN_02054658: ; 0x02054658
|
||||
add sp, #0xc
|
||||
pop {r3-r6, pc}
|
||||
|
||||
thumb_func_start FUN_02054690
|
||||
FUN_02054690: ; 0x02054690
|
||||
thumb_func_start DrawFieldMessage
|
||||
DrawFieldMessage: ; 0x02054690
|
||||
push {r4-r7, lr}
|
||||
sub sp, #0xc
|
||||
add r5, r0, #0x0
|
||||
|
||||
@@ -241,7 +241,7 @@ FUN_0205C73C: ; 0x0205C73C
|
||||
str r0, [r5, #0xc]
|
||||
lsl r0, r0, #0x10
|
||||
lsr r0, r0, #0x10
|
||||
bl FUN_0203962C
|
||||
bl Field_TrainerIsDoubleBattle
|
||||
str r0, [r5, #0x10]
|
||||
str r4, [r5, #0x14]
|
||||
pop {r3-r5, pc}
|
||||
|
||||
@@ -101,11 +101,11 @@ FUN_020625EC: ; 0x020625EC
|
||||
str r0, [r4, r1]
|
||||
add r0, r6, #0x0
|
||||
bl Sav2_PlayerData_GetOptionsAddr
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
strh r0, [r4, #0x1a]
|
||||
add r0, r6, #0x0
|
||||
bl Sav2_PlayerData_GetOptionsAddr
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
strh r0, [r4, #0x1c]
|
||||
str r4, [r7, #0x8]
|
||||
mov r0, #0x1
|
||||
@@ -430,7 +430,7 @@ FUN_020628BC: ; 0x020628BC
|
||||
ldr r0, [r0, #0x0]
|
||||
ldr r2, _020628E4 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
add r4, #0xc8
|
||||
str r0, [r4, #0x0]
|
||||
add sp, #0x4
|
||||
|
||||
@@ -67,11 +67,11 @@ FUN_020653EC: ; 0x020653EC
|
||||
add r6, r0, #0x0
|
||||
strb r1, [r4, #0x1a]
|
||||
bl Sav2_PlayerData_GetOptionsAddr
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
strb r0, [r4, #0x16]
|
||||
add r0, r6, #0x0
|
||||
bl Sav2_PlayerData_GetOptionsAddr
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
strh r0, [r4, #0x14]
|
||||
add r0, r4, #0x0
|
||||
ldr r2, [r4, #0x0]
|
||||
@@ -2192,7 +2192,7 @@ FUN_02066520: ; 0x02066520
|
||||
ldr r0, [r4, r0]
|
||||
ldr r2, _02066548 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
mov r1, #0x5a
|
||||
lsl r1, r1, #0x2
|
||||
str r0, [r4, r1]
|
||||
|
||||
@@ -1314,7 +1314,7 @@ _0206D1F0:
|
||||
ldr r0, [r4, #0x0]
|
||||
mov r2, #0x1
|
||||
mov r3, #0x8
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x40]
|
||||
add r0, r4, #0x0
|
||||
add r0, #0x64
|
||||
@@ -1537,7 +1537,7 @@ _0206D3CC:
|
||||
ldr r0, [r4, #0x0]
|
||||
mov r2, #0x1
|
||||
mov r3, #0x8
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x40]
|
||||
add r0, r4, #0x0
|
||||
add r0, #0x64
|
||||
@@ -2343,7 +2343,7 @@ _0206DA26:
|
||||
mov r1, #0x4
|
||||
bl FUN_02018744
|
||||
ldr r0, [r5, #0x2c]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
add r6, r0, #0x0
|
||||
lsl r0, r6, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
@@ -2675,7 +2675,7 @@ FUN_0206DD6C: ; 0x0206DD6C
|
||||
mov r1, #0xff
|
||||
bl FUN_02019620
|
||||
ldr r0, [r4, #0x2c]
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
mov r3, #0x0
|
||||
str r3, [sp, #0x0]
|
||||
str r0, [sp, #0x4]
|
||||
|
||||
@@ -1310,7 +1310,7 @@ FUN_0206FD24: ; 0x0206FD24
|
||||
ldr r0, _0206FE70 ; =0x000005A4
|
||||
ldr r0, [r5, r0]
|
||||
ldr r0, [r0, #0xc]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp, #0x0]
|
||||
|
||||
@@ -1664,7 +1664,7 @@ FUN_0207322C: ; 0x0207322C
|
||||
ldr r0, _0207326C ; =0x000005A4
|
||||
ldr r0, [r4, r0]
|
||||
ldr r0, [r0, #0xc]
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
mov r3, #0x0
|
||||
str r3, [sp, #0x0]
|
||||
str r0, [sp, #0x4]
|
||||
@@ -1741,7 +1741,7 @@ FUN_020732CC: ; 0x020732CC
|
||||
ldr r1, _020732EC ; =UNK_020F96EC
|
||||
mov r2, #0x1
|
||||
mov r3, #0xe
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
ldr r1, _020732F0 ; =0x000006FC
|
||||
str r0, [r4, r1]
|
||||
add sp, #0x4
|
||||
|
||||
@@ -2355,7 +2355,7 @@ FUN_02077FE8: ; 0x02077FE8
|
||||
mov r2, #0x12
|
||||
bl FUN_02002EEC
|
||||
ldr r0, [r5, #0x18]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp, #0x0]
|
||||
|
||||
@@ -1660,7 +1660,7 @@ _0207A99E:
|
||||
lsl r0, r0, #0x2
|
||||
ldr r0, [r5, r0]
|
||||
ldr r0, [r0, #0x4]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp, #0x0]
|
||||
@@ -4738,7 +4738,7 @@ FUN_0207C23C: ; 0x0207C23C
|
||||
lsl r0, r0, #0x2
|
||||
ldr r0, [r4, r0]
|
||||
ldr r0, [r0, #0x4]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp, #0x0]
|
||||
|
||||
@@ -32,7 +32,7 @@ FUN_02085338: ; 0x02085338
|
||||
add r0, r6, #0x0
|
||||
strb r1, [r4, #0x3]
|
||||
bl Sav2_PlayerData_GetOptionsAddr
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
str r0, [r4, #0x8]
|
||||
cmp r5, #0x2
|
||||
bne _02085390
|
||||
|
||||
@@ -348,7 +348,7 @@ _02085A9A:
|
||||
str r0, [r4, r1]
|
||||
ldr r0, [r4, #0x0]
|
||||
ldr r0, [r0, #0x24]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
add r5, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
add r1, r4, #0x0
|
||||
|
||||
@@ -36,11 +36,11 @@ FUN_02086084: ; 0x02086084
|
||||
bl OverlayManager_GetField18
|
||||
str r0, [r4, #0x0]
|
||||
ldr r0, [r0, #0x10]
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
str r0, [r4, #0x10]
|
||||
ldr r0, [r4, #0x0]
|
||||
ldr r0, [r0, #0x10]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
str r0, [r4, #0x14]
|
||||
bl FUN_02086468
|
||||
str r0, [r4, #0x38]
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
.global UNK_020FD144
|
||||
UNK_020FD144: ; 0x020FD144
|
||||
.word MOD59_021D74E0, MOD59_021D7564, MOD59_021D76C0, SDK_OVERLAY_MODULE_59_ID
|
||||
.word MOD59_Init, MOD59_021D7564, MOD59_021D76C0, SDK_OVERLAY_MODULE_59_ID
|
||||
|
||||
.text
|
||||
|
||||
|
||||
@@ -544,11 +544,11 @@ FUN_020880A0: ; 0x020880A0
|
||||
str r0, [r4, #0x0]
|
||||
ldr r0, [r5, #0xc]
|
||||
ldr r0, [r0, #0x18]
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
strb r0, [r4, #0xa]
|
||||
ldr r0, [r5, #0xc]
|
||||
ldr r0, [r0, #0x18]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
strb r0, [r4, #0xb]
|
||||
ldr r0, _02088108 ; =UNK_020FD16C
|
||||
ldr r2, [r5, #0x0]
|
||||
|
||||
@@ -415,7 +415,7 @@ _020897B8:
|
||||
ldr r0, [r4, #0x14]
|
||||
ldr r2, _02089894 ; =0x000001D9
|
||||
mov r3, #0x3
|
||||
bl FUN_020020EC
|
||||
bl CreateYesNoMenu
|
||||
str r0, [r4, #0x2c]
|
||||
mov r0, #0x1
|
||||
str r0, [r4, #0x4]
|
||||
@@ -453,7 +453,7 @@ _02089802:
|
||||
ldr r0, [r4, #0x14]
|
||||
ldr r2, _02089894 ; =0x000001D9
|
||||
mov r3, #0x3
|
||||
bl FUN_020020EC
|
||||
bl CreateYesNoMenu
|
||||
str r0, [r4, #0x2c]
|
||||
mov r0, #0x3
|
||||
str r0, [r4, #0x4]
|
||||
|
||||
+37
-22
@@ -212,8 +212,8 @@
|
||||
.extern FUN_02001DDC
|
||||
.extern FUN_02001E5C
|
||||
.extern FUN_02001E60
|
||||
.extern FUN_020020EC
|
||||
.extern FUN_02002198
|
||||
.extern CreateYesNoMenu
|
||||
.extern Std_CreateYesNoMenu
|
||||
.extern FUN_020021AC
|
||||
.extern FUN_020021CC
|
||||
.extern FUN_020021EC
|
||||
@@ -1586,23 +1586,23 @@
|
||||
.extern FUN_02024EF4
|
||||
.extern FUN_02024F0C
|
||||
.extern FUN_02024F18
|
||||
.extern FUN_02024F30
|
||||
.extern FUN_02024F44
|
||||
.extern Options_new
|
||||
.extern Options_copy
|
||||
.extern Options_init
|
||||
.extern FUN_02024F9C
|
||||
.extern FUN_02024FD8
|
||||
.extern FUN_02024FE0
|
||||
.extern FUN_02024FF4
|
||||
.extern FUN_02025010
|
||||
.extern FUN_02025018
|
||||
.extern FUN_0202502C
|
||||
.extern FUN_02025034
|
||||
.extern FUN_02025048
|
||||
.extern FUN_02025050
|
||||
.extern FUN_02025064
|
||||
.extern FUN_0202506C
|
||||
.extern FUN_02025084
|
||||
.extern FUN_0202508C
|
||||
.extern Options_SetButtonModeOnMain
|
||||
.extern Options_GetTextSpeed
|
||||
.extern Options_SetTextSpeed
|
||||
.extern Options_GetTextFrameDelay
|
||||
.extern Options_GetSoundMethod
|
||||
.extern Options_SetSoundMethod
|
||||
.extern Options_GetBattleScene
|
||||
.extern Options_SetBattleScene
|
||||
.extern Options_GetBattleStyle
|
||||
.extern Options_SetBattleStyle
|
||||
.extern Options_GetButtonMode
|
||||
.extern Options_SetButtonMode
|
||||
.extern Options_GetFrame
|
||||
.extern Options_SetFrame
|
||||
.extern FUN_020250A4
|
||||
.extern FUN_020250C4
|
||||
.extern FUN_02025128
|
||||
@@ -2691,13 +2691,13 @@
|
||||
.extern FUN_020395BC
|
||||
.extern FUN_020395F4
|
||||
.extern FUN_02039618
|
||||
.extern FUN_0203962C
|
||||
.extern Field_TrainerIsDoubleBattle
|
||||
.extern TrainerFlagCheck
|
||||
.extern TrainerFlagSet
|
||||
.extern TrainerFlagClear
|
||||
.extern FUN_02039694
|
||||
.extern FUN_02039754
|
||||
.extern FUN_02039874
|
||||
.extern RunPokemonCenterScriptsInNewContext
|
||||
.extern FUN_0203989C
|
||||
.extern ScrCmd_nop
|
||||
.extern ScrCmd_nop2
|
||||
@@ -3804,7 +3804,7 @@
|
||||
.extern FUN_02054608
|
||||
.extern FUN_0205464C
|
||||
.extern FUN_02054658
|
||||
.extern FUN_02054690
|
||||
.extern DrawFieldMessage
|
||||
.extern FUN_020546C8
|
||||
.extern FUN_020546E0
|
||||
.extern FUN_02054744
|
||||
@@ -6509,13 +6509,18 @@
|
||||
.extern MOD05_021E7184
|
||||
.extern MOD05_021E71E8
|
||||
.extern MOD05_021E72FC
|
||||
.extern MOD05_021E7358
|
||||
.extern MOD05_021E7750
|
||||
.extern MOD05_021E779C
|
||||
.extern MOD05_021E77B0
|
||||
.extern MOD05_021E799C
|
||||
.extern MOD05_021E7AC0
|
||||
.extern MOD05_021E7C00
|
||||
.extern MOD05_021E7C14
|
||||
.extern MOD05_021E7C1C
|
||||
.extern MOD05_021E7C80
|
||||
.extern MOD05_021E7CD8
|
||||
.extern MOD05_021E7DD8
|
||||
.extern MOD05_021E7E9C
|
||||
.extern MOD05_021E7EA0
|
||||
.extern MOD05_021E7EB0
|
||||
@@ -6676,8 +6681,10 @@
|
||||
.extern MOD05_021F4BF8
|
||||
.extern MOD05_021F4C74
|
||||
.extern MOD05_021F4C88
|
||||
.extern MOD05_021F4C9C
|
||||
.extern MOD05_021F4CBC
|
||||
.extern MOD05_021F4CD4
|
||||
.extern MOD05_021F4CE4
|
||||
.extern MOD05_021F4CF8
|
||||
.extern MOD05_021F4D1C
|
||||
.extern MOD05_021F4D2C
|
||||
@@ -7434,6 +7441,11 @@
|
||||
.extern MOD20_02254420
|
||||
.extern MOD20_02254460
|
||||
.extern MOD20_02254488
|
||||
.extern MOD21_02254A6C
|
||||
.extern MOD21_02254B04
|
||||
.extern MOD21_02254B10
|
||||
.extern MOD21_02254B34
|
||||
.extern MOD21_02254B40
|
||||
.extern MOD51_02254A68
|
||||
.extern MOD51_02254AB8
|
||||
.extern MOD52_021D76C8
|
||||
@@ -7466,9 +7478,12 @@
|
||||
.extern MOD58_021D9A20
|
||||
.extern MOD58_021D9B8C
|
||||
.extern MOD58_021D9BF0
|
||||
.extern MOD59_021D74E0
|
||||
.extern MOD59_Init
|
||||
.extern MOD59_021D7564
|
||||
.extern MOD59_021D76C0
|
||||
.extern MOD59_021D9868
|
||||
.extern MOD59_021D9898
|
||||
.extern MOD59_021D99F8
|
||||
.extern MOD60_021D74E0
|
||||
.extern MOD60_021D76B8
|
||||
.extern MOD60_021D75B0
|
||||
|
||||
@@ -224,8 +224,6 @@ void CARD_UnlockBackup(u16 lock_id);
|
||||
|
||||
#define CARD_RETRY_COUNT_MAX 10
|
||||
|
||||
extern BOOL PXI_SendWordByFifo(u32 param1, u32 data, u32 param2);
|
||||
|
||||
static inline void CARDi_SendPxi(u32 data)
|
||||
{
|
||||
while (PXI_SendWordByFifo(PXI_FIFO_TAG_FS, data, TRUE) < 0)
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
#ifndef POKEDIAMOND_CTRDG_BACKUP_H
|
||||
#define POKEDIAMOND_CTRDG_BACKUP_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
#include "CTRDG_flash.h"
|
||||
#include "CTRDG_task.h"
|
||||
|
||||
#define CTRDG_BACKUP_PHASE_PROGRAM 0x0001
|
||||
#define CTRDG_BACKUP_PHASE_SECTOR_ERASE 0x0002
|
||||
#define CTRDG_BACKUP_PHASE_CHIP_ERASE 0x0003
|
||||
|
||||
typedef struct CTRDGiFlashTypePlusTag
|
||||
{
|
||||
u16 (*CTRDGi_WriteAgbFlashSector)(u16 secNo, u8 *src);
|
||||
u16 (*CTRDGi_EraseAgbFlashChip)(void);
|
||||
u16 (*CTRDGi_EraseAgbFlashSector)(u16 secNo);
|
||||
void (*CTRDGi_WriteAgbFlashSectorAsync)(u16 secNo, u8 *src, CTRDG_TASK_FUNC callback);
|
||||
void (*CTRDGi_EraseAgbFlashChipAsync)(CTRDG_TASK_FUNC callback);
|
||||
void (*CTRDGi_EraseAgbFlashSectorAsync)(u16 secNo, CTRDG_TASK_FUNC callback);
|
||||
u16 (*CTRDGi_PollingSR)(u16 phase, u8 *adr, u16 lastData);
|
||||
const u16 (*maxtime);
|
||||
CTRDGFlashType type;
|
||||
} CTRDGiFlashTypePlus;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CTRDG_BACKUP_TYPE_FLASH_512K,
|
||||
CTRDG_BACKUP_TYPE_FLASH_1M,
|
||||
CTRDG_BACKUP_TYPE_SRAM
|
||||
} CTRDGBackupType;
|
||||
|
||||
extern const u16 (*ctrdgi_fl_maxtime);
|
||||
|
||||
extern u16 (*CTRDGi_PollingSR)(u16 phase, u8 *adr, u16 lastData);
|
||||
extern const CTRDGFlashType *AgbFlash;
|
||||
extern u16 (*CTRDGi_WriteAgbFlashSector)(u16 secNo, u8 *src);
|
||||
extern u16 (*CTRDGi_EraseAgbFlashChip)(void);
|
||||
extern u16 (*CTRDGi_EraseAgbFlashSector)(u16 secNo);
|
||||
extern void (*CTRDGi_WriteAgbFlashSectorAsync)(u16 secNo, u8 *src, CTRDG_TASK_FUNC callback);
|
||||
extern void (*CTRDGi_EraseAgbFlashChipAsync)(CTRDG_TASK_FUNC callback);
|
||||
extern void (*CTRDGi_EraseAgbFlashSectorAsync)(u16 secNo, CTRDG_TASK_FUNC callback);
|
||||
|
||||
u16 CTRDG_IdentifyAgbBackup(CTRDGBackupType type);
|
||||
|
||||
#endif //POKEDIAMOND_CTRDG_BACKUP_H
|
||||
@@ -1,8 +1,137 @@
|
||||
#ifndef NITRO_CTRDG_COMMON_H_
|
||||
#define NITRO_CTRDG_COMMON_H_
|
||||
#ifndef POKEDIAMOND_CTRDG_COMMON_H
|
||||
#define POKEDIAMOND_CTRDG_COMMON_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
#include "consts.h"
|
||||
#include "OS_spinLock.h"
|
||||
#include "OS_system.h"
|
||||
#include "MI_exMemory.h"
|
||||
|
||||
typedef struct CTRDGWork
|
||||
{
|
||||
vu16 subpInitialized;
|
||||
u16 lockID;
|
||||
|
||||
} CTRDGWork;
|
||||
|
||||
typedef struct CTRDGModuleID
|
||||
{
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
u8 bitID;
|
||||
u8 numberID:5;
|
||||
u8 :2;
|
||||
u8 disableExLsiID:1;
|
||||
};
|
||||
u16 raw;
|
||||
};
|
||||
} CTRDGModuleID;
|
||||
|
||||
typedef struct CTRDGModuleInfo
|
||||
{
|
||||
CTRDGModuleID moduleID;
|
||||
u8 exLsiID[3];
|
||||
u8 isAgbCartridge:1;
|
||||
u8 detectPullOut:1;
|
||||
u8 :0; //??
|
||||
u16 makerCode;
|
||||
u32 gameCode;
|
||||
} CTRDGModuleInfo;
|
||||
|
||||
typedef struct CTRDGLockByProc
|
||||
{
|
||||
BOOL locked;
|
||||
OSIntrMode irq;
|
||||
} CTRDGLockByProc;
|
||||
|
||||
typedef struct CTRDGHeader
|
||||
{
|
||||
u32 startAddress;
|
||||
u8 nintendoLogo[0x9c];
|
||||
|
||||
u8 titleName[12];
|
||||
u32 gameCode;
|
||||
u16 makerCode;
|
||||
|
||||
u8 isRomCode;
|
||||
|
||||
u8 machineCode;
|
||||
u8 deviceType;
|
||||
|
||||
u8 exLsiID[3];
|
||||
|
||||
u8 reserved[4];
|
||||
u8 softVersion;
|
||||
u8 complement;
|
||||
|
||||
u16 moduleID;
|
||||
} CTRDGHeader;
|
||||
|
||||
typedef struct CTRDGRomCycle
|
||||
{
|
||||
MICartridgeRomCycle1st c1;
|
||||
MICartridgeRomCycle2nd c2;
|
||||
} CTRDGRomCycle;
|
||||
|
||||
#define CTRDGi_GetModuleInfoAddr() ((CTRDGModuleInfo *)HW_CTRDG_MODULE_INFO_BUF)
|
||||
#define CTRDGi_GetHeaderAddr() ((CTRDGHeader *)HW_CTRDG_ROM)
|
||||
#define CTRDGi_GetModuleIDImageAddr() ((u16 *)(HW_CTRDG_ROM + 0x0001fffe))
|
||||
|
||||
#define CTRDG_IS_ROM_CODE 0x96
|
||||
#define CTRDG_LOCKED_BY_MYPROC_FLAG OS_MAINP_LOCKED_FLAG
|
||||
|
||||
#define CTRDGi_FORWARD_TYPE_DMA 0x00000000
|
||||
#define CTRDGi_FORWARD_TYPE_CPU 0x00000001
|
||||
#define CTRDGi_FORWARD_TYPE_MASK 0x00000001
|
||||
|
||||
#define CTRDGi_FORWARD_WIDTH_8 0x00000000
|
||||
#define CTRDGi_FORWARD_WIDTH_16 0x00000010
|
||||
#define CTRDGi_FORWARD_WIDTH_32 0x00000020
|
||||
|
||||
#define CTRDGi_FORWARD_DMA16 (CTRDGi_FORWARD_TYPE_DMA | CTRDGi_FORWARD_WIDTH_16)
|
||||
#define CTRDGi_FORWARD_DMA32 (CTRDGi_FORWARD_TYPE_DMA | CTRDGi_FORWARD_WIDTH_32)
|
||||
#define CTRDGi_FORWARD_CPU8 (CTRDGi_FORWARD_TYPE_CPU | CTRDGi_FORWARD_WIDTH_8)
|
||||
#define CTRDGi_FORWARD_CPU16 (CTRDGi_FORWARD_TYPE_CPU | CTRDGi_FORWARD_WIDTH_16)
|
||||
#define CTRDGi_FORWARD_CPU32 (CTRDGi_FORWARD_TYPE_CPU | CTRDGi_FORWARD_WIDTH_32)
|
||||
|
||||
#define CTRDGi_ACCESS_DIR_WRITE 0x00000000
|
||||
#define CTRDGi_ACCESS_DIR_READ 0x00000001
|
||||
|
||||
#define CTRDGi_ACCESS_WIDTH_8 0x00000010
|
||||
#define CTRDGi_ACCESS_WIDTH_16 0x00000020
|
||||
#define CTRDGi_ACCESS_WIDTH_32 0x00000040
|
||||
|
||||
#define CTRDGi_ACCESS_WRITE8 (CTRDGi_ACCESS_DIR_WRITE | CTRDGi_ACCESS_WIDTH_8)
|
||||
#define CTRDGi_ACCESS_WRITE16 (CTRDGi_ACCESS_DIR_WRITE | CTRDGi_ACCESS_WIDTH_16)
|
||||
#define CTRDGi_ACCESS_WRITE32 (CTRDGi_ACCESS_DIR_WRITE | CTRDGi_ACCESS_WIDTH_32)
|
||||
#define CTRDGi_ACCESS_READ8 (CTRDGi_ACCESS_DIR_READ | CTRDGi_ACCESS_WIDTH_8)
|
||||
#define CTRDGi_ACCESS_READ16 (CTRDGi_ACCESS_DIR_READ | CTRDGi_ACCESS_WIDTH_16)
|
||||
#define CTRDGi_ACCESS_READ32 (CTRDGi_ACCESS_DIR_READ | CTRDGi_ACCESS_WIDTH_32)
|
||||
|
||||
void CTRDGi_InitCommon(void);
|
||||
BOOL CTRDG_IsAgbCartridge(void);
|
||||
BOOL CTRDG_IsOptionCartridge(void);
|
||||
BOOL CTRDGi_IsAgbCartridgeAtInit(void);
|
||||
u32 CTRDG_GetAgbGameCode(void);
|
||||
u32 CTRDGi_GetAgbGameCodeAtInit(void);
|
||||
u16 CTRDG_GetAgbMakerCode(void);
|
||||
u16 CTRDGi_GetAgbMakerCodeAtInit(void);
|
||||
BOOL CTRDG_IsPulledOut(void);
|
||||
BOOL CTRDG_IsExisting(void);
|
||||
void CTRDGi_ChangeLatestAccessCycle(CTRDGRomCycle *r);
|
||||
void CTRDGi_RestoreAccessCycle(CTRDGRomCycle *r);
|
||||
void CTRDGi_LockByProcessor(u16 lockID, CTRDGLockByProc *info);
|
||||
void CTRDGi_UnlockByProcessor(u16 lockID, CTRDGLockByProc *info);
|
||||
void CTRDGi_SendtoPxi(u32 data);
|
||||
BOOL CTRDG_CpuCopy8(const void *src, void *dest, u32 size);
|
||||
BOOL CTRDG_CpuCopy16(const void *src, void *dest, u32 size);
|
||||
BOOL CTRDG_CpuCopy32(const void *src, void *dest, u32 size);
|
||||
BOOL CTRDGi_CopyCommon(u32 dmaNo, const void *src, void *dest, u32 size, u32 forwardType);
|
||||
BOOL CTRDG_Read32(const u32 *address, u32 *rdata);
|
||||
BOOL CTRDGi_AccessCommon(void *address, u32 data, void *rdata, u32 accessType);
|
||||
BOOL CTRDG_IsEnabled(void);
|
||||
void CTRDG_Enable(BOOL enable);
|
||||
void CTRDG_CheckEnabled(void);
|
||||
|
||||
#endif //NITRO_CTRDG_COMMON_H_
|
||||
#endif //POKEDIAMOND_CTRDG_COMMON_H
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#ifndef POKEDIAMOND_CTRDG_FLASH_H
|
||||
#define POKEDIAMOND_CTRDG_FLASH_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
#include "MI_exMemory.h"
|
||||
|
||||
#define CTRDG_AGB_FLASH_ADR 0x0A000000
|
||||
|
||||
typedef struct CTRDGiFlashSectorTag
|
||||
{
|
||||
u32 size;
|
||||
u16 shift;
|
||||
u16 count;
|
||||
u16 top;
|
||||
u8 reserved[2];
|
||||
} CTRDGiFlashSector;
|
||||
|
||||
typedef struct CTRDGFlashTypeTag
|
||||
{
|
||||
u32 romSize;
|
||||
CTRDGiFlashSector sector;
|
||||
MICartridgeRamCycle agbWait[2];
|
||||
u16 makerID;
|
||||
u16 deviceID;
|
||||
} CTRDGFlashType;
|
||||
|
||||
#endif //POKEDIAMOND_CTRDG_FLASH_H
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef POKEDIAMOND_CTRDG_FLASH_AT29LV512_H
|
||||
#define POKEDIAMOND_CTRDG_FLASH_AT29LV512_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
#include "CTRDG_task.h"
|
||||
|
||||
u32 CTRDGi_EraseFlashChipCoreAT(CTRDGTaskInfo *arg);
|
||||
u32 CTRDGi_EraseFlashSectorCoreAT(CTRDGTaskInfo *arg);
|
||||
|
||||
#endif //POKEDIAMOND_CTRDG_FLASH_AT29LV512_H
|
||||
@@ -0,0 +1,25 @@
|
||||
#ifndef POKEDIAMOND_CTRDG_TASK_H
|
||||
#define POKEDIAMOND_CTRDG_TASK_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
|
||||
struct CTRDGTaskInfo_tag;
|
||||
|
||||
typedef u32 (*CTRDG_TASK_FUNC) (struct CTRDGTaskInfo_tag *);
|
||||
|
||||
typedef struct CTRDGTaskInfo_tag
|
||||
{
|
||||
CTRDG_TASK_FUNC task;
|
||||
CTRDG_TASK_FUNC callback;
|
||||
u32 result;
|
||||
u8 *data;
|
||||
u8 *adr;
|
||||
u32 offset;
|
||||
u32 size;
|
||||
u8 *dst;
|
||||
u16 sec_num;
|
||||
u8 busy;
|
||||
u8 param[1];
|
||||
} CTRDGTaskInfo;
|
||||
|
||||
#endif //POKEDIAMOND_CTRDG_TASK_H
|
||||
@@ -21,6 +21,9 @@ typedef void (*MIDmaCallback)(void *);
|
||||
#define MI_DMA_SRC_FIX (2UL << 23)
|
||||
#define MI_DMA_SRC_INC (0UL << 23)
|
||||
|
||||
#define MI_DMA_16BIT_BUS (0UL << 26)
|
||||
#define MI_DMA_32BIT_BUS (1UL << 26)
|
||||
|
||||
#define MIi_DMA_TIMING_ANY (u32)(~0)
|
||||
#define MI_DMA_TIMING_H_BLANK (2UL << 27)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef NITRO_MI_EXMEMORY_H_
|
||||
#define NITRO_MI_EXMEMORY_H_
|
||||
#ifndef POKEDIAMOND_MI_EXMEMORY_H
|
||||
#define POKEDIAMOND_MI_EXMEMORY_H
|
||||
|
||||
#include "consts.h"
|
||||
|
||||
@@ -8,6 +8,28 @@ typedef enum {
|
||||
MI_PROCESSOR_ARM7 = 1
|
||||
} MIProcessor;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MI_CTRDG_ROMCYCLE1_10 = 0,
|
||||
MI_CTRDG_ROMCYCLE1_8 = 1,
|
||||
MI_CTRDG_ROMCYCLE1_6 = 2,
|
||||
MI_CTRDG_ROMCYCLE1_18 = 3
|
||||
} MICartridgeRomCycle1st;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MI_CTRDG_ROMCYCLE2_6 = 0,
|
||||
MI_CTRDG_ROMCYCLE2_4 = 1
|
||||
} MICartridgeRomCycle2nd;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MI_CTRDG_RAMCYCLE_10 = 0,
|
||||
MI_CTRDG_RAMCYCLE_8 = 1,
|
||||
MI_CTRDG_RAMCYCLE_6 = 2,
|
||||
MI_CTRDG_RAMCYCLE_18 = 3
|
||||
} MICartridgeRamCycle;
|
||||
|
||||
static inline void MIi_SetCardProcessor(MIProcessor proc)
|
||||
{
|
||||
reg_MI_EXMEMCNT =
|
||||
@@ -20,4 +42,34 @@ static inline void MIi_SetCartridgeProcessor(MIProcessor proc)
|
||||
(u16)((reg_MI_EXMEMCNT & ~0x0080) | (proc << 7));
|
||||
}
|
||||
|
||||
#endif //NITRO_MI_EXMEMORY_H_
|
||||
static inline MICartridgeRomCycle1st MI_GetCartridgeRomCycle1st(void)
|
||||
{
|
||||
return (MICartridgeRomCycle1st)((reg_MI_EXMEMCNT & 0xc) >> 2);
|
||||
}
|
||||
|
||||
static inline MICartridgeRomCycle2nd MI_GetCartridgeRomCycle2nd(void)
|
||||
{
|
||||
return (MICartridgeRomCycle2nd)((reg_MI_EXMEMCNT & 0x10) >> 4);
|
||||
}
|
||||
|
||||
static inline void MI_SetCartridgeRomCycle1st(MICartridgeRomCycle1st c1)
|
||||
{
|
||||
reg_MI_EXMEMCNT = (u16)((reg_MI_EXMEMCNT & ~0xc) | (c1 << 2));
|
||||
}
|
||||
|
||||
static inline void MI_SetCartridgeRomCycle2nd(MICartridgeRomCycle2nd c2)
|
||||
{
|
||||
reg_MI_EXMEMCNT = (u16)((reg_MI_EXMEMCNT & ~0x10) | (c2 << 4));
|
||||
}
|
||||
|
||||
static inline void MI_SetCartridgeRamCycle(MICartridgeRamCycle c)
|
||||
{
|
||||
reg_MI_EXMEMCNT = (u16)((reg_MI_EXMEMCNT & ~3) | (c << 0));
|
||||
}
|
||||
|
||||
static inline MICartridgeRamCycle MI_GetCartridgeRamCycle(void)
|
||||
{
|
||||
return (MICartridgeRamCycle)((reg_MI_EXMEMCNT & 3) >> 0);
|
||||
}
|
||||
|
||||
#endif //POKEDIAMOND_MI_EXMEMORY_H
|
||||
|
||||
@@ -45,6 +45,11 @@ static inline void MI_CpuCopy16(const void *src, void *dest, u32 size)
|
||||
MIi_CpuCopy16(src, dest, size);
|
||||
}
|
||||
|
||||
static inline void MI_CpuCopy32(const void *src, void *dest, u32 size)
|
||||
{
|
||||
MIi_CpuCopy32(src, dest, size);
|
||||
}
|
||||
|
||||
static inline void MI_CpuFillFast(void *dest, u32 data, u32 size)
|
||||
{
|
||||
MIi_CpuClearFast(data, dest, size);
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#define OS_IE_V_COUNT (1UL << REG_OS_IE_VE_SHIFT)
|
||||
#define OS_IE_TIMER0 (1UL << REG_OS_IE_T0_SHIFT)
|
||||
#define OS_IE_TIMER1 (1UL << REG_OS_IE_T1_SHIFT)
|
||||
#define OS_IE_SPFIFO_RECV (1UL << REG_OS_IE_IFN_SHIFT)
|
||||
#define OS_IE_CARD_DATA (1UL << REG_OS_IE_MC_SHIFT)
|
||||
|
||||
extern OSIrqFunction OS_IRQTable[];
|
||||
@@ -42,6 +43,13 @@ static inline BOOL OS_EnableIrq(void)
|
||||
return (BOOL)prep;
|
||||
}
|
||||
|
||||
static inline BOOL OS_RestoreIrq(BOOL enable)
|
||||
{
|
||||
u16 prep = reg_OS_IME;
|
||||
reg_OS_IME = (u16)enable;
|
||||
return (BOOL)prep;
|
||||
}
|
||||
|
||||
static inline OSIrqMask OS_GetIrqMask(void)
|
||||
{
|
||||
return reg_OS_IE;
|
||||
|
||||
@@ -41,4 +41,8 @@ static inline u32 OSi_CalcPRParam(u32 address, u32 size, OSiProtectionRegionBase
|
||||
OS_SetProtectionRegion##regionNo(OSi_CalcPRParam(address, HW_C6_PR_##sizeStr, OSi_PR_BASE_MASK_##sizeStr) \
|
||||
| 1)
|
||||
|
||||
#define OS_PR3_ACCESS_MASK (HW_C5_PERMIT_MASK << HW_C5_PR3_SFT)
|
||||
#define OS_PR3_ACCESS_RW (HW_C5_PERMIT_RW << HW_C5_PR3_SFT)
|
||||
#define OS_PR3_ACCESS_RO (HW_C5_PERMIT_RO << HW_C5_PR3_SFT)
|
||||
|
||||
#endif //POKEDIAMOND_OS_PROTECTIONREGION_H
|
||||
|
||||
@@ -5,7 +5,11 @@
|
||||
#include "nitro/OS_spinLock_shared.h"
|
||||
#include "syscall.h"
|
||||
|
||||
#define OS_LOCK_ID_ERROR (-3)
|
||||
#define OS_ReadOwnerOfLockCartridge() OS_ReadOwnerOfLockWord( (OSLockWord *)HW_CTRDG_LOCK_BUF )
|
||||
#define OS_MAINP_LOCKED_FLAG 0x40
|
||||
#define OS_LOCK_SUCCESS 0
|
||||
|
||||
#define OS_LOCK_ID_ERROR (-3)
|
||||
|
||||
static inline void OSi_WaitByLoop(void)
|
||||
{
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define POKEDIAMOND_ARM9_PXI_FIFO_H
|
||||
|
||||
#include "nitro/PXI_fifo_shared.h"
|
||||
#include "nitro/types.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
@@ -13,4 +14,23 @@ typedef enum
|
||||
PXI_FIFO_NO_CALLBACK_ENTRY = -5
|
||||
} PXIFifoStatus;
|
||||
|
||||
typedef void (*PXIFifoCallback) (PXIFifoTag tag, u32 data, BOOL err);
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct
|
||||
{
|
||||
u32 tag:5;
|
||||
u32 err:1;
|
||||
u32 data:26;
|
||||
} e;
|
||||
u32 raw;
|
||||
} PXIFifoMessage;
|
||||
|
||||
void PXI_InitFifo(void);
|
||||
void PXI_SetFifoRecvCallback(s32 fifotag, PXIFifoCallback callback);
|
||||
BOOL PXI_IsCallbackReady(s32 fifotag, PXIProc proc);
|
||||
s32 PXI_SendWordByFifo(s32 fifotag, u32 data, BOOL err);
|
||||
void PXIi_HandlerRecvFifoNotEmpty(void);
|
||||
|
||||
#endif //POKEDIAMOND_ARM9_PXI_FIFO_H
|
||||
|
||||
@@ -6,6 +6,13 @@
|
||||
#include "registers.h"
|
||||
#include "systemWork.h"
|
||||
|
||||
#define HW_C5_PERMIT_MASK 0xf
|
||||
|
||||
#define HW_C5_PERMIT_RO 5
|
||||
#define HW_C5_PERMIT_RW 1
|
||||
|
||||
#define HW_C5_PR3_SFT 12
|
||||
|
||||
#define HW_C6_PR_4KB 0x16
|
||||
#define HW_C6_PR_8KB 0x18
|
||||
#define HW_C6_PR_16KB 0x1a
|
||||
@@ -35,8 +42,6 @@
|
||||
|
||||
#define HW_CACHE_LINE_SIZE 32
|
||||
|
||||
#define PXI_PROC_ARM7 0x01
|
||||
|
||||
#define OSi_CONSOLE_NOT_DETECT 0xffffffff
|
||||
|
||||
#define OS_CONSOLE_NITRO 0x80000000
|
||||
@@ -50,4 +55,11 @@
|
||||
|
||||
#define HW_CPU_CLOCK_ARM9 67027964
|
||||
|
||||
#define REG_PXI_SUBP_FIFO_CNT_E_MASK 0x8000
|
||||
#define REG_PXI_SUBP_FIFO_CNT_ERR_MASK 0x4000
|
||||
#define REG_PXI_SUBP_FIFO_CNT_RECV_RI_MASK 0x0400
|
||||
#define REG_PXI_SUBP_FIFO_CNT_RECV_EMP_MASK 0x0100
|
||||
#define REG_PXI_SUBP_FIFO_CNT_SEND_CL_MASK 0x0008
|
||||
#define REG_PXI_SUBP_FIFO_CNT_SEND_FULL_MASK 0x0002
|
||||
|
||||
#endif //POKEDIAMOND_ARM9_CONSTS_H
|
||||
|
||||
@@ -34,6 +34,7 @@ extern u32 SDK_AUTOLOAD_DTCM_START[];
|
||||
#define HW_BOOT_CHECK_INFO_BUF (HW_MAIN_MEM + 0x007ffc00)
|
||||
#define HW_RESET_PARAMETER_BUF (HW_MAIN_MEM + 0x007ffc20)
|
||||
#define HW_ROM_BASE_OFFSET_BUF (HW_MAIN_MEM + 0x007ffc2c)
|
||||
#define HW_CTRDG_MODULE_INFO_BUF (HW_MAIN_MEM + 0x007ffc30)
|
||||
#define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) // ROM registration area data buffer
|
||||
#define HW_RED_RESERVED (HW_MAIN_MEM + 0x007ff800) // Some kind of reserved data for shared memory
|
||||
#define HW_MAIN_MEM_EX_END (HW_MAIN_MEM + HW_MAIN_MEM_EX_SIZE)
|
||||
@@ -93,6 +94,8 @@ extern u32 SDK_AUTOLOAD_DTCM_START[];
|
||||
#define HW_DB_OAM_END 0x07000800
|
||||
#define HW_DB_OAM_SIZE (HW_DB_OAM_END-HW_DB_OAM)
|
||||
|
||||
#define HW_CTRDG_RAM_END 0x0a010000
|
||||
|
||||
#define HW_DTCM_SYSRV_OFS_INTR_VECTOR 0x3c
|
||||
#define HW_RESET_VECTOR 0xffff0000
|
||||
|
||||
|
||||
@@ -350,6 +350,7 @@
|
||||
#define REG_OS_IE_VE_SHIFT 2
|
||||
#define REG_OS_IE_T0_SHIFT 3
|
||||
#define REG_OS_IE_T1_SHIFT 4
|
||||
#define REG_OS_IE_IFN_SHIFT 18
|
||||
#define REG_OS_IE_MC_SHIFT 19
|
||||
|
||||
#define REG_OS_TM0CNT_H_I_MASK 0x0040
|
||||
|
||||
@@ -1,6 +1,19 @@
|
||||
#ifndef POKEDIAMOND_ARM9_SYSCALL_H
|
||||
#define POKEDIAMOND_ARM9_SYSCALL_H
|
||||
|
||||
#include "consts.h"
|
||||
#include "MI_dma.h"
|
||||
|
||||
void SVC_CpuSet(const void *srcp, void *destp, u32 dmaCntData);
|
||||
|
||||
#define SVC_CpuClear( data, destp, size, bit ) \
|
||||
do{ \
|
||||
vu##bit tmp = (vu##bit )(data); \
|
||||
SVC_CpuSet((u8 *)&(tmp), (u8 *)(destp), ( \
|
||||
MI_DMA_SRC_FIX | \
|
||||
MI_DMA_##bit##BIT_BUS | ((size)/((bit)/8) & 0x1fffff))); \
|
||||
} while(0)
|
||||
|
||||
void SVC_WaitByLoop(u32 ct);
|
||||
|
||||
#endif //POKEDIAMOND_ARM9_SYSCALL_H
|
||||
|
||||
@@ -14,8 +14,6 @@ static CARDiCommandArg cardi_arg ALIGN(32);
|
||||
|
||||
u8 cardi_thread_stack[0x400] ALIGN(4);
|
||||
|
||||
extern void PXI_SetFifoRecvCallback(u32 param1, void* callback);
|
||||
|
||||
static void CARDi_LockResource(CARDiOwner owner, CARDTargetMode target);
|
||||
static void CARDi_UnlockResource(CARDiOwner owner, CARDTargetMode target);
|
||||
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
static CARDPulledOutCallback CARD_UserCallback;
|
||||
static BOOL CARDi_IsPulledOutFlag = FALSE;
|
||||
|
||||
extern void PXI_SetFifoRecvCallback(u32 param1, void* callback);
|
||||
extern BOOL PXI_SendWordByFifo(u32 param1, u32 data, u32 param2);
|
||||
|
||||
static void CARDi_PulledOutCallback(PXIFifoTag tag, u32 data, BOOL err);
|
||||
static void CARDi_SendtoPxi(u32 data, u32 wait);
|
||||
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
|
||||
extern CARDiCommon cardi_common;
|
||||
|
||||
extern u32 PXI_IsCallbackReady(u32 param1, u32 param2);
|
||||
|
||||
ARM_FUNC void CARDi_OnFifoRecv(PXIFifoTag tag, u32 data, BOOL err)
|
||||
{
|
||||
#pragma unused (data)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "function_target.h"
|
||||
#include "nitro/types.h"
|
||||
#include "CARD_common.h"
|
||||
#include "CARD_spi.h"
|
||||
#include "MI_memory.h"
|
||||
|
||||
extern CARDiCommon cardi_common;
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
#include "CTRDG_backup.h"
|
||||
#include "function_target.h"
|
||||
#include "OS_spinLock.h"
|
||||
|
||||
extern u16 ctrdgi_flash_lock_id;
|
||||
extern u16 ctrdgi_sram_lock_id;
|
||||
|
||||
extern u16 CTRDGi_ReadFlashID(void);
|
||||
|
||||
extern const CTRDGiFlashTypePlus defaultFlash1M;
|
||||
extern const CTRDGiFlashTypePlus MX29L010;
|
||||
extern const CTRDGiFlashTypePlus LE26FV10N1TS_10;
|
||||
|
||||
extern const CTRDGiFlashTypePlus defaultFlash512;
|
||||
extern const CTRDGiFlashTypePlus LE39FW512;
|
||||
extern const CTRDGiFlashTypePlus AT29LV512_lib;
|
||||
extern const CTRDGiFlashTypePlus MN63F805MNP;
|
||||
|
||||
static const CTRDGiFlashTypePlus *const flash1M_list[] = {
|
||||
&MX29L010,
|
||||
&LE26FV10N1TS_10,
|
||||
&defaultFlash1M
|
||||
};
|
||||
|
||||
static const CTRDGiFlashTypePlus *const flash512_list[] = {
|
||||
&LE39FW512,
|
||||
&AT29LV512_lib,
|
||||
&MN63F805MNP,
|
||||
&defaultFlash512
|
||||
};
|
||||
|
||||
static const u16 readidtime[] = {
|
||||
20
|
||||
};
|
||||
|
||||
ARM_FUNC u16 CTRDG_IdentifyAgbBackup(CTRDGBackupType type)
|
||||
{
|
||||
u16 result = 1;
|
||||
u16 flashID;
|
||||
const CTRDGiFlashTypePlus *const *flp;
|
||||
MICartridgeRamCycle ram_cycle;
|
||||
|
||||
if (type == CTRDG_BACKUP_TYPE_FLASH_512K || type == CTRDG_BACKUP_TYPE_FLASH_1M)
|
||||
{
|
||||
ctrdgi_flash_lock_id = (u16)OS_GetLockID();
|
||||
|
||||
(void)OS_LockCartridge(ctrdgi_flash_lock_id);
|
||||
|
||||
ram_cycle = MI_GetCartridgeRamCycle();
|
||||
MI_SetCartridgeRamCycle(MI_CTRDG_RAMCYCLE_18);
|
||||
|
||||
ctrdgi_fl_maxtime = readidtime;
|
||||
flashID = CTRDGi_ReadFlashID();
|
||||
|
||||
if (type == CTRDG_BACKUP_TYPE_FLASH_512K)
|
||||
{
|
||||
flp = flash512_list;
|
||||
}
|
||||
|
||||
if (type == CTRDG_BACKUP_TYPE_FLASH_1M)
|
||||
{
|
||||
flp = flash1M_list;
|
||||
}
|
||||
|
||||
MI_SetCartridgeRamCycle(ram_cycle);
|
||||
(void)OS_UnlockCartridge(ctrdgi_flash_lock_id);
|
||||
|
||||
result = 1;
|
||||
while ((*flp)->type.makerID != 0)
|
||||
{
|
||||
if ((flashID & 0xff) == *(u16 *)&((*flp)->type.makerID))
|
||||
{
|
||||
result = 0;
|
||||
break;
|
||||
}
|
||||
flp++;
|
||||
}
|
||||
CTRDGi_WriteAgbFlashSector = (*flp)->CTRDGi_WriteAgbFlashSector;
|
||||
CTRDGi_EraseAgbFlashChip = (*flp)->CTRDGi_EraseAgbFlashChip;
|
||||
CTRDGi_EraseAgbFlashSector = (*flp)->CTRDGi_EraseAgbFlashSector;
|
||||
CTRDGi_WriteAgbFlashSectorAsync = (*flp)->CTRDGi_WriteAgbFlashSectorAsync;
|
||||
CTRDGi_EraseAgbFlashChipAsync = (*flp)->CTRDGi_EraseAgbFlashChipAsync;
|
||||
CTRDGi_EraseAgbFlashSectorAsync = (*flp)->CTRDGi_EraseAgbFlashSectorAsync;
|
||||
CTRDGi_PollingSR = (*flp)->CTRDGi_PollingSR;
|
||||
ctrdgi_fl_maxtime = (*flp)->maxtime;
|
||||
AgbFlash = &(*flp)->type;
|
||||
}
|
||||
else if (type == CTRDG_BACKUP_TYPE_SRAM)
|
||||
{
|
||||
ctrdgi_sram_lock_id = (u16)OS_GetLockID();
|
||||
result = 0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,349 @@
|
||||
#include "CTRDG_common.h"
|
||||
#include "function_target.h"
|
||||
#include "syscall.h"
|
||||
#include "OS_cache.h"
|
||||
#include "OS_protectionRegion.h"
|
||||
#include "OS_terminate_proc.h"
|
||||
#include "PXI_fifo.h"
|
||||
#include "MI_dma.h"
|
||||
#include "MI_memory.h"
|
||||
|
||||
CTRDGWork CTRDGi_Work;
|
||||
|
||||
static BOOL CTRDGi_EnableFlag = FALSE;
|
||||
|
||||
ARM_FUNC void CTRDGi_InitCommon(void)
|
||||
{
|
||||
SVC_CpuClear(0, &CTRDGi_Work, sizeof(CTRDGi_Work), 32);
|
||||
|
||||
CTRDGi_Work.lockID = (u16)OS_GetLockID();
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDG_IsAgbCartridge(void)
|
||||
{
|
||||
return (CTRDG_IsExisting() && CTRDGi_IsAgbCartridgeAtInit());
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDG_IsOptionCartridge(void)
|
||||
{
|
||||
return (CTRDG_IsExisting() && !CTRDGi_IsAgbCartridgeAtInit());
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDGi_IsAgbCartridgeAtInit(void)
|
||||
{
|
||||
CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr();
|
||||
|
||||
return cip->isAgbCartridge;
|
||||
}
|
||||
|
||||
ARM_FUNC u32 CTRDG_GetAgbGameCode(void)
|
||||
{
|
||||
u32 ret = 0;
|
||||
|
||||
if (CTRDG_IsExisting())
|
||||
{
|
||||
ret = CTRDGi_GetAgbGameCodeAtInit();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
ARM_FUNC u32 CTRDGi_GetAgbGameCodeAtInit(void)
|
||||
{
|
||||
CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr();
|
||||
u32 ret = 0;
|
||||
|
||||
if (CTRDGi_IsAgbCartridgeAtInit())
|
||||
{
|
||||
ret = cip->gameCode;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
ARM_FUNC u16 CTRDG_GetAgbMakerCode(void)
|
||||
{
|
||||
u16 ret = 0;
|
||||
|
||||
if (CTRDG_IsExisting())
|
||||
{
|
||||
ret = CTRDGi_GetAgbMakerCodeAtInit();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
ARM_FUNC u16 CTRDGi_GetAgbMakerCodeAtInit(void)
|
||||
{
|
||||
CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr();
|
||||
u16 ret = 0;
|
||||
|
||||
if (CTRDGi_IsAgbCartridgeAtInit())
|
||||
{
|
||||
ret = cip->makerCode;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDG_IsPulledOut(void)
|
||||
{
|
||||
CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr();
|
||||
|
||||
if (cip->moduleID.raw == 0xffff)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!cip->detectPullOut)
|
||||
{
|
||||
(void)CTRDG_IsExisting();
|
||||
}
|
||||
|
||||
return cip->detectPullOut;
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDG_IsExisting(void)
|
||||
{
|
||||
BOOL ret = TRUE;
|
||||
CTRDGLockByProc lockInfo;
|
||||
|
||||
CTRDGHeader *chp = CTRDGi_GetHeaderAddr();
|
||||
CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr();
|
||||
|
||||
if (cip->moduleID.raw == 0xffff)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (cip->detectPullOut == TRUE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CTRDGi_LockByProcessor(CTRDGi_Work.lockID, &lockInfo);
|
||||
|
||||
CTRDGRomCycle rc;
|
||||
|
||||
CTRDGi_ChangeLatestAccessCycle(&rc);
|
||||
u8 isRomCode = chp->isRomCode;
|
||||
|
||||
if ((isRomCode == CTRDG_IS_ROM_CODE && cip->moduleID.raw != chp->moduleID)
|
||||
|| (isRomCode != CTRDG_IS_ROM_CODE && cip->moduleID.raw != *CTRDGi_GetModuleIDImageAddr())
|
||||
|| ((cip->gameCode != chp->gameCode) && cip->isAgbCartridge))
|
||||
{
|
||||
cip->detectPullOut = TRUE;
|
||||
ret = FALSE;
|
||||
}
|
||||
|
||||
CTRDGi_RestoreAccessCycle(&rc);
|
||||
|
||||
CTRDGi_UnlockByProcessor(CTRDGi_Work.lockID, &lockInfo);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
ARM_FUNC void CTRDGi_ChangeLatestAccessCycle(CTRDGRomCycle *r)
|
||||
{
|
||||
r->c1 = MI_GetCartridgeRomCycle1st();
|
||||
r->c2 = MI_GetCartridgeRomCycle2nd();
|
||||
|
||||
MI_SetCartridgeRomCycle1st(MI_CTRDG_ROMCYCLE1_18);
|
||||
MI_SetCartridgeRomCycle2nd(MI_CTRDG_ROMCYCLE2_6);
|
||||
}
|
||||
|
||||
ARM_FUNC void CTRDGi_RestoreAccessCycle(CTRDGRomCycle *r)
|
||||
{
|
||||
MI_SetCartridgeRomCycle1st(r->c1);
|
||||
MI_SetCartridgeRomCycle2nd(r->c2);
|
||||
}
|
||||
|
||||
ARM_FUNC void CTRDGi_LockByProcessor(u16 lockID, CTRDGLockByProc *info)
|
||||
{
|
||||
while (TRUE)
|
||||
{
|
||||
info->irq = OS_DisableInterrupts();
|
||||
if (((info->locked = OS_ReadOwnerOfLockCartridge() & CTRDG_LOCKED_BY_MYPROC_FLAG) != 0)
|
||||
|| (OS_TryLockCartridge(lockID) == OS_LOCK_SUCCESS))
|
||||
{
|
||||
break;
|
||||
}
|
||||
(void)OS_RestoreInterrupts(info->irq);
|
||||
|
||||
SVC_WaitByLoop(1);
|
||||
}
|
||||
}
|
||||
|
||||
ARM_FUNC void CTRDGi_UnlockByProcessor(u16 lockID, CTRDGLockByProc *info)
|
||||
{
|
||||
if (!info->locked)
|
||||
{
|
||||
(void)OS_UnLockCartridge(lockID);
|
||||
}
|
||||
|
||||
(void)OS_RestoreInterrupts(info->irq);
|
||||
}
|
||||
|
||||
ARM_FUNC void CTRDGi_SendtoPxi(u32 data)
|
||||
{
|
||||
while (PXI_SendWordByFifo(PXI_FIFO_TAG_CTRDG, data, FALSE) != PXI_FIFO_SUCCESS)
|
||||
{
|
||||
SVC_WaitByLoop(1);
|
||||
}
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDG_CpuCopy8(const void *src, void *dest, u32 size)
|
||||
{
|
||||
if (HW_CTRDG_ROM <= (u32)dest && (u32)dest < HW_CTRDG_RAM_END)
|
||||
{
|
||||
return CTRDGi_CopyCommon(0, (const void *)dest, (void *)src, size, CTRDGi_FORWARD_CPU8);
|
||||
}
|
||||
else
|
||||
{
|
||||
return CTRDGi_CopyCommon(0, src, dest, size, CTRDGi_FORWARD_CPU8);
|
||||
}
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDG_CpuCopy16(const void *src, void *dest, u32 size)
|
||||
{
|
||||
return CTRDGi_CopyCommon(0, src, dest, size, CTRDGi_FORWARD_CPU16);
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDG_CpuCopy32(const void *src, void *dest, u32 size)
|
||||
{
|
||||
return CTRDGi_CopyCommon(0, src, dest, size, CTRDGi_FORWARD_CPU32);
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDGi_CopyCommon(u32 dmaNo, const void *src, void *dest, u32 size, u32 forwardType)
|
||||
{
|
||||
if (!CTRDG_IsExisting())
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CTRDG_CheckEnabled();
|
||||
|
||||
(void)OS_LockCartridge(CTRDGi_Work.lockID);
|
||||
|
||||
if ((forwardType & CTRDGi_FORWARD_TYPE_MASK) == CTRDGi_FORWARD_TYPE_DMA)
|
||||
{
|
||||
MI_StopDma(dmaNo);
|
||||
DC_FlushRange(dest, size);
|
||||
}
|
||||
|
||||
switch (forwardType)
|
||||
{
|
||||
case CTRDGi_FORWARD_DMA16:
|
||||
MI_DmaCopy16(dmaNo, src, dest, size);
|
||||
break;
|
||||
case CTRDGi_FORWARD_DMA32:
|
||||
MI_DmaCopy32(dmaNo, src, dest, size);
|
||||
break;
|
||||
case CTRDGi_FORWARD_CPU16:
|
||||
MI_CpuCopy16(src, dest, size);
|
||||
break;
|
||||
case CTRDGi_FORWARD_CPU32:
|
||||
MI_CpuCopy32(src, dest, size);
|
||||
break;
|
||||
|
||||
case CTRDGi_FORWARD_CPU8:
|
||||
u8 *dest8 = (u8 *)dest;
|
||||
u8 *src8 = (u8 *)src;
|
||||
for (s32 n = 0; n < size; n++)
|
||||
{
|
||||
*dest8++ = *src8++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
(void)OS_UnLockCartridge(CTRDGi_Work.lockID);
|
||||
|
||||
if (!CTRDG_IsExisting())
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDG_Read32(const u32 *address, u32 *rdata)
|
||||
{
|
||||
return CTRDGi_AccessCommon((void *)address, 0, rdata, CTRDGi_ACCESS_READ32);
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDGi_AccessCommon(void *address, u32 data, void *rdata, u32 accessType)
|
||||
{
|
||||
if (!CTRDG_IsExisting())
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CTRDG_CheckEnabled();
|
||||
|
||||
(void)OS_LockCartridge(CTRDGi_Work.lockID);
|
||||
|
||||
switch (accessType)
|
||||
{
|
||||
case CTRDGi_ACCESS_READ8:
|
||||
if (rdata)
|
||||
{
|
||||
*(u8 *)rdata = *(u8 *)address;
|
||||
}
|
||||
break;
|
||||
case CTRDGi_ACCESS_READ16:
|
||||
if (rdata)
|
||||
{
|
||||
*(u16 *)rdata = *(u16 *)address;
|
||||
}
|
||||
break;
|
||||
case CTRDGi_ACCESS_READ32:
|
||||
if (rdata)
|
||||
{
|
||||
*(u32 *)rdata = *(u32 *)address;
|
||||
}
|
||||
break;
|
||||
case CTRDGi_ACCESS_WRITE8:
|
||||
*(u8 *)address = (u8)data;
|
||||
break;
|
||||
case CTRDGi_ACCESS_WRITE16:
|
||||
*(u16 *)address = (u16)data;
|
||||
break;
|
||||
case CTRDGi_ACCESS_WRITE32:
|
||||
*(u32 *)address = (u32)data;
|
||||
break;
|
||||
}
|
||||
|
||||
(void)OS_UnLockCartridge(CTRDGi_Work.lockID);
|
||||
|
||||
if (!CTRDG_IsExisting())
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL CTRDG_IsEnabled(void)
|
||||
{
|
||||
return CTRDGi_EnableFlag;
|
||||
}
|
||||
|
||||
ARM_FUNC void CTRDG_Enable(BOOL enable)
|
||||
{
|
||||
OSIntrMode bak_cpsr = OS_DisableInterrupts();
|
||||
CTRDGi_EnableFlag = enable;
|
||||
if (!CTRDG_IsOptionCartridge())
|
||||
{
|
||||
u32 acc = (u32)(enable ? OS_PR3_ACCESS_RW : OS_PR3_ACCESS_RO);
|
||||
(void)OS_SetDPermissionsForProtectionRegion(OS_PR3_ACCESS_MASK, acc);
|
||||
}
|
||||
(void)OS_RestoreInterrupts(bak_cpsr);
|
||||
}
|
||||
|
||||
ARM_FUNC void CTRDG_CheckEnabled(void)
|
||||
{
|
||||
if (!CTRDG_IsOptionCartridge() && !CTRDG_IsEnabled())
|
||||
{
|
||||
OS_Terminate();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
#include "CTRDG_flash_AT29LV512.h"
|
||||
#include "function_target.h"
|
||||
#include "CTRDG_backup.h"
|
||||
#include "CTRDG_flash.h"
|
||||
#include "MI_exMemory.h"
|
||||
#include "OS_interrupt.h"
|
||||
#include "OS_spinLock.h"
|
||||
|
||||
#define CTRDG_BACKUP_COM_ADR1 (CTRDG_AGB_FLASH_ADR+0x00005555)
|
||||
#define CTRDG_BACKUP_COM_ADR2 (CTRDG_AGB_FLASH_ADR+0x00002aaa)
|
||||
|
||||
extern u16 ctrdgi_flash_lock_id;
|
||||
extern BOOL ctrdgi_backup_irq;
|
||||
|
||||
extern u16 CTRDGi_PollingSR512kCOMMON(u16 phase, u8 *adr, u16 lastData);
|
||||
|
||||
extern u16 CTRDGi_EraseFlashChipAT(void);
|
||||
extern u16 CTRDGi_EraseFlashSectorAT(u16 p_secNo);
|
||||
extern u16 CTRDGi_EraseFlash4KBAT(u16 l_secNo);
|
||||
extern u16 CTRDGi_WriteFlashSectorAT(u16 p_secNo, u8 *src);
|
||||
extern u16 CTRDGi_WriteFlash4KBAT(u16 l_secNo, u8 *src);
|
||||
|
||||
extern void CTRDGi_EraseFlashChipAsyncAT(CTRDG_TASK_FUNC callback);
|
||||
extern void CTRDGi_EraseFlash4KBAsyncAT(u16 secNo, CTRDG_TASK_FUNC callback);
|
||||
extern void CTRDGi_WriteFlash4KBAsyncAT(u16 secNo, u8 *src, CTRDG_TASK_FUNC callback);
|
||||
extern void CTRDGi_EraseFlashSectorAsyncAT(u16 secNo, CTRDG_TASK_FUNC callback);
|
||||
extern void CTRDGi_WriteFlashSectorAsyncAT(u16 secNo, u8 *src, CTRDG_TASK_FUNC callback);
|
||||
|
||||
static const u16 atMaxTime[] = {
|
||||
10, 40, 0, 40
|
||||
};
|
||||
|
||||
const CTRDGiFlashTypePlus AT29LV512_lib = {
|
||||
CTRDGi_WriteFlash4KBAT,
|
||||
CTRDGi_EraseFlashChipAT,
|
||||
CTRDGi_EraseFlash4KBAT,
|
||||
CTRDGi_WriteFlash4KBAsyncAT,
|
||||
CTRDGi_EraseFlashChipAsyncAT,
|
||||
CTRDGi_EraseFlash4KBAsyncAT,
|
||||
CTRDGi_PollingSR512kCOMMON,
|
||||
atMaxTime,
|
||||
{
|
||||
0x00010000, //ROM size
|
||||
{0x00001000, 12, 16, 0}, //sector
|
||||
{MI_CTRDG_RAMCYCLE_18, MI_CTRDG_RAMCYCLE_18}, //read cycle and write cycle
|
||||
0x1f, //maker ID
|
||||
0x3d, //device ID
|
||||
}
|
||||
};
|
||||
|
||||
const CTRDGiFlashTypePlus AT29LV512_org = {
|
||||
CTRDGi_WriteFlashSectorAT,
|
||||
CTRDGi_EraseFlashChipAT,
|
||||
CTRDGi_EraseFlashSectorAT,
|
||||
CTRDGi_WriteFlashSectorAsyncAT,
|
||||
CTRDGi_EraseFlashChipAsyncAT,
|
||||
CTRDGi_EraseFlashSectorAsyncAT,
|
||||
CTRDGi_PollingSR512kCOMMON,
|
||||
atMaxTime,
|
||||
{
|
||||
0x00010000, //ROM size
|
||||
{0x00000080, 7, 512, 0}, //sector
|
||||
{MI_CTRDG_RAMCYCLE_18, MI_CTRDG_RAMCYCLE_18}, //read cycle and write cycle
|
||||
0x1f, //maker ID
|
||||
0x3d, //device ID
|
||||
}
|
||||
};
|
||||
|
||||
ARM_FUNC u32 CTRDGi_EraseFlashChipCoreAT(CTRDGTaskInfo *arg)
|
||||
{
|
||||
MICartridgeRamCycle ram_cycle;
|
||||
u32 result;
|
||||
(void)arg;
|
||||
|
||||
(void)OS_LockCartridge(ctrdgi_flash_lock_id);
|
||||
|
||||
ram_cycle = MI_GetCartridgeRamCycle();
|
||||
MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]);
|
||||
|
||||
ctrdgi_backup_irq = OS_DisableIrq();
|
||||
|
||||
*(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa;
|
||||
*(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55;
|
||||
*(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x80;
|
||||
*(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa;
|
||||
*(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55;
|
||||
*(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x10;
|
||||
|
||||
(void)OS_RestoreIrq(ctrdgi_backup_irq);
|
||||
|
||||
result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_CHIP_ERASE, (u8 *)CTRDG_AGB_FLASH_ADR, 0xff);
|
||||
|
||||
MI_SetCartridgeRamCycle(ram_cycle);
|
||||
|
||||
(void)OS_UnlockCartridge(ctrdgi_flash_lock_id);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
ARM_FUNC u32 CTRDGi_EraseFlashSectorCoreAT(CTRDGTaskInfo *arg)
|
||||
{
|
||||
u32 i;
|
||||
u8 *dst;
|
||||
BOOL shlet_ime;
|
||||
MICartridgeRamCycle ram_cycle;
|
||||
u32 result;
|
||||
CTRDGTaskInfo p = *arg;
|
||||
u16 p_secNo = p.sec_num;
|
||||
|
||||
dst = (u8 *)(CTRDG_AGB_FLASH_ADR + (p_secNo << AT29LV512_org.type.sector.shift));
|
||||
|
||||
(void)OS_LockCartridge(ctrdgi_flash_lock_id);
|
||||
|
||||
ram_cycle = MI_GetCartridgeRamCycle();
|
||||
MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]);
|
||||
|
||||
shlet_ime = OS_DisableIrq();
|
||||
|
||||
*(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa;
|
||||
*(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55;
|
||||
*(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xa0;
|
||||
|
||||
for (i = AT29LV512_org.type.sector.size; i > 0; i--)
|
||||
{
|
||||
*dst++ = 0xff;
|
||||
}
|
||||
dst--;
|
||||
|
||||
(void)OS_RestoreIrq(shlet_ime);
|
||||
|
||||
result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_PROGRAM, dst, 0xff);
|
||||
|
||||
if (result)
|
||||
{
|
||||
result = (u16)((result & 0xff00) | CTRDG_BACKUP_PHASE_SECTOR_ERASE);
|
||||
}
|
||||
|
||||
MI_SetCartridgeRamCycle(ram_cycle);
|
||||
|
||||
(void)OS_UnlockCartridge(ctrdgi_flash_lock_id);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -10,14 +10,11 @@
|
||||
#include "MI_dma.h"
|
||||
#include "CARD_common.h"
|
||||
#include "PXI_init.h"
|
||||
#include "PXI_fifo.h"
|
||||
|
||||
static u16 OSi_IsInitReset = 0;
|
||||
vu16 OSi_IsResetOccurred = 0;
|
||||
|
||||
extern u32 PXI_IsCallbackReady(u32 param1, u32 param2);
|
||||
extern void PXI_SetFifoRecvCallback(u32 param1, void* callback);
|
||||
extern BOOL PXI_SendWordByFifo(u32 param1, u32 data, u32 param2);
|
||||
|
||||
static void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err);
|
||||
static void OSi_SendToPxi(u16 data);
|
||||
static void OSi_DoResetSystem(void);
|
||||
|
||||
@@ -0,0 +1,185 @@
|
||||
#include "function_target.h"
|
||||
#include "consts.h"
|
||||
#include "OS_interrupt.h"
|
||||
#include "OS_system.h"
|
||||
#include "PXI_fifo.h"
|
||||
#include "systemWork.h"
|
||||
|
||||
static u16 FifoCtrlInit = 0;
|
||||
static PXIFifoCallback FifoRecvCallbackTable[PXI_MAX_FIFO_TAG];
|
||||
|
||||
static inline PXIFifoStatus PXIi_SetToFifo(u32 data);
|
||||
|
||||
ARM_FUNC void PXI_InitFifo(void)
|
||||
{
|
||||
OSSystemWork *p = OS_GetSystemWork();
|
||||
OSIntrMode enabled = OS_DisableInterrupts();
|
||||
s32 i;
|
||||
|
||||
if (!FifoCtrlInit)
|
||||
{
|
||||
FifoCtrlInit = TRUE;
|
||||
|
||||
p->pxiHandleChecker[PXI_PROC_ARM9] = 0UL;
|
||||
|
||||
for (i = 0; i < PXI_MAX_FIFO_TAG; i++)
|
||||
{
|
||||
FifoRecvCallbackTable[i] = NULL;
|
||||
}
|
||||
|
||||
reg_PXI_SUBP_FIFO_CNT = (REG_PXI_SUBP_FIFO_CNT_SEND_CL_MASK
|
||||
| REG_PXI_SUBP_FIFO_CNT_RECV_RI_MASK | REG_PXI_SUBP_FIFO_CNT_E_MASK | REG_PXI_SUBP_FIFO_CNT_ERR_MASK);
|
||||
|
||||
(void)OS_ResetRequestIrqMask(OS_IE_SPFIFO_RECV);
|
||||
(void)OS_SetIrqFunction(OS_IE_SPFIFO_RECV, PXIi_HandlerRecvFifoNotEmpty);
|
||||
(void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV);
|
||||
|
||||
{
|
||||
s32 timeout;
|
||||
s32 c;
|
||||
|
||||
for (i = 0; ; i++)
|
||||
{
|
||||
c = reg_PXI_SUBPINTF & 15;
|
||||
reg_PXI_SUBPINTF = (u16)(c << 8);
|
||||
|
||||
if (c == 0 && i > 4)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
for (timeout = 1000; (reg_PXI_SUBPINTF & 15) == c; timeout--)
|
||||
{
|
||||
if (timeout == 0)
|
||||
{
|
||||
i = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
(void)OS_RestoreInterrupts(enabled);
|
||||
}
|
||||
|
||||
ARM_FUNC void PXI_SetFifoRecvCallback(s32 fifotag, PXIFifoCallback callback)
|
||||
{
|
||||
OSSystemWork *p = OS_GetSystemWork();
|
||||
OSIntrMode enabled = OS_DisableInterrupts();
|
||||
|
||||
FifoRecvCallbackTable[fifotag] = callback;
|
||||
if (callback)
|
||||
{
|
||||
p->pxiHandleChecker[PXI_PROC_ARM9] |= (1UL << fifotag);
|
||||
}
|
||||
else
|
||||
{
|
||||
p->pxiHandleChecker[PXI_PROC_ARM9] &= ~(1UL << fifotag);
|
||||
}
|
||||
(void)OS_RestoreInterrupts(enabled);
|
||||
}
|
||||
|
||||
ARM_FUNC BOOL PXI_IsCallbackReady(s32 fifotag, PXIProc proc)
|
||||
{
|
||||
OSSystemWork *p = OS_GetSystemWork();
|
||||
|
||||
return (p->pxiHandleChecker[proc] & (1UL << fifotag)) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
ARM_FUNC s32 PXI_SendWordByFifo(s32 fifotag, u32 data, BOOL err)
|
||||
{
|
||||
PXIFifoMessage fifomsg;
|
||||
|
||||
fifomsg.e.tag = (PXIFifoTag)fifotag;
|
||||
fifomsg.e.err = (u32)err;
|
||||
fifomsg.e.data = data;
|
||||
|
||||
return PXIi_SetToFifo(fifomsg.raw);
|
||||
}
|
||||
|
||||
static inline PXIFifoStatus PXIi_SetToFifo(u32 data)
|
||||
{
|
||||
if (reg_PXI_SUBP_FIFO_CNT & REG_PXI_SUBP_FIFO_CNT_ERR_MASK)
|
||||
{
|
||||
reg_PXI_SUBP_FIFO_CNT |= (REG_PXI_SUBP_FIFO_CNT_E_MASK | REG_PXI_SUBP_FIFO_CNT_ERR_MASK);
|
||||
return PXI_FIFO_FAIL_SEND_ERR;
|
||||
}
|
||||
|
||||
OSIntrMode enabled = OS_DisableInterrupts();
|
||||
if (reg_PXI_SUBP_FIFO_CNT & REG_PXI_SUBP_FIFO_CNT_SEND_FULL_MASK)
|
||||
{
|
||||
(void)OS_RestoreInterrupts(enabled);
|
||||
return PXI_FIFO_FAIL_SEND_FULL;
|
||||
}
|
||||
|
||||
reg_PXI_SEND_FIFO = data;
|
||||
(void)OS_RestoreInterrupts(enabled);
|
||||
return PXI_FIFO_SUCCESS;
|
||||
}
|
||||
|
||||
static inline PXIFifoStatus PXIi_GetFromFifo(u32 *data_buf)
|
||||
{
|
||||
if (reg_PXI_SUBP_FIFO_CNT & REG_PXI_SUBP_FIFO_CNT_ERR_MASK)
|
||||
{
|
||||
reg_PXI_SUBP_FIFO_CNT |= (REG_PXI_SUBP_FIFO_CNT_E_MASK | REG_PXI_SUBP_FIFO_CNT_ERR_MASK);
|
||||
return PXI_FIFO_FAIL_RECV_ERR;
|
||||
}
|
||||
|
||||
OSIntrMode enabled = OS_DisableInterrupts();
|
||||
if (reg_PXI_SUBP_FIFO_CNT & REG_PXI_SUBP_FIFO_CNT_RECV_EMP_MASK)
|
||||
{
|
||||
(void)OS_RestoreInterrupts(enabled);
|
||||
return PXI_FIFO_FAIL_RECV_EMPTY;
|
||||
}
|
||||
|
||||
|
||||
*data_buf = reg_PXI_RECV_FIFO;
|
||||
(void)OS_RestoreInterrupts(enabled);
|
||||
|
||||
return PXI_FIFO_SUCCESS;
|
||||
}
|
||||
|
||||
ARM_FUNC void PXIi_HandlerRecvFifoNotEmpty(void)
|
||||
{
|
||||
PXIFifoMessage fifomsg;
|
||||
PXIFifoStatus ret_code;
|
||||
PXIFifoTag tag;
|
||||
|
||||
while (TRUE)
|
||||
{
|
||||
ret_code = PXIi_GetFromFifo(&fifomsg.raw);
|
||||
|
||||
if (ret_code == PXI_FIFO_FAIL_RECV_EMPTY)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (ret_code == PXI_FIFO_FAIL_RECV_ERR)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
tag = (PXIFifoTag)fifomsg.e.tag;
|
||||
|
||||
if (tag)
|
||||
{
|
||||
if (FifoRecvCallbackTable[tag])
|
||||
{
|
||||
(FifoRecvCallbackTable[tag])(tag, fifomsg.e.data, (BOOL)fifomsg.e.err);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (fifomsg.e.err)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
fifomsg.e.err = TRUE;
|
||||
(void)PXIi_SetToFifo(fifomsg.raw);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
#include "PXI_init.h"
|
||||
#include "PXI_fifo.h"
|
||||
#include "function_target.h"
|
||||
|
||||
extern void PXI_InitFifo(void);
|
||||
|
||||
ARM_FUNC void PXI_Init(void)
|
||||
{
|
||||
PXI_InitFifo();
|
||||
|
||||
@@ -18,11 +18,6 @@ static u32 sCurrentTag;
|
||||
static u32 sFinishedTag;
|
||||
static struct SNDCommand *sFreeList;
|
||||
|
||||
// TODO remove these function declarations once they are in the headers
|
||||
extern s32 PXI_SendWordByFifo(u32, u32, u32);
|
||||
extern void PXI_SetFifoRecvCallback(u32, void (*)(s32, s32));
|
||||
extern BOOL PXI_IsCallbackReady(u32, u32);
|
||||
|
||||
static void InitPXI(void);
|
||||
static void RequestCommandProc(void);
|
||||
static struct SNDCommand *AllocCommand(void);
|
||||
@@ -280,25 +275,25 @@ ARM_FUNC s32 SND_CountWaitingCommand(void) {
|
||||
return SND_CMD_COUNT - SND_CountFreeCommand() - SND_CountReservedCommand();
|
||||
}
|
||||
|
||||
ARM_FUNC static void PxiFifoCallback(s32 a, s32 b) {
|
||||
#pragma unused (a)
|
||||
ARM_FUNC static void PxiFifoCallback(PXIFifoTag tag, u32 data, BOOL) {
|
||||
#pragma unused (tag)
|
||||
OSIntrMode oldirq = OS_DisableInterrupts();
|
||||
SNDi_CallAlarmHandler(b);
|
||||
SNDi_CallAlarmHandler((s32)data);
|
||||
(void)OS_RestoreInterrupts(oldirq);
|
||||
}
|
||||
|
||||
ARM_FUNC static void InitPXI(void) {
|
||||
PXI_SetFifoRecvCallback(7, PxiFifoCallback);
|
||||
PXI_SetFifoRecvCallback(PXI_FIFO_TAG_SOUND, PxiFifoCallback);
|
||||
|
||||
if (!IsCommandAvailable())
|
||||
return;
|
||||
|
||||
if (PXI_IsCallbackReady(7, 1))
|
||||
if (PXI_IsCallbackReady(PXI_FIFO_TAG_SOUND, PXI_PROC_ARM7))
|
||||
return;
|
||||
|
||||
do {
|
||||
OS_SpinWait(100);
|
||||
} while (!PXI_IsCallbackReady(7, 1));
|
||||
} while (!PXI_IsCallbackReady(PXI_FIFO_TAG_SOUND, PXI_PROC_ARM7));
|
||||
}
|
||||
|
||||
ARM_FUNC static void RequestCommandProc(void) {
|
||||
|
||||
@@ -915,7 +915,7 @@ MOD05_021E1A30: ; 0x021E1A30
|
||||
str r0, [sp, #0xc]
|
||||
bl FUN_020395F4
|
||||
str r0, [sp, #8]
|
||||
bl FUN_0203962C
|
||||
bl Field_TrainerIsDoubleBattle
|
||||
cmp r0, #0
|
||||
bne _021E1A60
|
||||
add sp, #0x10
|
||||
|
||||
@@ -42,7 +42,7 @@ MOD05_021E2BB8: ; 0x021E2BB8
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
add r0, r1, #0
|
||||
bl MOD05_021E2D00
|
||||
bl MOD05_ScriptContext_GetTextFrameDelay
|
||||
strb r0, [r4]
|
||||
mov r0, #0
|
||||
strb r0, [r4, #1]
|
||||
@@ -68,15 +68,15 @@ MOD05_021E2BD0: ; 0x021E2BD0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
add r1, sp, #8
|
||||
bl MOD05_021E2D9C
|
||||
bl MOD05_CreateMessageBox
|
||||
add r0, sp, #8
|
||||
add r1, r6, #0
|
||||
add r2, r7, #0
|
||||
bl MOD05_021E2DD4
|
||||
bl MOD05_ReadAndExpandMsgDataViaBuffer
|
||||
cmp r4, #0
|
||||
bne _021E2C10
|
||||
add r0, r5, #0
|
||||
bl MOD05_021E2D00
|
||||
bl MOD05_ScriptContext_GetTextFrameDelay
|
||||
add r2, r0, #0
|
||||
mov r0, #0
|
||||
mov r1, #1
|
||||
@@ -89,7 +89,7 @@ _021E2C16:
|
||||
str r0, [sp]
|
||||
ldr r3, [sp, #4]
|
||||
add r0, sp, #8
|
||||
bl MOD05_021E2E40
|
||||
bl MOD05_DrawFieldMessage
|
||||
add sp, #0x20
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
|
||||
@@ -107,14 +107,14 @@ MOD05_ShowMessageInField: ; 0x021E2C24
|
||||
add r5, #0x80
|
||||
ldr r0, [r5]
|
||||
add r1, sp, #0
|
||||
bl MOD05_021E2D9C
|
||||
bl MOD05_CreateMessageBox
|
||||
add r0, sp, #0
|
||||
add r1, r4, #0
|
||||
add r2, r6, #0
|
||||
bl MOD05_021E2DD4
|
||||
bl MOD05_ReadAndExpandMsgDataViaBuffer
|
||||
add r0, sp, #0
|
||||
mov r1, #1
|
||||
bl MOD05_021E2E68
|
||||
bl MOD05_AddTextPrinterParameterized
|
||||
add sp, #0x18
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
@@ -134,7 +134,7 @@ MOD05_021E2C58: ; 0x021E2C58
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
add r1, sp, #4
|
||||
bl MOD05_021E2D9C
|
||||
bl MOD05_CreateMessageBox
|
||||
add r0, sp, #0x20
|
||||
ldrh r0, [r0, #0x10]
|
||||
add r1, r4, #0
|
||||
@@ -142,13 +142,13 @@ MOD05_021E2C58: ; 0x021E2C58
|
||||
str r0, [sp]
|
||||
add r0, sp, #4
|
||||
add r3, r7, #0
|
||||
bl MOD05_021E2DF0
|
||||
bl MOD05_ExpandEasyChatMessage
|
||||
add r0, sp, #0x20
|
||||
ldrb r0, [r0, #0x14]
|
||||
cmp r0, #0xff
|
||||
beq _021E2CB0
|
||||
add r0, r5, #0
|
||||
bl MOD05_021E2D00
|
||||
bl MOD05_ScriptContext_GetTextFrameDelay
|
||||
add r2, r0, #0
|
||||
mov r0, #0
|
||||
str r0, [sp]
|
||||
@@ -156,13 +156,13 @@ MOD05_021E2C58: ; 0x021E2C58
|
||||
ldrb r3, [r3, #0x14]
|
||||
add r0, sp, #4
|
||||
mov r1, #1
|
||||
bl MOD05_021E2E40
|
||||
bl MOD05_DrawFieldMessage
|
||||
add sp, #0x1c
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_021E2CB0:
|
||||
add r0, sp, #4
|
||||
mov r1, #1
|
||||
bl MOD05_021E2E68
|
||||
bl MOD05_AddTextPrinterParameterized
|
||||
add sp, #0x1c
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
@@ -181,31 +181,31 @@ MOD05_021E2CBC: ; 0x021E2CBC
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
add r1, sp, #4
|
||||
bl MOD05_021E2D9C
|
||||
bl MOD05_CreateMessageBox
|
||||
ldr r1, [r5, #0x78]
|
||||
add r0, sp, #4
|
||||
add r2, r4, #0
|
||||
bl MOD05_021E2DD4
|
||||
bl MOD05_ReadAndExpandMsgDataViaBuffer
|
||||
add r0, r5, #0
|
||||
bl MOD05_021E2D00
|
||||
bl MOD05_ScriptContext_GetTextFrameDelay
|
||||
add r2, r0, #0
|
||||
mov r0, #0
|
||||
str r0, [sp]
|
||||
add r0, sp, #4
|
||||
mov r1, #1
|
||||
add r3, r6, #0
|
||||
bl MOD05_021E2E40
|
||||
bl MOD05_DrawFieldMessage
|
||||
add sp, #0x1c
|
||||
pop {r3, r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start MOD05_021E2D00
|
||||
MOD05_021E2D00: ; 0x021E2D00
|
||||
thumb_func_start MOD05_ScriptContext_GetTextFrameDelay
|
||||
MOD05_ScriptContext_GetTextFrameDelay: ; 0x021E2D00
|
||||
push {r3, lr}
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, #0xc]
|
||||
bl Sav2_PlayerData_GetOptionsAddr
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
|
||||
@@ -272,8 +272,8 @@ MOD05_021E2D5C: ; 0x021E2D5C
|
||||
str r0, [r4, #0x14]
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start MOD05_021E2D9C
|
||||
MOD05_021E2D9C: ; 0x021E2D9C
|
||||
thumb_func_start MOD05_CreateMessageBox
|
||||
MOD05_CreateMessageBox: ; 0x021E2D9C
|
||||
push {r3, r4, r5, lr}
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
@@ -300,8 +300,8 @@ _021E2DC8:
|
||||
pop {r3, r4, r5, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E2DD4
|
||||
MOD05_021E2DD4: ; 0x021E2DD4
|
||||
thumb_func_start MOD05_ReadAndExpandMsgDataViaBuffer
|
||||
MOD05_ReadAndExpandMsgDataViaBuffer: ; 0x021E2DD4
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
add r0, r1, #0
|
||||
@@ -315,8 +315,8 @@ MOD05_021E2DD4: ; 0x021E2DD4
|
||||
pop {r4, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E2DF0
|
||||
MOD05_021E2DF0: ; 0x021E2DF0
|
||||
thumb_func_start MOD05_ExpandEasyChatMessage
|
||||
MOD05_ExpandEasyChatMessage: ; 0x021E2DF0
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, #8
|
||||
add r5, r0, #0
|
||||
@@ -351,8 +351,8 @@ MOD05_021E2DF0: ; 0x021E2DF0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E2E40
|
||||
MOD05_021E2E40: ; 0x021E2E40
|
||||
thumb_func_start MOD05_DrawFieldMessage
|
||||
MOD05_DrawFieldMessage: ; 0x021E2E40
|
||||
push {r4, r5, r6, lr}
|
||||
sub sp, #8
|
||||
add r4, r0, #0
|
||||
@@ -367,14 +367,14 @@ MOD05_021E2E40: ; 0x021E2E40
|
||||
ldr r1, [r4]
|
||||
add r2, r6, #0
|
||||
add r3, r5, #0
|
||||
bl FUN_02054690
|
||||
bl DrawFieldMessage
|
||||
ldr r1, [r4, #0x14]
|
||||
strb r0, [r1]
|
||||
add sp, #8
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start MOD05_021E2E68
|
||||
MOD05_021E2E68: ; 0x021E2E68
|
||||
thumb_func_start MOD05_AddTextPrinterParameterized
|
||||
MOD05_AddTextPrinterParameterized: ; 0x021E2E68
|
||||
push {r3, r4, lr}
|
||||
sub sp, #0xc
|
||||
mov r3, #0
|
||||
|
||||
@@ -0,0 +1,316 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
.section .text
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7504
|
||||
MOD05_021E7504: ; 0x021E7504
|
||||
add r1, r0, #0
|
||||
ldr r0, [r1, #0x10]
|
||||
cmp r0, #3
|
||||
bhi _021E7536
|
||||
add r0, r0, r0
|
||||
add r0, pc
|
||||
ldrh r0, [r0, #6]
|
||||
lsl r0, r0, #0x10
|
||||
asr r0, r0, #0x10
|
||||
add pc, r0
|
||||
_021E7518: ; jump table
|
||||
.short _021E7520 - _021E7518 - 2 ; case 0
|
||||
.short _021E752C - _021E7518 - 2 ; case 1
|
||||
.short _021E7526 - _021E7518 - 2 ; case 2
|
||||
.short _021E7532 - _021E7518 - 2 ; case 3
|
||||
_021E7520:
|
||||
mov r0, #2
|
||||
str r0, [r1, #0x10]
|
||||
b _021E7536
|
||||
_021E7526:
|
||||
mov r0, #1
|
||||
str r0, [r1, #0x10]
|
||||
b _021E7536
|
||||
_021E752C:
|
||||
mov r0, #3
|
||||
str r0, [r1, #0x10]
|
||||
b _021E7536
|
||||
_021E7532:
|
||||
mov r0, #0
|
||||
str r0, [r1, #0x10]
|
||||
_021E7536:
|
||||
ldr r0, [r1]
|
||||
ldr r3, _021E7540 ; =FUN_02055304
|
||||
ldr r0, [r0, #0x38]
|
||||
ldr r1, [r1, #0x10]
|
||||
bx r3
|
||||
.balign 4, 0
|
||||
_021E7540: .word FUN_02055304
|
||||
|
||||
thumb_func_start MOD05_021E7544
|
||||
MOD05_021E7544: ; 0x021E7544
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0x24
|
||||
add r5, r1, #0
|
||||
add r7, r0, #0
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, #0x38]
|
||||
bl FUN_020553A0
|
||||
add r6, r0, #0
|
||||
ldr r0, [r5, #8]
|
||||
cmp r0, #0
|
||||
beq _021E7564
|
||||
cmp r0, #1
|
||||
beq _021E756E
|
||||
add sp, #0x24
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_021E7564:
|
||||
mov r0, #1
|
||||
str r0, [r5, #8]
|
||||
ldr r0, _021E760C ; =0x0000064F
|
||||
bl FUN_020054C8
|
||||
_021E756E:
|
||||
ldr r0, [r5, #0xc]
|
||||
lsr r2, r0, #0x1f
|
||||
lsl r1, r0, #0x1f
|
||||
sub r1, r1, r2
|
||||
mov r0, #0x1f
|
||||
ror r1, r0
|
||||
add r0, r2, r1
|
||||
beq _021E7584
|
||||
add r0, r5, #0
|
||||
bl MOD05_021E7504
|
||||
_021E7584:
|
||||
add r0, r6, #0
|
||||
add r1, sp, #0x18
|
||||
bl FUN_02058BA4
|
||||
ldr r4, [r5, #0xc]
|
||||
add r0, r4, #0
|
||||
bl _dflt
|
||||
str r0, [sp, #0x14]
|
||||
lsl r0, r4, #0xb
|
||||
str r1, [sp, #0x10]
|
||||
bl _dflt
|
||||
add r2, r0, #0
|
||||
add r3, r1, #0
|
||||
ldr r0, _021E7610 ; =0x9999999A
|
||||
ldr r1, _021E7614 ; =0x40C19999
|
||||
bl _dadd
|
||||
add r2, r0, #0
|
||||
add r3, r1, #0
|
||||
ldr r0, [sp, #0x14]
|
||||
ldr r1, [sp, #0x10]
|
||||
bl _dmul
|
||||
bl _dfix
|
||||
str r0, [sp, #0x1c]
|
||||
add r0, r6, #0
|
||||
add r1, sp, #0x18
|
||||
bl FUN_02058BB4
|
||||
ldr r0, [r5, #0xc]
|
||||
add r0, r0, #1
|
||||
str r0, [r5, #0xc]
|
||||
cmp r0, #0x14
|
||||
bne _021E75EA
|
||||
mov r0, #6
|
||||
str r0, [sp]
|
||||
mov r1, #0
|
||||
mov r0, #1
|
||||
str r0, [sp, #4]
|
||||
mov r0, #4
|
||||
str r0, [sp, #8]
|
||||
mov r0, #2
|
||||
add r2, r1, #0
|
||||
add r3, r1, #0
|
||||
bl FUN_0200E1D0
|
||||
add sp, #0x24
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
_021E75EA:
|
||||
ble _021E7606
|
||||
bl FUN_0200E308
|
||||
cmp r0, #0
|
||||
beq _021E7606
|
||||
ldr r0, [r5, #4]
|
||||
mov r1, #1
|
||||
str r1, [r0]
|
||||
add r0, r5, #0
|
||||
bl FreeToHeap
|
||||
add r0, r7, #0
|
||||
bl FUN_0200CAB4
|
||||
_021E7606:
|
||||
add sp, #0x24
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
nop
|
||||
_021E760C: .word 0x0000064F
|
||||
_021E7610: .word 0x9999999A
|
||||
_021E7614: .word 0x40C19999
|
||||
|
||||
thumb_func_start MOD05_021E7618
|
||||
MOD05_021E7618: ; 0x021E7618
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, #0x20
|
||||
add r5, r1, #0
|
||||
add r6, r0, #0
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, #0x38]
|
||||
bl FUN_020553A0
|
||||
ldr r1, [r5, #8]
|
||||
add r4, r0, #0
|
||||
cmp r1, #0
|
||||
beq _021E763C
|
||||
cmp r1, #1
|
||||
beq _021E7694
|
||||
cmp r1, #2
|
||||
beq _021E771C
|
||||
add sp, #0x20
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_021E763C:
|
||||
bl FUN_02058914
|
||||
add r0, r4, #0
|
||||
add r1, sp, #0x14
|
||||
bl FUN_02058BA4
|
||||
ldr r1, [r5, #0xc]
|
||||
mov r0, #0x14
|
||||
sub r6, r0, r1
|
||||
add r0, r6, #0
|
||||
bl _dflt
|
||||
str r0, [sp, #0xc]
|
||||
lsl r0, r6, #0xb
|
||||
add r7, r1, #0
|
||||
bl _dflt
|
||||
add r2, r0, #0
|
||||
add r3, r1, #0
|
||||
ldr r0, _021E7744 ; =0x9999999A
|
||||
ldr r1, _021E7748 ; =0x40C19999
|
||||
bl _dadd
|
||||
add r2, r0, #0
|
||||
add r3, r1, #0
|
||||
ldr r0, [sp, #0xc]
|
||||
add r1, r7, #0
|
||||
bl _dmul
|
||||
bl _dfix
|
||||
str r0, [sp, #0x18]
|
||||
add r0, r4, #0
|
||||
add r1, sp, #0x14
|
||||
bl FUN_02058BB4
|
||||
add r0, r4, #0
|
||||
bl MOD05_021F1D8C
|
||||
ldr r0, _021E774C ; =0x0000064F
|
||||
bl FUN_020054C8
|
||||
mov r0, #1
|
||||
str r0, [r5, #8]
|
||||
_021E7694:
|
||||
ldr r0, [r5, #0xc]
|
||||
lsr r2, r0, #0x1f
|
||||
lsl r1, r0, #0x1f
|
||||
sub r1, r1, r2
|
||||
mov r0, #0x1f
|
||||
ror r1, r0
|
||||
add r0, r2, r1
|
||||
beq _021E76AA
|
||||
add r0, r5, #0
|
||||
bl MOD05_021E7504
|
||||
_021E76AA:
|
||||
add r0, r4, #0
|
||||
add r1, sp, #0x14
|
||||
bl FUN_02058BA4
|
||||
ldr r1, [r5, #0xc]
|
||||
mov r0, #0x14
|
||||
sub r6, r0, r1
|
||||
add r0, r6, #0
|
||||
bl _dflt
|
||||
str r0, [sp, #0x10]
|
||||
lsl r0, r6, #0xb
|
||||
add r7, r1, #0
|
||||
bl _dflt
|
||||
add r2, r0, #0
|
||||
add r3, r1, #0
|
||||
ldr r0, _021E7744 ; =0x9999999A
|
||||
ldr r1, _021E7748 ; =0x40C19999
|
||||
bl _dadd
|
||||
add r2, r0, #0
|
||||
add r3, r1, #0
|
||||
ldr r0, [sp, #0x10]
|
||||
add r1, r7, #0
|
||||
bl _dmul
|
||||
bl _dfix
|
||||
str r0, [sp, #0x18]
|
||||
add r0, r4, #0
|
||||
add r1, sp, #0x14
|
||||
bl FUN_02058BB4
|
||||
ldr r0, [r5, #0xc]
|
||||
add r0, r0, #1
|
||||
str r0, [r5, #0xc]
|
||||
cmp r0, #2
|
||||
bne _021E770E
|
||||
mov r0, #6
|
||||
str r0, [sp]
|
||||
mov r0, #1
|
||||
str r0, [sp, #4]
|
||||
mov r1, #4
|
||||
str r1, [sp, #8]
|
||||
add r1, r0, #0
|
||||
add r2, r0, #0
|
||||
mov r3, #0
|
||||
bl FUN_0200E1D0
|
||||
_021E770E:
|
||||
ldr r0, [r5, #0xc]
|
||||
cmp r0, #0x14
|
||||
ble _021E7740
|
||||
mov r0, #2
|
||||
add sp, #0x20
|
||||
str r0, [r5, #8]
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_021E771C:
|
||||
bl FUN_0200E308
|
||||
cmp r0, #0
|
||||
beq _021E7740
|
||||
ldr r0, [r5]
|
||||
mov r1, #1
|
||||
ldr r0, [r0, #0x38]
|
||||
bl FUN_02055304
|
||||
ldr r0, [r5, #4]
|
||||
mov r1, #1
|
||||
str r1, [r0]
|
||||
add r0, r5, #0
|
||||
bl FreeToHeap
|
||||
add r0, r6, #0
|
||||
bl FUN_0200CAB4
|
||||
_021E7740:
|
||||
add sp, #0x20
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
_021E7744: .word 0x9999999A
|
||||
_021E7748: .word 0x40C19999
|
||||
_021E774C: .word 0x0000064F
|
||||
|
||||
thumb_func_start MOD05_021E7750
|
||||
MOD05_021E7750: ; 0x021E7750
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r5, r0, #0
|
||||
add r6, r1, #0
|
||||
mov r0, #4
|
||||
mov r1, #0x14
|
||||
add r7, r2, #0
|
||||
bl AllocFromHeapAtEnd
|
||||
add r4, r0, #0
|
||||
mov r1, #0
|
||||
mov r2, #0x14
|
||||
bl MI_CpuFill8
|
||||
str r5, [r4]
|
||||
str r7, [r4, #4]
|
||||
ldr r0, [r5, #0x38]
|
||||
bl FUN_020552F8
|
||||
str r0, [r4, #0x10]
|
||||
cmp r6, #0
|
||||
beq _021E7786
|
||||
ldr r0, _021E7794 ; =MOD05_021E7544
|
||||
add r1, r4, #0
|
||||
mov r2, #0x64
|
||||
bl FUN_0200CA44
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_021E7786:
|
||||
ldr r0, _021E7798 ; =MOD05_021E7618
|
||||
add r1, r4, #0
|
||||
mov r2, #0x64
|
||||
bl FUN_0200CA44
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
nop
|
||||
_021E7794: .word MOD05_021E7544
|
||||
_021E7798: .word MOD05_021E7618
|
||||
@@ -0,0 +1,621 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
.section .text
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E779C
|
||||
MOD05_021E779C: ; 0x021E779C
|
||||
push {r4, lr}
|
||||
mov r2, #0
|
||||
mov r1, #0x14
|
||||
add r3, r2, #0
|
||||
add r4, r0, #0
|
||||
bl MOD05_021E4BE8
|
||||
str r4, [r0, #0x10]
|
||||
pop {r4, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E77B0
|
||||
MOD05_021E77B0: ; 0x021E77B0
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
bl MOD05_021E78B4
|
||||
add r0, r4, #0
|
||||
bl MOD05_021E4C00
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start MOD05_021E77C0
|
||||
MOD05_021E77C0: ; 0x021E77C0
|
||||
ldr r1, [r0]
|
||||
add r1, r1, #1
|
||||
str r1, [r0]
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E77C8
|
||||
MOD05_021E77C8: ; 0x021E77C8
|
||||
push {r3, lr}
|
||||
ldr r1, [r0]
|
||||
sub r1, r1, #1
|
||||
str r1, [r0]
|
||||
bpl _021E77D6
|
||||
bl ErrorHandling
|
||||
_021E77D6:
|
||||
pop {r3, pc}
|
||||
|
||||
thumb_func_start MOD05_021E77D8
|
||||
MOD05_021E77D8: ; 0x021E77D8
|
||||
ldr r1, [r0, #4]
|
||||
add r1, r1, #1
|
||||
str r1, [r0, #4]
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E77E0
|
||||
MOD05_021E77E0: ; 0x021E77E0
|
||||
push {r3, lr}
|
||||
ldr r1, [r0, #4]
|
||||
sub r1, r1, #1
|
||||
str r1, [r0, #4]
|
||||
bpl _021E77EE
|
||||
bl ErrorHandling
|
||||
_021E77EE:
|
||||
pop {r3, pc}
|
||||
|
||||
thumb_func_start MOD05_021E77F0
|
||||
MOD05_021E77F0: ; 0x021E77F0
|
||||
push {r3, lr}
|
||||
cmp r1, #0
|
||||
bne _021E77FC
|
||||
bl MOD05_021E77C0
|
||||
pop {r3, pc}
|
||||
_021E77FC:
|
||||
bl MOD05_021E77D8
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7804
|
||||
MOD05_021E7804: ; 0x021E7804
|
||||
push {r3, lr}
|
||||
cmp r1, #0
|
||||
bne _021E7810
|
||||
bl MOD05_021E77C8
|
||||
pop {r3, pc}
|
||||
_021E7810:
|
||||
bl MOD05_021E77E0
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7818
|
||||
MOD05_021E7818: ; 0x021E7818
|
||||
push {r3, r4, lr}
|
||||
sub sp, #0xc
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #8]
|
||||
cmp r0, #0
|
||||
bne _021E785C
|
||||
mov r1, #1
|
||||
str r1, [r4, #8]
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r2, #0x55
|
||||
bl MOD05_021E5078
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #1
|
||||
mov r2, #0x75
|
||||
bl MOD05_021E50AC
|
||||
mov r1, #1
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r2, #4
|
||||
add r3, r1, #0
|
||||
bl MOD05_021E50D4
|
||||
mov r1, #1
|
||||
str r1, [sp]
|
||||
mov r0, #0
|
||||
str r0, [sp, #4]
|
||||
ldr r0, _021E7860 ; =UNK05_021F7854
|
||||
add r2, r1, #0
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r4, #0x10]
|
||||
add r3, r1, #0
|
||||
bl MOD05_021E4EFC
|
||||
_021E785C:
|
||||
add sp, #0xc
|
||||
pop {r3, r4, pc}
|
||||
.balign 4, 0
|
||||
_021E7860: .word UNK05_021F7854
|
||||
|
||||
thumb_func_start MOD05_021E7864
|
||||
MOD05_021E7864: ; 0x021E7864
|
||||
push {r3, r4, lr}
|
||||
sub sp, #0xc
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _021E78AC
|
||||
mov r0, #1
|
||||
str r0, [r4, #0xc]
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #0xa
|
||||
mov r2, #0x6c
|
||||
bl MOD05_021E5078
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #0xa
|
||||
mov r2, #0x75
|
||||
bl MOD05_021E50AC
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #0xb
|
||||
mov r2, #0xd
|
||||
mov r3, #1
|
||||
bl MOD05_021E50D4
|
||||
mov r0, #0xb
|
||||
str r0, [sp]
|
||||
mov r0, #0
|
||||
str r0, [sp, #4]
|
||||
ldr r0, _021E78B0 ; =UNK05_021F7854
|
||||
mov r2, #0xa
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #0xc
|
||||
add r3, r2, #0
|
||||
bl MOD05_021E4EFC
|
||||
_021E78AC:
|
||||
add sp, #0xc
|
||||
pop {r3, r4, pc}
|
||||
.balign 4, 0
|
||||
_021E78B0: .word UNK05_021F7854
|
||||
|
||||
thumb_func_start MOD05_021E78B4
|
||||
MOD05_021E78B4: ; 0x021E78B4
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #8]
|
||||
cmp r0, #1
|
||||
bne _021E78E2
|
||||
mov r0, #0
|
||||
str r0, [r4, #8]
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #1
|
||||
bl MOD05_021E50A0
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #1
|
||||
bl MOD05_021E50C8
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #1
|
||||
bl MOD05_021E5114
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #1
|
||||
bl MOD05_021E506C
|
||||
_021E78E2:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start MOD05_021E78E4
|
||||
MOD05_021E78E4: ; 0x021E78E4
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #0xc]
|
||||
cmp r0, #1
|
||||
bne _021E7912
|
||||
mov r0, #0
|
||||
str r0, [r4, #0xc]
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #0xa
|
||||
bl MOD05_021E50A0
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #0xa
|
||||
bl MOD05_021E50C8
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #0xb
|
||||
bl MOD05_021E5114
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #0xc
|
||||
bl MOD05_021E506C
|
||||
_021E7912:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start MOD05_021E7914
|
||||
MOD05_021E7914: ; 0x021E7914
|
||||
push {r3, lr}
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
bne _021E7920
|
||||
bl MOD05_021E7818
|
||||
_021E7920:
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7924
|
||||
MOD05_021E7924: ; 0x021E7924
|
||||
push {r3, lr}
|
||||
ldr r1, [r0, #4]
|
||||
cmp r1, #0
|
||||
bne _021E7930
|
||||
bl MOD05_021E7864
|
||||
_021E7930:
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7934
|
||||
MOD05_021E7934: ; 0x021E7934
|
||||
push {r3, lr}
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
bne _021E7940
|
||||
bl MOD05_021E78B4
|
||||
_021E7940:
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7944
|
||||
MOD05_021E7944: ; 0x021E7944
|
||||
push {r3, lr}
|
||||
ldr r1, [r0, #4]
|
||||
cmp r1, #0
|
||||
bne _021E7950
|
||||
bl MOD05_021E78E4
|
||||
_021E7950:
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7954
|
||||
MOD05_021E7954: ; 0x021E7954
|
||||
push {r3, lr}
|
||||
cmp r1, #0
|
||||
bne _021E7960
|
||||
bl MOD05_021E7914
|
||||
pop {r3, pc}
|
||||
_021E7960:
|
||||
bl MOD05_021E7924
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7968
|
||||
MOD05_021E7968: ; 0x021E7968
|
||||
push {r3, lr}
|
||||
cmp r1, #0
|
||||
bne _021E7974
|
||||
bl MOD05_021E7934
|
||||
pop {r3, pc}
|
||||
_021E7974:
|
||||
bl MOD05_021E7944
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E797C
|
||||
MOD05_021E797C: ; 0x021E797C
|
||||
push {r3, r4, r5, lr}
|
||||
sub sp, #8
|
||||
ldr r3, _021E7998 ; =UNK05_021F7824
|
||||
add r4, sp, #0
|
||||
ldr r5, [r3]
|
||||
ldr r3, [r3, #4]
|
||||
str r5, [sp]
|
||||
str r3, [sp, #4]
|
||||
lsl r1, r1, #2
|
||||
ldr r1, [r4, r1]
|
||||
bl MOD05_021E4EE4
|
||||
add sp, #8
|
||||
pop {r3, r4, r5, pc}
|
||||
.balign 4, 0
|
||||
_021E7998: .word UNK05_021F7824
|
||||
|
||||
thumb_func_start MOD05_021E799C
|
||||
MOD05_021E799C: ; 0x021E799C
|
||||
push {r3, lr}
|
||||
bl FUN_02064738
|
||||
ldr r0, [r0, #0x14]
|
||||
pop {r3, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E79A8
|
||||
MOD05_021E79A8: ; 0x021E79A8
|
||||
push {r4, r5, lr}
|
||||
sub sp, #0xc
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
bl FUN_0206475C
|
||||
add r2, r4, #0
|
||||
add r3, r0, #0
|
||||
add r2, #0x30
|
||||
ldmia r3!, {r0, r1}
|
||||
stmia r2!, {r0, r1}
|
||||
ldmia r3!, {r0, r1}
|
||||
stmia r2!, {r0, r1}
|
||||
mov r0, #6
|
||||
lsl r0, r0, #0xc
|
||||
str r0, [r4, #0x28]
|
||||
ldr r0, [r4, #0x38]
|
||||
ldr r1, [r4, #0x30]
|
||||
bl MOD05_021E7954
|
||||
add r0, r5, #0
|
||||
add r1, sp, #0
|
||||
bl FUN_0206477C
|
||||
ldr r0, [r4, #0x34]
|
||||
ldr r1, [r4, #0x30]
|
||||
add r2, sp, #0
|
||||
bl MOD05_021E797C
|
||||
str r0, [r4, #0x40]
|
||||
ldr r0, [r4, #0x38]
|
||||
ldr r1, [r4, #0x30]
|
||||
bl MOD05_021E77F0
|
||||
add r0, r5, #0
|
||||
bl FUN_02064754
|
||||
cmp r0, #1
|
||||
bne _021E79FC
|
||||
ldr r0, _021E7A04 ; =0x000005DD
|
||||
bl FUN_020054C8
|
||||
_021E79FC:
|
||||
mov r0, #1
|
||||
add sp, #0xc
|
||||
pop {r4, r5, pc}
|
||||
nop
|
||||
_021E7A04: .word 0x000005DD
|
||||
|
||||
thumb_func_start MOD05_021E7A08
|
||||
MOD05_021E7A08: ; 0x021E7A08
|
||||
push {r4, r5, lr}
|
||||
sub sp, #0xc
|
||||
add r4, r1, #0
|
||||
add r1, sp, #0
|
||||
add r5, r0, #0
|
||||
bl FUN_0206477C
|
||||
ldr r0, [r4]
|
||||
cmp r0, #0
|
||||
beq _021E7A24
|
||||
cmp r0, #1
|
||||
beq _021E7A46
|
||||
cmp r0, #2
|
||||
b _021E7A5E
|
||||
_021E7A24:
|
||||
ldr r1, [r4, #0x1c]
|
||||
ldr r0, [r4, #0x28]
|
||||
add r0, r1, r0
|
||||
str r0, [r4, #0x1c]
|
||||
beq _021E7A3A
|
||||
mov r0, #2
|
||||
ldr r1, [r4, #0x28]
|
||||
lsl r0, r0, #0xc
|
||||
sub r0, r1, r0
|
||||
str r0, [r4, #0x28]
|
||||
b _021E7A5E
|
||||
_021E7A3A:
|
||||
mov r0, #0
|
||||
str r0, [r4, #0x28]
|
||||
ldr r0, [r4]
|
||||
add r0, r0, #1
|
||||
str r0, [r4]
|
||||
b _021E7A5E
|
||||
_021E7A46:
|
||||
ldr r0, [r4, #4]
|
||||
add r0, r0, #1
|
||||
str r0, [r4, #4]
|
||||
cmp r0, #0x1e
|
||||
blt _021E7A5E
|
||||
ldr r0, [r4]
|
||||
add r0, r0, #1
|
||||
str r0, [r4]
|
||||
mov r0, #0
|
||||
str r0, [r4, #4]
|
||||
mov r0, #1
|
||||
str r0, [r4, #0x14]
|
||||
_021E7A5E:
|
||||
add r0, r5, #0
|
||||
add r1, sp, #0
|
||||
bl FUN_0206476C
|
||||
add sp, #0xc
|
||||
pop {r4, r5, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7A6C
|
||||
MOD05_021E7A6C: ; 0x021E7A6C
|
||||
push {r4, lr}
|
||||
add r4, r1, #0
|
||||
ldr r0, [r4, #0x40]
|
||||
bl FUN_0201F744
|
||||
ldr r0, [r4, #0x38]
|
||||
ldr r1, [r4, #0x30]
|
||||
bl MOD05_021E7804
|
||||
ldr r0, [r4, #0x38]
|
||||
ldr r1, [r4, #0x30]
|
||||
bl MOD05_021E7968
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start MOD05_021E7A88
|
||||
MOD05_021E7A88: ; 0x021E7A88
|
||||
push {r3, r4, lr}
|
||||
sub sp, #0xc
|
||||
add r4, r1, #0
|
||||
ldr r1, [r4, #0x10]
|
||||
cmp r1, #1
|
||||
beq _021E7ABA
|
||||
add r1, sp, #0
|
||||
bl FUN_0206477C
|
||||
ldr r1, [sp]
|
||||
ldr r0, [r4, #0x18]
|
||||
add r0, r1, r0
|
||||
str r0, [sp]
|
||||
ldr r1, [sp, #4]
|
||||
ldr r0, [r4, #0x1c]
|
||||
add r0, r1, r0
|
||||
str r0, [sp, #4]
|
||||
ldr r1, [sp, #8]
|
||||
ldr r0, [r4, #0x20]
|
||||
add r0, r1, r0
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r4, #0x40]
|
||||
add r1, sp, #0
|
||||
bl FUN_0201F7C8
|
||||
_021E7ABA:
|
||||
add sp, #0xc
|
||||
pop {r3, r4, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7AC0
|
||||
MOD05_021E7AC0: ; 0x021E7AC0
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0x24
|
||||
add r5, r0, #0
|
||||
add r6, r1, #0
|
||||
add r7, r2, #0
|
||||
bl MOD05_021E4C24
|
||||
add r4, r0, #0
|
||||
mov r1, #0x16
|
||||
str r6, [sp, #0x14]
|
||||
str r4, [sp, #0x18]
|
||||
bl MOD05_021E4C08
|
||||
str r0, [sp, #0x1c]
|
||||
add r0, r5, #0
|
||||
add r1, sp, #8
|
||||
str r5, [sp, #0x20]
|
||||
bl FUN_02058B5C
|
||||
add r0, r5, #0
|
||||
bl FUN_02058744
|
||||
add r1, r0, #1
|
||||
add r0, sp, #0x14
|
||||
str r0, [sp]
|
||||
str r1, [sp, #4]
|
||||
ldr r1, _021E7B04 ; =UNK05_021F7840
|
||||
add r0, r4, #0
|
||||
add r2, sp, #8
|
||||
add r3, r7, #0
|
||||
bl MOD05_021E4DC4
|
||||
add sp, #0x24
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
_021E7B04: .word UNK05_021F7840
|
||||
|
||||
thumb_func_start MOD05_021E7B08
|
||||
MOD05_021E7B08: ; 0x021E7B08
|
||||
push {r4, r5, lr}
|
||||
sub sp, #0xc
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
bl FUN_0206475C
|
||||
add r2, r4, #0
|
||||
add r3, r0, #0
|
||||
add r2, #0x30
|
||||
ldmia r3!, {r0, r1}
|
||||
stmia r2!, {r0, r1}
|
||||
ldmia r3!, {r0, r1}
|
||||
stmia r2!, {r0, r1}
|
||||
ldr r0, [r4, #0x3c]
|
||||
bl FUN_02058448
|
||||
str r0, [r4, #8]
|
||||
ldr r0, [r4, #0x3c]
|
||||
bl FUN_02058450
|
||||
str r0, [r4, #0xc]
|
||||
mov r0, #6
|
||||
lsl r0, r0, #0xc
|
||||
str r0, [r4, #0x28]
|
||||
ldr r0, [r4, #0x38]
|
||||
ldr r1, [r4, #0x30]
|
||||
bl MOD05_021E7954
|
||||
add r0, r5, #0
|
||||
add r1, sp, #0
|
||||
bl FUN_0206477C
|
||||
ldr r0, [r4, #0x34]
|
||||
ldr r1, [r4, #0x30]
|
||||
add r2, sp, #0
|
||||
bl MOD05_021E797C
|
||||
str r0, [r4, #0x40]
|
||||
ldr r0, [r4, #0x38]
|
||||
ldr r1, [r4, #0x30]
|
||||
bl MOD05_021E77F0
|
||||
add r0, r5, #0
|
||||
bl FUN_02064754
|
||||
cmp r0, #1
|
||||
bne _021E7B6C
|
||||
ldr r0, _021E7B74 ; =0x000005DD
|
||||
bl FUN_020054C8
|
||||
_021E7B6C:
|
||||
mov r0, #1
|
||||
add sp, #0xc
|
||||
pop {r4, r5, pc}
|
||||
nop
|
||||
_021E7B74: .word 0x000005DD
|
||||
|
||||
thumb_func_start MOD05_021E7B78
|
||||
MOD05_021E7B78: ; 0x021E7B78
|
||||
push {r3, r4, r5, r6, lr}
|
||||
sub sp, #0xc
|
||||
add r4, r1, #0
|
||||
ldr r6, [r4, #0x3c]
|
||||
ldr r1, [r4, #8]
|
||||
add r5, r0, #0
|
||||
ldr r2, [r4, #0xc]
|
||||
add r0, r6, #0
|
||||
bl FUN_020582A8
|
||||
cmp r0, #0
|
||||
bne _021E7B94
|
||||
bl ErrorHandling
|
||||
_021E7B94:
|
||||
add r0, r6, #0
|
||||
add r1, sp, #0
|
||||
bl MOD05_021F1E64
|
||||
mov r0, #2
|
||||
ldr r1, [sp, #4]
|
||||
lsl r0, r0, #0x10
|
||||
add r1, r1, r0
|
||||
str r1, [sp, #4]
|
||||
ldr r2, [sp, #8]
|
||||
lsr r1, r0, #5
|
||||
add r1, r2, r1
|
||||
str r1, [sp, #8]
|
||||
ldr r1, [r4]
|
||||
cmp r1, #0
|
||||
beq _021E7BBC
|
||||
cmp r1, #1
|
||||
beq _021E7BDC
|
||||
cmp r1, #2
|
||||
b _021E7BF4
|
||||
_021E7BBC:
|
||||
ldr r2, [r4, #0x1c]
|
||||
ldr r1, [r4, #0x28]
|
||||
add r1, r2, r1
|
||||
str r1, [r4, #0x1c]
|
||||
beq _021E7BD0
|
||||
ldr r1, [r4, #0x28]
|
||||
lsr r0, r0, #4
|
||||
sub r0, r1, r0
|
||||
str r0, [r4, #0x28]
|
||||
b _021E7BF4
|
||||
_021E7BD0:
|
||||
mov r0, #0
|
||||
str r0, [r4, #0x28]
|
||||
ldr r0, [r4]
|
||||
add r0, r0, #1
|
||||
str r0, [r4]
|
||||
b _021E7BF4
|
||||
_021E7BDC:
|
||||
ldr r0, [r4, #4]
|
||||
add r0, r0, #1
|
||||
str r0, [r4, #4]
|
||||
cmp r0, #0x1e
|
||||
blt _021E7BF4
|
||||
ldr r0, [r4]
|
||||
add r0, r0, #1
|
||||
str r0, [r4]
|
||||
mov r0, #0
|
||||
str r0, [r4, #4]
|
||||
mov r0, #1
|
||||
str r0, [r4, #0x14]
|
||||
_021E7BF4:
|
||||
add r0, r5, #0
|
||||
add r1, sp, #0
|
||||
bl FUN_0206476C
|
||||
add sp, #0xc
|
||||
pop {r3, r4, r5, r6, pc}
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global UNK05_021F7824
|
||||
UNK05_021F7824: ; 0x021F7824
|
||||
.word 0x00000001, 0x0000000C, 0x00000044, MOD05_021E79A8
|
||||
.word MOD05_021E7A6C, MOD05_021E7A08, MOD05_021E7A88
|
||||
|
||||
.global UNK05_021F7840
|
||||
UNK05_021F7840: ; 0x021F7840
|
||||
.word 0x00000044, MOD05_021E7B08, MOD05_021E7A6C, MOD05_021E7B78
|
||||
.word MOD05_021E7A88
|
||||
|
||||
.global UNK05_021F7854
|
||||
UNK05_021F7854: ; 0x021F7854
|
||||
.word 0x00000000, 0x00000001, 0x00000000, 0x00000000
|
||||
.word 0x00000000, 0x00000002
|
||||
@@ -0,0 +1,708 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
.section .text
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7C00
|
||||
MOD05_021E7C00: ; 0x021E7C00
|
||||
push {r4, lr}
|
||||
mov r1, #0x46
|
||||
lsl r1, r1, #6
|
||||
bl AllocFromHeap
|
||||
add r4, r0, #0
|
||||
bl MOD05_021E7C1C
|
||||
add r0, r4, #0
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start MOD05_021E7C14
|
||||
MOD05_021E7C14: ; 0x021E7C14
|
||||
ldr r3, _021E7C18 ; =FreeToHeap
|
||||
bx r3
|
||||
.balign 4, 0
|
||||
_021E7C18: .word FreeToHeap
|
||||
|
||||
thumb_func_start MOD05_021E7C1C
|
||||
MOD05_021E7C1C: ; 0x021E7C1C
|
||||
push {r3, r4, r5, r6, r7}
|
||||
sub sp, #0xc
|
||||
mov r4, #0
|
||||
mov ip, r0
|
||||
add r7, sp, #0
|
||||
add r3, r4, #0
|
||||
_021E7C28:
|
||||
str r3, [r7]
|
||||
str r3, [r7, #4]
|
||||
mov r0, #0x8c
|
||||
add r1, r4, #0
|
||||
mul r1, r0
|
||||
mov r0, ip
|
||||
add r2, r0, r1
|
||||
add r5, r2, #0
|
||||
str r3, [r7, #8]
|
||||
mov r0, ip
|
||||
str r3, [r0, r1]
|
||||
str r3, [r2, #4]
|
||||
str r3, [r2, #8]
|
||||
str r3, [r2, #0xc]
|
||||
add r6, r7, #0
|
||||
ldmia r6!, {r0, r1}
|
||||
add r5, #0x68
|
||||
stmia r5!, {r0, r1}
|
||||
ldr r0, [r6]
|
||||
add r6, r7, #0
|
||||
str r0, [r5]
|
||||
add r5, r2, #0
|
||||
ldmia r6!, {r0, r1}
|
||||
add r5, #0x74
|
||||
stmia r5!, {r0, r1}
|
||||
ldr r0, [r6]
|
||||
add r6, r7, #0
|
||||
str r0, [r5]
|
||||
add r5, r2, #0
|
||||
ldmia r6!, {r0, r1}
|
||||
add r5, #0x80
|
||||
stmia r5!, {r0, r1}
|
||||
ldr r0, [r6]
|
||||
str r0, [r5]
|
||||
add r0, r4, #1
|
||||
lsl r0, r0, #0x18
|
||||
lsr r4, r0, #0x18
|
||||
str r3, [r2, #0x64]
|
||||
cmp r4, #0x20
|
||||
blo _021E7C28
|
||||
add sp, #0xc
|
||||
pop {r3, r4, r5, r6, r7}
|
||||
bx lr
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7C80
|
||||
MOD05_021E7C80: ; 0x021E7C80
|
||||
push {r3, r4, r5, r6, lr}
|
||||
sub sp, #0xc
|
||||
add r5, r0, #0
|
||||
add r4, r1, #0
|
||||
cmp r5, #0x20
|
||||
blt _021E7C90
|
||||
bl ErrorHandling
|
||||
_021E7C90:
|
||||
add r6, sp, #0
|
||||
mov r3, #0
|
||||
str r3, [r6]
|
||||
str r3, [r6, #4]
|
||||
mov r0, #0x8c
|
||||
mul r0, r5
|
||||
str r3, [r6, #8]
|
||||
str r3, [r4, r0]
|
||||
add r2, r4, r0
|
||||
str r3, [r2, #4]
|
||||
str r3, [r2, #8]
|
||||
add r4, r2, #0
|
||||
str r3, [r2, #0xc]
|
||||
add r5, r6, #0
|
||||
ldmia r5!, {r0, r1}
|
||||
add r4, #0x68
|
||||
stmia r4!, {r0, r1}
|
||||
ldr r0, [r5]
|
||||
add r5, r6, #0
|
||||
str r0, [r4]
|
||||
add r4, r2, #0
|
||||
ldmia r5!, {r0, r1}
|
||||
add r4, #0x74
|
||||
stmia r4!, {r0, r1}
|
||||
ldr r0, [r5]
|
||||
str r0, [r4]
|
||||
add r4, r2, #0
|
||||
ldmia r6!, {r0, r1}
|
||||
add r4, #0x80
|
||||
stmia r4!, {r0, r1}
|
||||
ldr r0, [r6]
|
||||
str r0, [r4]
|
||||
str r3, [r2, #0x64]
|
||||
add sp, #0xc
|
||||
pop {r3, r4, r5, r6, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7CD8
|
||||
MOD05_021E7CD8: ; 0x021E7CD8
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0x14
|
||||
add r6, r0, #0
|
||||
ldr r0, [sp, #0x28]
|
||||
add r4, r1, #0
|
||||
str r0, [sp, #0x28]
|
||||
mov r0, #0
|
||||
add r7, r2, #0
|
||||
add r5, r3, #0
|
||||
str r0, [sp, #4]
|
||||
cmp r4, #0
|
||||
beq _021E7D0E
|
||||
mov r0, #4
|
||||
bl AllocFromHeapAtEnd
|
||||
str r0, [sp, #4]
|
||||
ldr r2, [sp, #4]
|
||||
add r0, r6, #0
|
||||
add r1, r4, #0
|
||||
bl NARC_ReadFile
|
||||
add r0, r4, #0
|
||||
mov r1, #0x30
|
||||
bl _u32_div_f
|
||||
str r0, [sp]
|
||||
b _021E7D10
|
||||
_021E7D0E:
|
||||
str r0, [sp]
|
||||
_021E7D10:
|
||||
ldr r4, [sp, #4]
|
||||
mov r6, #0
|
||||
_021E7D14:
|
||||
ldr r0, [sp]
|
||||
cmp r6, r0
|
||||
bhs _021E7D82
|
||||
ldr r0, [r4]
|
||||
add r2, r5, #0
|
||||
str r0, [r5]
|
||||
mov r0, #1
|
||||
str r0, [r5, #4]
|
||||
mov r0, #0
|
||||
add r3, r4, #4
|
||||
str r0, [r5, #0xc]
|
||||
ldmia r3!, {r0, r1}
|
||||
add r2, #0x68
|
||||
stmia r2!, {r0, r1}
|
||||
ldr r0, [r3]
|
||||
add r3, r4, #0
|
||||
str r0, [r2]
|
||||
add r3, #0x10
|
||||
add r2, r5, #0
|
||||
ldmia r3!, {r0, r1}
|
||||
add r2, #0x74
|
||||
stmia r2!, {r0, r1}
|
||||
ldr r0, [r3]
|
||||
add r3, r4, #0
|
||||
str r0, [r2]
|
||||
add r3, #0x1c
|
||||
add r2, r5, #0
|
||||
ldmia r3!, {r0, r1}
|
||||
add r2, #0x80
|
||||
stmia r2!, {r0, r1}
|
||||
ldr r0, [r3]
|
||||
add r3, r5, #0
|
||||
str r0, [r2]
|
||||
add r2, r5, #0
|
||||
ldr r0, [r5]
|
||||
add r1, r7, #0
|
||||
add r2, #0x10
|
||||
add r3, #0x64
|
||||
bl MOD05_021E7F10
|
||||
ldr r1, [r5]
|
||||
add r0, r7, #0
|
||||
bl MOD05_021F4CE4
|
||||
cmp r0, #0
|
||||
bne _021E7D74
|
||||
mov r0, #0
|
||||
str r0, [r5]
|
||||
_021E7D74:
|
||||
add r1, r5, #0
|
||||
ldr r0, [r5]
|
||||
ldr r2, [sp, #0x28]
|
||||
add r1, #0x10
|
||||
bl MOD05_021D9E80
|
||||
b _021E7DBE
|
||||
_021E7D82:
|
||||
mov r1, #0
|
||||
add r0, sp, #8
|
||||
str r1, [r0]
|
||||
str r1, [r0, #4]
|
||||
str r1, [r0, #8]
|
||||
add r0, r1, #0
|
||||
str r0, [r5]
|
||||
str r0, [r5, #4]
|
||||
add r2, r5, #0
|
||||
add r3, sp, #8
|
||||
str r0, [r5, #0xc]
|
||||
ldmia r3!, {r0, r1}
|
||||
add r2, #0x68
|
||||
stmia r2!, {r0, r1}
|
||||
ldr r0, [r3]
|
||||
add r3, sp, #8
|
||||
str r0, [r2]
|
||||
add r2, r5, #0
|
||||
ldmia r3!, {r0, r1}
|
||||
add r2, #0x74
|
||||
stmia r2!, {r0, r1}
|
||||
ldr r0, [r3]
|
||||
add r3, sp, #8
|
||||
str r0, [r2]
|
||||
add r2, r5, #0
|
||||
ldmia r3!, {r0, r1}
|
||||
add r2, #0x80
|
||||
stmia r2!, {r0, r1}
|
||||
ldr r0, [r3]
|
||||
str r0, [r2]
|
||||
_021E7DBE:
|
||||
add r6, r6, #1
|
||||
add r5, #0x8c
|
||||
add r4, #0x30
|
||||
cmp r6, #0x20
|
||||
blt _021E7D14
|
||||
ldr r0, [sp, #4]
|
||||
cmp r0, #0
|
||||
beq _021E7DD2
|
||||
bl FreeToHeap
|
||||
_021E7DD2:
|
||||
add sp, #0x14
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7DD8
|
||||
MOD05_021E7DD8: ; 0x021E7DD8
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, #0x48
|
||||
ldr r4, _021E7E94 ; =UNK05_021F7878
|
||||
str r2, [sp, #0xc]
|
||||
str r3, [sp, #0x10]
|
||||
add r6, r0, #0
|
||||
str r1, [sp, #8]
|
||||
add r3, sp, #0x18
|
||||
mov r2, #4
|
||||
_021E7DEA:
|
||||
ldmia r4!, {r0, r1}
|
||||
stmia r3!, {r0, r1}
|
||||
sub r2, r2, #1
|
||||
bne _021E7DEA
|
||||
ldr r0, [r4]
|
||||
ldr r5, [sp, #0x60]
|
||||
str r0, [r3]
|
||||
mov r7, #0
|
||||
_021E7DFA:
|
||||
ldr r0, [r5, #4]
|
||||
cmp r0, #0
|
||||
beq _021E7E86
|
||||
ldr r0, [r5, #8]
|
||||
cmp r0, #0
|
||||
bne _021E7E86
|
||||
add r4, r5, #0
|
||||
add r4, #0x68
|
||||
ldmia r4!, {r0, r1}
|
||||
add r3, sp, #0x3c
|
||||
add r2, r3, #0
|
||||
stmia r3!, {r0, r1}
|
||||
ldr r0, [r4]
|
||||
str r0, [r3]
|
||||
ldr r1, [sp, #0x3c]
|
||||
ldr r0, [r6]
|
||||
add r3, r5, #0
|
||||
add r0, r1, r0
|
||||
str r0, [sp, #0x3c]
|
||||
ldr r1, [sp, #0x44]
|
||||
ldr r0, [r6, #8]
|
||||
add r3, #0x80
|
||||
add r0, r1, r0
|
||||
str r0, [sp, #0x44]
|
||||
add r1, r2, #0
|
||||
ldr r0, [r5, #0x64]
|
||||
add r2, sp, #0x18
|
||||
bl FUN_0201B6D0
|
||||
cmp r0, #0
|
||||
beq _021E7E86
|
||||
ldr r0, [sp, #8]
|
||||
bl MOD05_021F4C9C
|
||||
add r4, r0, #0
|
||||
ldr r0, [sp, #0xc]
|
||||
cmp r0, #1
|
||||
bne _021E7E50
|
||||
ldr r0, [sp, #0x10]
|
||||
ldr r1, [r5, #0x64]
|
||||
ldr r2, _021E7E98 ; =0x00000F33
|
||||
bl MOD05_021DBB8C
|
||||
_021E7E50:
|
||||
ldr r0, [r5]
|
||||
add r1, r4, #0
|
||||
add r2, sp, #0x14
|
||||
bl MOD05_021DB9D4
|
||||
add r0, sp, #0x14
|
||||
ldrh r0, [r0]
|
||||
add r1, sp, #0x3c
|
||||
cmp r0, #0
|
||||
bne _021E7E74
|
||||
add r0, r5, #0
|
||||
add r3, r5, #0
|
||||
add r0, #0x10
|
||||
add r2, sp, #0x18
|
||||
add r3, #0x80
|
||||
bl FUN_0201B26C
|
||||
b _021E7E86
|
||||
_021E7E74:
|
||||
str r4, [sp]
|
||||
ldr r0, [r5]
|
||||
add r3, r5, #0
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [r5, #0x64]
|
||||
add r2, sp, #0x18
|
||||
add r3, #0x80
|
||||
bl MOD05_021E7F34
|
||||
_021E7E86:
|
||||
add r7, r7, #1
|
||||
add r5, #0x8c
|
||||
cmp r7, #0x20
|
||||
blt _021E7DFA
|
||||
add sp, #0x48
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
nop
|
||||
_021E7E94: .word UNK05_021F7878
|
||||
_021E7E98: .word 0x00000F33
|
||||
|
||||
thumb_func_start MOD05_021E7E9C
|
||||
MOD05_021E7E9C: ; 0x021E7E9C
|
||||
add r0, #0x74
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E7EA0
|
||||
MOD05_021E7EA0: ; 0x021E7EA0
|
||||
add r2, r1, #0
|
||||
add r2, #0x68
|
||||
add r3, r0, #0
|
||||
ldmia r2!, {r0, r1}
|
||||
stmia r3!, {r0, r1}
|
||||
ldr r0, [r2]
|
||||
str r0, [r3]
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E7EB0
|
||||
MOD05_021E7EB0: ; 0x021E7EB0
|
||||
add r3, r1, #0
|
||||
add r2, r0, #0
|
||||
ldmia r3!, {r0, r1}
|
||||
add r2, #0x68
|
||||
stmia r2!, {r0, r1}
|
||||
ldr r0, [r3]
|
||||
str r0, [r2]
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E7EC0
|
||||
MOD05_021E7EC0: ; 0x021E7EC0
|
||||
str r1, [r0, #8]
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E7EC4
|
||||
MOD05_021E7EC4: ; 0x021E7EC4
|
||||
ldr r0, [r0]
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E7EC8
|
||||
MOD05_021E7EC8: ; 0x021E7EC8
|
||||
add r0, #0x10
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E7ECC
|
||||
MOD05_021E7ECC: ; 0x021E7ECC
|
||||
ldr r0, [r0, #0x64]
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E7ED0
|
||||
MOD05_021E7ED0: ; 0x021E7ED0
|
||||
mov r2, #0x8c
|
||||
mul r2, r1
|
||||
add r0, r0, r2
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E7ED8
|
||||
MOD05_021E7ED8: ; 0x021E7ED8
|
||||
mov r3, #0
|
||||
_021E7EDA:
|
||||
ldr r2, [r0]
|
||||
cmp r2, r1
|
||||
beq _021E7EEA
|
||||
add r3, r3, #1
|
||||
add r0, #0x8c
|
||||
cmp r3, #0x20
|
||||
blt _021E7EDA
|
||||
mov r0, #0
|
||||
_021E7EEA:
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E7EEC
|
||||
MOD05_021E7EEC: ; 0x021E7EEC
|
||||
push {r3, r4, r5, lr}
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
cmp r4, #0x20
|
||||
blt _021E7EFA
|
||||
bl ErrorHandling
|
||||
_021E7EFA:
|
||||
mov r0, #0x8c
|
||||
mul r0, r4
|
||||
add r4, r5, r0
|
||||
ldr r0, [r4, #4]
|
||||
cmp r0, #0
|
||||
bne _021E7F0A
|
||||
bl ErrorHandling
|
||||
_021E7F0A:
|
||||
add r0, r4, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7F10
|
||||
MOD05_021E7F10: ; 0x021E7F10
|
||||
push {r3, r4, r5, lr}
|
||||
add r5, r2, #0
|
||||
add r4, r3, #0
|
||||
bl MOD05_021F4BD0
|
||||
ldr r0, [r0]
|
||||
bl FUN_020BC13C
|
||||
ldrh r1, [r0, #0xe]
|
||||
add r1, r0, r1
|
||||
ldr r1, [r1, #0xc]
|
||||
add r1, r0, r1
|
||||
add r0, r5, #0
|
||||
str r1, [r4]
|
||||
bl FUN_020B80B4
|
||||
pop {r3, r4, r5, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E7F34
|
||||
MOD05_021E7F34: ; 0x021E7F34
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r7, r0, #0
|
||||
add r0, r1, #0
|
||||
add r4, r2, #0
|
||||
add r5, r3, #0
|
||||
bl FUN_020B8474
|
||||
ldr r1, _021E7FB4 ; =UNK_021CEDD4
|
||||
add r0, r4, #0
|
||||
bl MI_Copy36B
|
||||
ldr r1, _021E7FB8 ; =UNK_021CED98
|
||||
mov r0, #0xa4
|
||||
ldr r2, [r1, #0x7c]
|
||||
bic r2, r0
|
||||
add r0, r5, #0
|
||||
str r2, [r1, #0x7c]
|
||||
bl FUN_020B844C
|
||||
bl FUN_020B849C
|
||||
add r2, sp, #0
|
||||
ldr r0, [sp, #0x1c]
|
||||
ldr r1, [sp, #0x18]
|
||||
add r2, #2
|
||||
add r3, sp, #0
|
||||
bl MOD05_021DB9E0
|
||||
add r0, sp, #0
|
||||
ldrh r0, [r0]
|
||||
ldr r1, [sp, #0x18]
|
||||
bl MOD05_021DB9F8
|
||||
add r6, r0, #0
|
||||
add r0, sp, #0
|
||||
ldrh r0, [r0, #2]
|
||||
mov r5, #0xff
|
||||
mov r4, #0
|
||||
cmp r0, #0
|
||||
ble _021E7FB0
|
||||
_021E7F84:
|
||||
lsl r0, r4, #2
|
||||
add r2, r6, r0
|
||||
ldrh r0, [r6, r0]
|
||||
cmp r5, r0
|
||||
beq _021E7F96
|
||||
lsl r0, r0, #0x18
|
||||
lsr r5, r0, #0x18
|
||||
mov r3, #1
|
||||
b _021E7F98
|
||||
_021E7F96:
|
||||
mov r3, #0
|
||||
_021E7F98:
|
||||
ldrh r2, [r2, #2]
|
||||
add r0, r7, #0
|
||||
add r1, r5, #0
|
||||
bl FUN_020BAFB8
|
||||
add r0, r4, #1
|
||||
lsl r0, r0, #0x18
|
||||
lsr r4, r0, #0x18
|
||||
add r0, sp, #0
|
||||
ldrh r0, [r0, #2]
|
||||
cmp r4, r0
|
||||
blt _021E7F84
|
||||
_021E7FB0:
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
nop
|
||||
_021E7FB4: .word UNK_021CEDD4
|
||||
_021E7FB8: .word UNK_021CED98
|
||||
|
||||
thumb_func_start MOD05_021E7FBC
|
||||
MOD05_021E7FBC: ; 0x021E7FBC
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, #0x10
|
||||
ldr r5, _021E8058 ; =UNK05_021F786C
|
||||
add r6, r0, #0
|
||||
add r7, r1, #0
|
||||
ldmia r5!, {r0, r1}
|
||||
add r4, sp, #4
|
||||
stmia r4!, {r0, r1}
|
||||
ldr r0, [r5]
|
||||
str r0, [r4]
|
||||
mov r4, #0
|
||||
mov r0, #0x8c
|
||||
_021E7FD4:
|
||||
add r1, r4, #0
|
||||
mul r1, r0
|
||||
add r5, r6, r1
|
||||
ldr r1, [r5, #4]
|
||||
cmp r1, #0
|
||||
bne _021E8044
|
||||
mov r0, #1
|
||||
str r0, [r5, #4]
|
||||
add r6, r5, #0
|
||||
ldmia r3!, {r0, r1}
|
||||
add r6, #0x68
|
||||
stmia r6!, {r0, r1}
|
||||
ldr r0, [r3]
|
||||
str r0, [r6]
|
||||
ldr r6, [sp, #0x28]
|
||||
cmp r6, #0
|
||||
beq _021E8008
|
||||
mov r0, #1
|
||||
str r0, [r5, #0xc]
|
||||
add r3, r5, #0
|
||||
ldmia r6!, {r0, r1}
|
||||
add r3, #0x74
|
||||
stmia r3!, {r0, r1}
|
||||
ldr r0, [r6]
|
||||
str r0, [r3]
|
||||
b _021E800C
|
||||
_021E8008:
|
||||
mov r0, #0
|
||||
str r0, [r5, #0xc]
|
||||
_021E800C:
|
||||
add r6, sp, #4
|
||||
add r3, r5, #0
|
||||
ldmia r6!, {r0, r1}
|
||||
add r3, #0x80
|
||||
stmia r3!, {r0, r1}
|
||||
ldr r0, [r6]
|
||||
add r1, r7, #0
|
||||
str r0, [r3]
|
||||
add r3, r5, #0
|
||||
str r2, [r5]
|
||||
add r0, r2, #0
|
||||
add r2, r5, #0
|
||||
add r2, #0x10
|
||||
add r3, #0x64
|
||||
bl MOD05_021E7F10
|
||||
ldr r0, [sp, #0x2c]
|
||||
mov r1, #0
|
||||
str r0, [sp]
|
||||
ldr r0, [r5]
|
||||
add r5, #0x10
|
||||
add r2, r1, #0
|
||||
add r3, r5, #0
|
||||
bl MOD05_021D9DC0
|
||||
add sp, #0x10
|
||||
add r0, r4, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_021E8044:
|
||||
add r1, r4, #1
|
||||
lsl r1, r1, #0x18
|
||||
lsr r4, r1, #0x18
|
||||
cmp r4, #0x20
|
||||
blo _021E7FD4
|
||||
bl ErrorHandling
|
||||
mov r0, #0x20
|
||||
add sp, #0x10
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
_021E8058: .word UNK05_021F786C
|
||||
|
||||
thumb_func_start MOD05_021E805C
|
||||
MOD05_021E805C: ; 0x021E805C
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, #0x38
|
||||
ldr r4, _021E80F4 ; =UNK05_021F789C
|
||||
str r0, [sp, #8]
|
||||
str r1, [sp, #0xc]
|
||||
add r3, sp, #0x14
|
||||
mov r2, #4
|
||||
_021E806A:
|
||||
ldmia r4!, {r0, r1}
|
||||
stmia r3!, {r0, r1}
|
||||
sub r2, r2, #1
|
||||
bne _021E806A
|
||||
ldr r0, [r4]
|
||||
mov r4, #0
|
||||
str r0, [r3]
|
||||
add r7, sp, #0x14
|
||||
_021E807A:
|
||||
mov r0, #0x8c
|
||||
add r1, r4, #0
|
||||
mul r1, r0
|
||||
ldr r0, [sp, #8]
|
||||
add r5, r0, r1
|
||||
ldr r0, [r5, #4]
|
||||
cmp r0, #0
|
||||
beq _021E80E4
|
||||
ldr r0, [r5, #8]
|
||||
cmp r0, #0
|
||||
bne _021E80E4
|
||||
ldr r0, [sp, #0xc]
|
||||
bl MOD05_021F4C9C
|
||||
add r6, r0, #0
|
||||
ldr r0, [r5]
|
||||
add r1, r6, #0
|
||||
add r2, sp, #0x10
|
||||
bl MOD05_021DB9D4
|
||||
ldr r0, [r5, #0xc]
|
||||
cmp r0, #0
|
||||
beq _021E80B2
|
||||
add r1, r5, #0
|
||||
add r0, r7, #0
|
||||
add r1, #0x74
|
||||
bl FUN_0201CAA8
|
||||
_021E80B2:
|
||||
add r0, sp, #0x10
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _021E80CE
|
||||
add r0, r5, #0
|
||||
add r1, r5, #0
|
||||
add r5, #0x80
|
||||
add r0, #0x10
|
||||
add r1, #0x68
|
||||
add r2, r7, #0
|
||||
add r3, r5, #0
|
||||
bl FUN_0201B26C
|
||||
b _021E80E4
|
||||
_021E80CE:
|
||||
str r6, [sp]
|
||||
ldr r0, [r5]
|
||||
add r1, r5, #0
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [r5, #0x64]
|
||||
add r5, #0x80
|
||||
add r1, #0x68
|
||||
add r2, r7, #0
|
||||
add r3, r5, #0
|
||||
bl MOD05_021E7F34
|
||||
_021E80E4:
|
||||
add r0, r4, #1
|
||||
lsl r0, r0, #0x18
|
||||
lsr r4, r0, #0x18
|
||||
cmp r4, #0x20
|
||||
blo _021E807A
|
||||
add sp, #0x38
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
nop
|
||||
_021E80F4: .word UNK05_021F789C
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global UNK05_021F786C
|
||||
UNK05_021F786C: ; 0x021F786C
|
||||
.word 0x00001000, 0x00001000, 0x00001000
|
||||
|
||||
.global UNK05_021F7878
|
||||
UNK05_021F7878: ; 0x021F7878
|
||||
.byte 0x00, 0x10, 0x00, 0x00 ;word
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
|
||||
|
||||
.global UNK05_021F789C
|
||||
UNK05_021F789C: ; 0x021F789C
|
||||
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ;word
|
||||
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x10, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
|
||||
@@ -0,0 +1,303 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
.section .text
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E80F8
|
||||
MOD05_021E80F8: ; 0x021E80F8
|
||||
push {r3, lr}
|
||||
mov r1, #0x14
|
||||
bl AllocFromHeap
|
||||
add r3, r0, #0
|
||||
mov r2, #0x14
|
||||
mov r1, #0
|
||||
_021E8106:
|
||||
strb r1, [r3]
|
||||
add r3, r3, #1
|
||||
sub r2, r2, #1
|
||||
bne _021E8106
|
||||
pop {r3, pc}
|
||||
|
||||
thumb_func_start MOD05_021E8110
|
||||
MOD05_021E8110: ; 0x021E8110
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldrb r1, [r4, #0x13]
|
||||
lsl r1, r1, #0x18
|
||||
lsr r1, r1, #0x1f
|
||||
beq _021E8120
|
||||
bl FUN_02019178
|
||||
_021E8120:
|
||||
add r0, r4, #0
|
||||
bl FreeToHeap
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start MOD05_021E8128
|
||||
MOD05_021E8128: ; 0x021E8128
|
||||
strb r1, [r0, #0x12]
|
||||
strh r2, [r0, #0x10]
|
||||
bx lr
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E8130
|
||||
MOD05_021E8130: ; 0x021E8130
|
||||
ldrb r3, [r0, #0x13]
|
||||
mov r2, #0x7f
|
||||
bic r3, r2
|
||||
mov r2, #0x7f
|
||||
and r1, r2
|
||||
orr r1, r3
|
||||
strb r1, [r0, #0x13]
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E8140
|
||||
MOD05_021E8140: ; 0x021E8140
|
||||
bx lr
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E8144
|
||||
MOD05_021E8144: ; 0x021E8144
|
||||
ldrb r0, [r0, #0x12]
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E8148
|
||||
MOD05_021E8148: ; 0x021E8148
|
||||
ldrb r0, [r0, #0x13]
|
||||
lsl r0, r0, #0x19
|
||||
lsr r0, r0, #0x19
|
||||
bne _021E8154
|
||||
mov r0, #1
|
||||
bx lr
|
||||
_021E8154:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
|
||||
thumb_func_start MOD05_021E8158
|
||||
MOD05_021E8158: ; 0x021E8158
|
||||
push {r4, lr}
|
||||
ldr r4, [r0, #0x60]
|
||||
ldrb r1, [r4, #0x13]
|
||||
lsl r1, r1, #0x19
|
||||
lsr r1, r1, #0x19
|
||||
cmp r1, #4
|
||||
bhi _021E81BA
|
||||
add r1, r1, r1
|
||||
add r1, pc
|
||||
ldrh r1, [r1, #6]
|
||||
lsl r1, r1, #0x10
|
||||
asr r1, r1, #0x10
|
||||
add pc, r1
|
||||
_021E8172: ; jump table
|
||||
.short _021E81BA - _021E8172 - 2 ; case 0
|
||||
.short _021E817C - _021E8172 - 2 ; case 1
|
||||
.short _021E818A - _021E8172 - 2 ; case 2
|
||||
.short _021E819C - _021E8172 - 2 ; case 3
|
||||
.short _021E81AE - _021E8172 - 2 ; case 4
|
||||
_021E817C:
|
||||
bl MOD05_021E81D0
|
||||
ldrb r1, [r4, #0x13]
|
||||
mov r0, #0x7f
|
||||
bic r1, r0
|
||||
strb r1, [r4, #0x13]
|
||||
pop {r4, pc}
|
||||
_021E818A:
|
||||
bl MOD05_021E82A0
|
||||
cmp r0, #1
|
||||
bne _021E81BA
|
||||
ldrb r1, [r4, #0x13]
|
||||
mov r0, #0x7f
|
||||
bic r1, r0
|
||||
strb r1, [r4, #0x13]
|
||||
pop {r4, pc}
|
||||
_021E819C:
|
||||
bl MOD05_021E8260
|
||||
cmp r0, #1
|
||||
bne _021E81BA
|
||||
ldrb r1, [r4, #0x13]
|
||||
mov r0, #0x7f
|
||||
bic r1, r0
|
||||
strb r1, [r4, #0x13]
|
||||
pop {r4, pc}
|
||||
_021E81AE:
|
||||
bl MOD05_021E820C
|
||||
ldrb r1, [r4, #0x13]
|
||||
mov r0, #0x7f
|
||||
bic r1, r0
|
||||
strb r1, [r4, #0x13]
|
||||
_021E81BA:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start MOD05_021E81BC
|
||||
MOD05_021E81BC: ; 0x021E81BC
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #0x60]
|
||||
bl MOD05_021E8130
|
||||
add r0, r4, #0
|
||||
bl MOD05_021E8158
|
||||
pop {r4, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E81D0
|
||||
MOD05_021E81D0: ; 0x021E81D0
|
||||
push {r4, lr}
|
||||
mov r1, #3
|
||||
add r4, r0, #0
|
||||
add r3, r1, #0
|
||||
ldr r0, [r4, #8]
|
||||
add r2, r1, #0
|
||||
sub r3, #0x33
|
||||
bl FUN_020179E0
|
||||
ldr r1, [r4, #0x60]
|
||||
ldrb r0, [r1, #0x13]
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x1f
|
||||
bne _021E8200
|
||||
ldrb r2, [r1, #0x12]
|
||||
ldr r0, [r4, #8]
|
||||
mov r3, #3
|
||||
bl FUN_020546E0
|
||||
ldr r2, [r4, #0x60]
|
||||
mov r0, #0x80
|
||||
ldrb r1, [r2, #0x13]
|
||||
orr r0, r1
|
||||
strb r0, [r2, #0x13]
|
||||
_021E8200:
|
||||
ldr r0, [r4, #0x60]
|
||||
ldrb r1, [r0, #0x12]
|
||||
ldrh r2, [r0, #0x10]
|
||||
bl FUN_02054744
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start MOD05_021E820C
|
||||
MOD05_021E820C: ; 0x021E820C
|
||||
push {r4, lr}
|
||||
sub sp, #0x10
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #0x60]
|
||||
ldrb r1, [r0, #0x13]
|
||||
lsl r1, r1, #0x18
|
||||
lsr r1, r1, #0x1f
|
||||
beq _021E825A
|
||||
bl FUN_02019178
|
||||
mov r0, #0x12
|
||||
str r0, [sp]
|
||||
mov r0, #0x20
|
||||
str r0, [sp, #4]
|
||||
mov r0, #6
|
||||
str r0, [sp, #8]
|
||||
mov r0, #0x10
|
||||
str r0, [sp, #0xc]
|
||||
mov r2, #0
|
||||
ldr r0, [r4, #8]
|
||||
mov r1, #3
|
||||
add r3, r2, #0
|
||||
bl FUN_02018540
|
||||
ldr r0, [r4, #8]
|
||||
mov r1, #3
|
||||
bl FUN_02017CD0
|
||||
mov r1, #3
|
||||
ldr r0, [r4, #8]
|
||||
add r2, r1, #0
|
||||
mov r3, #0
|
||||
bl FUN_020179E0
|
||||
ldr r2, [r4, #0x60]
|
||||
mov r0, #0x80
|
||||
ldrb r1, [r2, #0x13]
|
||||
bic r1, r0
|
||||
strb r1, [r2, #0x13]
|
||||
_021E825A:
|
||||
add sp, #0x10
|
||||
pop {r4, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E8260
|
||||
MOD05_021E8260: ; 0x021E8260
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #8]
|
||||
mov r1, #3
|
||||
bl FUN_02017B54
|
||||
cmp r0, #0
|
||||
bne _021E8274
|
||||
mov r0, #1
|
||||
pop {r4, pc}
|
||||
_021E8274:
|
||||
mov r1, #0x2f
|
||||
mvn r1, r1
|
||||
cmp r0, r1
|
||||
ble _021E8280
|
||||
cmp r0, #0
|
||||
blt _021E828E
|
||||
_021E8280:
|
||||
mov r1, #3
|
||||
add r3, r1, #0
|
||||
ldr r0, [r4, #8]
|
||||
add r2, r1, #0
|
||||
sub r3, #0x33
|
||||
bl FUN_020179E0
|
||||
_021E828E:
|
||||
ldr r0, [r4, #8]
|
||||
mov r1, #3
|
||||
mov r2, #4
|
||||
mov r3, #0x10
|
||||
bl FUN_020179E0
|
||||
mov r0, #0
|
||||
pop {r4, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E82A0
|
||||
MOD05_021E82A0: ; 0x021E82A0
|
||||
push {r4, lr}
|
||||
sub sp, #0x10
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #8]
|
||||
mov r1, #3
|
||||
bl FUN_02017B54
|
||||
mov r1, #0x2f
|
||||
mvn r1, r1
|
||||
cmp r0, r1
|
||||
bne _021E82EC
|
||||
mov r0, #0x12
|
||||
str r0, [sp]
|
||||
mov r0, #0x20
|
||||
str r0, [sp, #4]
|
||||
mov r0, #6
|
||||
str r0, [sp, #8]
|
||||
mov r0, #0x10
|
||||
str r0, [sp, #0xc]
|
||||
mov r2, #0
|
||||
ldr r0, [r4, #8]
|
||||
mov r1, #3
|
||||
add r3, r2, #0
|
||||
bl FUN_02018540
|
||||
ldr r0, [r4, #8]
|
||||
mov r1, #3
|
||||
bl FUN_02017CD0
|
||||
mov r1, #3
|
||||
ldr r0, [r4, #8]
|
||||
add r2, r1, #0
|
||||
mov r3, #0
|
||||
bl FUN_020179E0
|
||||
add sp, #0x10
|
||||
mov r0, #1
|
||||
pop {r4, pc}
|
||||
_021E82EC:
|
||||
ble _021E82F2
|
||||
cmp r0, #0
|
||||
blt _021E82FE
|
||||
_021E82F2:
|
||||
mov r1, #3
|
||||
ldr r0, [r4, #8]
|
||||
add r2, r1, #0
|
||||
mov r3, #0
|
||||
bl FUN_020179E0
|
||||
_021E82FE:
|
||||
ldr r0, [r4, #8]
|
||||
mov r1, #3
|
||||
mov r2, #5
|
||||
mov r3, #0x10
|
||||
bl FUN_020179E0
|
||||
mov r0, #0
|
||||
add sp, #0x10
|
||||
pop {r4, pc}
|
||||
@@ -0,0 +1,409 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
.section .text
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E8310
|
||||
MOD05_021E8310: ; 0x021E8310
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
ldr r4, [r1, #0xc]
|
||||
add r5, r0, #0
|
||||
add r0, r4, #0
|
||||
bl FUN_02034E30
|
||||
bl FUN_02034DC0
|
||||
add r6, r0, #0
|
||||
add r0, r4, #0
|
||||
bl Sav2_Pokedex_get
|
||||
add r7, r0, #0
|
||||
ldr r0, [r6]
|
||||
bl FUN_02034824
|
||||
str r0, [r5, #4]
|
||||
add r0, r7, #0
|
||||
bl Pokedex_GetSinnohDexFlag
|
||||
cmp r0, #0
|
||||
beq _021E8344
|
||||
add r0, r7, #0
|
||||
bl Pokedex_CountSeenMons
|
||||
b _021E8346
|
||||
_021E8344:
|
||||
mov r0, #0
|
||||
_021E8346:
|
||||
str r0, [r5]
|
||||
add r0, r4, #0
|
||||
bl Sav2_PlayerData_GetProfileAddr
|
||||
str r0, [r5, #8]
|
||||
add r0, r4, #0
|
||||
bl Sav2_PlayerData_GetIGTAddr
|
||||
str r0, [r5, #0xc]
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E835C
|
||||
MOD05_021E835C: ; 0x021E835C
|
||||
push {r3, r4, r5, lr}
|
||||
sub sp, #8
|
||||
add r4, r1, #0
|
||||
ldr r2, [r4, #4]
|
||||
mov r1, #0
|
||||
add r5, r0, #0
|
||||
bl BufferLandmarkName
|
||||
ldr r2, [r4, #8]
|
||||
add r0, r5, #0
|
||||
mov r1, #1
|
||||
bl BufferPlayersName
|
||||
ldr r0, [r4, #8]
|
||||
bl PlayerProfile_CountBadges
|
||||
add r2, r0, #0
|
||||
mov r0, #0
|
||||
str r0, [sp]
|
||||
mov r3, #1
|
||||
str r3, [sp, #4]
|
||||
add r0, r5, #0
|
||||
mov r1, #2
|
||||
bl BufferIntegerAsString
|
||||
ldr r2, [r4]
|
||||
cmp r2, #0x64
|
||||
blt _021E839A
|
||||
mov r3, #3
|
||||
mov r0, #0
|
||||
b _021E83A8
|
||||
_021E839A:
|
||||
cmp r2, #0xa
|
||||
blt _021E83A4
|
||||
mov r3, #3
|
||||
mov r0, #1
|
||||
b _021E83A8
|
||||
_021E83A4:
|
||||
mov r3, #2
|
||||
mov r0, #1
|
||||
_021E83A8:
|
||||
str r0, [sp]
|
||||
mov r0, #1
|
||||
str r0, [sp, #4]
|
||||
add r0, r5, #0
|
||||
mov r1, #3
|
||||
bl BufferIntegerAsString
|
||||
ldr r0, [r4, #0xc]
|
||||
bl GetIGTHours
|
||||
add r2, r0, #0
|
||||
cmp r2, #0x64
|
||||
blt _021E83C8
|
||||
mov r3, #3
|
||||
mov r0, #0
|
||||
b _021E83D6
|
||||
_021E83C8:
|
||||
cmp r2, #0xa
|
||||
blt _021E83D2
|
||||
mov r3, #3
|
||||
mov r0, #1
|
||||
b _021E83D6
|
||||
_021E83D2:
|
||||
mov r3, #2
|
||||
mov r0, #1
|
||||
_021E83D6:
|
||||
str r0, [sp]
|
||||
mov r0, #1
|
||||
str r0, [sp, #4]
|
||||
add r0, r5, #0
|
||||
mov r1, #4
|
||||
bl BufferIntegerAsString
|
||||
ldr r0, [r4, #0xc]
|
||||
bl GetIGTMinutes
|
||||
mov r3, #2
|
||||
add r2, r0, #0
|
||||
str r3, [sp]
|
||||
mov r0, #1
|
||||
str r0, [sp, #4]
|
||||
add r0, r5, #0
|
||||
mov r1, #5
|
||||
bl BufferIntegerAsString
|
||||
add sp, #8
|
||||
pop {r3, r4, r5, pc}
|
||||
|
||||
thumb_func_start MOD05_021E8400
|
||||
MOD05_021E8400: ; 0x021E8400
|
||||
ldr r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _021E840A
|
||||
mov r0, #0xa
|
||||
bx lr
|
||||
_021E840A:
|
||||
mov r0, #8
|
||||
bx lr
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E8410
|
||||
MOD05_021E8410: ; 0x021E8410
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, #0x18
|
||||
add r5, r0, #0
|
||||
mov r0, #0
|
||||
mov r1, #1
|
||||
bl FUN_02002E4C
|
||||
add r4, r0, #0
|
||||
mov r0, #0
|
||||
mov r1, #3
|
||||
bl FUN_02002E4C
|
||||
add r0, r4, r0
|
||||
str r0, [sp, #0x14]
|
||||
mov r4, #0
|
||||
ldr r0, [r5, #0x14]
|
||||
ldr r1, [r5, #0x18]
|
||||
ldr r3, [r5, #4]
|
||||
add r2, r4, #0
|
||||
bl ReadMsgData_ExpandPlaceholders
|
||||
add r1, r4, #0
|
||||
add r6, r0, #0
|
||||
str r1, [sp]
|
||||
mov r0, #0xff
|
||||
str r0, [sp, #4]
|
||||
str r1, [sp, #8]
|
||||
ldr r0, [r5, #0x10]
|
||||
add r2, r6, #0
|
||||
add r3, r1, #0
|
||||
bl AddTextPrinterParameterized
|
||||
add r0, r6, #0
|
||||
bl String_dtor
|
||||
mov r0, #1
|
||||
str r0, [sp, #0x10]
|
||||
ldr r0, _021E84EC ; =UNK05_021F78D4
|
||||
ldr r7, _021E84F0 ; =UNK05_021F78C4
|
||||
str r0, [sp, #0xc]
|
||||
_021E8460:
|
||||
ldr r0, [sp, #0xc]
|
||||
ldr r1, [r0]
|
||||
cmp r1, #3
|
||||
bne _021E846E
|
||||
ldr r0, [r5, #0x1c]
|
||||
cmp r0, #0
|
||||
beq _021E84D6
|
||||
_021E846E:
|
||||
ldr r0, [sp, #0x14]
|
||||
add r4, r4, r0
|
||||
ldr r0, [r5, #0x18]
|
||||
bl NewString_ReadMsgData
|
||||
add r6, r0, #0
|
||||
mov r1, #0
|
||||
str r4, [sp]
|
||||
mov r0, #0xff
|
||||
str r0, [sp, #4]
|
||||
mov r0, #0
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r5, #0x10]
|
||||
add r2, r6, #0
|
||||
add r3, r1, #0
|
||||
bl AddTextPrinterParameterized
|
||||
add r0, r6, #0
|
||||
bl String_dtor
|
||||
sub r2, r7, #4
|
||||
ldr r0, [r5, #0x14]
|
||||
ldr r1, [r5, #0x18]
|
||||
ldr r2, [r2]
|
||||
ldr r3, [r5, #4]
|
||||
bl ReadMsgData_ExpandPlaceholders
|
||||
add r6, r0, #0
|
||||
mov r0, #0
|
||||
mov r1, #2
|
||||
bl FUN_02002E4C
|
||||
add r2, r0, #0
|
||||
mov r0, #0
|
||||
add r1, r6, #0
|
||||
bl FUN_02002E14
|
||||
mov r1, #0x68
|
||||
sub r3, r1, r0
|
||||
str r4, [sp]
|
||||
mov r0, #0xff
|
||||
str r0, [sp, #4]
|
||||
mov r0, #0
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r5, #0x10]
|
||||
mov r1, #0
|
||||
add r2, r6, #0
|
||||
bl AddTextPrinterParameterized
|
||||
add r0, r6, #0
|
||||
bl String_dtor
|
||||
_021E84D6:
|
||||
ldr r0, [sp, #0xc]
|
||||
add r7, r7, #4
|
||||
add r0, r0, #4
|
||||
str r0, [sp, #0xc]
|
||||
ldr r0, [sp, #0x10]
|
||||
add r0, r0, #1
|
||||
str r0, [sp, #0x10]
|
||||
cmp r0, #5
|
||||
blo _021E8460
|
||||
add sp, #0x18
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
_021E84EC: .word UNK05_021F78D4
|
||||
_021E84F0: .word UNK05_021F78C4
|
||||
|
||||
thumb_func_start MOD05_021E84F4
|
||||
MOD05_021E84F4: ; 0x021E84F4
|
||||
push {r3, r4, lr}
|
||||
sub sp, #0x14
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #4]
|
||||
mov r1, #0x10
|
||||
bl AllocFromHeap
|
||||
str r0, [r4, #0x10]
|
||||
mov r3, #1
|
||||
str r3, [sp]
|
||||
ldr r0, [r4, #0x2c]
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [r4, #0x30]
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp, #8]
|
||||
mov r0, #0xd
|
||||
str r0, [sp, #0xc]
|
||||
ldr r0, _021E8564 ; =0x0000027F
|
||||
str r0, [sp, #0x10]
|
||||
ldrb r2, [r4, #8]
|
||||
ldr r0, [r4, #0xc]
|
||||
ldr r1, [r4, #0x10]
|
||||
bl FUN_02019064
|
||||
mov r0, #0
|
||||
str r0, [sp]
|
||||
ldr r0, [r4, #4]
|
||||
ldr r2, _021E8568 ; =0x000003D9
|
||||
str r0, [sp, #4]
|
||||
ldrb r1, [r4, #8]
|
||||
ldr r0, [r4, #0xc]
|
||||
mov r3, #0xb
|
||||
bl FUN_0200CB00
|
||||
mov r0, #0
|
||||
mov r1, #6
|
||||
bl FUN_02002E4C
|
||||
add r1, r0, #0
|
||||
ldr r0, [r4, #0x10]
|
||||
bl FUN_02019620
|
||||
add r0, r4, #0
|
||||
bl MOD05_021E8410
|
||||
ldr r0, [r4, #0x10]
|
||||
ldr r2, _021E8568 ; =0x000003D9
|
||||
mov r1, #0
|
||||
mov r3, #0xb
|
||||
bl FUN_0200CCA4
|
||||
add sp, #0x14
|
||||
pop {r3, r4, pc}
|
||||
.balign 4, 0
|
||||
_021E8564: .word 0x0000027F
|
||||
_021E8568: .word 0x000003D9
|
||||
|
||||
thumb_func_start MOD05_021E856C
|
||||
MOD05_021E856C: ; 0x021E856C
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #0x10]
|
||||
mov r1, #0
|
||||
bl FUN_0200CCF8
|
||||
ldr r0, [r4, #0x10]
|
||||
bl FUN_02019178
|
||||
ldr r0, [r4, #0x10]
|
||||
bl FreeToHeap
|
||||
pop {r4, pc}
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD05_021E8588
|
||||
MOD05_021E8588: ; 0x021E8588
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r5, r1, #0
|
||||
add r6, r0, #0
|
||||
add r0, r5, #0
|
||||
mov r1, #0x34
|
||||
add r7, r2, #0
|
||||
bl AllocFromHeap
|
||||
add r4, r0, #0
|
||||
str r6, [r4]
|
||||
str r5, [r4, #4]
|
||||
strb r7, [r4, #8]
|
||||
ldr r0, [r6, #8]
|
||||
str r0, [r4, #0xc]
|
||||
add r0, r5, #0
|
||||
bl ScrStrBufs_new
|
||||
str r0, [r4, #0x14]
|
||||
ldr r2, _021E85E0 ; =0x000001E3
|
||||
mov r0, #1
|
||||
mov r1, #0x1a
|
||||
add r3, r5, #0
|
||||
bl NewMsgDataFromNarc
|
||||
str r0, [r4, #0x18]
|
||||
add r0, r4, #0
|
||||
ldr r1, [r4]
|
||||
add r0, #0x1c
|
||||
bl MOD05_021E8310
|
||||
add r1, r4, #0
|
||||
ldr r0, [r4, #0x14]
|
||||
add r1, #0x1c
|
||||
bl MOD05_021E835C
|
||||
mov r0, #0xd
|
||||
str r0, [r4, #0x2c]
|
||||
add r0, r4, #0
|
||||
add r0, #0x1c
|
||||
bl MOD05_021E8400
|
||||
str r0, [r4, #0x30]
|
||||
add r0, r4, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
_021E85E0: .word 0x000001E3
|
||||
|
||||
thumb_func_start MOD05_021E85E4
|
||||
MOD05_021E85E4: ; 0x021E85E4
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #0x18]
|
||||
bl DestroyMsgData
|
||||
ldr r0, [r4, #0x14]
|
||||
bl ScrStrBufs_delete
|
||||
add r0, r4, #0
|
||||
bl FreeToHeap
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start MOD05_021E85FC
|
||||
MOD05_021E85FC: ; 0x021E85FC
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
bl FUN_02034E48
|
||||
add r0, r4, #0
|
||||
mov r1, #4
|
||||
mov r2, #0
|
||||
bl MOD05_021EFA9C
|
||||
ldr r0, [r4, #0x38]
|
||||
bl FUN_02055320
|
||||
ldr r1, [r4, #0x1c]
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r4, #0x38]
|
||||
bl FUN_0205532C
|
||||
ldr r1, [r4, #0x1c]
|
||||
str r0, [r1, #0xc]
|
||||
mov r1, #0
|
||||
ldr r0, [r4, #0x1c]
|
||||
mvn r1, r1
|
||||
str r1, [r0, #4]
|
||||
ldr r0, [r4, #0x38]
|
||||
bl FUN_020552F8
|
||||
ldr r1, [r4, #0x1c]
|
||||
str r0, [r1, #0x10]
|
||||
ldr r0, [r4, #0xc]
|
||||
bl FUN_02022720
|
||||
cmp r0, #2
|
||||
bne _021E8642
|
||||
mov r0, #1
|
||||
pop {r4, pc}
|
||||
_021E8642:
|
||||
mov r0, #0
|
||||
pop {r4, pc}
|
||||
.balign 4, 0
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global UNK05_021F78C4
|
||||
UNK05_021F78C4: ; 0x021F78C4
|
||||
.word 0x00000006, 0x00000007, 0x00000008, 0x00000000
|
||||
|
||||
.global UNK05_021F78D4
|
||||
UNK05_021F78D4: ; 0x021F78D4
|
||||
.word 0x00000001, 0x00000002, 0x00000003, 0x00000004
|
||||
+5
-2602
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,23 @@
|
||||
#ifndef POKEDIAMOND_MOD05_021E72FC_H
|
||||
#define POKEDIAMOND_MOD05_021E72FC_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
|
||||
typedef struct UnkStruct021E7358
|
||||
{
|
||||
u32 Unk00;
|
||||
u32 Unk04;
|
||||
u32 Unk08;
|
||||
u32 Unk0C;
|
||||
u32 Unk10;
|
||||
|
||||
} UnkStruct021E7358;
|
||||
|
||||
BOOL MOD05_021E72FC(u32 param0, u32 param1);
|
||||
void MOD05_021E7358(u32 param0, u32 param1, u32 param2);
|
||||
u32 MOD05_021E7388(u32 param0);
|
||||
BOOL MOD05_021E73B4(UnkStruct021E7358 *param0);
|
||||
UnkStruct021E7358 *MOD05_021E74D4(u32 param0);
|
||||
void MOD05_021E74F8(UnkStruct021E7358 *param0);
|
||||
|
||||
#endif //POKEDIAMOND_MOD05_021E72FC_H
|
||||
@@ -0,0 +1,160 @@
|
||||
#include "global.h"
|
||||
#include "mod05_021E72FC.h"
|
||||
#include "heap.h"
|
||||
|
||||
extern void FUN_020054C8(u32 param0);
|
||||
extern void FUN_020463CC(u32 param0, void *func, UnkStruct021E7358 *param2);
|
||||
extern u32 FUN_020553A0(u32 param0);
|
||||
extern u32 FUN_02058720(u32 param0);
|
||||
extern BOOL FUN_02054B30(u8 param0);
|
||||
extern BOOL FUN_02054B3C(u8 param0);
|
||||
extern BOOL FUN_02054B48(u8 param0);
|
||||
extern BOOL FUN_02054B54(u8 param0);
|
||||
extern UnkStruct021E7358 *FUN_0204652C(UnkStruct021E7358 *param0);
|
||||
extern void FUN_02058410(u32 param0, u32 param1);
|
||||
extern BOOL FUN_02057254(u32 param0);
|
||||
extern u32 FUN_0205AFDC(u32 param0, u32 param1);
|
||||
extern void FUN_02057260(u32 param0, u32 param1);
|
||||
extern void FUN_02055304(u32 param0, u32 param1);
|
||||
extern BOOL FUN_02056B74(u32 param0, u32 param1, u32 param2);
|
||||
extern void FUN_02058418(u32 param0, u32 param1);
|
||||
extern void FUN_020054F0(u32 param0, u32 param1);
|
||||
extern void FUN_02016A8C(u32 param0, void *param1);
|
||||
|
||||
THUMB_FUNC BOOL MOD05_021E72FC(u32 param0, u32 param1)
|
||||
{
|
||||
u8 res = (u8)FUN_02058720(FUN_020553A0(param1));
|
||||
u32 r2;
|
||||
if (FUN_02054B30(res) == TRUE)
|
||||
{
|
||||
r2 = 3;
|
||||
goto label;
|
||||
}
|
||||
else if (FUN_02054B3C(res) == TRUE)
|
||||
{
|
||||
r2 = 2;
|
||||
goto label;
|
||||
}
|
||||
else if (FUN_02054B48(res) == TRUE)
|
||||
{
|
||||
r2 = 0;
|
||||
goto label;
|
||||
}
|
||||
else if (FUN_02054B54(res) == TRUE)
|
||||
{
|
||||
r2 = 1;
|
||||
goto label;
|
||||
}
|
||||
return FALSE;
|
||||
label:
|
||||
MOD05_021E7358(param0, param1, r2);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
THUMB_FUNC void MOD05_021E7358(u32 param0, u32 param1, u32 param2)
|
||||
{
|
||||
UnkStruct021E7358 *res = MOD05_021E74D4(24);
|
||||
res->Unk0C = param0;
|
||||
res->Unk10 = param1;
|
||||
res->Unk00 = param2;
|
||||
FUN_020054C8(1624);
|
||||
FUN_020463CC(param0, MOD05_021E73B4, res);
|
||||
}
|
||||
|
||||
THUMB_FUNC u32 MOD05_021E7388(u32 param0)
|
||||
{
|
||||
switch (param0)
|
||||
{
|
||||
case 0:
|
||||
return 2;
|
||||
case 2:
|
||||
return 1;
|
||||
case 1:
|
||||
return 3;
|
||||
case 3:
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD05_021E73B4(UnkStruct021E7358 *param0)
|
||||
{
|
||||
UnkStruct021E7358 *strct = FUN_0204652C(param0);
|
||||
u32 res = FUN_020553A0(strct->Unk10);
|
||||
u8 res2 = (u8)FUN_02058720(res);
|
||||
switch (strct->Unk08)
|
||||
{
|
||||
case 0:
|
||||
FUN_02058410(res, 1 << 8);
|
||||
strct->Unk08++;
|
||||
break;
|
||||
case 1:
|
||||
if (!FUN_02057254(strct->Unk10))
|
||||
{
|
||||
break;
|
||||
}
|
||||
FUN_02057260(strct->Unk10, FUN_0205AFDC(strct->Unk00, 12));
|
||||
FUN_02055304(strct->Unk10, strct->Unk00);
|
||||
strct->Unk08++;
|
||||
strct->Unk04 = 7;
|
||||
break;
|
||||
case 2:
|
||||
if (strct->Unk04 == 2 || strct->Unk04 == 4 || strct->Unk04 == 6)
|
||||
{
|
||||
strct->Unk00 = MOD05_021E7388(strct->Unk00);
|
||||
FUN_02055304(strct->Unk10, strct->Unk00);
|
||||
}
|
||||
if (--(strct->Unk04))
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (FUN_02054B30(res2) == TRUE)
|
||||
{
|
||||
strct->Unk00 = 3;
|
||||
}
|
||||
else if (FUN_02054B3C(res2) == TRUE)
|
||||
{
|
||||
strct->Unk00 = 2;
|
||||
}
|
||||
else if (FUN_02054B48(res2) == TRUE)
|
||||
{
|
||||
strct->Unk00 = 0;
|
||||
}
|
||||
else if (FUN_02054B54(res2) == TRUE)
|
||||
{
|
||||
strct->Unk00 = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
strct->Unk00 = MOD05_021E7388(strct->Unk00);
|
||||
}
|
||||
if (FUN_02056B74(strct->Unk10, res, strct->Unk00) == FALSE)
|
||||
{
|
||||
strct->Unk08 = 1;
|
||||
break;
|
||||
}
|
||||
FUN_02058418(res, 0x80);
|
||||
FUN_02058418(res, 1 << 8);
|
||||
FUN_02055304(strct->Unk10, strct->Unk00);
|
||||
MOD05_021E74F8(strct);
|
||||
FUN_020054F0(1624, 0);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
THUMB_FUNC UnkStruct021E7358 *MOD05_021E74D4(u32 param0)
|
||||
{
|
||||
UnkStruct021E7358 *res = (UnkStruct021E7358 *)AllocFromHeapAtEnd(4, param0);
|
||||
if (res == NULL)
|
||||
{
|
||||
ErrorHandling();
|
||||
}
|
||||
memset((void *)res, 0, param0);
|
||||
return res;
|
||||
}
|
||||
|
||||
THUMB_FUNC void MOD05_021E74F8(UnkStruct021E7358 *param0)
|
||||
{
|
||||
FUN_02016A8C(4, param0);
|
||||
}
|
||||
@@ -8929,7 +8929,7 @@ _0223DA3E:
|
||||
mov r0, #0x85
|
||||
lsl r0, r0, #2
|
||||
ldr r0, [r4, r0]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp]
|
||||
@@ -10293,7 +10293,7 @@ _0223E5FE:
|
||||
ldr r0, [r4]
|
||||
ldr r1, _0223E618 ; =0x0224F348
|
||||
mov r2, #0x1f
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
add r4, #0x80
|
||||
str r0, [r4]
|
||||
mov r0, #8
|
||||
@@ -12384,7 +12384,7 @@ MOD06_0223F720: ; 0x0223F720
|
||||
ldr r0, [r0, #0x68]
|
||||
mov r3, #0xb
|
||||
ldr r0, [r0, #8]
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x60]
|
||||
ldr r0, _0223F76C ; =MOD06_0223F770
|
||||
bl MOD06_0223F8BC
|
||||
@@ -13438,7 +13438,7 @@ MOD06_0223FFD4: ; 0x0223FFD4
|
||||
ldr r0, [r0, #0x68]
|
||||
mov r3, #0xb
|
||||
ldr r0, [r0, #8]
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x60]
|
||||
ldr r0, _0224002C ; =MOD06_02240030
|
||||
bl MOD06_0223F8BC
|
||||
@@ -13698,7 +13698,7 @@ MOD06_02240204: ; 0x02240204
|
||||
ldr r0, [r0, #0x68]
|
||||
mov r3, #0xb
|
||||
ldr r0, [r0, #8]
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x60]
|
||||
ldr r0, _02240254 ; =MOD06_02240258
|
||||
bl MOD06_0223F8BC
|
||||
@@ -13821,7 +13821,7 @@ MOD06_02240310: ; 0x02240310
|
||||
ldr r0, [r0, #0x68]
|
||||
mov r3, #0xb
|
||||
ldr r0, [r0, #8]
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x60]
|
||||
ldr r0, _02240360 ; =MOD06_0223FD08
|
||||
bl MOD06_0223F8BC
|
||||
@@ -19372,7 +19372,7 @@ _02242FA6:
|
||||
ldr r0, [r0, #8]
|
||||
ldr r2, _02242FE8 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x64]
|
||||
add r0, r4, #0
|
||||
mov r1, #0x24
|
||||
@@ -41696,12 +41696,12 @@ MOD06_0224DBA8: ; 0x0224DBA8
|
||||
ldr r0, [r5, #8]
|
||||
bl Sav2_PlayerData_GetOptionsAddr
|
||||
add r4, r0, #0
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
mov r1, #0x53
|
||||
lsl r1, r1, #2
|
||||
str r0, [r5, r1]
|
||||
add r0, r4, #0
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
mov r1, #0x15
|
||||
lsl r1, r1, #4
|
||||
str r0, [r5, r1]
|
||||
@@ -42800,7 +42800,7 @@ MOD06_0224E470: ; 0x0224E470
|
||||
mov r2, #0x1f
|
||||
mov r3, #0xb
|
||||
str r4, [sp]
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r5, #4]
|
||||
str r4, [r5, #8]
|
||||
mov r0, #1
|
||||
|
||||
@@ -120,7 +120,7 @@ _0222F30E:
|
||||
mov r0, #0x13
|
||||
lsl r0, r0, #4
|
||||
ldr r0, [r4, r0]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
add r4, r0, #0
|
||||
lsl r0, r4, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
@@ -3600,7 +3600,7 @@ _02230E2E:
|
||||
mov r1, #0x6d
|
||||
lsl r1, r1, #2
|
||||
ldr r0, [r0, r1]
|
||||
bl FUN_0202502C
|
||||
bl Options_GetBattleScene
|
||||
cmp r0, #0
|
||||
bne _02230E40
|
||||
mov r0, #1
|
||||
@@ -3613,11 +3613,11 @@ _02230E40:
|
||||
MOD11_02230E44: ; 0x02230E44
|
||||
mov r1, #0x6d
|
||||
lsl r1, r1, #2
|
||||
ldr r3, _02230E50 ; =FUN_02025084
|
||||
ldr r3, _02230E50 ; =Options_GetFrame
|
||||
ldr r0, [r0, r1]
|
||||
bx r3
|
||||
nop
|
||||
_02230E50: .word FUN_02025084
|
||||
_02230E50: .word Options_GetFrame
|
||||
|
||||
thumb_func_start MOD11_02230E54
|
||||
MOD11_02230E54: ; 0x02230E54
|
||||
@@ -3632,7 +3632,7 @@ _02230E62:
|
||||
mov r1, #0x6d
|
||||
lsl r1, r1, #2
|
||||
ldr r0, [r0, r1]
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
pop {r3, pc}
|
||||
.align 2, 0
|
||||
|
||||
@@ -3640,11 +3640,11 @@ _02230E62:
|
||||
MOD11_02230E70: ; 0x02230E70
|
||||
mov r1, #0x6d
|
||||
lsl r1, r1, #2
|
||||
ldr r3, _02230E7C ; =FUN_02025048
|
||||
ldr r3, _02230E7C ; =Options_GetBattleStyle
|
||||
ldr r0, [r0, r1]
|
||||
bx r3
|
||||
nop
|
||||
_02230E7C: .word FUN_02025048
|
||||
_02230E7C: .word Options_GetBattleStyle
|
||||
|
||||
thumb_func_start MOD11_02230E80
|
||||
MOD11_02230E80: ; 0x02230E80
|
||||
|
||||
@@ -4224,7 +4224,7 @@ MOD12_0222F834: ; 0x0222F834
|
||||
ldr r1, [r5]
|
||||
ldr r0, _0222F930 ; =0x00001988
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
add r4, r0, #0
|
||||
lsl r0, r4, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
@@ -6224,7 +6224,7 @@ MOD12_022308F0: ; 0x022308F0
|
||||
ldr r1, [r5]
|
||||
ldr r0, _022309C4 ; =0x00001988
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
add r4, r0, #0
|
||||
lsl r0, r4, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
@@ -15253,7 +15253,7 @@ _02234F2A:
|
||||
bne _02234F40
|
||||
ldr r0, _02234FAC ; =0x00001988
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
add r4, r0, #0
|
||||
b _02234F42
|
||||
_02234F40:
|
||||
@@ -25497,7 +25497,7 @@ MOD12_02239AD0: ; 0x02239AD0
|
||||
bne _02239AF2
|
||||
ldr r0, _02239B44 ; =0x00001988
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
add r4, r0, #0
|
||||
b _02239AF4
|
||||
_02239AF2:
|
||||
@@ -34742,7 +34742,7 @@ MOD12_0223E1EC: ; 0x0223E1EC
|
||||
bne _0223E20E
|
||||
ldr r0, _0223E26C ; =0x00001988
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
add r4, r0, #0
|
||||
b _0223E210
|
||||
_0223E20E:
|
||||
@@ -43529,7 +43529,7 @@ MOD12_022425F4: ; 0x022425F4
|
||||
bne _02242616
|
||||
ldr r0, _02242674 ; =0x00001988
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
add r4, r0, #0
|
||||
b _02242618
|
||||
_02242616:
|
||||
@@ -43673,7 +43673,7 @@ MOD12_022426BC: ; 0x022426BC
|
||||
ldr r1, [r5]
|
||||
ldr r0, _02242784 ; =0x00001988
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
add r4, r0, #0
|
||||
lsl r0, r4, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
@@ -43843,7 +43843,7 @@ MOD12_02242804: ; 0x02242804
|
||||
ldr r1, [r6]
|
||||
ldr r0, _022429D0 ; =0x00001988
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
add r4, r0, #0
|
||||
lsl r0, r4, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
|
||||
@@ -9849,11 +9849,11 @@ MOD14_021DC3AC: ; 0x021DC3AC
|
||||
MOD14_021DC3B4: ; 0x021DC3B4
|
||||
mov r1, #0x69
|
||||
lsl r1, r1, #2
|
||||
ldr r3, _021DC3C0 ; =FUN_02025084
|
||||
ldr r3, _021DC3C0 ; =Options_GetFrame
|
||||
ldr r0, [r0, r1]
|
||||
bx r3
|
||||
nop
|
||||
_021DC3C0: .word FUN_02025084
|
||||
_021DC3C0: .word Options_GetFrame
|
||||
|
||||
thumb_func_start MOD14_021DC3C4
|
||||
MOD14_021DC3C4: ; 0x021DC3C4
|
||||
|
||||
@@ -4666,7 +4666,7 @@ MOD17_021D9918: ; 0x021D9918
|
||||
ldr r0, [r5, r0]
|
||||
add r7, r2, #0
|
||||
add r4, r3, #0
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
add r6, r0, #0
|
||||
mov r0, #0
|
||||
mov r1, #0xe0
|
||||
@@ -4847,7 +4847,7 @@ _021D9A7E:
|
||||
bne _021D9ACE
|
||||
add r0, r0, #4
|
||||
ldr r0, [r5, r0]
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
b _021D9AD0
|
||||
_021D9ACE:
|
||||
mov r0, #1
|
||||
@@ -11480,12 +11480,12 @@ _021DCA42:
|
||||
ldr r1, [r4, #0xc]
|
||||
bl MOD17_021DCC38
|
||||
ldr r0, [r4, #0xc]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
mov r1, #0x4f
|
||||
lsl r1, r1, #2
|
||||
str r0, [r5, r1]
|
||||
ldr r0, [r4, #0xc]
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
mov r1, #5
|
||||
lsl r1, r1, #6
|
||||
str r0, [r5, r1]
|
||||
@@ -11760,7 +11760,7 @@ MOD17_021DCC38: ; 0x021DCC38
|
||||
sub sp, #8
|
||||
add r4, r0, #0
|
||||
add r0, r1, #0
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp]
|
||||
|
||||
@@ -1223,7 +1223,7 @@ MOD18_02239F98: ; 0x02239F98
|
||||
ldr r0, [r0]
|
||||
mov r3, #0xb
|
||||
ldr r0, [r0, #8]
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
ldr r2, _0223A044 ; =0x02251380
|
||||
ldr r1, _0223A050 ; =0x000007E4
|
||||
ldr r3, [r2]
|
||||
@@ -7963,7 +7963,7 @@ MOD18_0223D414: ; 0x0223D414
|
||||
add r6, r0, #0
|
||||
ldr r0, [r5, #0xc]
|
||||
bl Sav2_PlayerData_GetOptionsAddr
|
||||
bl FUN_02024FF4
|
||||
bl Options_GetTextFrameDelay
|
||||
add r4, r0, #0
|
||||
ldr r0, _0223D580 ; =0x02251388
|
||||
mov r2, #0x15
|
||||
@@ -25227,7 +25227,7 @@ _02245898:
|
||||
ldr r1, _022459E0 ; =0x022504F8
|
||||
ldr r2, _022459E4 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #4]
|
||||
mov r0, #2
|
||||
str r0, [r4, #0xc]
|
||||
@@ -25262,7 +25262,7 @@ _022458D4:
|
||||
ldr r1, _022459E0 ; =0x022504F8
|
||||
ldr r2, _022459E4 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #4]
|
||||
mov r0, #4
|
||||
str r0, [r4, #0xc]
|
||||
@@ -25302,7 +25302,7 @@ _0224592A:
|
||||
ldr r1, _022459E0 ; =0x022504F8
|
||||
ldr r2, _022459E4 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #4]
|
||||
mov r0, #6
|
||||
str r0, [r4, #0xc]
|
||||
@@ -25669,7 +25669,7 @@ _02245C14:
|
||||
ldr r1, _02245E08 ; =0x022504F8
|
||||
ldr r2, _02245E0C ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #4]
|
||||
mov r0, #2
|
||||
str r0, [r4, #0xc]
|
||||
@@ -25715,7 +25715,7 @@ _02245C7C:
|
||||
ldr r1, _02245E08 ; =0x022504F8
|
||||
ldr r2, _02245E0C ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #4]
|
||||
mov r0, #5
|
||||
str r0, [r4, #0xc]
|
||||
@@ -27379,7 +27379,7 @@ _022469E0:
|
||||
ldr r1, _02246AD8 ; =0x022504F8
|
||||
ldr r2, _02246ADC ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #8]
|
||||
mov r0, #6
|
||||
str r0, [r4, #0xc]
|
||||
@@ -30583,7 +30583,7 @@ _0224830C:
|
||||
ldr r0, [r0, #8]
|
||||
ldr r2, _022484D4 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x24]
|
||||
add r0, r4, #0
|
||||
mov r1, #0x14
|
||||
@@ -31535,7 +31535,7 @@ _02248AAE:
|
||||
ldr r0, [r0, #8]
|
||||
ldr r2, _02248D94 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x20]
|
||||
b _02248DB6
|
||||
_02248AD8:
|
||||
@@ -31664,7 +31664,7 @@ _02248BC2:
|
||||
ldr r0, [r0, #8]
|
||||
ldr r2, _02248D94 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x20]
|
||||
b _02248DB6
|
||||
_02248BEC:
|
||||
@@ -35073,7 +35073,7 @@ MOD18_0224A710: ; 0x0224A710
|
||||
ldr r0, [r0, #8]
|
||||
ldr r2, _0224A744 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x5c]
|
||||
ldr r0, _0224A748 ; =0x00000246
|
||||
mov r1, #0xc
|
||||
@@ -35224,7 +35224,7 @@ MOD18_0224A844: ; 0x0224A844
|
||||
ldr r0, [r0, #8]
|
||||
ldr r2, _0224A878 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x5c]
|
||||
ldr r0, _0224A87C ; =0x00000246
|
||||
mov r1, #1
|
||||
@@ -37895,7 +37895,7 @@ _0224BE0A:
|
||||
ldr r0, [r0, #8]
|
||||
ldr r2, _0224BE80 ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #8]
|
||||
mov r0, #1
|
||||
str r0, [r4]
|
||||
@@ -40208,7 +40208,7 @@ _0224D0DA:
|
||||
ldr r0, [r0, #8]
|
||||
ldr r2, _0224D1EC ; =0x000003D9
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
str r0, [r4, #0x5c]
|
||||
ldr r0, _0224D1D8 ; =0x00000246
|
||||
mov r1, #0xe
|
||||
|
||||
@@ -1,733 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
.section .text
|
||||
.balign 4, 0
|
||||
|
||||
thumb_func_start MOD21_02254854
|
||||
MOD21_02254854: ; 0x02254854
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r5, r0, #0
|
||||
add r6, r1, #0
|
||||
mov r0, #8
|
||||
mov r1, #0x2c
|
||||
add r7, r2, #0
|
||||
str r3, [sp]
|
||||
bl AllocFromHeap
|
||||
add r4, r0, #0
|
||||
beq _02254892
|
||||
ldr r3, [sp]
|
||||
add r1, r6, #0
|
||||
add r2, r7, #0
|
||||
bl MOD21_0225489C
|
||||
cmp r0, #0
|
||||
beq _0225488C
|
||||
ldr r0, _02254898 ; =MOD21_02254930
|
||||
add r1, r4, #0
|
||||
mov r2, #1
|
||||
bl FUN_0200CA44
|
||||
cmp r0, #0
|
||||
beq _0225488C
|
||||
str r4, [r5]
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_0225488C:
|
||||
add r0, r4, #0
|
||||
bl FreeToHeap
|
||||
_02254892:
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
nop
|
||||
_02254898: .word MOD21_02254930
|
||||
thumb_func_end MOD21_02254854
|
||||
|
||||
thumb_func_start MOD21_0225489C
|
||||
MOD21_0225489C: ; 0x0225489C
|
||||
push {r3, r4, r5, lr}
|
||||
add r5, r0, #0
|
||||
add r4, r1, #0
|
||||
add r1, r5, #0
|
||||
add r0, #0x24
|
||||
add r1, #0x14
|
||||
bl MOD21_02254A6C
|
||||
cmp r0, #0
|
||||
beq _0225490A
|
||||
mov r1, #0
|
||||
strb r1, [r5]
|
||||
strb r1, [r5, #1]
|
||||
strb r1, [r5, #2]
|
||||
mov r0, #1
|
||||
strb r0, [r5, #3]
|
||||
strb r1, [r5, #6]
|
||||
add r0, r5, #0
|
||||
str r1, [r5, #0x20]
|
||||
add r0, #0x14
|
||||
bl GF_RTC_CopyTime
|
||||
ldr r0, [r5, #0x14]
|
||||
cmp r0, #0x18
|
||||
blo _022548D6
|
||||
mov r1, #0x18
|
||||
bl _u32_div_f
|
||||
str r1, [r5, #0x14]
|
||||
_022548D6:
|
||||
ldr r0, [r5, #0x18]
|
||||
cmp r0, #0x3c
|
||||
blo _022548E6
|
||||
ldr r0, [r5, #0x14]
|
||||
mov r1, #0x3c
|
||||
bl _u32_div_f
|
||||
str r1, [r5, #0x14]
|
||||
_022548E6:
|
||||
ldr r0, [r5, #0x18]
|
||||
ldr r2, _02254910 ; =MOD21_02254974
|
||||
strb r0, [r5, #5]
|
||||
mov r0, #8
|
||||
str r0, [sp]
|
||||
ldr r0, _02254914 ; =MOD21_02254D80
|
||||
mov r1, #1
|
||||
add r3, r5, #0
|
||||
bl MOD20_02254130
|
||||
str r0, [r5, #0x10]
|
||||
cmp r0, #0
|
||||
bne _02254904
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
_02254904:
|
||||
str r4, [r5, #0x28]
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, pc}
|
||||
_0225490A:
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, pc}
|
||||
nop
|
||||
_02254910: .word MOD21_02254974
|
||||
_02254914: .word MOD21_02254D80
|
||||
thumb_func_end MOD21_0225489C
|
||||
|
||||
thumb_func_start MOD21_02254918
|
||||
MOD21_02254918: ; 0x02254918
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4, #0x24]
|
||||
bl MOD21_02254B04
|
||||
ldr r0, [r4, #0x10]
|
||||
bl MOD20_02254198
|
||||
add r0, r4, #0
|
||||
bl FreeToHeap
|
||||
pop {r4, pc}
|
||||
thumb_func_end MOD21_02254918
|
||||
|
||||
thumb_func_start MOD21_02254930
|
||||
MOD21_02254930: ; 0x02254930
|
||||
push {r3, r4, r5, lr}
|
||||
add r4, r1, #0
|
||||
add r5, r0, #0
|
||||
ldrb r0, [r4]
|
||||
cmp r0, #3
|
||||
bhs _02254966
|
||||
ldr r0, [r4, #0x28]
|
||||
ldr r1, [r4, #0x10]
|
||||
bl MOD20_02252C14
|
||||
ldrb r1, [r4]
|
||||
add r0, r4, #0
|
||||
lsl r2, r1, #2
|
||||
ldr r1, _02254968 ; =MOD21_02254D84
|
||||
ldr r1, [r1, r2]
|
||||
blx r1
|
||||
cmp r0, #0
|
||||
beq _02254966
|
||||
add r0, r4, #0
|
||||
bl MOD21_02254918
|
||||
add r0, r5, #0
|
||||
bl FUN_0200CAB4
|
||||
ldr r0, [r4, #0x28]
|
||||
bl MOD20_022529A0
|
||||
_02254966:
|
||||
pop {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02254968: .word MOD21_02254D84
|
||||
thumb_func_end MOD21_02254930
|
||||
|
||||
thumb_func_start MOD21_0225496C
|
||||
MOD21_0225496C: ; 0x0225496C
|
||||
mov r1, #1
|
||||
strb r1, [r0, #2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
thumb_func_end MOD21_0225496C
|
||||
|
||||
thumb_func_start MOD21_02254974
|
||||
MOD21_02254974: ; 0x02254974
|
||||
cmp r2, #0
|
||||
beq _02254984
|
||||
cmp r2, #1
|
||||
bne _0225498C
|
||||
mov r0, #1
|
||||
str r0, [r3, #0x20]
|
||||
strb r0, [r3, #6]
|
||||
bx lr
|
||||
_02254984:
|
||||
mov r0, #0
|
||||
str r0, [r3, #0x20]
|
||||
mov r0, #1
|
||||
strb r0, [r3, #6]
|
||||
_0225498C:
|
||||
bx lr
|
||||
.align 2, 0
|
||||
thumb_func_end MOD21_02254974
|
||||
|
||||
thumb_func_start MOD21_02254990
|
||||
MOD21_02254990: ; 0x02254990
|
||||
ldrb r2, [r0, #2]
|
||||
cmp r2, #0
|
||||
bne _02254998
|
||||
b _0225499A
|
||||
_02254998:
|
||||
mov r1, #2
|
||||
_0225499A:
|
||||
strb r1, [r0]
|
||||
mov r1, #0
|
||||
strb r1, [r0, #1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
thumb_func_end MOD21_02254990
|
||||
|
||||
thumb_func_start MOD21_022549A4
|
||||
MOD21_022549A4: ; 0x022549A4
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldrb r0, [r4, #1]
|
||||
cmp r0, #0
|
||||
beq _022549B4
|
||||
cmp r0, #1
|
||||
beq _022549C4
|
||||
b _022549DE
|
||||
_022549B4:
|
||||
ldr r0, [r4, #0x24]
|
||||
mov r1, #0
|
||||
bl MOD21_02254B10
|
||||
ldrb r0, [r4, #1]
|
||||
add r0, r0, #1
|
||||
strb r0, [r4, #1]
|
||||
b _022549DE
|
||||
_022549C4:
|
||||
ldr r0, [r4, #0x24]
|
||||
mov r1, #0
|
||||
bl MOD21_02254B34
|
||||
cmp r0, #0
|
||||
beq _022549DE
|
||||
ldr r0, [r4, #0x28]
|
||||
bl MOD20_0225298C
|
||||
add r0, r4, #0
|
||||
mov r1, #1
|
||||
bl MOD21_02254990
|
||||
_022549DE:
|
||||
mov r0, #0
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
thumb_func_end MOD21_022549A4
|
||||
|
||||
thumb_func_start MOD21_022549E4
|
||||
MOD21_022549E4: ; 0x022549E4
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldrb r1, [r4, #2]
|
||||
cmp r1, #0
|
||||
beq _022549F8
|
||||
mov r1, #2
|
||||
bl MOD21_02254990
|
||||
mov r0, #0
|
||||
pop {r4, pc}
|
||||
_022549F8:
|
||||
ldrb r0, [r4, #6]
|
||||
cmp r0, #0
|
||||
beq _02254A0A
|
||||
mov r0, #0
|
||||
strb r0, [r4, #6]
|
||||
ldr r0, [r4, #0x24]
|
||||
mov r1, #2
|
||||
bl MOD21_02254B10
|
||||
_02254A0A:
|
||||
ldr r0, [r4, #0x24]
|
||||
mov r1, #1
|
||||
bl MOD21_02254B34
|
||||
cmp r0, #0
|
||||
beq _02254A32
|
||||
ldr r0, [r4, #0x18]
|
||||
strb r0, [r4, #5]
|
||||
add r0, r4, #0
|
||||
add r0, #0x14
|
||||
bl GF_RTC_CopyTime
|
||||
ldrb r1, [r4, #5]
|
||||
ldr r0, [r4, #0x18]
|
||||
cmp r1, r0
|
||||
beq _02254A32
|
||||
ldr r0, [r4, #0x24]
|
||||
mov r1, #1
|
||||
bl MOD21_02254B10
|
||||
_02254A32:
|
||||
mov r0, #0
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
thumb_func_end MOD21_022549E4
|
||||
|
||||
thumb_func_start MOD21_02254A38
|
||||
MOD21_02254A38: ; 0x02254A38
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
ldrb r0, [r4, #1]
|
||||
cmp r0, #0
|
||||
beq _02254A48
|
||||
cmp r0, #1
|
||||
beq _02254A58
|
||||
b _02254A66
|
||||
_02254A48:
|
||||
ldr r0, [r4, #0x24]
|
||||
mov r1, #3
|
||||
bl MOD21_02254B10
|
||||
ldrb r0, [r4, #1]
|
||||
add r0, r0, #1
|
||||
strb r0, [r4, #1]
|
||||
b _02254A66
|
||||
_02254A58:
|
||||
ldr r0, [r4, #0x24]
|
||||
bl MOD21_02254B40
|
||||
cmp r0, #0
|
||||
beq _02254A66
|
||||
mov r0, #1
|
||||
pop {r4, pc}
|
||||
_02254A66:
|
||||
mov r0, #0
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
thumb_func_end MOD21_02254A38
|
||||
|
||||
thumb_func_start MOD21_02254A6C
|
||||
MOD21_02254A6C: ; 0x02254A6C
|
||||
push {r4, r5, r6, lr}
|
||||
sub sp, #8
|
||||
add r6, r1, #0
|
||||
mov r1, #3
|
||||
add r5, r0, #0
|
||||
mov r0, #8
|
||||
lsl r1, r1, #8
|
||||
bl AllocFromHeap
|
||||
add r4, r0, #0
|
||||
beq _02254ACC
|
||||
add r0, #8
|
||||
mov r1, #8
|
||||
bl MOD20_022536F4
|
||||
str r6, [r4]
|
||||
bl MOD20_02252D34
|
||||
str r0, [r4, #4]
|
||||
mov r0, #8
|
||||
str r0, [sp]
|
||||
mov r0, #0xc
|
||||
mov r1, #0x19
|
||||
mov r2, #1
|
||||
add r3, sp, #4
|
||||
bl FUN_02006BDC
|
||||
add r6, r0, #0
|
||||
bne _02254AB2
|
||||
add r0, r4, #0
|
||||
bl FreeToHeap
|
||||
add sp, #8
|
||||
mov r0, #0
|
||||
pop {r4, r5, r6, pc}
|
||||
_02254AB2:
|
||||
ldr r0, [sp, #4]
|
||||
add r1, r4, #0
|
||||
add r0, #0xc
|
||||
add r1, #0x30
|
||||
bl MOD21_02254AD4
|
||||
add r0, r6, #0
|
||||
bl FreeToHeap
|
||||
add sp, #8
|
||||
str r4, [r5]
|
||||
mov r0, #1
|
||||
pop {r4, r5, r6, pc}
|
||||
_02254ACC:
|
||||
mov r0, #0
|
||||
add sp, #8
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
thumb_func_end MOD21_02254A6C
|
||||
|
||||
thumb_func_start MOD21_02254AD4
|
||||
MOD21_02254AD4: ; 0x02254AD4
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
mov r6, #9
|
||||
add r5, r0, #0
|
||||
add r4, r1, #0
|
||||
mov r7, #0
|
||||
lsl r6, r6, #6
|
||||
_02254AE0:
|
||||
add r0, r5, #0
|
||||
add r1, r4, #0
|
||||
mov r2, #0x40
|
||||
bl MIi_CpuCopy16
|
||||
add r1, r4, #0
|
||||
add r0, r5, r6
|
||||
add r1, #0x40
|
||||
mov r2, #0x10
|
||||
bl MIi_CpuCopy16
|
||||
add r7, r7, #1
|
||||
add r5, #0x40
|
||||
add r4, #0x50
|
||||
sub r6, #0x30
|
||||
cmp r7, #9
|
||||
blt _02254AE0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
thumb_func_end MOD21_02254AD4
|
||||
|
||||
thumb_func_start MOD21_02254B04
|
||||
MOD21_02254B04: ; 0x02254B04
|
||||
push {r3, lr}
|
||||
cmp r0, #0
|
||||
beq _02254B0E
|
||||
bl FreeToHeap
|
||||
_02254B0E:
|
||||
pop {r3, pc}
|
||||
thumb_func_end MOD21_02254B04
|
||||
|
||||
thumb_func_start MOD21_02254B10
|
||||
MOD21_02254B10: ; 0x02254B10
|
||||
push {lr}
|
||||
sub sp, #0xc
|
||||
add r2, r0, #0
|
||||
add r0, #8
|
||||
str r0, [sp]
|
||||
mov r0, #2
|
||||
str r0, [sp, #4]
|
||||
mov r0, #8
|
||||
str r0, [sp, #8]
|
||||
ldr r0, _02254B30 ; =MOD21_02254DAC
|
||||
ldr r3, [r2]
|
||||
bl MOD20_022537E0
|
||||
add sp, #0xc
|
||||
pop {pc}
|
||||
nop
|
||||
_02254B30: .word MOD21_02254DAC
|
||||
thumb_func_end MOD21_02254B10
|
||||
|
||||
thumb_func_start MOD21_02254B34
|
||||
MOD21_02254B34: ; 0x02254B34
|
||||
ldr r3, _02254B3C ; =MOD20_02253794
|
||||
add r0, #8
|
||||
bx r3
|
||||
nop
|
||||
_02254B3C: .word MOD20_02253794
|
||||
thumb_func_end MOD21_02254B34
|
||||
|
||||
thumb_func_start MOD21_02254B40
|
||||
MOD21_02254B40: ; 0x02254B40
|
||||
ldr r3, _02254B48 ; =MOD20_022537B8
|
||||
add r0, #8
|
||||
bx r3
|
||||
nop
|
||||
_02254B48: .word MOD20_022537B8
|
||||
thumb_func_end MOD21_02254B40
|
||||
|
||||
thumb_func_start MOD21_02254B4C
|
||||
MOD21_02254B4C: ; 0x02254B4C
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
bl MOD20_022538A0
|
||||
add r0, #8
|
||||
add r1, r4, #0
|
||||
bl MOD20_02253888
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
thumb_func_end MOD21_02254B4C
|
||||
|
||||
thumb_func_start MOD21_02254B60
|
||||
MOD21_02254B60: ; 0x02254B60
|
||||
push {r4, r5, lr}
|
||||
sub sp, #0x14
|
||||
add r4, r1, #0
|
||||
add r0, r4, #0
|
||||
bl MOD20_022538A0
|
||||
add r5, r0, #0
|
||||
ldr r0, [r5, #4]
|
||||
ldr r2, _02254BE8 ; =MOD21_02254D90
|
||||
mov r1, #6
|
||||
mov r3, #0
|
||||
bl FUN_02016C18
|
||||
mov r0, #0
|
||||
str r0, [sp]
|
||||
str r0, [sp, #4]
|
||||
mov r0, #1
|
||||
str r0, [sp, #8]
|
||||
mov r0, #8
|
||||
str r0, [sp, #0xc]
|
||||
ldr r2, [r5, #4]
|
||||
mov r0, #0xc
|
||||
mov r1, #0x17
|
||||
mov r3, #6
|
||||
bl FUN_0200687C
|
||||
mov r0, #0
|
||||
str r0, [sp]
|
||||
str r0, [sp, #4]
|
||||
mov r0, #1
|
||||
str r0, [sp, #8]
|
||||
mov r0, #8
|
||||
str r0, [sp, #0xc]
|
||||
ldr r2, [r5, #4]
|
||||
mov r0, #0xc
|
||||
mov r1, #0x18
|
||||
mov r3, #6
|
||||
bl FUN_020068C8
|
||||
mov r0, #0
|
||||
add r1, r0, #0
|
||||
bl MOD20_02252D7C
|
||||
add r0, r5, #0
|
||||
bl MOD21_02254C5C
|
||||
ldr r0, [r5, #4]
|
||||
mov r1, #6
|
||||
bl FUN_02017CD0
|
||||
ldr r1, _02254BEC ; =0x04001000
|
||||
ldr r0, _02254BF0 ; =0xFFFFE0FF
|
||||
ldr r3, [r1]
|
||||
ldr r2, [r1]
|
||||
str r3, [sp, #0x10]
|
||||
and r0, r2
|
||||
lsl r2, r3, #0x13
|
||||
lsr r3, r2, #0x1b
|
||||
mov r2, #4
|
||||
orr r2, r3
|
||||
lsl r2, r2, #8
|
||||
orr r0, r2
|
||||
str r0, [r1]
|
||||
add r0, r4, #0
|
||||
bl MOD21_02254B4C
|
||||
add sp, #0x14
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02254BE8: .word MOD21_02254D90
|
||||
_02254BEC: .word 0x04001000
|
||||
_02254BF0: .word 0xFFFFE0FF
|
||||
thumb_func_end MOD21_02254B60
|
||||
|
||||
thumb_func_start MOD21_02254BF4
|
||||
MOD21_02254BF4: ; 0x02254BF4
|
||||
push {r3, r4, r5, lr}
|
||||
add r5, r1, #0
|
||||
add r0, r5, #0
|
||||
bl MOD20_022538A0
|
||||
add r4, r0, #0
|
||||
bl MOD21_02254C5C
|
||||
ldr r0, [r4, #4]
|
||||
mov r1, #6
|
||||
bl FUN_02017CD0
|
||||
add r0, r5, #0
|
||||
bl MOD21_02254B4C
|
||||
pop {r3, r4, r5, pc}
|
||||
thumb_func_end MOD21_02254BF4
|
||||
|
||||
thumb_func_start MOD21_02254C14
|
||||
MOD21_02254C14: ; 0x02254C14
|
||||
push {r4, lr}
|
||||
add r4, r1, #0
|
||||
add r0, r4, #0
|
||||
bl MOD20_022538A0
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, #0xc]
|
||||
cmp r0, #0
|
||||
beq _02254C30
|
||||
mov r0, #0
|
||||
add r1, r0, #0
|
||||
bl MOD11_02252DB4
|
||||
b _02254C38
|
||||
_02254C30:
|
||||
mov r0, #0
|
||||
add r1, r0, #0
|
||||
bl MOD20_02252D7C
|
||||
_02254C38:
|
||||
add r0, r4, #0
|
||||
bl MOD21_02254B4C
|
||||
pop {r4, pc}
|
||||
thumb_func_end MOD21_02254C14
|
||||
|
||||
thumb_func_start MOD21_02254C40
|
||||
MOD21_02254C40: ; 0x02254C40
|
||||
push {r4, lr}
|
||||
add r4, r1, #0
|
||||
add r0, r4, #0
|
||||
bl MOD20_022538A0
|
||||
ldr r0, [r0, #4]
|
||||
mov r1, #6
|
||||
bl FUN_020178A0
|
||||
add r0, r4, #0
|
||||
bl MOD21_02254B4C
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
thumb_func_end MOD21_02254C40
|
||||
|
||||
thumb_func_start MOD21_02254C5C
|
||||
MOD21_02254C5C: ; 0x02254C5C
|
||||
push {r4, r5, lr}
|
||||
sub sp, #0x1c
|
||||
add r4, r0, #0
|
||||
ldr r0, [r4]
|
||||
ldr r2, _02254D74 ; =0x04000280
|
||||
ldr r0, [r0]
|
||||
mov r3, #0
|
||||
strh r3, [r2]
|
||||
str r0, [r2, #0x10]
|
||||
add r0, r2, #0
|
||||
mov r1, #0xa
|
||||
add r0, #0x18
|
||||
str r1, [r0]
|
||||
str r3, [r0, #4]
|
||||
lsr r0, r2, #0xb
|
||||
_02254C7A:
|
||||
ldrh r1, [r2]
|
||||
tst r1, r0
|
||||
bne _02254C7A
|
||||
ldr r0, _02254D78 ; =0x040002A0
|
||||
add r3, r0, #0
|
||||
ldr r1, [r0]
|
||||
sub r3, #0x20
|
||||
lsr r0, r0, #0xb
|
||||
_02254C8A:
|
||||
ldrh r2, [r3]
|
||||
tst r2, r0
|
||||
bne _02254C8A
|
||||
ldr r0, _02254D7C ; =0x040002A8
|
||||
add r2, r4, #0
|
||||
ldr r5, [r0]
|
||||
mov r0, #4
|
||||
str r0, [sp]
|
||||
mov r0, #9
|
||||
lsl r1, r1, #0x1a
|
||||
str r0, [sp, #4]
|
||||
add r2, #0x30
|
||||
str r2, [sp, #8]
|
||||
lsr r1, r1, #0x18
|
||||
str r1, [sp, #0xc]
|
||||
mov r1, #0
|
||||
str r1, [sp, #0x10]
|
||||
mov r1, #0x28
|
||||
str r1, [sp, #0x14]
|
||||
str r0, [sp, #0x18]
|
||||
ldr r0, [r4, #4]
|
||||
mov r1, #6
|
||||
mov r2, #3
|
||||
mov r3, #7
|
||||
bl FUN_02018170
|
||||
mov r0, #4
|
||||
str r0, [sp]
|
||||
mov r0, #9
|
||||
add r1, r4, #0
|
||||
str r0, [sp, #4]
|
||||
add r1, #0x30
|
||||
str r1, [sp, #8]
|
||||
lsl r1, r5, #0x1a
|
||||
lsr r1, r1, #0x18
|
||||
str r1, [sp, #0xc]
|
||||
mov r1, #0
|
||||
str r1, [sp, #0x10]
|
||||
mov r1, #0x28
|
||||
str r1, [sp, #0x14]
|
||||
str r0, [sp, #0x18]
|
||||
ldr r0, [r4, #4]
|
||||
mov r1, #6
|
||||
mov r2, #8
|
||||
mov r3, #7
|
||||
bl FUN_02018170
|
||||
ldr r0, [r4]
|
||||
ldr r2, _02254D74 ; =0x04000280
|
||||
ldr r0, [r0, #4]
|
||||
mov r3, #0
|
||||
strh r3, [r2]
|
||||
str r0, [r2, #0x10]
|
||||
add r0, r2, #0
|
||||
mov r1, #0xa
|
||||
add r0, #0x18
|
||||
str r1, [r0]
|
||||
str r3, [r0, #4]
|
||||
lsr r0, r2, #0xb
|
||||
_02254D00:
|
||||
ldrh r1, [r2]
|
||||
tst r1, r0
|
||||
bne _02254D00
|
||||
ldr r0, _02254D78 ; =0x040002A0
|
||||
add r3, r0, #0
|
||||
ldr r1, [r0]
|
||||
sub r3, #0x20
|
||||
lsr r0, r0, #0xb
|
||||
_02254D10:
|
||||
ldrh r2, [r3]
|
||||
tst r2, r0
|
||||
bne _02254D10
|
||||
ldr r0, _02254D7C ; =0x040002A8
|
||||
add r2, r4, #0
|
||||
ldr r5, [r0]
|
||||
mov r0, #4
|
||||
str r0, [sp]
|
||||
mov r0, #9
|
||||
lsl r1, r1, #0x1a
|
||||
str r0, [sp, #4]
|
||||
add r2, #0x30
|
||||
str r2, [sp, #8]
|
||||
lsr r1, r1, #0x18
|
||||
str r1, [sp, #0xc]
|
||||
mov r1, #0
|
||||
str r1, [sp, #0x10]
|
||||
mov r1, #0x28
|
||||
str r1, [sp, #0x14]
|
||||
str r0, [sp, #0x18]
|
||||
ldr r0, [r4, #4]
|
||||
mov r1, #6
|
||||
mov r2, #0xf
|
||||
mov r3, #7
|
||||
bl FUN_02018170
|
||||
mov r0, #4
|
||||
str r0, [sp]
|
||||
mov r0, #9
|
||||
add r1, r4, #0
|
||||
str r0, [sp, #4]
|
||||
add r1, #0x30
|
||||
str r1, [sp, #8]
|
||||
lsl r1, r5, #0x1a
|
||||
lsr r1, r1, #0x18
|
||||
str r1, [sp, #0xc]
|
||||
mov r1, #0
|
||||
str r1, [sp, #0x10]
|
||||
mov r1, #0x28
|
||||
str r1, [sp, #0x14]
|
||||
str r0, [sp, #0x18]
|
||||
ldr r0, [r4, #4]
|
||||
mov r1, #6
|
||||
mov r2, #0x14
|
||||
mov r3, #7
|
||||
bl FUN_02018170
|
||||
add sp, #0x1c
|
||||
pop {r4, r5, pc}
|
||||
nop
|
||||
_02254D74: .word 0x04000280
|
||||
_02254D78: .word 0x040002A0
|
||||
_02254D7C: .word 0x040002A8
|
||||
thumb_func_end MOD21_02254C5C
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global MOD21_02254D80
|
||||
MOD21_02254D80: ; 0x02254D80
|
||||
.byte 0x10, 0xAF, 0x10, 0xCF
|
||||
|
||||
.global MOD21_02254D84
|
||||
MOD21_02254D84: ; 0x02254D84
|
||||
.word MOD21_022549A4, MOD21_022549E4, MOD21_02254A38
|
||||
|
||||
.global MOD21_02254D90
|
||||
MOD21_02254D90: ; 0x02254D90
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global MOD21_02254DAC
|
||||
MOD21_02254DAC: ; 0x02254DAC
|
||||
.word 0x00, MOD21_02254B60, 0x00
|
||||
.word 0x01, MOD21_02254BF4, 0x00
|
||||
.word 0x02, MOD21_02254C14, 0x00
|
||||
.word 0x03, MOD21_02254C40, 0x00
|
||||
.word 0x00, 0x00000000, 0x00
|
||||
@@ -0,0 +1,36 @@
|
||||
#ifndef POKEDIAMOND_MOD21_02254854_H
|
||||
#define POKEDIAMOND_MOD21_02254854_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
#include "mod21_02254A6C.h"
|
||||
|
||||
typedef struct Time
|
||||
{
|
||||
u32 hour;
|
||||
u32 minute;
|
||||
} Time;
|
||||
|
||||
typedef struct UnkStruct02254854
|
||||
{
|
||||
u8 bytearray[8];
|
||||
u8 padding0[8];
|
||||
BOOL Unk10;
|
||||
Time time;
|
||||
u8 padding1[4];
|
||||
u32 Unk20;
|
||||
void *Unk24;
|
||||
u32 Unk28;
|
||||
} UnkStruct02254854;
|
||||
|
||||
BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3);
|
||||
BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3);
|
||||
void MOD21_02254918(UnkStruct02254854 *param0);
|
||||
void MOD21_02254930(u32 param0, UnkStruct02254854 *param1);
|
||||
void MOD21_0225496C(UnkStruct02254854 *param0);
|
||||
void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3);
|
||||
void MOD21_02254990(UnkStruct02254854 * param0, u8 param1);
|
||||
BOOL MOD21_022549A4(UnkStruct02254854 * param0);
|
||||
BOOL MOD21_022549E4(UnkStruct02254854 * param0);
|
||||
BOOL MOD21_02254A38(UnkStruct02254854 * param0);
|
||||
|
||||
#endif //POKEDIAMOND_MOD21_02254854_H
|
||||
@@ -0,0 +1,38 @@
|
||||
#ifndef POKEDIAMOND_MOD21_02254A6C_H
|
||||
#define POKEDIAMOND_MOD21_02254A6C_H
|
||||
|
||||
#include "nitro/types.h"
|
||||
|
||||
typedef struct UnkStruct02254A6C UnkStruct02254A6C;
|
||||
|
||||
struct UnkStruct02254A6C
|
||||
{
|
||||
UnkStruct02254A6C *Unk00;
|
||||
u32 Unk04;
|
||||
u32 Unk08[1];
|
||||
u32 Unk0C;
|
||||
u8 padding0[0x20];
|
||||
u32 Unk30[1];
|
||||
};
|
||||
|
||||
typedef struct UnkOverlayStruct1
|
||||
{
|
||||
u32 number;
|
||||
BOOL (*func)(u32 param0, void *param1);
|
||||
u32 Unk08;
|
||||
} UnkOverlayStruct1; //todo should probably be in mod 20 header
|
||||
|
||||
BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1);
|
||||
void MOD21_02254AD4(void *param0, void *param1);
|
||||
void MOD21_02254B04(void *param0);
|
||||
void MOD21_02254B10(u32 *param0, u32 param1);
|
||||
BOOL MOD21_02254B34(void *param0, u32 param1);
|
||||
BOOL MOD21_02254B40(void *param0);
|
||||
BOOL MOD21_02254B4C(void *param0);
|
||||
BOOL MOD21_02254B60(u32 param0, void *param1);
|
||||
BOOL MOD21_02254BF4(u32 param0, void *param1);
|
||||
BOOL MOD21_02254C14(u32 param0, void *param1);
|
||||
BOOL MOD21_02254C40(u32 param0, void *param1);
|
||||
void MOD21_02254C5C(UnkStruct02254A6C *param0);
|
||||
|
||||
#endif //POKEDIAMOND_MOD21_02254A6C_H
|
||||
@@ -0,0 +1,199 @@
|
||||
#include "global.h"
|
||||
#include "heap.h"
|
||||
#include "unk_0200CA44.h"
|
||||
#include "mod21_02254854.h"
|
||||
|
||||
extern void GF_RTC_CopyTime(Time *param0);
|
||||
|
||||
u8 const MOD21_02254D80[] = { 0x10, 0xAF, 0x10, 0xCF };
|
||||
extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4);
|
||||
extern void MOD20_02252C14(u32 param0, BOOL param1);
|
||||
|
||||
extern void MOD20_02254198(BOOL param0);
|
||||
extern void MOD20_022529A0(u32 param0);
|
||||
|
||||
extern void MOD20_0225298C(u32 param0);
|
||||
|
||||
extern void Poketch_InitApp(void *func1, void *func2);
|
||||
|
||||
THUMB_FUNC static void MOD21_02254840(void)
|
||||
{
|
||||
Poketch_InitApp(MOD21_02254854, MOD21_0225496C);
|
||||
}
|
||||
|
||||
#define NitroStaticInit MOD21_02254840
|
||||
#include "sinit.h"
|
||||
|
||||
THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3)
|
||||
{
|
||||
UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854));
|
||||
if (alloced != NULL)
|
||||
{
|
||||
if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, void *))MOD21_02254930, alloced, (void *)1))
|
||||
{
|
||||
*param0 = alloced;
|
||||
return TRUE;
|
||||
}
|
||||
FreeToHeap(alloced);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3)
|
||||
{
|
||||
#pragma unused (param2, param3) //not sure, please check
|
||||
if (MOD21_02254A6C((UnkStruct02254A6C *)¶m0->Unk24, ¶m0->time)) //todo fix
|
||||
{
|
||||
param0->bytearray[0] = 0;
|
||||
param0->bytearray[1] = 0;
|
||||
param0->bytearray[2] = 0;
|
||||
param0->bytearray[3] = 1;
|
||||
param0->bytearray[6] = 0;
|
||||
param0->Unk20 = 0;
|
||||
GF_RTC_CopyTime(¶m0->time);
|
||||
if (param0->time.hour >= 0x18)
|
||||
{
|
||||
param0->time.hour = param0->time.hour % 0x18;
|
||||
}
|
||||
if (param0->time.minute >= 0x3c)
|
||||
{
|
||||
param0->time.hour = param0->time.hour % 0x3c;
|
||||
}
|
||||
param0->bytearray[5] = (u8)param0->time.minute;
|
||||
param0->Unk10 = MOD20_02254130((void *)MOD21_02254D80, TRUE, MOD21_02254974, param0, 8);
|
||||
if (param0->Unk10 == FALSE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
param0->Unk28 = param1;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL (* const MOD21_02254D84[])(UnkStruct02254854 *) = { MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 };
|
||||
|
||||
THUMB_FUNC void MOD21_02254918(UnkStruct02254854 *param0)
|
||||
{
|
||||
MOD21_02254B04(param0->Unk24);
|
||||
MOD20_02254198(param0->Unk10);
|
||||
FreeToHeap((void *)param0);
|
||||
}
|
||||
|
||||
THUMB_FUNC void MOD21_02254930(u32 param0, UnkStruct02254854 *param1)
|
||||
{
|
||||
if (param1->bytearray[0] >= 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
MOD20_02252C14(param1->Unk28, param1->Unk10);
|
||||
if (!MOD21_02254D84[param1->bytearray[0]](param1))
|
||||
{
|
||||
return;
|
||||
}
|
||||
MOD21_02254918(param1);
|
||||
FUN_0200CAB4((s32)param0);
|
||||
MOD20_022529A0(param1->Unk28);
|
||||
}
|
||||
|
||||
THUMB_FUNC void MOD21_0225496C(UnkStruct02254854 *param0)
|
||||
{
|
||||
param0->bytearray[2] = 1;
|
||||
}
|
||||
|
||||
THUMB_FUNC void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3)
|
||||
{
|
||||
#pragma unused (param0, param1)
|
||||
switch (param2)
|
||||
{
|
||||
case 1:
|
||||
param3->Unk20 = 1;
|
||||
param3->bytearray[6] = 1;
|
||||
return;
|
||||
case 0:
|
||||
param3->Unk20 = 0;
|
||||
param3->bytearray[6] = 1;
|
||||
return;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
THUMB_FUNC void MOD21_02254990(UnkStruct02254854 * param0, u8 param1)
|
||||
{
|
||||
if (param0->bytearray[2] == 0)
|
||||
{
|
||||
param0->bytearray[0] = param1;
|
||||
}
|
||||
else
|
||||
{
|
||||
param0->bytearray[0] = 2;
|
||||
}
|
||||
param0->bytearray[1] = 0;
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD21_022549A4(UnkStruct02254854 * param0)
|
||||
{
|
||||
switch (param0->bytearray[1])
|
||||
{
|
||||
case 0:
|
||||
MOD21_02254B10(param0->Unk24, 0);
|
||||
param0->bytearray[1]++;
|
||||
break;
|
||||
case 1:
|
||||
if (MOD21_02254B34(param0->Unk24, 0) == FALSE)
|
||||
{
|
||||
break;
|
||||
}
|
||||
MOD20_0225298C(param0->Unk28);
|
||||
MOD21_02254990(param0, 1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD21_022549E4(UnkStruct02254854 * param0)
|
||||
{
|
||||
if (param0->bytearray[2])
|
||||
{
|
||||
MOD21_02254990(param0, 2);
|
||||
return FALSE;
|
||||
}
|
||||
if (param0->bytearray[6])
|
||||
{
|
||||
param0->bytearray[6] = 0;
|
||||
MOD21_02254B10(param0->Unk24, 2);
|
||||
}
|
||||
if (MOD21_02254B34(param0->Unk24, 1))
|
||||
{
|
||||
param0->bytearray[5] = (u8)param0->time.minute;
|
||||
GF_RTC_CopyTime(¶m0->time);
|
||||
if (param0->bytearray[5] != param0->time.minute)
|
||||
{
|
||||
MOD21_02254B10(param0->Unk24, 1);
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD21_02254A38(UnkStruct02254854 * param0)
|
||||
{
|
||||
switch (param0->bytearray[1])
|
||||
{
|
||||
case 0:
|
||||
MOD21_02254B10(param0->Unk24, 3);
|
||||
param0->bytearray[1]++;
|
||||
break;
|
||||
case 1:
|
||||
if (MOD21_02254B40(param0->Unk24))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
#include "global.h"
|
||||
#include "heap.h"
|
||||
#include "mod21_02254A6C.h"
|
||||
#include "MI_memory.h"
|
||||
|
||||
extern void MOD20_022536F4(u32 *param0, u32 param1);
|
||||
extern u32 MOD20_02252D34(void);
|
||||
extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4);
|
||||
extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6);
|
||||
|
||||
UnkOverlayStruct1 const MOD21_02254DAC[] = {
|
||||
{ 0, MOD21_02254B60, 0 },
|
||||
{ 1, MOD21_02254BF4, 0 },
|
||||
{ 2, MOD21_02254C14, 0 },
|
||||
{ 3, MOD21_02254C40, 0 },
|
||||
{ 0, NULL, 0 }
|
||||
};
|
||||
|
||||
extern BOOL MOD20_02253794(void *param0, u32 param1);
|
||||
extern BOOL MOD20_022537B8(void *param0);
|
||||
extern UnkStruct02254A6C *MOD20_022538A0(void *param0);
|
||||
extern BOOL MOD20_02253888(void *param0, void *param1);
|
||||
|
||||
//todo datatype
|
||||
u8 const MOD21_02254D90[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
|
||||
extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3);
|
||||
extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7);
|
||||
extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7);
|
||||
extern void MOD20_02252D7C(u32 param0, u32 param1);
|
||||
extern void FUN_02017CD0(u32 param0, u32 param1);
|
||||
extern void FUN_020178A0(u32 param0, u32 param1);
|
||||
|
||||
extern void FUN_02018170(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 *param6, u8 param7, u32 param8, u32 param9, u32 param10);
|
||||
|
||||
extern void MOD11_02252DB4(u32 param0, u32 param1);
|
||||
|
||||
THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1)
|
||||
{
|
||||
UnkStruct02254A6C *strct = (UnkStruct02254A6C *)AllocFromHeap(8, 3 << 8);
|
||||
u32 sp4;
|
||||
if (strct != NULL)
|
||||
{
|
||||
MOD20_022536F4(strct->Unk08, 8);
|
||||
strct->Unk00 = param1;
|
||||
strct->Unk04 = MOD20_02252D34();
|
||||
void *res = FUN_02006BDC(12, 0x19, 1, &sp4, 8);
|
||||
if (res == 0)
|
||||
{
|
||||
FreeToHeap(strct);
|
||||
return FALSE;
|
||||
}
|
||||
MOD21_02254AD4((void *)(sp4 + 0xc), strct->Unk30);
|
||||
FreeToHeap(res);
|
||||
param0->Unk00 = strct;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
THUMB_FUNC void MOD21_02254AD4(void *param0, void *param1)
|
||||
{
|
||||
s32 i = 0;
|
||||
for (u32 r6 = 9 << 6; i < 9; r6 -= 0x30)
|
||||
{
|
||||
MI_CpuCopy16(param0, param1, 0x40);
|
||||
MI_CpuCopy16((void *)((u32)param0 + r6), (void *)((u32)param1 + 0x40), 0x10);
|
||||
i++;
|
||||
param0 = (void *)((u32)param0 + 0x40);
|
||||
param1 = (void *)((u32)param1 + 0x50);
|
||||
}
|
||||
}
|
||||
|
||||
THUMB_FUNC void MOD21_02254B04(void *param0)
|
||||
{
|
||||
if (param0 != NULL)
|
||||
{
|
||||
FreeToHeap(param0);
|
||||
}
|
||||
}
|
||||
|
||||
THUMB_FUNC void MOD21_02254B10(u32 *param0, u32 param1)
|
||||
{
|
||||
MOD20_022537E0(MOD21_02254DAC, param1, param0, *param0, (void *)(param0 + 2), 2, 8);
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD21_02254B34(void *param0, u32 param1)
|
||||
{
|
||||
return MOD20_02253794((void *)((u32)param0 + 8), param1);
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD21_02254B40(void *param0)
|
||||
{
|
||||
return MOD20_022537B8((void *)((u32)param0 + 8));
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD21_02254B4C(void *param0)
|
||||
{
|
||||
return MOD20_02253888((void *)((u32)MOD20_022538A0(param0) + 8), param0);
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1)
|
||||
{
|
||||
#pragma unused (param0)
|
||||
UnkStruct02254A6C *strct = MOD20_022538A0(param1);
|
||||
FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0);
|
||||
FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8);
|
||||
FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8);
|
||||
MOD20_02252D7C(0, 0);
|
||||
MOD21_02254C5C(strct);
|
||||
FUN_02017CD0(strct->Unk04, 6);
|
||||
u32 r3 = reg_GXS_DB_DISPCNT;
|
||||
u32 r2 = reg_GXS_DB_DISPCNT;
|
||||
vu32 tmp = r3; //unused? wtf
|
||||
u32 r0 = ~0x1F00 & r2;
|
||||
r2 = r3 << 19; //cast with shift? can't replicate both though
|
||||
r3 = r2 >> 27;
|
||||
r2 = 4 | r3;
|
||||
r2 <<= 8;
|
||||
r0 |= r2;
|
||||
reg_GXS_DB_DISPCNT = r0;
|
||||
return MOD21_02254B4C(param1);
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD21_02254BF4(u32 param0, void *param1)
|
||||
{
|
||||
#pragma unused (param0)
|
||||
UnkStruct02254A6C *strct = MOD20_022538A0(param1);
|
||||
MOD21_02254C5C(strct);
|
||||
FUN_02017CD0(strct->Unk04, 6);
|
||||
return MOD21_02254B4C(param1);
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD21_02254C14(u32 param0, void *param1)
|
||||
{
|
||||
#pragma unused (param0)
|
||||
UnkStruct02254A6C *strct = MOD20_022538A0(param1);
|
||||
if (strct->Unk00->Unk0C)
|
||||
{
|
||||
MOD11_02252DB4(0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
MOD20_02252D7C(0, 0);
|
||||
}
|
||||
return MOD21_02254B4C(param1);
|
||||
}
|
||||
|
||||
THUMB_FUNC BOOL MOD21_02254C40(u32 param0, void *param1)
|
||||
{
|
||||
#pragma unused (param0)
|
||||
UnkStruct02254A6C *strct = MOD20_022538A0(param1);
|
||||
FUN_020178A0(strct->Unk04, 6);
|
||||
return MOD21_02254B4C(param1);
|
||||
}
|
||||
|
||||
THUMB_FUNC void MOD21_02254C5C(UnkStruct02254A6C *param0)
|
||||
{
|
||||
u32 tmp = (u32)param0->Unk00->Unk00;
|
||||
reg_CP_DIVCNT = 0;
|
||||
(*(vu32 *)REG_DIV_NUMER_ADDR) = tmp;
|
||||
reg_CP_DIV_DENOM = 10;
|
||||
while (reg_CP_DIVCNT & ((u32)®_CP_DIVCNT >> 0xb)) { }
|
||||
|
||||
u32 regaddr = (u32)®_CP_DIV_RESULT_L;
|
||||
u32 divResult = *(u32 *)regaddr;
|
||||
while (reg_CP_DIVCNT & (regaddr >> 0xb)) { }
|
||||
|
||||
u32 divRemRes = reg_CP_DIVREM_RESULT_L;
|
||||
FUN_02018170(param0->Unk04, 6, 3, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9);
|
||||
FUN_02018170(param0->Unk04, 6, 8, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9);
|
||||
|
||||
tmp = param0->Unk00->Unk04;
|
||||
reg_CP_DIVCNT = 0;
|
||||
(*(vu32 *)REG_DIV_NUMER_ADDR) = tmp;
|
||||
reg_CP_DIV_DENOM = 10;
|
||||
|
||||
while (reg_CP_DIVCNT & ((u32)®_CP_DIVCNT >> 0xb)) { }
|
||||
|
||||
divResult = *(u32 *)regaddr;
|
||||
while (reg_CP_DIVCNT & (regaddr >> 0xb)) { }
|
||||
|
||||
divRemRes = reg_CP_DIVREM_RESULT_L;
|
||||
FUN_02018170(param0->Unk04, 6, 15, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9);
|
||||
FUN_02018170(param0->Unk04, 6, 20, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9);
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
#include "global.h"
|
||||
|
||||
extern void Poketch_InitApp(void *func1, void *func2);
|
||||
extern void MOD21_02254854();
|
||||
extern void MOD21_0225496C();
|
||||
|
||||
THUMB_FUNC static void MOD21_02254840(void)
|
||||
{
|
||||
Poketch_InitApp(MOD21_02254854, MOD21_0225496C);
|
||||
}
|
||||
|
||||
#define NitroStaticInit MOD21_02254840
|
||||
#include "sinit.h"
|
||||
@@ -116,7 +116,7 @@ MOD52_021D7594: ; 0x021D7594
|
||||
bl MOD52_021D7688
|
||||
add r0, r4, #0
|
||||
mov r1, #0
|
||||
bl FUN_02024F9C
|
||||
bl Options_SetButtonModeOnMain
|
||||
add r0, r5, #0
|
||||
bl Sav2_SysInfo_MacAddressIsMine
|
||||
cmp r0, #0
|
||||
|
||||
@@ -846,7 +846,7 @@ MOD53_021D7B60: ; 0x021D7B60
|
||||
bl FUN_020068C8
|
||||
ldr r0, [r5, #8]
|
||||
ldr r0, [r0, #8]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp]
|
||||
|
||||
@@ -766,7 +766,7 @@ MOD54_021D7AA0: ; 0x021D7AA0
|
||||
bl FUN_020068C8
|
||||
ldr r0, [r5, #8]
|
||||
ldr r0, [r0, #8]
|
||||
bl FUN_02025084
|
||||
bl Options_GetFrame
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
str r0, [sp]
|
||||
@@ -1502,7 +1502,7 @@ MOD54_021D8120: ; 0x021D8120
|
||||
ldr r1, _021D814C ; =0x021D9678
|
||||
mov r2, #0x1f
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
mov r1, #0x32
|
||||
lsl r1, r1, #4
|
||||
str r0, [r5, r1]
|
||||
@@ -1767,7 +1767,7 @@ MOD54_021D8340: ; 0x021D8340
|
||||
ldr r1, _021D836C ; =0x021D9678
|
||||
mov r2, #0x1f
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
mov r1, #0x32
|
||||
lsl r1, r1, #4
|
||||
str r0, [r5, r1]
|
||||
@@ -2128,7 +2128,7 @@ MOD54_021D8600: ; 0x021D8600
|
||||
ldr r1, _021D862C ; =0x021D9678
|
||||
mov r2, #0x1f
|
||||
mov r3, #0xb
|
||||
bl FUN_02002198
|
||||
bl Std_CreateYesNoMenu
|
||||
mov r1, #0x32
|
||||
lsl r1, r1, #4
|
||||
str r0, [r5, r1]
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user