Please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Super New Year Cart 15-in-1

From The Cutting Room Floor
Jump to: navigation, search

Title Screen

Super New Year Cart 15-in-1

Also known as: 15-in-1
Developer: Hummer Team
Publisher: Hong Jing
Platform: Unlicensed NES
Released in TW: 2005


SourceIcon.png This game has uncompiled source code.
DevTextIcon.png This game has hidden development-related text.


So very stubbly.
This page is rather stubbly and could use some expansion.
Are you a bad enough dude to rescue this article?
Hmmm...
To do:
There's more unused goodies documented here.

Super New Year Cart 15-in-1 is a multicart released in 2005 with a word salad for a name.

Compiler Output

At 0x14EBD and 0x74EBD are what seems to be output from the compiler. It seems to be the same output, though.

                       Lines Assembled :  2947
                       Assembly Errors :  0
                       Output Filename : main.obj

Source Code

Around 0xC88A in the ROM starts a huge amount of source code for the menu and some of the games.

        LDA     ?NextNoTbl1,X
        STA     ItemNo
        JMP     SetSprCursor
?NextNoTbl1:
    DB ??dQ  00�   ,$05,$03,$04
CursorDown:
        LDX     ItemNo
        LDA     PageNo
        CMP     #$03
        BCC     ?1
        BEQ     ?2
       ÿÿDA     ?NextNoTbl,X
        STA     ItemNo
        JMP     SetSprCursor
?NextNoTbl:
    DB  $01,$02,$03,$04,$05,$06,$07,$00,$09,$0A,$0B,$0C,$0D,$0ÿÿ$0    t?dQ       LDA     ?NextNoTbl0,X
        STA     ItemNo
        JMP     SetSprCursor
?NextNoTbl0:
    DB  $01,$02,$03,$00,$05,$06,$07,$0??dQ  
 �   Ü?dQDA     ?NextNoTbl1,X
        STA     ItemNo
        JMP     SetSprCursor
?NextNoTbl1:
    DB  $01,$02,$00,$04,$05,$03
CursorLeft:
�?dQ    �       ItemNo
        LDA     PageNo
        CMP     #$03
        BEQ     ?2
        BCS     ?1
        LDA     NextNoTbl00,X
        STA    ÿÿte    
        JMP     SetSprCursor
?1      LDA     NextNoTbl0,X
        STA     ItemNo
        JMP     SetSprCursor
?2      LDA     NextNoTbl01,Xÿÿ        STA     ItemNo
        JMP     SetSprCursor
EntryGame       ;2
        LDA     ItemNo
        ASL     A
        STA     a0
        ASL  ÿÿ A    D?dQ  CLC
        ADC     a0
        STA     a0
        LDA     PageNo
        ASL     A
        TAY
        LDA     ?SwitchGameTbl,Y
??dQ    �   ??dQ      ADC     a0
        STA     r0
        LDA     ?SwitchGameTbl+1,Y
        ADC     #$00
        STA     r0+1


        LDY   é?dQ  
�   �?dQLDA     (r0),Y
        STA     rg6000Buf,Y
        INY
        CPY     #$06
        BCC     ?1


        LDX     #$00
?2      LDQ?dQ  Ne�   |?dQint,x
        STA     $0300,X
        INX
        CPX     #EndEntryPoint-NewEntryPoint
        BCC     ?2
        JMP     $0300

??dQ  hG�   ä?dQ        DW      ?SwitchGame0C,?SwitchGame0B,?SwitchGame0A,?SwitchGame0D,?SwitchGame00
?SwitchGame0C
        DB      $00,$20,$1F,$F0,$0^¤dQ  ;$�   L¦dQIC)
        DB      $00,$10,$0E,$F0,$00,$00 ;$01(PINK of RINGS)
        DB      $80,$40,$0E,$F0,$00,$00 ;$02(WAR)
        DB      $00‰¦dQ  0E�   ,$00,$02 ;$03(Duck0 of RINGS)
        DB      $00,$10,$0E,$F0,$01,$02 ;$04(Duck1 of RINGS)
        DB      $00,$10,$0E,$F0,$01,$00 ;$05(PINK1 ÿÿ R    )
        DB      $00,$10,$0E,$F0,$02,$00 ;$06(PINK2 of RINGS)
        DB      $00,$10,$0E,$F0,$03,$00 ;$07(PINK3 of RINGS)
