Super New Year Cart 15-in-1

Super New Year Cart 15-in-1 is a rare multicart released in 2005. Its name is also a word salad.

Compiler Output
At and  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 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        ‘²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:
 * Chr*$400,Pro*$2000,HIHG*$40000(Chr) Low(Chr Size),Program Size ,$110,$111


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

RamProgram: .ENDS
 * library

¦Ã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 ÿÿ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    ÿÿ 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
 * Up
 * Right Mode....

At around there's more! $8000               sty     $8001 ?�\a   �   Ò�\a iny stx    $8000 sty    $8001 inx iny L�\a st�     $8000 sty    $8001 rts 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 ldx    #$00 stx    $8000 lda    #$DC Y \a   �        $8001 inx stx    $8000 lda    #$DE sta    $8001
 * Dragon runÿÿng.
 * Dragon runÿÿng.
 * Switch Bank

ÿÿ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 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
 * Strike Mouse
 * ============ÿÿ==   =================================================
 * Strike Mouse
 * ============ÿÿ==   =================================================

Irq5: irqoff ÿÿ        lda     #$00 sta    Irq_Cnt ;;;    lda     Scr_mapx ;;;    sta     $2005 rts Irq6: ÿÿ     ��\a lda     Irq_Cnt bne    Irq61 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 stx    $8000 sty    $8001 inx iny ÿÿx    $8000 sty    $8001
 * ==============================ÿÿ==   ===============================
 * ====ÿÿ==   =========================================================
 * Middle Area
 * ldy    mid_bnkÿÿ                ldy     #$80

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

At (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