Some of my recent work requires or has required working with Super Mario World's NMI routine, preferably without hijacking it. Anyone who has seen the NMI routine in SMWDisC (or all.log or SMW-IRQ) will have probably noticed that it's a big spaghetti mess, most of which relies on bitwise maths with $0D9B.
To make it easier for people (and me) to understand the potential flow of the NMI routine, I've constructed a flowchart
(go to View -> Zoom and set it to 100% to actually see it) and a spreadsheet
with detailed information. The flowchart shows all of the conditions of the routine, the paths they lead to, and the subroutines they call. The spreadsheet documents most significant blocks of code of the routine and all of the subroutines in the flowchart, most of which do DMA.
The colors in the flowchart and the spreadsheet are identical. They are meant to help you find matching routines in the two documents.
Currently, the spreadsheet is not fully complete - in the future, I intend to document common hijacks and maybe even add images for the DMA subroutines.