?SwitchGame0B
  ÿÿ            $00,$60,$3F,$E0,$00,$00 ;$00(SONIC)
        DB      $00,$10,$0E,$F0,$00,$00 ;$01(PINK of RINGS)
        DB      $80,$40,$0E,$F0,$00,$00 ÿÿ02    )
        DB      $00,$10,$0E,$F0,$00,$02 ;$03(Duck0 of RINGS)
        DB      $00,$10,$0E,$F0,$01,$02 ;$04(Duck1 of RINGS)
        DB      $ÿÿ,$    ´¨dQF0,$01,$00 ;$05(PINK1 of RINGS)
        DB      $00,$10,$0E,$F0,$02,$00 ;$06(PINK2 of RINGS)
        DB      $00,$10,$0E,$F0,$03,$00 ;.©dQ  NK�   �«dQGS)
?SwitchGame0A
        DB      $00,$50,$2F,$F0,$00,$00 ;$00(SF4)
        DB      $00,$10,$0E,$F0,$00,$00 ;$01(PINK of RINGS)
    Y«dQ    �   „­dQ$40,$0E,$F0,$00,$00 ;$02(WAR)
        DB      $00,$10,$0E,$F0,$00,$02 ;$03(Duck0 of RINGS)
        DB      $00,$10,$0E,$F0,$01,$02 ;$0Á­dQ  1 �   ì¯dQ)
        DB      $00,$10,$0E,$F0,$01,$00 ;$05(PINK1 of RINGS)
        DB      $00,$10,$0E,$F0,$02,$00 ;$06(PINK2 of RINGS)
        D)°dQ   $�   T²dQ0E,$F0,$03,$00 ;$07(PINK3 of RINGS)
?SwitchGame00
;Chr*$400,Pro*$2000,HIHG*$40000(Chr) Low(Chr Size),Program Size ,$110,$111
        ‘²dQ    �   ¼´dQ$2F,$F0,$00,$00 ;$00(SF4)
        DB      $00,$60,$3F,$E0,$00,$00 ;$01(SONIC)
        DB      $00,$10,$0E,$F0,$00,$00 ;$02(PINK of RIN6µdQ    �   $·dQ     $80,$40,$0E,$F0,$00,$00 ;$03(WAR)
        DB      $00,$20,$1F,$F0,$00,$00 ;$04(TITANIC)
        DB      $00,$20,$1F,$F0,$01,$00 ;a·dQ  TA�   Œ¹dQ      DB      $00,$10,$0E,$F0,$00,$02 ;$06(Duck0 of RINGS)
        DB      $00,$10,$0E,$F0,$01,$02 ;$07(Duck1 of RINGS)
        DB    CºdQ  $1�   E,$F0,$01,$00 ;$08(PINK1 of RINGS)
        DB      $00,$10,$0E,$F0,$02,$00 ;$09(PINK2 of RINGS)
        DB      $00,$10,$0E,$F0,$03,$00 ;$0A(PÿÿK3    RINGS)
        DB      $00,$10,$0E,$F0,$00,$01 ;$0B(RINGS0)
        DB      $00,$10,$0E,$F0,$01,$01 ;$0C(RINGS1)
        DB      $00,$10,$0E,ÿÿ0,    ô»dQ;$0D(RINGS2)
        DB      $00,$10,$0E,$F0,$03,$01 ;$0E(RINGS3)
?SwitchGame0D
        DB      $00,$50,$2F,$F0,$00,$00 ;$00(SF4)
  1¼dQ  DB�   \¾dQ0,$60,$3F,$E0,$00,$00 ;$01(SONIC)
        DB      $00,$10,$0E,$F0,$00,$00 ;$02(PINK of RINGS)
        DB      $80,$40,$0E,$F0,$00,$00 ™¾dQ  AR�          DB      $00,$20,$1F,$F0,$00,$00 ;$04(TITANIC)
        DB      $00,$10,$0E,$F0,$01,$02 ;$05(Duck1 of RINGS)
NewEntryPoint:
        LDA ÿÿ      00Buf+4
        STA     $0110
        LDA     rg6000Buf+5
        STA     $0111
        LDY     #$00
?1      LDA     rg6000Buf,Y
        Sÿÿ      ÄÀdQ
        INY
        CPY     #$04
        BCC     ?1
        JMP     ($FFFC)
        NOP
        NOP
EndEntryPoint:

;JumpMenuT�ÁdQ  C �   ,ÃdQ       DW      $6010,$6020,$6040,$6080
;       DW      $6100,$6200,$6400,$6800



;;;;;;library
RamProgram:
        .ENDS

    ¦ÃdQ  MB�   ”ÅdQ



�   EOR     #$01
        STA     page0_1
        RTS
?1      LDA     tog1
        AND     #kA+kB+kST
        BEQ     ?2
    ÑÅdQ  A �   #$0E
        STA     _Sound
        INC     case
        RTS
?2      LDA     tog1
        AND     #kU
        BEQ     ?3
;;;;Up
        ÿÿP     üÇdQorUP
?3      LDA     tog1
        AND     #kD
        BEQ     ?4
        JMP     CursorDown
?4      LDA     tog1
        AND     #vÈdQ    �   BEQ     ?5
        JMP     CursorLeft
?5      LDA     tog1
        AND     #kR
        BNE     ?6
        RTS
?6
;;;Right Mode....
     ÿÿ L    dÊdQtemNo
        LDA     PageNo
        CMP     #$03
        BEQ     ?9
        BCS     ?7
        LDA     NextNoTbl00,X
        JMP �ËdQ  
�   ÌÌdQ    LDA     NextNoTbl01,X
        JMP     ?8
?7      LDA     NextNoTbl0,X
?8      STA     ItemNo
SetSprCursor

At around 0xF7B1 there's more!

$8000
                sty     $8001
    ?�\a    �   Ò�\a
                iny
                stx     $8000
                sty     $8001
                inx
                iny
          L�\a  st�     $8000
                sty     $8001
                rts
;=====================================================================
;Dragon runÿÿng    .
;=====================================================================
Irq2:
                lda     Irq_Cnt
                bne     Irq21ÿÿ;     
                irqoff
                irqon
                lda     #$78
                irqlong
;
                ldy     #$02
?1
   ÿÿ      :�\a dey
                bne     ?1
;
                lda     $2002
                lda     scr2_x
                sta     $2005
     ñ�\a    �   da     #$00
                sta     $2005
                lda     rg2000
                and     #%11111100
                ora     page0_1+ÿÿ
     ?	\a       sta     $2000
;;;Switch Bank
                ldx     #$00
                stx     $8000
                lda     #$DC
       Y
\a    �        $8001
                inx
                stx     $8000
                lda     #$DE
                sta     $8001

;
              ÿÿin      Irq_Cnt
                rts
;
Irq21:
                irqoff

                ldy     #$02
?1
                dey
                bne ÿÿ      
�\a               lda     $2002
                lda     #$00
                sta     $2005
                sta     $2005
              ?�\a    �   r�\a
                and     #%11111110
                ora     page0_1
                sta     $2000
;
                lda     #$00
 f�\a    �      sta     Irq_Cnt
                rts
;
;=====================================================================
;Strike Mouse
;============ÿÿ==    =================================================
Irq3:
                irqoff
;
                ldy     #$02
?1
                dey
    ÿÿ      Ú�\abne     ?1
;
             ;;;ldy     #$60
                ldy     #$78
                ldx     #$8!ó òYõ             stx     $8000
��\a    �   B�\asty     $8001
                inx
                iny
                stx     $8000
                sty     $8001
                i�\a    �   ª�\a    iny
                stx     $8000
                sty     $8001
                inx
                iny
                stx    ç�\a  
�               sty     $8001
                lda     #$00
                sta     Irq_Cnt
                rts

;==============================ÿÿ==    ===============================
;
;=====================================================================
Irq5:
                irqoff
     ÿÿ         lda     #$00
                sta     Irq_Cnt
;
        ;;;     lda     Scr_mapx
        ;;;     sta     $2005
                rts
;====ÿÿ==    =========================================================
;
;=====================================================================
Irq6:
   ÿÿ      ��\a lda     Irq_Cnt
                bne     Irq61
; Middle Area
                irqoff
                irqon
                lda     #O�\a    �   z�\a     irqlong
;
                ldy     #$02
?1
                dey
                bne     ?1
;;;;
                ldy     #$88
ô�\a    �   ;;;;ldy     #$8C
        ;;;;;;;;ldy     #$90
                ldx     #$82
                stx     $8000
                sty     $8001
    ÿÿ          inx
                iny
                stx     $8000
                sty     $8001
                inx
;;;;;           ldy     mid_bnkÿÿ                ldy     #$80
                stx     $8000
                sty     $8001
                inx
                iny
                ÿÿx     $8000
                sty     $8001

                inc     Irq_Cnt
                rts
;
Irq61:
;;;Bottom
                irqoff
    ÿÿ      â�\aldy     #$02
?1              dey
                bne     ?1
;
                ldy     #$84
                ldx     #$82
          P�\a  st�   J�\a000
                sty     $8001
                inx
                iny
                stx     $8000
                sty     $80

At 0x150BE (almost directly after the compiler output) there's even MORE asm to be found:

ÿÿÿÿ        sei                        ;; DISABLE IRQ.
        cld
        ldx     #$ff               ;; INITIAL STACK POINTER.
        txs
        lda     #$00
        sta     $2001              ;; SCREEN OFF.
        sta     $2000              ;; NMI OFF.
;       sta     $8000 ;Try

        IF MC3
        lda     #$00
        sta     $8000              ;; SET MAP MODE 0.
        ELSE
        sta     $C002              ;;; RESET IRQ OFF.
        sta     $2001
        sta     $2000
        sta     $D000
        sta     $C006
        ENDIF
                ENDM

        lda     #$00
        ldx     #$00
a#              ;;-------------- clear system ram.
        sta     $00,x
        sta     $100,x
        sta     $200,x
        sta     $300,x
        sta     $400,x
        sta     $500,x
        sta     $600,x
        sta     $700,x
        inx
        bne     a#
                ENDM

        txa
        tay
                ENDM

        clc
        adc     €
        ENDM

        sec
        sbc     €
        ENDM

        bne     ?1#
        jmp     €
?1#
        endm

        beq     ?1#
        jmp     €
?1#
        endm

        bmi     ?1#
        jmp     €
?1#
        endm

        bpl     ?1#
        jmp     €
?1#
        endm

        IF MC3
        sta     $e000
        lda     $2002
        lda     #$10
        tax
init_1H:        ;;;
        sta     $2006
        sta     $2006
        eor     #$10
        dex
        bne     init_1H
        sta     $e000

        ELSE

        lda     #$3e
        sta     $8002
        lda     #$3f
        sta     $8003
        lda     #$85
        sta     $c001
        lda     #%00111110
        sta     $d000

        lda     #$00
        sta     $b000
        lda     #$01
        sta     $b001
        lda     #$02
        sta     $b002
        lda     #$03
        sta     $b003
        lda     #$01
        sta     $b004
        sta     $b005
        sta     $b006
        sta     $b007

        lda     #$00
        sta     $c006
        lda     #$00
        sta     $d002
        lda     #%00100000
        sta     $d003


        ENDIF
                ENDM

        lda     #$00
        ldx     #$00
a#              ;;-------------- clear system ram.
        sta     $100,x
        inx
        bne     a#
                ENDM

        lda     nmi_cnt
        cmp     old_nmi
        bne     ?z#
        rts
?z#     sta     old_nmi
                ENDM

        lda     #$0f
        sta     $4015              ;sound off.
        lda     #$00
        sta     $4010
        lda     #$40
        sta     $4017
                ENDM

        pha
        txa
        pha
        tya
        pha                     ;; save status.
        ENDM

        pla                     ;; restore status.
        tay
        pla
        tax
        pla
        ENDM

        lda     #%00000000
        sta     $2003
        lda     #$02
        sta     $4014
                ENDM

        lda     €
        asl     a
        tay
        lda     ,y
        sta     r0
        lda     +1,y
        sta     r0+1
        jmp     (r0)
                ENDM

        lda     €
        asl     a
        tay
        lda     SubTbl#,y
        sta     r0
        lda     SubTbl#+1,y
        sta     r0+1
        jmp     (r0)
SubTbl#:
                ENDM

        lda     €
        jsr     SelectSub
                ENDM

                lda     €
                jsr     ShowNo
                        ENDM

                sec
                lda     
                sbc     ƒ
                lda     €
                sbc     ‚
                        ENDM

                sec
                lda     ,x
                sbc     ƒ,y
                lda     €,x
                sbc     ‚,y
                        ENDM

                ldx     sbuflen
                lda     €
                sta     snm,x
                lda     
                sta     sxhmap,x
                sta     sxh,x
                lda     ‚
                sta     sxlmap,x
                sta     sxl,x
                lda     ƒ
                sta     sylmap,x
           ;    lda     „
           ;    sta     szlmap,x
                sta     syl,x
                jsr     InitSPub
                ENDM

                ldx     sbuflen
                lda     €
                sta     snm,x
                lda     
                sta     sxhmap,x
                sta     sxh,x
                lda     ‚
                sta     sxlmap,x
                sta     sxl,x
                lda     ƒ
                sta     syhmap,x
                sta     syh,x
                lda     „
                sta     sylmap,x
                sta     syl,x
           ;    lda     …
           ;    sta     szlmap,x
                jsr     InitSPub
                ENDM

                ldx     #€
                ldy     #
                jsr     Delay
                bcs     ‚
                ENDM

        IF MC3
        lda     #€
        sta     $a000
        ELSE
        nop
        ENDIF
                ENDM

        lda     #$00
        sta     $2000           ;;; nmi off.
        sta     $2001           ;;; screen off.
        lda     #$00
        sta     Irq_Ctl         ;;; irq off.
        ENDM

        lda     #$1e
        sta     rg2001           ;;; screen on.
        lda     #€
        sta     $2000           ;;; nmi on.
        sta     rg2000
        ENDM

        lda     #€
        sta     _Music
        ENDM

        lda     #€
        sta     _Sound
        ENDM

        IF MC3
        sei
        lda     #$06
        sta     $8000
        lda     €
        sta     DATA_Reg
        sta     PRG_Reg
        sta     $8001
        inc     PRG_Reg
        lda     #$07
        sta     $8000
        lda     PRG_Reg
        sta     $8001
        cli
        ELSE
        lda     €
        sta     DATA_Reg
        sta     PRG_Reg
        sta     $8000           ;;; SET DATA SEGMENT, $8000-$9FFF.
        inc     PRG_Reg
        lda     PRG_Reg
        sta     $8001           ;;; SET PRG SEGMENT, $A000-$BFFF.
        ENDIF
                ENDM

        IF MC3
        sei
        lda     #$06
        sta     $8000
        lda     €
        sta     DATA_Reg
        sta     $8001
        cli
        ELSE
        lda     €
        sta     DATA_Reg
        sta     $8000           ;;; SET DATA SEGMENT, $8000-$9FFF.
        ENDIF
                ENDM

        IF MC3
        sei
        lda     #$07
        sta     $8000
        lda     €
        sta     PRG_Reg
        sta     $8001
        cli
        ELSE
        lda     €
        sta     PRG_Reg
        sta     $8001           ;;; SET PRG SEGMENT, $A000-$BFFF.
        ENDIF
                ENDM

        lda     €
        sta     HOME_Reg
        sta     $8002           ;;; SET HOME SEGMENT, $C000-$DFFF.
                ENDM

        lda     €
        sta     $8003           ;;; SET HOME SEGMENT, $C000-$DFFF.
                ENDM

        lda     €
        sta     dlo
        lda     
        sta     dhi
        lda     ‚
        sta     dwide
        lda     ƒ
        sta     dtall
        lda     „
        sta     dhv
                ENDM

                DB      €
                ENDM

        DB      $00
        endm

            LDA  $201C
            STA Gun1X
            LDA  $201D
            STA Gun1Y
            LDA  $201E
            STA Gun2X
            LDA  $201F
            STA Gun2Y
            STA $2019           ;Reset Gun1 & Gun2
                ENDM

        ldx     €  ;4
        .if FourBank
        stx     Chreg0
        inx
        inx
        stx     Chreg2
        .else
        stx	Chreg0
        inx	
        stx	Chreg1
        inx
        stx	Chreg2
        inx
        stx	Chreg3
        inx
        .endif
                endm

        lda	#BankValue ;bnk
        sta	r1
        lda     €   ;from stage1      
        ldy     
        jsr     Back1Page
        SCR_ON  $C8 ;$E8
        lda     ?
        sta     Irq_Ctl         ;;; fade init.
                endm

        lda	#BankValue ;bnk
        sta	r1
        lda     ?   
        ldy     ?
þ       jsr     Back1Pageÿÿ??????
ages,irqlines,irqsub ;,bnk