mirror of
https://github.com/notwa/mm
synced 2025-02-05 05:23:22 -08:00
add really rough onscreen printing
This commit is contained in:
parent
ea1e055e87
commit
c5eaf96e1a
2 changed files with 98 additions and 5 deletions
|
@ -26,8 +26,13 @@ local injection_points = {
|
||||||
['O EUDB MQ'] = {
|
['O EUDB MQ'] = {
|
||||||
inject_addr = 0x700000,
|
inject_addr = 0x700000,
|
||||||
inject_maxlen = 0x100000,
|
inject_maxlen = 0x100000,
|
||||||
ow_addr = 0x0C6940,
|
-- main rendering loop:
|
||||||
ow_before = 0x0C03151F,
|
-- the only other function (that literally just loads and returns)
|
||||||
|
--ow_addr = 0x0C6940,
|
||||||
|
--ow_before = 0x0C03151F,
|
||||||
|
-- first (high-level) function after iterating over actors
|
||||||
|
ow_addr = 0x0C62B8,
|
||||||
|
ow_before = 0x0C031AB1,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
injection_points['O JP10'] = injection_points['O US10']
|
injection_points['O JP10'] = injection_points['O US10']
|
||||||
|
|
|
@ -2,16 +2,104 @@
|
||||||
// to copy strings to memory instead
|
// to copy strings to memory instead
|
||||||
// for Lua to later pick up on
|
// for Lua to later pick up on
|
||||||
|
|
||||||
|
[global_context]: 0x80212020
|
||||||
|
|
||||||
|
// offset from first pointer in global context
|
||||||
|
[dlist_offset]: 0x2C0
|
||||||
|
|
||||||
|
[SetTextRGBA]: 0x800FB3AC
|
||||||
|
[SetTextXY]: 0x800FB41C
|
||||||
|
[SetTextString]: 0x800FBCB4
|
||||||
|
[TxtPrinter]: 0x800FBB60
|
||||||
|
[InitTxtStruct]: 0x800FBB8C
|
||||||
|
[DoTxtStruct]: 0x800FBC1C
|
||||||
|
[UpdateTxtStruct]: 0x800FBC64
|
||||||
|
|
||||||
|
[ObjectSpawn]: 0x80097C00
|
||||||
|
[ObjectIndex]: 0x8009812C
|
||||||
|
|
||||||
|
push 4, 1, ra
|
||||||
|
// draw some nonsense text
|
||||||
|
li a0, 0x00010001 // xy
|
||||||
|
li a1, 0x88CCFFFF // rgba
|
||||||
|
la a2, fmt
|
||||||
|
la a3, buffer
|
||||||
|
jal easytext
|
||||||
|
nop
|
||||||
// reset buffer position in our per-frame hook
|
// reset buffer position in our per-frame hook
|
||||||
la t0, buffer
|
la t0, buffer
|
||||||
sw t0, buffer_pos
|
sw t0, buffer_pos
|
||||||
// and set the string to null
|
// and set the string to null
|
||||||
sb r0, 0(t0)
|
sb r0, 0(t0)
|
||||||
jr
|
jpop 4, 1, ra
|
||||||
|
|
||||||
|
fmt:
|
||||||
|
.byte 0x25,0x73,0x00 // %s
|
||||||
|
.align
|
||||||
|
str:
|
||||||
|
.byte 0x68,0x65,0x79,0x00 // hey
|
||||||
|
.align
|
||||||
|
|
||||||
|
textdata:
|
||||||
|
.word 0, 0, 0, 0, 0
|
||||||
|
easytext:
|
||||||
|
// a0: xxxxyyyy
|
||||||
|
// a1: rrggbbaa
|
||||||
|
// a2: printf formatting string
|
||||||
|
// a3: first argument for format string (optional)
|
||||||
|
// TODO: support more than 4 args
|
||||||
|
push 4, 1, s0, s1, ra
|
||||||
|
|
||||||
|
la s0, textdata
|
||||||
|
|
||||||
|
sw a0, 32(sp)
|
||||||
|
sw a1, 36(sp)
|
||||||
|
sw a2, 40(sp)
|
||||||
|
sw a3, 44(sp)
|
||||||
|
|
||||||
|
li t0, @TxtPrinter
|
||||||
|
sw t0, 0(s0) // printer
|
||||||
|
sw r0, 4(s0) // dlist end
|
||||||
|
sh r0, 8(s0) // x
|
||||||
|
sh r0, 10(s0) // y
|
||||||
|
li t0, 0xC
|
||||||
|
sw t0, 12(s0) // unknown
|
||||||
|
sw r0, 16(s0) // color
|
||||||
|
|
||||||
|
li t0, @global_context
|
||||||
|
lw s1, 0(t0)
|
||||||
|
lw t2, @dlist_offset(s1)
|
||||||
|
|
||||||
|
mov a0, s0
|
||||||
|
mov a1, t2
|
||||||
|
jal @DoTxtStruct
|
||||||
nop
|
nop
|
||||||
|
|
||||||
[ObjectSpawn]: 0x80097C00
|
lbu a1, 36(sp)
|
||||||
[ObjectIndex]: 0x8009812C
|
lbu a2, 37(sp)
|
||||||
|
lbu a3, 38(sp)
|
||||||
|
lbu t1, 39(sp)
|
||||||
|
sw t1, 0x10(sp)
|
||||||
|
jal @SetTextRGBA
|
||||||
|
mov a0, s0
|
||||||
|
|
||||||
|
lh a1, 32(sp)
|
||||||
|
lh a2, 34(sp)
|
||||||
|
jal @SetTextXY
|
||||||
|
mov a0, s0
|
||||||
|
|
||||||
|
lw a1, 40(sp)
|
||||||
|
lw a2, 44(sp)
|
||||||
|
jal @SetTextString
|
||||||
|
mov a0, s0
|
||||||
|
|
||||||
|
mov a0, s0
|
||||||
|
jal @UpdateTxtStruct
|
||||||
|
nop
|
||||||
|
|
||||||
|
sw v0, @dlist_offset(s1)
|
||||||
|
|
||||||
|
jpop 4, 1, s0, s1, ra
|
||||||
|
|
||||||
ObjectSpawnWrap:
|
ObjectSpawnWrap:
|
||||||
// keep track of which objects we're spawning
|
// keep track of which objects we're spawning
|
||||||
|
|
Loading…
Add table
Reference in a new issue