summaryrefslogtreecommitdiff
path: root/asm/SDK/DWC/gamespy/gt2Buffer.s
blob: ab6397eead9a2ad8407479cb9c65e236c8c18257 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global gti2AllocateBuffer
gti2AllocateBuffer:
/* 803488F8 00344558  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 803488FC 0034455C  7C 08 02 A6 */	mflr r0
/* 80348900 00344560  90 01 00 14 */	stw r0, 0x14(r1)
/* 80348904 00344564  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80348908 00344568  7C 9F 23 78 */	mr r31, r4
/* 8034890C 0034456C  93 C1 00 08 */	stw r30, 8(r1)
/* 80348910 00344570  7C 7E 1B 78 */	mr r30, r3
/* 80348914 00344574  7F E3 FB 78 */	mr r3, r31
/* 80348918 00344578  4B FF 09 FD */	bl gsimalloc
/* 8034891C 0034457C  2C 03 00 00 */	cmpwi r3, 0
/* 80348920 00344580  90 7E 00 00 */	stw r3, 0(r30)
/* 80348924 00344584  40 82 00 0C */	bne lbl_80348930
/* 80348928 00344588  38 60 00 00 */	li r3, 0
/* 8034892C 0034458C  48 00 00 0C */	b lbl_80348938
lbl_80348930:
/* 80348930 00344590  93 FE 00 04 */	stw r31, 4(r30)
/* 80348934 00344594  38 60 00 01 */	li r3, 1
lbl_80348938:
/* 80348938 00344598  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8034893C 0034459C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80348940 003445A0  83 C1 00 08 */	lwz r30, 8(r1)
/* 80348944 003445A4  7C 08 03 A6 */	mtlr r0
/* 80348948 003445A8  38 21 00 10 */	addi r1, r1, 0x10
/* 8034894C 003445AC  4E 80 00 20 */	blr

.global gti2GetBufferFreeSpace
gti2GetBufferFreeSpace:
/* 80348950 003445B0  80 83 00 08 */	lwz r4, 8(r3)
/* 80348954 003445B4  80 03 00 04 */	lwz r0, 4(r3)
/* 80348958 003445B8  7C 64 00 50 */	subf r3, r4, r0
/* 8034895C 003445BC  4E 80 00 20 */	blr

.global gti2BufferWriteByte
gti2BufferWriteByte:
/* 80348960 003445C0  80 A3 00 08 */	lwz r5, 8(r3)
/* 80348964 003445C4  80 C3 00 00 */	lwz r6, 0(r3)
/* 80348968 003445C8  38 05 00 01 */	addi r0, r5, 1
/* 8034896C 003445CC  7C 86 29 AE */	stbx r4, r6, r5
/* 80348970 003445D0  90 03 00 08 */	stw r0, 8(r3)
/* 80348974 003445D4  4E 80 00 20 */	blr

.global gti2BufferWriteUShort
gti2BufferWriteUShort:
/* 80348978 003445D8  80 A3 00 08 */	lwz r5, 8(r3)
/* 8034897C 003445DC  54 80 C6 3E */	rlwinm r0, r4, 0x18, 0x18, 0x1f
/* 80348980 003445E0  80 E3 00 00 */	lwz r7, 0(r3)
/* 80348984 003445E4  38 C5 00 01 */	addi r6, r5, 1
/* 80348988 003445E8  7C 07 29 AE */	stbx r0, r7, r5
/* 8034898C 003445EC  38 06 00 01 */	addi r0, r6, 1
/* 80348990 003445F0  90 C3 00 08 */	stw r6, 8(r3)
/* 80348994 003445F4  80 A3 00 00 */	lwz r5, 0(r3)
/* 80348998 003445F8  7C 85 31 AE */	stbx r4, r5, r6
/* 8034899C 003445FC  90 03 00 08 */	stw r0, 8(r3)
/* 803489A0 00344600  4E 80 00 20 */	blr

