#545

Genesis Project [G*P] 35

Genesis Project [G*P]

3.125 lines of code

RasterbarsRSTRMusicSIDScrollerSCRLSpritesSPRTBitmapBMAP

History

Released
21 October 1989
Code
Olle
Music
JO (Jesper Olsen) and Johannes Bjerregaard — "Batfunk"
Graphics
Hires
Group
Genesis Project — Germany, founded 1986

CSDb catalogues this as the "Olle Intro 2" — named after its coder Olle. The music credit is shared between JO (Jesper Olsen) and Johannes Bjerregaard for "Batfunk," a collaborative SID preserved in the HVSC. Hires contributed the graphics. Released on 21 October 1989, during Genesis Project's peak years of cracking activity. The group was founded in Germany in 1986 and styled themselves "Europe's No. 1." This is the thirty-fifth numbered G*P intro, joining a large cluster in the rankings including #106 GP-01. Johannes Bjerregaard was one of the most celebrated Danish SID composers, and his collaboration with JO on "Batfunk" represents a pairing of two significant musicians. Doc Snyder's page documents Genesis Project's extensive catalogue spanning coders from the 1980s through modern-era contributors like Zyron and Mermaid. The group has maintained continuous activity for nearly four decades.

Sources: CSDb · docsnyderspage

gp-35.asm 3.125 lines
// ============================================
// output - Disassembled Source
// ============================================
// KickAssembler syntax
// Generated by Restore 64 v0.2.1 alpha build 298, 2026-04-11 21:35:45
// https://restore64.dev by datucker / Rabenauge
//
// Load address: $0800  End: $45d7  (15832 bytes)
// Crunched with Cruncher AB — depacked by emulation
// Packer entry: $080d (via BASIC SYS 2061)
// Entry point:  $3500 (13568)
// IRQ handler:  $2d69 (irq_2d69)
// IRQ handler:  $2e4e (irq_2e4e)
// IRQ handler:  $2eaf (irq_2eaf)
// IRQ handler:  $2eed (irq_2eed)
//
// Code: 3581 bytes, Data: 12251 bytes
// Labels: 307, Subroutines: 17
//
// Cross-references: all OK
// ============================================


// --- Region $12cd-$12cd ---
.pc = $12cd "Segment $12cd"
        brk

// --- Region $12f0-$12f0 ---
.pc = $12f0 "Segment $12f0"
        brk

// --- Region $2d00-$2dc9 ---
.pc = $2d00 "loc_2d00"

loc_2d00:
        sei
        jsr sub_39aa
        jsr sub_31fe
        lda #$1b
        sta $d011
        lda #$69
        sta $0314
        lda #$2d
        sta $0315
        lda #$08
        sta $0286
        jsr $e544
        ldy #$01
        sty $d01a
        sty $dc0d
        dey
        sty $12
        sty $2f

loc_2d2b:
        lda dat_1800,y
        sta $040e,y
        lda $18e0,y
        sta $04ee,y
        lda #$ff
        sta $05ee,y
        sta $06ee,y
        lda #$08
        sta $da00,y
        sta $db00,y
        sty $d012
        iny
        bne loc_2d2b
        lda #$0f
        sta $d021
        lda #$0e
        sta $d022
        lda #$06
        sta $d023
        jsr sub_32f9
        lda $dc0d
        cli

loc_2d63:
        jsr sub_3033
        jmp loc_2d63

irq_2d69:
        jsr sub_2da8
        inc $d019
        lda #$4e
        sta $0314
        lda #$2e
        sta $0315
        lda #$99
        sta $d012
        ldx #$15
        lda #$3f

loc_2d82:
        cmp $d012
        bne loc_2d82
        stx $d011
        lda #$1a
        sec
        sbc $03f0
        sta $03f0
        lda $d021
        sta bmp_32df
        lda $d022
        sta $32e0
        lda $d023
        sta $32e1
        jmp $ea7e
// Referenced by: jsr from $2d69

sub_2da8:
        lda $03
        sta $d016
        ldx #$ff
        ldy #$00
        sty $dc01
        stx $dc03
        sty $dc03
        lda $d013
        lsr
        lsr
        lsr
        sta smc_2dc7                                // SMC: modifies $2dc7
        bcc loc_2dc5

loc_2dc5:
        clc
.label smc_2dc7 = * + 1
        bcc loc_2de1                                // !SMC: modified by $2dc0

bmp_2dc8:
        // === Bitmap data (2 bytes, $2dc8-$2dc9) ===
        .byte $ea,$ea                               // ..

// --- Region $2de1-$2e16 ---
.pc = $2de1 "loc_2de1"

loc_2de1:
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop