[ 3 / biz / cgl / ck / diy / fa / ic / jp / lit / sci / vr / vt ] [ index / top / reports ] [ become a patron ] [ status ]
2023-11: Warosu is now out of extended maintenance.

/vr/ - Retro Games

Search:


View post   

>> No.2486176 [View]
File: 112 KB, 800x770, 1429586753385.jpg [View same] [iqdb] [saucenao] [google]
2486176

>>2486135
Btw, V-Blank is so important, that it was tied to the NMI (Non Maskable Interupt) line on the SNES's 65816. That means the SNES stops execution and services the NMI hardware vector routine every time V-blank occurs. All games you will find will generally put their update PPU code there. For a more broad perspective the NMI is one of 3 basic components of a game:

1) Calculate frame // Screen drawing
2) Wait for NMI // Screen drawing
3) NMI // V-blank

I would be extremely surprised to see variations on this basic structure in wild commercial games. Knowing this helps get your first footholds on reverse engineering a game, since you can identify how PPU registers get updated, and then how those values get chosen, whilst correlating it with visual output.

>>2486085
Modern memory subsystems allow a computer to access memory spaces much larger than the native processor address space. The idea is that you could use hardware to remap (or page) regions of memory as seen by the CPU. For instance, imagine a computer with a 16-bit address space. At addresses $0000-$0006 I map a 7-byte hardware register that selects and maps a 0x0100=256 byte page from a memory subsystem to CPU addresses $0100-$01FF. I've just extended the memory of the computer from 64kiB, to 4GiB+some change.

For example:
$0000
0x00000000000000 => CPU $0100-$01FF <=> RAM $0000000000000000-$00000000000000FF
0x00000000000001 => CPU $0100-$01FF <=> RAM $0000000000000100-$00000000000001FF
0x00000000000010 => CPU $0100-$01FF <=> RAM $0000000000001000-$00000000000010FF
0x00000000001337 => CPU $0100-$01FF <=> RAM $0000000000133700-$00000000001337FF
0xDEADBEEEEEEEEF => CPU $0100-$01FF <=> RAM $DEADBEEEEEEEEF00-$DEADBEEEEEEEEFFF

Look up paging on wikipedia for more information. Not that the SNES isn't equipped with this stuff, but in principle it could be done easily on a cart, like how coprocessors work. Just wire up the cart differently than how Nintendo specifies, not so hard.

Navigation
View posts[+24][+48][+96]