**** **** ****.
i a missing my notes that have the broken down boot src.
**** **** fu. I shout have rewrote that in a doc. :S
Cool.Originally Posted by Malkster
Only 2 carts I still want.
1) Super Mario 64 Shojin Edidition (jp), This is a rare 2nd print that adds rumble suport. Kind of hard to come by. Waverace (which i got) is the only other SE rerelease game.
2) Conker Bad Fur Day (I do have the xbox ver but god I love this game).
**** **** ****.
i a missing my notes that have the broken down boot src.
**** **** fu. I shout have rewrote that in a doc. :S
LoL....Sorry Monkey, nothing I can do from here![]()
not sure if it's accurate (yet to fully break it down) but.....
the answer to the universe is 0x00590000. 0x01590000 if you have a disk in the drive. :P
So what does this mean? Erm guessing i was not far off in one of my disasm checks (in my missing notes.) i had found where it broke down to see if the disk is present. Not sure what the 59 fully means. I am guessing its 2 or 3 flags (not an absolute value).
I also now assume the lower 16 bits of the DD status register is for errors. If any number is there it considers the DD unit errored out.
so how did I find the answer without my notes?
; Reset DD
resetdd:
lui t0, $a500
ori t0, $0520
lui t1, $aaaa
ori t1, $0
sw t1, (t0)
jr ra
nop
readddstatus:
lui t6, $a500
ori t6, $0508
lui t0, $0000
ori t0, $0f0f
lw t0, (t6)
srl t0, t0, $10
andi t0, $ffff
jr ra
nop
my asm skills suck so there was probably a better way to do that. Actualy i noticed an optimisation right now.
andi t0, $ffff
jr ra
nop
to
jr ra
andi t0, $ffff
why? Mips cpu have a delay slot on jumps & branches. So atm i just do a nop (no instruction) when I could just preform the andi in the delay slot insted. andi of corse is just making sure we only keep the lower 16bits of a 64bit register.The demo i hacked does not like printing something bigger then 16bits.
anyways I attached the demo. It just issues a reset then reads the dd status every frame & prints to the screne (analog moves the value around).
demo src base is "U64ASM assembler" from http://here.is/halleyscomet
How to go from strange to ugly.
Write 0x00090000 into the command register and watch the stats register go crazy. :S
Gonna have to debug this some more (0x00590000 might not be the right number).
Few more numbers
HW DD Status reg
Reboot = 0x00590000
Cmd 9 = 0x02180000
If I do my emu with 0x02180000 I get write RTC (0x14) command.
If I do 0x00590000, I get Cmd 0x09.
Breaking the two numbers into binary show a few patterns
0000001000011000 - 0x0218
0000000001011001 - 0x0059
0000000100000000 - 0x0100 <- Disk Present
0000000010000000 - 0x0080 <- Error 3
0000000001000000 - 0x0040 <- Cmd 9 writen
0000000011000000 - 0x00C0 <- loop of reading DD status
So logical guess is the first 2 or 3 bits represent the units drive status. Here are some assumptions (with few details from a leo header).
0 - Drive Active / Busy
1 - Drive Idle / Waiting
2 - Drive Sleep / Off
4 - Drive Break / Error
Next two bits i'm not sure. I could be wrong on the previous part (it could be 2 bits not 3) and the next part is 3 bits which equal 0x6.
The rest I really dont know. Gonna modify m64 to let me change this on the fly.
--edit--
few update notes.
--edit 2--
Wtf, Lac said he don't remember it forcing any interupt but regardless what I set. the DD does not seem to progress. There has to be a trigger to the N64 somewhere.
Hows ur job going btw lol?
What exactly do you do?
psp pipeline / engine coder.
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks