Actually Metal Warrior 1-3 never used zone splitted or fixed IRQ's, but an inaccurate bucket sorting method, where Y was simply divided by 8, and that's what the tutorial was referring to if I remember right.
- ldy SortOrder,X ;Copy Y pos, X posL, Color and Tile Number to sorted buffers lda SpritePosY.w,Y sta SpriteSortedPosY.w,X lda SpritePosXL.w,Y ;So that they are accedded faster during IRQ sta SpriteSortedPosXL.w,X lda SpriteFlags.w,Y ;And can be written again during the frame by the main programm and #$0f sta SpriteSortedFlags.w,X lda SpriteTileNmr.w,Y sta SpriteSortedTileNmr.w,X dex bpl - inx stx SpriteReadyFlag ;Clear the pending flag OldSprites ldy #$00 - lda InterruptLine.w,Y ;Load the first valid interrupt (nonzero) bne + iny cpy #SpriteAmount bne - ;If no valid interrupt lda #$ff ;...we set $ff for VBlank interrupt + sta $d012 ;Initislise the first interrupt cmp #$ff beq + tya + sta SpriteRasterIndex ;The next IRQ is a sprite IRQ if line is not $ff, else it's the VBlank IRQ stx $d015 ;No sprite visible before the first interrupt cli ;Enable the interrupts rts