#77

Zenith 02

Zenith

5.649 lines of code

RasterbarsRSTRMusicSIDScrollerSCRL

History

Released
November 1988
Code
Ironfist
Music
Matt Gray — "Last Ninja 2" / Jeroen Tel — "Savage" (ripped)
Charset
Mr. Cursor
Group
Zenith — United Kingdom, founded December 1987

The sequel to #55 Zenith 01 — same coder (Ironfist), same charset artist (Mr. Cursor), four months later. The music selection trades up to two of the most celebrated game soundtracks on the C64: Matt Gray's "Last Ninja 2" and Jeroen Tel's "Savage." Both SIDs are preserved in the HVSC. Gray's Last Ninja 2 score is widely considered among the finest pieces of C64 game music ever composed, making it a prestige choice for any intro. Zenith was founded in December 1987 and Ironfist served as their primary coder throughout 1988. Doc Snyder's page documents the group's catalogue. The consistent presence of Mr. Cursor across both Zenith intros and multiple other top-ranked productions establishes him as one of the scene's most sought-after charset artists.

Sources: CSDb · docsnyderspage

zenith-02.asm 5.649 lines
// ============================================
// output - Part 1 of 2
// ============================================
// KickAssembler syntax
// Generated by Restore 64 v0.2.1 alpha build 298, 2026-04-01 10:59:42
// https://restore64.dev by datucker / Rabenauge
//
// Load address: $0800  End: $ffff  (63488 bytes)
// Crunched with Exomizer v2/v3 (with relocation) — depacked by emulation
// Packer entry: $0810 (via BASIC SYS 2064)
// Entry point:  $0f00 (3840)
// IRQ handler:  $0f30 (irq_0f30)
// IRQ handler:  $ea31 (irq_ea31)
// IRQ handler:  $0fb0 (loc_0fb0)
// IRQ handler:  $1f10 (irq_1f10)
//
// Code: 6037 bytes, Data: 57451 bytes
// Labels: 649, Subroutines: 20
//
// Cross-references: all OK
// ============================================


// --- Region $0c50-$0cfa ---
.pc = $0c50 "sub_0c50"
// Referenced by: jsr from $0f04, $e678

sub_0c50:
        lda #$00
        sta $0286
        jsr $e544
        ldx #$00

loc_0c5a:
        lda $0d00,x
        sta $0400,x
        lda $0d68,x
        sta $0468,x
        lda #$09
        sta $d800,x
        sta $d8e0,x
        inx
        bne loc_0c5a
        ldx #$00

loc_0c73:
        lda #$6e
        sta $0568,x
        lda #$82
        sta $05b8,x
        lda #$00
        sta $d990,x
        lda $0e68,x
        sta $0590,x
        lda #$08
        sta $da30,x
        sta $da08,x
        nop
        nop
        nop
        nop
        nop
        nop
        inx
        cpx #$28
        bne loc_0c73
        rts

dat_0c9c:
        .byte $00,$00,$00,$00                       // ....

loc_0ca0:
        lda $d012
        cmp #$ff
        beq loc_0caa
        jmp loc_2bd0

loc_0caa:
        jsr sub_0cc0
        jsr sub_1f50
        jsr sub_2c00
        jsr sub_1fc0
        jsr sub_1786
        jmp loc_0ca0

dat_0cbc:
        .byte $00,$00,$00,$00                       // ....
// Referenced by: jsr from $0caa

sub_0cc0:
        ldx #$00

loc_0cc2:
        ldy #$02

loc_0cc4:
        clc
        ror $0b70,x
        nop
        nop
        nop
        nop
        nop
        nop
        bcc loc_0cd8
        lda $0b70,x
        ora #$80
        sta $0b70,x

loc_0cd8:
        dey
        bne loc_0cc4
        inx
        cpx #$08
        bne loc_0cc2
        ldx #$00

loc_0ce2:
        ldy #$02

loc_0ce4:
        clc
        rol $0c10,x
        bcc loc_0cf2
        lda $0c10,x
        ora #$01
        sta $0c10,x

loc_0cf2:
        dey
        bne loc_0ce4
        inx
        cpx #$08
        bne loc_0ce2
        rts

// --- Region $0f00-$0fa6 ---
.pc = $0f00 "main_0f00"

main_0f00:
        sei
        jsr sub_2be1
        jsr sub_0c50
        ldx #$00
        stx $dc0e
        inx
        stx $d019
        stx $d01a
        lda #$1b
        sta $d011