.global gti2BufferWriteData
gti2BufferWriteData:
/* 803489A4 00344604  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 803489A8 00344608  7C 08 02 A6 */	mflr r0
/* 803489AC 0034460C  2C 04 00 00 */	cmpwi r4, 0
/* 803489B0 00344610  90 01 00 24 */	stw r0, 0x24(r1)
/* 803489B4 00344614  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 803489B8 00344618  7C BF 2B 78 */	mr r31, r5
/* 803489BC 0034461C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 803489C0 00344620  7C 9E 23 78 */	mr r30, r4
/* 803489C4 00344624  93 A1 00 14 */	stw r29, 0x14(r1)
/* 803489C8 00344628  7C 7D 1B 78 */	mr r29, r3
/* 803489CC 0034462C  41 82 00 48 */	beq lbl_80348A14
/* 803489D0 00344630  2C 05 00 00 */	cmpwi r5, 0
/* 803489D4 00344634  40 82 00 08 */	bne lbl_803489DC
/* 803489D8 00344638  48 00 00 3C */	b lbl_80348A14
lbl_803489DC:
/* 803489DC 0034463C  2C 05 FF FF */	cmpwi r5, -1
/* 803489E0 00344640  40 82 00 10 */	bne lbl_803489F0
/* 803489E4 00344644  7F C3 F3 78 */	mr r3, r30
/* 803489E8 00344648  4B E7 E1 7D */	bl strlen
/* 803489EC 0034464C  7C 7F 1B 78 */	mr r31, r3
lbl_803489F0:
/* 803489F0 00344650  80 7D 00 00 */	lwz r3, 0(r29)
/* 803489F4 00344654  7F C4 F3 78 */	mr r4, r30
/* 803489F8 00344658  80 1D 00 08 */	lwz r0, 8(r29)
/* 803489FC 0034465C  7F E5 FB 78 */	mr r5, r31
/* 80348A00 00344660  7C 63 02 14 */	add r3, r3, r0
/* 80348A04 00344664  4B CB B5 FD */	bl memcpy
/* 80348A08 00344668  80 1D 00 08 */	lwz r0, 8(r29)
/* 80348A0C 0034466C  7C 00 FA 14 */	add r0, r0, r31
/* 80348A10 00344670  90 1D 00 08 */	stw r0, 8(r29)
lbl_80348A14:
/* 80348A14 00344674  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80348A18 00344678  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80348A1C 0034467C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80348A20 00344680  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80348A24 00344684  7C 08 03 A6 */	mtlr r0
/* 80348A28 00344688  38 21 00 20 */	addi r1, r1, 0x20
/* 80348A2C 0034468C  4E 80 00 20 */	blr

.global gti2BufferShorten
gti2BufferShorten:
/* 80348A30 00344690  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80348A34 00344694  7C 08 02 A6 */	mflr r0
/* 80348A38 00344698  2C 04 FF FF */	cmpwi r4, -1
/* 80348A3C 0034469C  90 01 00 14 */	stw r0, 0x14(r1)
/* 80348A40 003446A0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80348A44 003446A4  7C BF 2B 78 */	mr r31, r5
/* 80348A48 003446A8  93 C1 00 08 */	stw r30, 8(r1)
/* 80348A4C 003446AC  7C 7E 1B 78 */	mr r30, r3
/* 80348A50 003446B0  40 82 00 0C */	bne lbl_80348A5C
/* 80348A54 003446B4  80 03 00 08 */	lwz r0, 8(r3)
/* 80348A58 003446B8  7C 85 00 50 */	subf r4, r5, r0
lbl_80348A5C:
/* 80348A5C 003446BC  80 63 00 00 */	lwz r3, 0(r3)
/* 80348A60 003446C0  80 1E 00 08 */	lwz r0, 8(r30)
/* 80348A64 003446C4  7C 63 22 14 */	add r3, r3, r4
/* 80348A68 003446C8  7C 04 00 50 */	subf r0, r4, r0
/* 80348A6C 003446CC  7C 83 2A 14 */	add r4, r3, r5
/* 80348A70 003446D0  7C A5 00 50 */	subf r5, r5, r0
/* 80348A74 003446D4  4B E8 18 01 */	bl memmove
/* 80348A78 003446D8  80 1E 00 08 */	lwz r0, 8(r30)
/* 80348A7C 003446DC  7C 1F 00 50 */	subf r0, r31, r0
/* 80348A80 003446E0  90 1E 00 08 */	stw r0, 8(r30)
/* 80348A84 003446E4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80348A88 003446E8  83 C1 00 08 */	lwz r30, 8(r1)
/* 80348A8C 003446EC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80348A90 003446F0  7C 08 03 A6 */	mtlr r0
/* 80348A94 003446F4  38 21 00 10 */	addi r1, r1, 0x10
/* 80348A98 003446F8  4E 80 00 20 */	blr