What would I have to do to detect input? As in, something like IFile_Read, but for the buttons.
What would I have to do to detect input? As in, something like IFile_Read, but for the buttons.
I tried injecting Pokemon Yellow into Super Mario Land and got a yellow screen. renamed pokemon yellow.gb to rom.gbc
Ok, question here. Since I can't seem to get input working(feel free to help) What does everyone want for a file select?
Ok, question here. Since I can't seem to get input working(feel free to help) What does everyone want for a file select?
(For example a scrollable gb/gbc file select after loading browser exploit, injecting the selected rom followed by the green/yellow/red bottom screen)
Can you also make a note about my build for bookmark-based ROM selection, IMO it will be helpful for the time of GUI is WIP.Revamped first post with KazoWAR's code.bin, and a list of goals
It gives pixelated screen in rainbow colors!!!Given that's the instruction from the original post, what did you name the rom? iirc at first it used rom.nes but if you're using kazo's it needs to be rom.gbc
Also clearing browser cache/history is important. Let us know what color the bottom screen changes to upon browser crash too
Red-Rom not found (Could be named incorrectly)
Yellow-Rom too big for VC
Green-Should be good
.arm
.text
#define SELF_LOC 0x08B88400
#define BUFFER_LOC 0x18410000
#define CODE_SIZE 0x00004000
#define CODE_TARGET 0x19592000
#define CODE_JUMP 0x009D2000
#define ROM_FILE_NAME_OFFSET 0x000003B4
#define ROM_FILE_NAME_SIZE 0x0000003E
.global _start
@---------------------------------------------------------------------------------
_start:
@ mount SD
.word 0x0010C2FC @ LDMFD SP!, {R0,PC}
.word 0x001050B3 @ R0 = "dmc:"
.word 0x0019CA34 @ FS_MOUNTSDMC(), then LDMFD SP!, {R3-R5,PC}
.word 0xDEADBEEF @ R3, dummy
.word 0xDEADBEEF @ R4, dummy
.word 0xDEADBEEF @ R5, dummy
.fill 45, 4, 0x001057C4 @ POP {PC} / nop * 59
@ open file
.word 0x001946EB @ POP {R0-R4,R7,PC}
.word 0x08F10000 @ R0 = this
.word SELF_LOC+FileName @ R1 = filename
.word 0x00000001 @ R2 = permission
.word 0xDEADBEEF @ R3, dummy
.word 0xDEADBEEF @ R4, dummy
.word 0xDEADBEEF @ R7, dummy
.word 0x0022FE0C @ IFile_Open(), then LDMFD SP!, {R4-R7,PC}
.word 0xDEADBEEF @ R4, dummy
.word 0xDEADBEEF @ R5, dummy
.word SELF_LOC+_start+0x8C @ R6, dummy init 1
.word 0xDEADBEEF @ R7, dummy
.word 0x001057C4 @ POP {PC}
@ read payload
.word 0x001946EB @ POP {R0-R4,R7,PC}
.word 0x08F10000 @ R0 = this
.word 0x08F10020 @ R1 = total_read
.word BUFFER_LOC @ R2 = buffer
.word CODE_SIZE @ R3 = size
.word 0xDEADBEEF @ R4, dummy
.word 0xDEADBEEF @ R7, dummy
.word 0x001686E0 @ IFile_Read, then LDMFD SP!, {R4-R9,PC}
.word 0xDEADBEEF @ R4, dummy
.word 0xDEADBEEF @ R5, dummy
.word SELF_LOC+_start @ R6, dummy init 2
.word 0x001057C4 @ R7, dummy init 3
.word 0x001057C4 @ R8, dummy init 4
.word 0xDEADBEEF @ R9, dummy
@patch rom filename
.word 0x0010b5b4 @ pop {r0, r1, r2, r3, r4, pc}
.word BUFFER_LOC+ROM_FILE_NAME_OFFSET @ r0 (dst)
.word SELF_LOC+FileNameRom @ r1 (src)
.word ROM_FILE_NAME_SIZE @ r2 (size)
.word 0xDEADC0DE @ r3 (garbage)
.word 0xDEADC0DE @ r4 (garbage)
.word 0x00240B54 @ memcpy (ends in LDMFD SP!, {R4-R10,LR})
.word 0xDEADC0DE @ r4 (garbage)
.word 0x0010C2FC @ r5 (garbage) init 5
.word SELF_LOC+_start+0x218 @ r6 (garbage) init 6
.word 0xDEADC0DE @ r7 (garbage)
.word 0xDEADC0DE @ r8 (garbage)
.word 0xDEADC0DE @ r9 (garbage)
.word 0xDEADC0DE @ r10 (garbage)
@ flush data cache
.word 0x0010b5b4 @ pop {r0, r1, r2, r3, r4, pc}
.word 0x003DA72C @ r0 (handle ptr)
.word 0xFFFF8001 @ r1 (kprocess handle)
.word BUFFER_LOC @ r2 (address)
.word CODE_SIZE @ r3 (size)
.word 0xDEADC0DE @ r4 (garbage)
.word 0x0013035C @ pop {lr, pc}
.word 0x001057c4 @ lr (pop {pc})
.word 0x0012c1e0 @ GSPGPU_FlushDataCache
@ send GX command
.word 0x0010c2fc @ pop {r0, pc}
.word 0x3D7C40+0x58 @ r0 (nn__gxlow__CTR__detail__GetInterruptReceiver)
.word 0x00228af4 @ pop {r1, pc}
.word SELF_LOC+gxCommand @ r1 (cmd addr)
.word 0x0013035C @ pop {lr, pc}
.word 0x001057c4 @ lr (pop {pc})
.word 0x0012BF04 @ nn__gxlow__CTR__CmdReqQueueTx__TryEnqueue
@ sleep for a bit
.word 0x0010c2fc @ pop {r0, pc}
.word 0x3B9ACA00 @ r0 (one second)
.word 0x00228af4 @ pop {r1, pc}
.word 0x00000000 @ r1 (nothing)
.word 0x0013035C @ pop {lr, pc}
.word 0x001057c4 @ lr (pop {pc})
.word 0x001041f8 @ svc 0xa | bx lr
@ jump to code
.word CODE_JUMP
.fill 10, 4, 0
Self:
.word SELF_LOC+Self @ Self 1
.word 0x001057C4 @ Self 2 POP {PC}
gxCommand:
.word 0x00000004 @ command header (SetTextureCopy)
.word BUFFER_LOC @ source address
.word CODE_TARGET @ destination address
.word CODE_SIZE @ size
.word 0xFFFFFFFF @ dim in
.word 0xFFFFFFFF @ dim out
.word 0x00000008 @ flags
.word 0x00130344 @ unused Self 3
.align 2
FileNameRom:
.string16 "dmc:/rom.gbc"
.fill 18, 2, 0
.align 2
FileName:
.string16 "dmc:/code.bin"
Not sure if you checked it out but earlier I posted something from gameyob's source. Dunno if it's filechooser can be interpreted in any way to work with code.bin though(For example a scrollable gb/gbc file select after loading browser exploit, injecting the selected rom followed by the green/yellow/red bottom screen)
https://github.com/Drenn1/GameYob/blob/master/platform/common/filechooser.cpp
![]()
It gives pixelated screen in rainbow colors!!!
Sure, I'll take a look.
Awesome, keep us posted if you think its possible to implement :>
Well, progres at least. Implementing button presses seems to be possible. Now, as for the gui: Also possible, but here's the problem: It's going to be complicated/ time-consuming to make. The only way I see is to make it just put the text on a solid background, by using the current color display, but "replacing" pixels as it goes. Does anyone know a simpler way?



