summaryrefslogtreecommitdiff
path: root/asm/SDK/OS/OSUtf.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK/OS/OSUtf.s')
-rw-r--r--asm/SDK/OS/OSUtf.s184
1 files changed, 184 insertions, 0 deletions
diff --git a/asm/SDK/OS/OSUtf.s b/asm/SDK/OS/OSUtf.s
new file mode 100644
index 0000000..270d1e0
--- /dev/null
+++ b/asm/SDK/OS/OSUtf.s
@@ -0,0 +1,184 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global OSUTF8to32
+OSUTF8to32:
+/* 80272E6C 0026EACC 88 C3 00 00 */ lbz r6, 0(r3)
+/* 80272E70 0026EAD0 2C 06 00 00 */ cmpwi r6, 0
+/* 80272E74 0026EAD4 41 82 00 08 */ beq lbl_80272E7C
+/* 80272E78 0026EAD8 38 63 00 01 */ addi r3, r3, 1
+lbl_80272E7C:
+/* 80272E7C 0026EADC 54 C0 06 31 */ rlwinm. r0, r6, 0, 0x18, 0x18
+/* 80272E80 0026EAE0 40 82 00 0C */ bne lbl_80272E8C
+/* 80272E84 0026EAE4 38 E0 00 00 */ li r7, 0
+/* 80272E88 0026EAE8 48 00 00 54 */ b lbl_80272EDC
+lbl_80272E8C:
+/* 80272E8C 0026EAEC 54 C0 06 34 */ rlwinm r0, r6, 0, 0x18, 0x1a
+/* 80272E90 0026EAF0 28 00 00 C0 */ cmplwi r0, 0xc0
+/* 80272E94 0026EAF4 40 82 00 10 */ bne lbl_80272EA4
+/* 80272E98 0026EAF8 54 C6 06 FE */ clrlwi r6, r6, 0x1b
+/* 80272E9C 0026EAFC 38 E0 00 01 */ li r7, 1
+/* 80272EA0 0026EB00 48 00 00 3C */ b lbl_80272EDC
+lbl_80272EA4:
+/* 80272EA4 0026EB04 54 C0 06 36 */ rlwinm r0, r6, 0, 0x18, 0x1b
+/* 80272EA8 0026EB08 28 00 00 E0 */ cmplwi r0, 0xe0
+/* 80272EAC 0026EB0C 40 82 00 10 */ bne lbl_80272EBC
+/* 80272EB0 0026EB10 54 C6 07 3E */ clrlwi r6, r6, 0x1c
+/* 80272EB4 0026EB14 38 E0 00 02 */ li r7, 2
+/* 80272EB8 0026EB18 48 00 00 24 */ b lbl_80272EDC
+lbl_80272EBC:
+/* 80272EBC 0026EB1C 54 C0 06 38 */ rlwinm r0, r6, 0, 0x18, 0x1c
+/* 80272EC0 0026EB20 28 00 00 F0 */ cmplwi r0, 0xf0
+/* 80272EC4 0026EB24 40 82 00 10 */ bne lbl_80272ED4
+/* 80272EC8 0026EB28 54 C6 07 7E */ clrlwi r6, r6, 0x1d
+/* 80272ECC 0026EB2C 38 E0 00 03 */ li r7, 3
+/* 80272ED0 0026EB30 48 00 00 0C */ b lbl_80272EDC
+lbl_80272ED4:
+/* 80272ED4 0026EB34 38 60 00 00 */ li r3, 0
+/* 80272ED8 0026EB38 4E 80 00 20 */ blr
+lbl_80272EDC:
+/* 80272EDC 0026EB3C 7C E9 03 A6 */ mtctr r7
+/* 80272EE0 0026EB40 28 07 00 00 */ cmplwi r7, 0
+/* 80272EE4 0026EB44 40 81 00 30 */ ble lbl_80272F14
+lbl_80272EE8:
+/* 80272EE8 0026EB48 88 A3 00 00 */ lbz r5, 0(r3)
+/* 80272EEC 0026EB4C 54 C6 30 32 */ slwi r6, r6, 6
+/* 80272EF0 0026EB50 38 63 00 01 */ addi r3, r3, 1
+/* 80272EF4 0026EB54 54 A0 06 32 */ rlwinm r0, r5, 0, 0x18, 0x19
+/* 80272EF8 0026EB58 28 00 00 80 */ cmplwi r0, 0x80
+/* 80272EFC 0026EB5C 41 82 00 0C */ beq lbl_80272F08
+/* 80272F00 0026EB60 38 60 00 00 */ li r3, 0
+/* 80272F04 0026EB64 4E 80 00 20 */ blr
+lbl_80272F08:
+/* 80272F08 0026EB68 54 A0 06 BE */ clrlwi r0, r5, 0x1a
+/* 80272F0C 0026EB6C 7C C6 03 78 */ or r6, r6, r0
+/* 80272F10 0026EB70 42 00 FF D8 */ bdnz lbl_80272EE8
+lbl_80272F14:
+/* 80272F14 0026EB74 28 06 00 7F */ cmplwi r6, 0x7f
+/* 80272F18 0026EB78 41 81 00 14 */ bgt lbl_80272F2C
+/* 80272F1C 0026EB7C 2C 07 00 00 */ cmpwi r7, 0
+/* 80272F20 0026EB80 41 82 00 3C */ beq lbl_80272F5C
+/* 80272F24 0026EB84 38 60 00 00 */ li r3, 0
+/* 80272F28 0026EB88 4E 80 00 20 */ blr
+lbl_80272F2C:
+/* 80272F2C 0026EB8C 28 06 07 FF */ cmplwi r6, 0x7ff
+/* 80272F30 0026EB90 41 81 00 14 */ bgt lbl_80272F44
+/* 80272F34 0026EB94 28 07 00 01 */ cmplwi r7, 1
+/* 80272F38 0026EB98 41 82 00 24 */ beq lbl_80272F5C
+/* 80272F3C 0026EB9C 38 60 00 00 */ li r3, 0
+/* 80272F40 0026EBA0 4E 80 00 20 */ blr
+lbl_80272F44:
+/* 80272F44 0026EBA4 28 06 FF FF */ cmplwi r6, 0xffff
+/* 80272F48 0026EBA8 41 81 00 14 */ bgt lbl_80272F5C
+/* 80272F4C 0026EBAC 28 07 00 02 */ cmplwi r7, 2
+/* 80272F50 0026EBB0 41 82 00 0C */ beq lbl_80272F5C
+/* 80272F54 0026EBB4 38 60 00 00 */ li r3, 0
+/* 80272F58 0026EBB8 4E 80 00 20 */ blr
+lbl_80272F5C:
+/* 80272F5C 0026EBBC 28 06 D8 00 */ cmplwi r6, 0xd800
+/* 80272F60 0026EBC0 41 80 00 14 */ blt lbl_80272F74
+/* 80272F64 0026EBC4 28 06 DF FF */ cmplwi r6, 0xdfff
+/* 80272F68 0026EBC8 41 81 00 0C */ bgt lbl_80272F74
+/* 80272F6C 0026EBCC 38 60 00 00 */ li r3, 0
+/* 80272F70 0026EBD0 4E 80 00 20 */ blr
+lbl_80272F74:
+/* 80272F74 0026EBD4 90 C4 00 00 */ stw r6, 0(r4)
+/* 80272F78 0026EBD8 4E 80 00 20 */ blr
+
+.global OSUTF16to32
+OSUTF16to32:
+/* 80272F7C 0026EBDC A0 A3 00 00 */ lhz r5, 0(r3)
+/* 80272F80 0026EBE0 2C 05 00 00 */ cmpwi r5, 0
+/* 80272F84 0026EBE4 41 82 00 08 */ beq lbl_80272F8C
+/* 80272F88 0026EBE8 38 63 00 02 */ addi r3, r3, 2
+lbl_80272F8C:
+/* 80272F8C 0026EBEC 28 05 D8 00 */ cmplwi r5, 0xd800
+/* 80272F90 0026EBF0 41 80 00 0C */ blt lbl_80272F9C
+/* 80272F94 0026EBF4 28 05 DF FF */ cmplwi r5, 0xdfff
+/* 80272F98 0026EBF8 40 81 00 0C */ ble lbl_80272FA4
+lbl_80272F9C:
+/* 80272F9C 0026EBFC 7C A6 2B 78 */ mr r6, r5
+/* 80272FA0 0026EC00 48 00 00 44 */ b lbl_80272FE4
+lbl_80272FA4:
+/* 80272FA4 0026EC04 28 05 DB FF */ cmplwi r5, 0xdbff
+/* 80272FA8 0026EC08 41 81 00 34 */ bgt lbl_80272FDC
+/* 80272FAC 0026EC0C A0 03 00 00 */ lhz r0, 0(r3)
+/* 80272FB0 0026EC10 38 63 00 02 */ addi r3, r3, 2
+/* 80272FB4 0026EC14 28 00 DC 00 */ cmplwi r0, 0xdc00
+/* 80272FB8 0026EC18 41 80 00 1C */ blt lbl_80272FD4
+/* 80272FBC 0026EC1C 28 00 DF FF */ cmplwi r0, 0xdfff
+/* 80272FC0 0026EC20 41 81 00 14 */ bgt lbl_80272FD4
+/* 80272FC4 0026EC24 54 06 05 BE */ clrlwi r6, r0, 0x16
+/* 80272FC8 0026EC28 50 A6 53 2A */ rlwimi r6, r5, 0xa, 0xc, 0x15
+/* 80272FCC 0026EC2C 3C C6 00 01 */ addis r6, r6, 1
+/* 80272FD0 0026EC30 48 00 00 14 */ b lbl_80272FE4
+lbl_80272FD4:
+/* 80272FD4 0026EC34 38 60 00 00 */ li r3, 0
+/* 80272FD8 0026EC38 4E 80 00 20 */ blr
+lbl_80272FDC:
+/* 80272FDC 0026EC3C 38 60 00 00 */ li r3, 0
+/* 80272FE0 0026EC40 4E 80 00 20 */ blr
+lbl_80272FE4:
+/* 80272FE4 0026EC44 90 C4 00 00 */ stw r6, 0(r4)
+/* 80272FE8 0026EC48 4E 80 00 20 */ blr
+
+.global OSUTF32toANSI
+OSUTF32toANSI:
+/* 80272FEC 0026EC4C 28 03 00 FF */ cmplwi r3, 0xff
+/* 80272FF0 0026EC50 40 81 00 0C */ ble lbl_80272FFC
+/* 80272FF4 0026EC54 38 60 00 00 */ li r3, 0
+/* 80272FF8 0026EC58 4E 80 00 20 */ blr
+lbl_80272FFC:
+/* 80272FFC 0026EC5C 28 03 00 80 */ cmplwi r3, 0x80
+/* 80273000 0026EC60 41 80 00 0C */ blt lbl_8027300C
+/* 80273004 0026EC64 28 03 00 9F */ cmplwi r3, 0x9f
+/* 80273008 0026EC68 40 81 00 0C */ ble lbl_80273014
+lbl_8027300C:
+/* 8027300C 0026EC6C 54 63 06 3E */ clrlwi r3, r3, 0x18
+/* 80273010 0026EC70 4E 80 00 20 */ blr
+lbl_80273014:
+/* 80273014 0026EC74 28 03 01 52 */ cmplwi r3, 0x152
+/* 80273018 0026EC78 41 80 00 44 */ blt lbl_8027305C
+/* 8027301C 0026EC7C 28 03 21 22 */ cmplwi r3, 0x2122
+/* 80273020 0026EC80 41 81 00 3C */ bgt lbl_8027305C
+/* 80273024 0026EC84 3C 80 80 42 */ lis r4, lbl_80427E28@ha
+/* 80273028 0026EC88 38 00 00 20 */ li r0, 0x20
+/* 8027302C 0026EC8C 38 84 7E 28 */ addi r4, r4, lbl_80427E28@l
+/* 80273030 0026EC90 38 A0 00 00 */ li r5, 0
+/* 80273034 0026EC94 7C 09 03 A6 */ mtctr r0
+lbl_80273038:
+/* 80273038 0026EC98 A0 04 00 00 */ lhz r0, 0(r4)
+/* 8027303C 0026EC9C 7C 03 00 40 */ cmplw r3, r0
+/* 80273040 0026ECA0 40 82 00 10 */ bne lbl_80273050
+/* 80273044 0026ECA4 38 05 00 80 */ addi r0, r5, 0x80
+/* 80273048 0026ECA8 54 03 06 3E */ clrlwi r3, r0, 0x18
+/* 8027304C 0026ECAC 4E 80 00 20 */ blr
+lbl_80273050:
+/* 80273050 0026ECB0 38 84 00 02 */ addi r4, r4, 2
+/* 80273054 0026ECB4 38 A5 00 01 */ addi r5, r5, 1
+/* 80273058 0026ECB8 42 00 FF E0 */ bdnz lbl_80273038
+lbl_8027305C:
+/* 8027305C 0026ECBC 38 60 00 00 */ li r3, 0
+/* 80273060 0026ECC0 4E 80 00 20 */ blr
+
+.global OSUTF32toSJIS
+OSUTF32toSJIS:
+/* 80273064 0026ECC4 3C 00 00 01 */ lis r0, 1
+/* 80273068 0026ECC8 7C 03 00 40 */ cmplw r3, r0
+/* 8027306C 0026ECCC 41 80 00 0C */ blt lbl_80273078
+/* 80273070 0026ECD0 38 60 00 00 */ li r3, 0
+/* 80273074 0026ECD4 4E 80 00 20 */ blr
+lbl_80273078:
+/* 80273078 0026ECD8 3C 80 80 43 */ lis r4, lbl_80433868@ha
+/* 8027307C 0026ECDC 54 60 D5 BA */ rlwinm r0, r3, 0x1a, 0x16, 0x1d
+/* 80273080 0026ECE0 38 84 38 68 */ addi r4, r4, lbl_80433868@l
+/* 80273084 0026ECE4 7C 84 00 2E */ lwzx r4, r4, r0
+/* 80273088 0026ECE8 2C 04 00 00 */ cmpwi r4, 0
+/* 8027308C 0026ECEC 41 82 00 10 */ beq lbl_8027309C
+/* 80273090 0026ECF0 54 60 0D FC */ rlwinm r0, r3, 1, 0x17, 0x1e
+/* 80273094 0026ECF4 7C 64 02 2E */ lhzx r3, r4, r0
+/* 80273098 0026ECF8 4E 80 00 20 */ blr
+lbl_8027309C:
+/* 8027309C 0026ECFC 38 60 00 00 */ li r3, 0
+/* 802730A0 0026ED00 4E 80 00 20 */ blr