From 6810d014f6c8de67d3380283218052ad37330cc4 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 8 Oct 2019 18:46:05 +1000 Subject: [PATCH] Resolve ld issues and link random --- Makefile | 6 ++--- ld/boot.ld | 2 +- ld/library.ld | 4 +-- ld/setup.ld | 9 +++++-- src/game/chr/chraicommands.c | 47 ++++++++++++++++++----------------- src/include/library/library.h | 2 +- 6 files changed, 38 insertions(+), 32 deletions(-) diff --git a/Makefile b/Makefile index aa152d848..33d8205ce 100644 --- a/Makefile +++ b/Makefile @@ -108,7 +108,7 @@ lang: $(LANG_BIN_FILES) $(B_DIR)/boot.elf: $(O_FILES) mkdir -p $(B_DIR) - $(TOOLCHAIN)-ld -e 0x00003050 -T ld/boot.ld -o $@ + $(TOOLCHAIN)-ld -T ld/boot.ld -o $@ $(B_DIR)/ucode/boot.bin: $(B_DIR)/boot.elf mkdir -p $(B_DIR)/ucode @@ -123,7 +123,7 @@ boot: $(B_DIR)/ucode/boot.bin $(B_DIR)/library.elf: $(O_FILES) mkdir -p $(B_DIR) - $(TOOLCHAIN)-ld -e 0x00003050 -T ld/library.ld -o $@ + $(TOOLCHAIN)-ld -T ld/library.ld -o $@ $(B_DIR)/ucode/library.bin: $(B_DIR)/library.elf mkdir -p $(B_DIR)/ucode @@ -138,7 +138,7 @@ library: $(B_DIR)/ucode/library.bin $(B_DIR)/setup.elf: $(O_FILES) mkdir -p $(B_DIR) - $(TOOLCHAIN)-ld -e 0x80059fe0 -T ld/setup.ld -o $@ + $(TOOLCHAIN)-ld -T ld/setup.ld -o $@ $(B_DIR)/ucode/setup.bin: $(B_DIR)/setup.elf mkdir -p $(B_DIR)/ucode diff --git a/ld/boot.ld b/ld/boot.ld index d7d47785d..e511f3124 100644 --- a/ld/boot.ld +++ b/ld/boot.ld @@ -26,7 +26,7 @@ SECTIONS src/setup/setup_020df0.o (.data); } - .game 0x7f000000 : AT(SIZEOF(.boot) + SIZEOF(.library) + SIZEOF(.setup)) { + .game 0x0f000000 : AT(SIZEOF(.boot) + SIZEOF(.library) + SIZEOF(.setup)) { src/game/game_000000.o (.text); src/game/chr/chraicommands.o (.text); src/game/game_0601b0.o (.text); diff --git a/ld/library.ld b/ld/library.ld index 7db8ed15b..6f030c36e 100644 --- a/ld/library.ld +++ b/ld/library.ld @@ -16,7 +16,7 @@ SECTIONS src/setup/setup_020df0.o (.data); } - .game 0x7f000000 : AT(SIZEOF(.library) + SIZEOF(.setup)) { + .game 0x0f000000 : AT(SIZEOF(.library) + SIZEOF(.setup)) { src/game/game_000000.o (.text); src/game/chr/chraicommands.o (.text); src/game/game_0601b0.o (.text); @@ -26,7 +26,7 @@ SECTIONS src/game/game_0601b0.o (.data); } - .gvars 0x7f000000 : AT(SIZEOF(.library) + SIZEOF(.setup) + SIZEOF(.game)) { + .gvars 0x0e000000 : AT(SIZEOF(.library) + SIZEOF(.setup) + SIZEOF(.game)) { src/gvars/gvars.o (.text); src/gvars/gvars.o (.data); } diff --git a/ld/setup.ld b/ld/setup.ld index 18705d1cf..233d6aa6b 100644 --- a/ld/setup.ld +++ b/ld/setup.ld @@ -11,7 +11,12 @@ SECTIONS src/setup/setup_020df0.o (.data); } - .game 0x7f000000 : AT(SIZEOF(.setup)) { + .library 0x7e000000 : AT(SIZEOF(.setup)) { + src/library/library.o (.text); + src/library/library.o (.data); + } + + .game 0x7f000000 : AT(SIZEOF(.setup) + SIZEOF(.library)) { src/game/game_000000.o (.text); src/game/chr/chraicommands.o (.text); src/game/game_0601b0.o (.text); @@ -21,7 +26,7 @@ SECTIONS src/game/game_0601b0.o (.data); } - .gvars 0x80099fc0 : AT(SIZEOF(.setup) + SIZEOF(.game)) { + .gvars 0x80099fc0 : AT(SIZEOF(.setup) + SIZEOF(.library) + SIZEOF(.game)) { src/gvars/gvars.o (.text); src/gvars/gvars.o (.data); } diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 3531b0820..5c274cc13 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -4,6 +4,7 @@ #include "game/game_000000.h" #include "game/game_0601b0.h" #include "gvars/gvars.h" +#include "library/library.h" /** * @cmd 0000 @@ -1353,7 +1354,7 @@ GLOBAL_ASM( glabel aiRandom /* f04f6dc: 27bdffe8 */ addiu $sp,$sp,-24 /* f04f6e0: afbf0014 */ sw $ra,0x14($sp) -/* f04f6e4: 0c004b70 */ jal 0x12dc0 +/* f04f6e4: 0c004b70 */ jal random /* f04f6e8: 00000000 */ sll $zero,$zero,0x0 /* f04f6ec: 3c03800a */ lui $v1,0x800a /* f04f6f0: 24639fc0 */ addiu $v1,$v1,-24640 @@ -1392,7 +1393,7 @@ glabel ai0037 /* f04f754: 8c780430 */ lw $t8,0x430($v1) /* f04f758: 53000014 */ beqzl $t8,.L0f04f7ac /* f04f75c: 8c690438 */ lw $t1,0x438($v1) -/* f04f760: 0c004b70 */ jal 0x12dc0 +/* f04f760: 0c004b70 */ jal random /* f04f764: afa7001c */ sw $a3,0x1c($sp) /* f04f768: 8fa7001c */ lw $a3,0x1c($sp) /* f04f76c: 305900ff */ andi $t9,$v0,0xff @@ -1446,7 +1447,7 @@ glabel ai0038 /* f04f800: 8c780430 */ lw $t8,0x430($v1) /* f04f804: 53000014 */ beqzl $t8,.L0f04f858 /* f04f808: 8c690438 */ lw $t1,0x438($v1) -/* f04f80c: 0c004b70 */ jal 0x12dc0 +/* f04f80c: 0c004b70 */ jal random /* f04f810: afa7001c */ sw $a3,0x1c($sp) /* f04f814: 8fa7001c */ lw $a3,0x1c($sp) /* f04f818: 304800ff */ andi $t0,$v0,0xff @@ -14725,7 +14726,7 @@ glabel ai0130 /* f05a2f8: 14200020 */ bnez $at,.L0f05a37c /* f05a2fc: afac0084 */ sw $t4,0x84($sp) /* f05a300: afa60070 */ sw $a2,0x70($sp) -/* f05a304: 0c004b70 */ jal 0x12dc0 +/* f05a304: 0c004b70 */ jal random /* f05a308: afa5007c */ sw $a1,0x7c($sp) /* f05a30c: 30460001 */ andi $a2,$v0,0x1 /* f05a310: afa60070 */ sw $a2,0x70($sp) @@ -14842,7 +14843,7 @@ glabel ai0130 /* f05a4ac: 102001c0 */ beqz $at,.L0f05abb0 /* f05a4b0: 00000000 */ sll $zero,$zero,0x0 .L0f05a4b4: -/* f05a4b4: 0c004b70 */ jal 0x12dc0 +/* f05a4b4: 0c004b70 */ jal random /* f05a4b8: 00000000 */ sll $zero,$zero,0x0 /* f05a4bc: 8faa0090 */ lw $t2,0x90($sp) /* f05a4c0: 304900ff */ andi $t1,$v0,0xff @@ -14939,7 +14940,7 @@ glabel ai0130 /* f05a618: 19400165 */ blez $t2,.L0f05abb0 /* f05a61c: 00000000 */ sll $zero,$zero,0x0 .L0f05a620: -/* f05a620: 0c004b70 */ jal 0x12dc0 +/* f05a620: 0c004b70 */ jal random /* f05a624: 00000000 */ sll $zero,$zero,0x0 /* f05a628: 24010003 */ addiu $at,$zero,0x3 /* f05a62c: 0041001b */ divu $zero,$v0,$at @@ -16495,13 +16496,13 @@ glabel ai0141 /* f05baec: 92040003 */ lbu $a0,0x3($s0) /* f05baf0: 0fc2554a */ jal func0f095528 /* f05baf4: afa2002c */ sw $v0,0x2c($sp) -/* f05baf8: 0c004b70 */ jal 0x12dc0 +/* f05baf8: 0c004b70 */ jal random /* f05bafc: 00408825 */ or $s1,$v0,$zero /* f05bb00: 24010003 */ addiu $at,$zero,0x3 /* f05bb04: 0041001b */ divu $zero,$v0,$at /* f05bb08: 0000c010 */ mfhi $t8 /* f05bb0c: a3b80037 */ sb $t8,0x37($sp) -/* f05bb10: 0c004b70 */ jal 0x12dc0 +/* f05bb10: 0c004b70 */ jal random /* f05bb14: 00000000 */ sll $zero,$zero,0x0 /* f05bb18: 24010003 */ addiu $at,$zero,0x3 /* f05bb1c: 0041001b */ divu $zero,$v0,$at @@ -19027,7 +19028,7 @@ glabel ai01a2 /* f05db2c: 92030002 */ lbu $v1,0x2($s0) /* f05db30: 54600019 */ bnezl $v1,.L0f05db98 /* f05db34: 24010001 */ addiu $at,$zero,0x1 -/* f05db38: 0c004b70 */ jal 0x12dc0 +/* f05db38: 0c004b70 */ jal random /* f05db3c: 00000000 */ sll $zero,$zero,0x0 /* f05db40: 24010003 */ addiu $at,$zero,0x3 /* f05db44: 0041001b */ divu $zero,$v0,$at @@ -19054,7 +19055,7 @@ glabel ai01a2 .L0f05db98: /* f05db98: 54610019 */ bnel $v1,$at,.L0f05dc00 /* f05db9c: 24010002 */ addiu $at,$zero,0x2 -/* f05dba0: 0c004b70 */ jal 0x12dc0 +/* f05dba0: 0c004b70 */ jal random /* f05dba4: 00000000 */ sll $zero,$zero,0x0 /* f05dba8: 24010003 */ addiu $at,$zero,0x3 /* f05dbac: 0041001b */ divu $zero,$v0,$at @@ -19081,7 +19082,7 @@ glabel ai01a2 .L0f05dc00: /* f05dc00: 54610019 */ bnel $v1,$at,.L0f05dc68 /* f05dc04: 24010003 */ addiu $at,$zero,0x3 -/* f05dc08: 0c004b70 */ jal 0x12dc0 +/* f05dc08: 0c004b70 */ jal random /* f05dc0c: 00000000 */ sll $zero,$zero,0x0 /* f05dc10: 24010003 */ addiu $at,$zero,0x3 /* f05dc14: 0041001b */ divu $zero,$v0,$at @@ -19168,7 +19169,7 @@ glabel ai01a3 /* f05dd34: 240100ff */ addiu $at,$zero,0xff /* f05dd38: 15010014 */ bne $t0,$at,.L0f05dd8c /* f05dd3c: 01001825 */ or $v1,$t0,$zero -/* f05dd40: 0c004b70 */ jal 0x12dc0 +/* f05dd40: 0c004b70 */ jal random /* f05dd44: 00000000 */ sll $zero,$zero,0x0 /* f05dd48: 304c0007 */ andi $t4,$v0,0x7 /* f05dd4c: 000c6840 */ sll $t5,$t4,0x1 @@ -19237,7 +19238,7 @@ glabel ai01a3 /* f05de38: 24010003 */ addiu $at,$zero,0x3 /* f05de3c: 14610014 */ bne $v1,$at,.L0f05de90 /* f05de40: 00087040 */ sll $t6,$t0,0x1 -/* f05de44: 0c004b70 */ jal 0x12dc0 +/* f05de44: 0c004b70 */ jal random /* f05de48: 00000000 */ sll $zero,$zero,0x0 /* f05de4c: 30580001 */ andi $t8,$v0,0x1 /* f05de50: 00185840 */ sll $t3,$t8,0x1 @@ -19674,7 +19675,7 @@ glabel ai01b1 /* f05e3e4: afa20054 */ sw $v0,0x54($sp) /* f05e3e8: 0fc2554a */ jal func0f095528 /* f05e3ec: 92a40004 */ lbu $a0,0x4($s5) -/* f05e3f0: 0c004b70 */ jal 0x12dc0 +/* f05e3f0: 0c004b70 */ jal random /* f05e3f4: afa20050 */ sw $v0,0x50($sp) /* f05e3f8: 24110005 */ addiu $s1,$zero,0x5 /* f05e3fc: 0051001b */ divu $zero,$v0,$s1 @@ -19684,7 +19685,7 @@ glabel ai01b1 /* f05e40c: 00000000 */ sll $zero,$zero,0x0 /* f05e410: 0007000d */ break 0x7 .L0f05e414: -/* f05e414: 0c004b70 */ jal 0x12dc0 +/* f05e414: 0c004b70 */ jal random /* f05e418: 00000000 */ sll $zero,$zero,0x0 /* f05e41c: 0051001b */ divu $zero,$v0,$s1 /* f05e420: 0000a010 */ mfhi $s4 @@ -19694,7 +19695,7 @@ glabel ai01b1 /* f05e430: 0007000d */ break 0x7 .L0f05e434: /* f05e434: 0320a025 */ or $s4,$t9,$zero -/* f05e438: 0c004b70 */ jal 0x12dc0 +/* f05e438: 0c004b70 */ jal random /* f05e43c: 00000000 */ sll $zero,$zero,0x0 /* f05e440: 0051001b */ divu $zero,$v0,$s1 /* f05e444: 92a90005 */ lbu $t1,0x5($s5) @@ -19728,7 +19729,7 @@ glabel ai01b1 /* f05e4b0: 1614000d */ bne $s0,$s4,.L0f05e4e8 /* f05e4b4: a3a80040 */ sb $t0,0x40($sp) .L0f05e4b8: -/* f05e4b8: 0c004b70 */ jal 0x12dc0 +/* f05e4b8: 0c004b70 */ jal random /* f05e4bc: 00000000 */ sll $zero,$zero,0x0 /* f05e4c0: 0051001b */ divu $zero,$v0,$s1 /* f05e4c4: 00001810 */ mfhi $v1 @@ -19747,7 +19748,7 @@ glabel ai01b1 /* f05e4f0: 5602000f */ bnel $s0,$v0,.L0f05e530 /* f05e4f4: 93ab004b */ lbu $t3,0x4b($sp) .L0f05e4f8: -/* f05e4f8: 0c004b70 */ jal 0x12dc0 +/* f05e4f8: 0c004b70 */ jal random /* f05e4fc: 00000000 */ sll $zero,$zero,0x0 /* f05e500: 0051001b */ divu $zero,$v0,$s1 /* f05e504: 00001810 */ mfhi $v1 @@ -20115,7 +20116,7 @@ glabel ai01b9 .L0f05e9d4: /* f05e9d4: 0fc2554a */ jal func0f095528 /* f05e9d8: 00000000 */ sll $zero,$zero,0x0 -/* f05e9dc: 0c004b70 */ jal 0x12dc0 +/* f05e9dc: 0c004b70 */ jal random /* f05e9e0: 00409025 */ or $s2,$v0,$zero /* f05e9e4: 30430007 */ andi $v1,$v0,0x7 /* f05e9e8: 306800ff */ andi $t0,$v1,0xff @@ -21089,7 +21090,7 @@ glabel ai01d3 .L0f05f658: /* f05f658: 55010022 */ bnel $t0,$at,.L0f05f6e4 /* f05f65c: 8faa0024 */ lw $t2,0x24($sp) -/* f05f660: 0c004b70 */ jal 0x12dc0 +/* f05f660: 0c004b70 */ jal random /* f05f664: afa30020 */ sw $v1,0x20($sp) /* f05f668: 24010006 */ addiu $at,$zero,0x6 /* f05f66c: 0041001b */ divu $zero,$v0,$at @@ -21105,7 +21106,7 @@ glabel ai01d3 /* f05f690: 24010008 */ addiu $at,$zero,0x8 /* f05f694: 54a1000e */ bnel $a1,$at,.L0f05f6d0 /* f05f698: 90580362 */ lbu $t8,0x362($v0) -/* f05f69c: 0c004b70 */ jal 0x12dc0 +/* f05f69c: 0c004b70 */ jal random /* f05f6a0: afa30020 */ sw $v1,0x20($sp) /* f05f6a4: 24010006 */ addiu $at,$zero,0x6 /* f05f6a8: 0041001b */ divu $zero,$v0,$at @@ -21140,7 +21141,7 @@ glabel ai01d3 .L0f05f710: /* f05f710: 55610022 */ bnel $t3,$at,.L0f05f79c /* f05f714: 8e0a0438 */ lw $t2,0x438($s0) -/* f05f718: 0c004b70 */ jal 0x12dc0 +/* f05f718: 0c004b70 */ jal random /* f05f71c: afa30020 */ sw $v1,0x20($sp) /* f05f720: 24010006 */ addiu $at,$zero,0x6 /* f05f724: 0041001b */ divu $zero,$v0,$at @@ -21156,7 +21157,7 @@ glabel ai01d3 /* f05f748: 24010008 */ addiu $at,$zero,0x8 /* f05f74c: 5481000e */ bnel $a0,$at,.L0f05f788 /* f05f750: 906f0362 */ lbu $t7,0x362($v1) -/* f05f754: 0c004b70 */ jal 0x12dc0 +/* f05f754: 0c004b70 */ jal random /* f05f758: afa30020 */ sw $v1,0x20($sp) /* f05f75c: 24010006 */ addiu $at,$zero,0x6 /* f05f760: 0041001b */ divu $zero,$v0,$at diff --git a/src/include/library/library.h b/src/include/library/library.h index 1cb4cd828..bbddb6288 100644 --- a/src/include/library/library.h +++ b/src/include/library/library.h @@ -2,6 +2,6 @@ #define _IN_LIBRARY_H #include -u32 func000184d0(void); +u64 random(void); #endif