From f2eabdb6257c09cf2890dac5e9737912728542af Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Thu, 2 Feb 2023 17:29:19 -0400 Subject: global: Add rest of Dolphin SDK proper, add MSL, and MetroTRK Finally, it links properly. --- asm/MSL_C.PPCEABI.bare.H/ansi_fp.s | 343 +++++++++++++++++++++++++++++++++++++ 1 file changed, 343 insertions(+) create mode 100644 asm/MSL_C.PPCEABI.bare.H/ansi_fp.s (limited to 'asm/MSL_C.PPCEABI.bare.H/ansi_fp.s') diff --git a/asm/MSL_C.PPCEABI.bare.H/ansi_fp.s b/asm/MSL_C.PPCEABI.bare.H/ansi_fp.s new file mode 100644 index 0000000..641a10f --- /dev/null +++ b/asm/MSL_C.PPCEABI.bare.H/ansi_fp.s @@ -0,0 +1,343 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80005600 - 0x8036FBA0 +.global __num2dec +__num2dec: +/* 800833A4 000802E4 7C 08 02 A6 */ mflr r0 +/* 800833A8 000802E8 90 01 00 04 */ stw r0, 4(r1) +/* 800833AC 000802EC 94 21 FF 98 */ stwu r1, -0x68(r1) +/* 800833B0 000802F0 DB E1 00 60 */ stfd f31, 0x60(r1) +/* 800833B4 000802F4 FF E0 08 90 */ fmr f31, f1 +/* 800833B8 000802F8 93 E1 00 5C */ stw r31, 0x5c(r1) +/* 800833BC 000802FC 93 C1 00 58 */ stw r30, 0x58(r1) +/* 800833C0 00080300 3B C4 00 00 */ addi r30, r4, 0 +/* 800833C4 00080304 93 A1 00 54 */ stw r29, 0x54(r1) +/* 800833C8 00080308 7C 7D 1B 78 */ mr r29, r3 +/* 800833CC 0008030C A8 03 00 02 */ lha r0, 2(r3) +/* 800833D0 00080310 2C 00 00 10 */ cmpwi r0, 0x10 +/* 800833D4 00080314 7C 1F 03 78 */ mr r31, r0 +/* 800833D8 00080318 40 81 00 08 */ ble lbl_800833E0 +/* 800833DC 0008031C 3B E0 00 10 */ li r31, 0x10 +lbl_800833E0: +/* 800833E0 00080320 38 60 00 00 */ li r3, 0 +/* 800833E4 00080324 98 7E 00 00 */ stb r3, 0(r30) +/* 800833E8 00080328 38 00 00 01 */ li r0, 1 +/* 800833EC 0008032C B0 7E 00 02 */ sth r3, 2(r30) +/* 800833F0 00080330 98 1E 00 04 */ stb r0, 4(r30) +/* 800833F4 00080334 C8 02 89 58 */ lfd f0, "@268"@sda21(r2) +/* 800833F8 00080338 FC 00 F8 00 */ fcmpu cr0, f0, f31 +/* 800833FC 0008033C 40 82 00 10 */ bne lbl_8008340C +/* 80083400 00080340 38 00 00 30 */ li r0, 0x30 +/* 80083404 00080344 98 1E 00 05 */ stb r0, 5(r30) +/* 80083408 00080348 48 00 03 30 */ b lbl_80083738 +lbl_8008340C: +/* 8008340C 0008034C DB E1 00 28 */ stfd f31, 0x28(r1) +/* 80083410 00080350 3C 00 7F F0 */ lis r0, 0x7ff0 +/* 80083414 00080354 80 81 00 28 */ lwz r4, 0x28(r1) +/* 80083418 00080358 54 83 00 56 */ rlwinm r3, r4, 0, 1, 0xb +/* 8008341C 0008035C 7C 03 00 00 */ cmpw r3, r0 +/* 80083420 00080360 41 82 00 14 */ beq lbl_80083434 +/* 80083424 00080364 40 80 00 58 */ bge lbl_8008347C +/* 80083428 00080368 2C 03 00 00 */ cmpwi r3, 0 +/* 8008342C 0008036C 41 82 00 2C */ beq lbl_80083458 +/* 80083430 00080370 48 00 00 4C */ b lbl_8008347C +lbl_80083434: +/* 80083434 00080374 54 80 03 3F */ clrlwi. r0, r4, 0xc +/* 80083438 00080378 40 82 00 10 */ bne lbl_80083448 +/* 8008343C 0008037C 80 01 00 2C */ lwz r0, 0x2c(r1) +/* 80083440 00080380 2C 00 00 00 */ cmpwi r0, 0 +/* 80083444 00080384 41 82 00 0C */ beq lbl_80083450 +lbl_80083448: +/* 80083448 00080388 38 00 00 01 */ li r0, 1 +/* 8008344C 0008038C 48 00 00 34 */ b lbl_80083480 +lbl_80083450: +/* 80083450 00080390 38 00 00 02 */ li r0, 2 +/* 80083454 00080394 48 00 00 2C */ b lbl_80083480 +lbl_80083458: +/* 80083458 00080398 54 80 03 3F */ clrlwi. r0, r4, 0xc +/* 8008345C 0008039C 40 82 00 10 */ bne lbl_8008346C +/* 80083460 000803A0 80 01 00 2C */ lwz r0, 0x2c(r1) +/* 80083464 000803A4 2C 00 00 00 */ cmpwi r0, 0 +/* 80083468 000803A8 41 82 00 0C */ beq lbl_80083474 +lbl_8008346C: +/* 8008346C 000803AC 38 00 00 05 */ li r0, 5 +/* 80083470 000803B0 48 00 00 10 */ b lbl_80083480 +lbl_80083474: +/* 80083474 000803B4 38 00 00 03 */ li r0, 3 +/* 80083478 000803B8 48 00 00 08 */ b lbl_80083480 +lbl_8008347C: +/* 8008347C 000803BC 38 00 00 04 */ li r0, 4 +lbl_80083480: +/* 80083480 000803C0 2C 00 00 02 */ cmpwi r0, 2 +/* 80083484 000803C4 41 81 00 94 */ bgt lbl_80083518 +/* 80083488 000803C8 DB E1 00 20 */ stfd f31, 0x20(r1) +/* 8008348C 000803CC 3C 00 7F F0 */ lis r0, 0x7ff0 +/* 80083490 000803D0 80 81 00 20 */ lwz r4, 0x20(r1) +/* 80083494 000803D4 54 83 00 56 */ rlwinm r3, r4, 0, 1, 0xb +/* 80083498 000803D8 7C 03 00 00 */ cmpw r3, r0 +/* 8008349C 000803DC 41 82 00 14 */ beq lbl_800834B0 +/* 800834A0 000803E0 40 80 00 58 */ bge lbl_800834F8 +/* 800834A4 000803E4 2C 03 00 00 */ cmpwi r3, 0 +/* 800834A8 000803E8 41 82 00 2C */ beq lbl_800834D4 +/* 800834AC 000803EC 48 00 00 4C */ b lbl_800834F8 +lbl_800834B0: +/* 800834B0 000803F0 54 80 03 3F */ clrlwi. r0, r4, 0xc +/* 800834B4 000803F4 40 82 00 10 */ bne lbl_800834C4 +/* 800834B8 000803F8 80 01 00 24 */ lwz r0, 0x24(r1) +/* 800834BC 000803FC 2C 00 00 00 */ cmpwi r0, 0 +/* 800834C0 00080400 41 82 00 0C */ beq lbl_800834CC +lbl_800834C4: +/* 800834C4 00080404 38 00 00 01 */ li r0, 1 +/* 800834C8 00080408 48 00 00 34 */ b lbl_800834FC +lbl_800834CC: +/* 800834CC 0008040C 38 00 00 02 */ li r0, 2 +/* 800834D0 00080410 48 00 00 2C */ b lbl_800834FC +lbl_800834D4: +/* 800834D4 00080414 54 80 03 3F */ clrlwi. r0, r4, 0xc +/* 800834D8 00080418 40 82 00 10 */ bne lbl_800834E8 +/* 800834DC 0008041C 80 01 00 24 */ lwz r0, 0x24(r1) +/* 800834E0 00080420 2C 00 00 00 */ cmpwi r0, 0 +/* 800834E4 00080424 41 82 00 0C */ beq lbl_800834F0 +lbl_800834E8: +/* 800834E8 00080428 38 00 00 05 */ li r0, 5 +/* 800834EC 0008042C 48 00 00 10 */ b lbl_800834FC +lbl_800834F0: +/* 800834F0 00080430 38 00 00 03 */ li r0, 3 +/* 800834F4 00080434 48 00 00 08 */ b lbl_800834FC +lbl_800834F8: +/* 800834F8 00080438 38 00 00 04 */ li r0, 4 +lbl_800834FC: +/* 800834FC 0008043C 2C 00 00 01 */ cmpwi r0, 1 +/* 80083500 00080440 40 82 00 0C */ bne lbl_8008350C +/* 80083504 00080444 38 00 00 4E */ li r0, 0x4e +/* 80083508 00080448 48 00 00 08 */ b lbl_80083510 +lbl_8008350C: +/* 8008350C 0008044C 38 00 00 49 */ li r0, 0x49 +lbl_80083510: +/* 80083510 00080450 98 1E 00 05 */ stb r0, 5(r30) +/* 80083514 00080454 48 00 02 24 */ b lbl_80083738 +lbl_80083518: +/* 80083518 00080458 38 00 00 00 */ li r0, 0 +/* 8008351C 0008045C 98 1E 00 04 */ stb r0, 4(r30) +/* 80083520 00080460 C8 02 89 58 */ lfd f0, "@268"@sda21(r2) +/* 80083524 00080464 FC 1F 00 40 */ fcmpo cr0, f31, f0 +/* 80083528 00080468 40 80 00 10 */ bge lbl_80083538 +/* 8008352C 0008046C 38 00 00 01 */ li r0, 1 +/* 80083530 00080470 FF E0 F8 50 */ fneg f31, f31 +/* 80083534 00080474 98 1E 00 00 */ stb r0, 0(r30) +lbl_80083538: +/* 80083538 00080478 FC 20 F8 90 */ fmr f1, f31 +/* 8008353C 0008047C 38 61 00 30 */ addi r3, r1, 0x30 +/* 80083540 00080480 48 00 35 49 */ bl frexp +/* 80083544 00080484 3C 60 00 05 */ lis r3, 0x000497E5@ha +/* 80083548 00080488 80 81 00 30 */ lwz r4, 0x30(r1) +/* 8008354C 0008048C 38 03 97 E5 */ addi r0, r3, 0x000497E5@l +/* 80083550 00080490 7C 04 01 D6 */ mullw r0, r4, r0 +/* 80083554 00080494 3C 60 43 1C */ lis r3, 0x431BDE83@ha +/* 80083558 00080498 38 63 DE 83 */ addi r3, r3, 0x431BDE83@l +/* 8008355C 0008049C 7C 03 00 96 */ mulhw r0, r3, r0 +/* 80083560 000804A0 7C 00 96 70 */ srawi r0, r0, 0x12 +/* 80083564 000804A4 54 03 0F FE */ srwi r3, r0, 0x1f +/* 80083568 000804A8 7C 80 1A 15 */ add. r4, r0, r3 +/* 8008356C 000804AC 3C 60 80 37 */ lis r3, bit_values@ha +/* 80083570 000804B0 38 03 15 98 */ addi r0, r3, bit_values@l +/* 80083574 000804B4 38 64 00 00 */ addi r3, r4, 0 +/* 80083578 000804B8 7C 05 03 78 */ mr r5, r0 +/* 8008357C 000804BC 40 80 00 30 */ bge lbl_800835AC +/* 80083580 000804C0 7C 84 00 D0 */ neg r4, r4 +/* 80083584 000804C4 48 00 00 1C */ b lbl_800835A0 +lbl_80083588: +/* 80083588 000804C8 54 80 07 FF */ clrlwi. r0, r4, 0x1f +/* 8008358C 000804CC 41 82 00 0C */ beq lbl_80083598 +/* 80083590 000804D0 C8 05 00 00 */ lfd f0, 0(r5) +/* 80083594 000804D4 FF FF 00 32 */ fmul f31, f31, f0 +lbl_80083598: +/* 80083598 000804D8 7C 84 0E 70 */ srawi r4, r4, 1 +/* 8008359C 000804DC 38 A5 00 08 */ addi r5, r5, 8 +lbl_800835A0: +/* 800835A0 000804E0 2C 04 00 00 */ cmpwi r4, 0 +/* 800835A4 000804E4 40 82 FF E4 */ bne lbl_80083588 +/* 800835A8 000804E8 48 00 00 34 */ b lbl_800835DC +lbl_800835AC: +/* 800835AC 000804EC 40 81 00 30 */ ble lbl_800835DC +/* 800835B0 000804F0 C8 22 89 60 */ lfd f1, "@270"@sda21(r2) +/* 800835B4 000804F4 48 00 00 1C */ b lbl_800835D0 +lbl_800835B8: +/* 800835B8 000804F8 54 80 07 FF */ clrlwi. r0, r4, 0x1f +/* 800835BC 000804FC 41 82 00 0C */ beq lbl_800835C8 +/* 800835C0 00080500 C8 05 00 00 */ lfd f0, 0(r5) +/* 800835C4 00080504 FC 21 00 32 */ fmul f1, f1, f0 +lbl_800835C8: +/* 800835C8 00080508 7C 84 0E 70 */ srawi r4, r4, 1 +/* 800835CC 0008050C 38 A5 00 08 */ addi r5, r5, 8 +lbl_800835D0: +/* 800835D0 00080510 2C 04 00 00 */ cmpwi r4, 0 +/* 800835D4 00080514 40 82 FF E4 */ bne lbl_800835B8 +/* 800835D8 00080518 FF FF 08 24 */ fdiv f31, f31, f1 +lbl_800835DC: +/* 800835DC 0008051C C8 22 89 70 */ lfd f1, "@362"@sda21(r2) +/* 800835E0 00080520 C8 02 89 60 */ lfd f0, "@270"@sda21(r2) +/* 800835E4 00080524 48 00 00 0C */ b lbl_800835F0 +lbl_800835E8: +/* 800835E8 00080528 FF FF 00 72 */ fmul f31, f31, f1 +/* 800835EC 0008052C 38 63 00 01 */ addi r3, r3, 1 +lbl_800835F0: +/* 800835F0 00080530 FC 1F 00 40 */ fcmpo cr0, f31, f0 +/* 800835F4 00080534 4C 41 13 82 */ cror 2, 1, 2 +/* 800835F8 00080538 41 82 FF F0 */ beq lbl_800835E8 +/* 800835FC 0008053C C8 22 89 78 */ lfd f1, "@363"@sda21(r2) +/* 80083600 00080540 C8 02 89 70 */ lfd f0, "@362"@sda21(r2) +/* 80083604 00080544 48 00 00 0C */ b lbl_80083610 +lbl_80083608: +/* 80083608 00080548 FF FF 00 72 */ fmul f31, f31, f1 +/* 8008360C 0008054C 38 63 FF FF */ addi r3, r3, -1 +lbl_80083610: +/* 80083610 00080550 FC 1F 00 40 */ fcmpo cr0, f31, f0 +/* 80083614 00080554 41 80 FF F4 */ blt lbl_80083608 +/* 80083618 00080558 3C A0 66 66 */ lis r5, 0x66666667@ha +/* 8008361C 0008055C C8 22 89 68 */ lfd f1, "@272"@sda21(r2) +/* 80083620 00080560 3C C0 80 37 */ lis r6, digit_values@ha +/* 80083624 00080564 38 9E 00 05 */ addi r4, r30, 5 +/* 80083628 00080568 38 E5 66 67 */ addi r7, r5, 0x66666667@l +/* 8008362C 0008056C 39 46 15 E0 */ addi r10, r6, digit_values@l +/* 80083630 00080570 3D 20 43 30 */ lis r9, 0x4330 +/* 80083634 00080574 48 00 00 AC */ b lbl_800836E0 +lbl_80083638: +/* 80083638 00080578 2C 1F 00 08 */ cmpwi r31, 8 +/* 8008363C 0008057C 39 9F 00 00 */ addi r12, r31, 0 +/* 80083640 00080580 40 81 00 08 */ ble lbl_80083648 +/* 80083644 00080584 39 80 00 08 */ li r12, 8 +lbl_80083648: +/* 80083648 00080588 88 DE 00 04 */ lbz r6, 4(r30) +/* 8008364C 0008058C 55 80 18 38 */ slwi r0, r12, 3 +/* 80083650 00080590 7C AA 02 14 */ add r5, r10, r0 +/* 80083654 00080594 7C 06 62 14 */ add r0, r6, r12 +/* 80083658 00080598 98 1E 00 04 */ stb r0, 4(r30) +/* 8008365C 0008059C 7F EC F8 50 */ subf r31, r12, r31 +/* 80083660 000805A0 7C 6C 18 50 */ subf r3, r12, r3 +/* 80083664 000805A4 C8 05 FF F8 */ lfd f0, -8(r5) +/* 80083668 000805A8 7C 84 62 14 */ add r4, r4, r12 +/* 8008366C 000805AC 39 6C 00 01 */ addi r11, r12, 1 +/* 80083670 000805B0 FF FF 00 32 */ fmul f31, f31, f0 +/* 80083674 000805B4 FC 00 F8 1E */ fctiwz f0, f31 +/* 80083678 000805B8 D8 01 00 40 */ stfd f0, 0x40(r1) +/* 8008367C 000805BC 80 01 00 44 */ lwz r0, 0x44(r1) +/* 80083680 000805C0 D8 01 00 48 */ stfd f0, 0x48(r1) +/* 80083684 000805C4 6C 00 80 00 */ xoris r0, r0, 0x8000 +/* 80083688 000805C8 90 01 00 3C */ stw r0, 0x3c(r1) +/* 8008368C 000805CC 80 C1 00 4C */ lwz r6, 0x4c(r1) +/* 80083690 000805D0 91 21 00 38 */ stw r9, 0x38(r1) +/* 80083694 000805D4 C8 01 00 38 */ lfd f0, 0x38(r1) +/* 80083698 000805D8 FC 00 08 28 */ fsub f0, f0, f1 +/* 8008369C 000805DC FF FF 00 28 */ fsub f31, f31, f0 +/* 800836A0 000805E0 48 00 00 34 */ b lbl_800836D4 +lbl_800836A4: +/* 800836A4 000805E4 7D 07 30 96 */ mulhw r8, r7, r6 +/* 800836A8 000805E8 7D 00 16 70 */ srawi r0, r8, 2 +/* 800836AC 000805EC 54 05 0F FE */ srwi r5, r0, 0x1f +/* 800836B0 000805F0 7C 00 2A 14 */ add r0, r0, r5 +/* 800836B4 000805F4 1C 00 00 0A */ mulli r0, r0, 0xa +/* 800836B8 000805F8 7C C0 30 50 */ subf r6, r0, r6 +/* 800836BC 000805FC 7D 00 16 70 */ srawi r0, r8, 2 +/* 800836C0 00080600 38 C6 00 30 */ addi r6, r6, 0x30 +/* 800836C4 00080604 98 C4 FF FF */ stb r6, -1(r4) +/* 800836C8 00080608 54 05 0F FE */ srwi r5, r0, 0x1f +/* 800836CC 0008060C 7C C0 2A 14 */ add r6, r0, r5 +/* 800836D0 00080610 38 84 FF FF */ addi r4, r4, -1 +lbl_800836D4: +/* 800836D4 00080614 35 6B FF FF */ addic. r11, r11, -1 +/* 800836D8 00080618 40 82 FF CC */ bne lbl_800836A4 +/* 800836DC 0008061C 7C 84 62 14 */ add r4, r4, r12 +lbl_800836E0: +/* 800836E0 00080620 2C 1F 00 00 */ cmpwi r31, 0 +/* 800836E4 00080624 40 82 FF 54 */ bne lbl_80083638 +/* 800836E8 00080628 A8 BD 00 02 */ lha r5, 2(r29) +/* 800836EC 0008062C 2C 05 00 24 */ cmpwi r5, 0x24 +/* 800836F0 00080630 40 81 00 08 */ ble lbl_800836F8 +/* 800836F4 00080634 38 A0 00 24 */ li r5, 0x24 +lbl_800836F8: +/* 800836F8 00080638 88 1E 00 04 */ lbz r0, 4(r30) +/* 800836FC 0008063C 7C A0 28 51 */ subf. r5, r0, r5 +/* 80083700 00080640 40 81 00 30 */ ble lbl_80083730 +/* 80083704 00080644 38 C5 00 01 */ addi r6, r5, 1 +/* 80083708 00080648 38 00 00 30 */ li r0, 0x30 +/* 8008370C 0008064C 48 00 00 0C */ b lbl_80083718 +lbl_80083710: +/* 80083710 00080650 98 04 00 00 */ stb r0, 0(r4) +/* 80083714 00080654 38 84 00 01 */ addi r4, r4, 1 +lbl_80083718: +/* 80083718 00080658 34 C6 FF FF */ addic. r6, r6, -1 +/* 8008371C 0008065C 40 82 FF F4 */ bne lbl_80083710 +/* 80083720 00080660 88 1E 00 04 */ lbz r0, 4(r30) +/* 80083724 00080664 7C 65 18 50 */ subf r3, r5, r3 +/* 80083728 00080668 7C 00 2A 14 */ add r0, r0, r5 +/* 8008372C 0008066C 98 1E 00 04 */ stb r0, 4(r30) +lbl_80083730: +/* 80083730 00080670 7C 60 07 34 */ extsh r0, r3 +/* 80083734 00080674 B0 1E 00 02 */ sth r0, 2(r30) +lbl_80083738: +/* 80083738 00080678 80 01 00 6C */ lwz r0, 0x6c(r1) +/* 8008373C 0008067C CB E1 00 60 */ lfd f31, 0x60(r1) +/* 80083740 00080680 83 E1 00 5C */ lwz r31, 0x5c(r1) +/* 80083744 00080684 7C 08 03 A6 */ mtlr r0 +/* 80083748 00080688 83 C1 00 58 */ lwz r30, 0x58(r1) +/* 8008374C 0008068C 83 A1 00 54 */ lwz r29, 0x54(r1) +/* 80083750 00080690 38 21 00 68 */ addi r1, r1, 0x68 +/* 80083754 00080694 4E 80 00 20 */ blr + +.section .rodata, "a" # 0x8036FFA0 - 0x803A8380 +.balign 8 +bit_values: + .4byte 0x40240000 + .4byte 0 + .4byte 0x40590000 + .4byte 0 + .4byte 0x40C38800 + .4byte 0 + .4byte 0x4197D784 + .4byte 0 + .4byte 0x4341C379 + .4byte 0x37E08000 + .4byte 0x4693B8B5 + .4byte 0xB5056E17 + .4byte 0x4D384F03 + .4byte 0xE93FF9F5 + .4byte 0x5A827748 + .4byte 0xF9301D32 + .4byte 0x75154FDD + .4byte 0x7F73BF3C +digit_values: + .4byte 0x40240000 + .4byte 0 + .4byte 0x40590000 + .4byte 0 + .4byte 0x408F4000 + .4byte 0 + .4byte 0x40C38800 + .4byte 0 + .4byte 0x40F86A00 + .4byte 0 + .4byte 0x412E8480 + .4byte 0 + .4byte 0x416312D0 + .4byte 0 + .4byte 0x4197D784 + .4byte 0 + +.section .sdata2, "a" # 0x8040B460 - 0x80414020 +.balign 8 +"@268": + .4byte 0 + .4byte 0 +"@270": + .4byte 0x3FF00000 + .4byte 0 +"@272": + .4byte 0x43300000 + .4byte 0x80000000 +"@362": + .4byte 0x3FB99999 + .4byte 0x9999999A +"@363": + .4byte 0x40240000 + .4byte 0 -- cgit v1.2.3-13-gbd6f