summaryrefslogtreecommitdiff
path: root/asm/MetroTRK/mainloop.s
blob: c828d7dc495734ade670f677ead83b617f7664bc (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
.include "macros.inc"

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

.global TRKNubMainLoop
TRKNubMainLoop:
/* 801D4838 001D0498  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801D483C 001D049C  7C 08 02 A6 */	mflr r0
/* 801D4840 001D04A0  90 01 00 24 */	stw r0, 0x24(r1)
/* 801D4844 001D04A4  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801D4848 001D04A8  3B E0 00 00 */	li r31, 0
/* 801D484C 001D04AC  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801D4850 001D04B0  3B C0 00 00 */	li r30, 0
/* 801D4854 001D04B4  48 00 00 BC */	b lbl_801D4910
lbl_801D4858:
/* 801D4858 001D04B8  38 61 00 08 */	addi r3, r1, 8
/* 801D485C 001D04BC  48 00 01 F1 */	bl TRKGetNextEvent
/* 801D4860 001D04C0  2C 03 00 00 */	cmpwi r3, 0
/* 801D4864 001D04C4  41 82 00 6C */	beq lbl_801D48D0
/* 801D4868 001D04C8  80 01 00 08 */	lwz r0, 8(r1)
/* 801D486C 001D04CC  3B C0 00 00 */	li r30, 0
/* 801D4870 001D04D0  2C 00 00 02 */	cmpwi r0, 2
/* 801D4874 001D04D4  41 82 00 28 */	beq lbl_801D489C
/* 801D4878 001D04D8  40 80 00 14 */	bge lbl_801D488C
/* 801D487C 001D04DC  2C 00 00 00 */	cmpwi r0, 0
/* 801D4880 001D04E0  41 82 00 44 */	beq lbl_801D48C4
/* 801D4884 001D04E4  40 80 00 28 */	bge lbl_801D48AC
/* 801D4888 001D04E8  48 00 00 3C */	b lbl_801D48C4
lbl_801D488C:
/* 801D488C 001D04EC  2C 00 00 05 */	cmpwi r0, 5
/* 801D4890 001D04F0  41 82 00 30 */	beq lbl_801D48C0
/* 801D4894 001D04F4  40 80 00 30 */	bge lbl_801D48C4
/* 801D4898 001D04F8  48 00 00 1C */	b lbl_801D48B4
lbl_801D489C:
/* 801D489C 001D04FC  80 61 00 10 */	lwz r3, 0x10(r1)
/* 801D48A0 001D0500  48 00 0B 3D */	bl TRKGetBuffer
/* 801D48A4 001D0504  48 00 0E D9 */	bl TRKDispatchMessage
/* 801D48A8 001D0508  48 00 00 1C */	b lbl_801D48C4
lbl_801D48AC:
/* 801D48AC 001D050C  3B E0 00 01 */	li r31, 1
/* 801D48B0 001D0510  48 00 00 14 */	b lbl_801D48C4
lbl_801D48B4:
/* 801D48B4 001D0514  38 61 00 08 */	addi r3, r1, 8
/* 801D48B8 001D0518  48 00 31 85 */	bl TRKTargetInterrupt
/* 801D48BC 001D051C  48 00 00 08 */	b lbl_801D48C4
lbl_801D48C0:
/* 801D48C0 001D0520  48 00 2D 75 */	bl TRKTargetSupportRequest
lbl_801D48C4:
/* 801D48C4 001D0524  38 61 00 08 */	addi r3, r1, 8
/* 801D48C8 001D0528  48 00 00 69 */	bl TRKDestructEvent
/* 801D48CC 001D052C  48 00 00 44 */	b lbl_801D4910
lbl_801D48D0:
/* 801D48D0 001D0530  2C 1E 00 00 */	cmpwi r30, 0
/* 801D48D4 001D0534  41 82 00 1C */	beq lbl_801D48F0
/* 801D48D8 001D0538  3C 60 80 64 */	lis r3, lbl_8063F2A0@ha
/* 801D48DC 001D053C  38 63 F2 A0 */	addi r3, r3, lbl_8063F2A0@l
/* 801D48E0 001D0540  80 63 00 00 */	lwz r3, 0(r3)
/* 801D48E4 001D0544  88 03 00 00 */	lbz r0, 0(r3)
/* 801D48E8 001D0548  28 00 00 00 */	cmplwi r0, 0
/* 801D48EC 001D054C  41 82 00 10 */	beq lbl_801D48FC
lbl_801D48F0:
/* 801D48F0 001D0550  3B C0 00 01 */	li r30, 1
/* 801D48F4 001D0554  48 00 0C CD */	bl TRKGetInput
/* 801D48F8 001D0558  48 00 00 18 */	b lbl_801D4910
lbl_801D48FC:
/* 801D48FC 001D055C  48 00 2D 29 */	bl TRKTargetStopped
/* 801D4900 001D0560  2C 03 00 00 */	cmpwi r3, 0
/* 801D4904 001D0564  40 82 00 08 */	bne lbl_801D490C
/* 801D4908 001D0568  48 00 50 51 */	bl TRKTargetContinue
lbl_801D490C:
/* 801D490C 001D056C  3B C0 00 00 */	li r30, 0
lbl_801D4910:
/* 801D4910 001D0570  2C 1F 00 00 */	cmpwi r31, 0
/* 801D4914 001D0574  41 82 FF 44 */	beq lbl_801D4858
/* 801D4918 001D0578  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801D491C 001D057C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801D4920 001D0580  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801D4924 001D0584  7C 08 03 A6 */	mtlr r0
/* 801D4928 001D0588  38 21 00 20 */	addi r1, r1, 0x20
/* 801D492C 001D058C  4E 80 00 20 */	blr