#105

Fantastic 4 Cracking Group [F4CG] 01

Fantastic 4 Cracking Group [F4CG]

1.471 lines of code

RasterbarsRSTRScrollerSCRLBitmapBMAP

History

Released
February 1992
Code
Smasher
Group
Fantastic 4 Cracking Group — Italy, founded 1983

CSDb lists this as the first numbered F4CG intro — Smasher coding solo with no music or graphics credits. By February 1992, F4CG had been active for nearly nine years — one of the longest-running groups in C64 cracking history. Smasher served as the group's primary coder through their late period, producing multiple intros including #33 F4CG-20. The absence of music might indicate a deliberately minimalist aesthetic or that this was a quick utility intro meant purely to brand their cracks. F4CG's Italian origin made them part of the smaller but fiercely dedicated Southern European scene. Founded in 1983 — the same year as the C64's launch — they were among the very first cracking groups on the platform anywhere in the world.

Sources: CSDb

f4cg-01.asm 1.471 lines
// ============================================
// output - Disassembled Source
// ============================================
// KickAssembler syntax
// Generated by Restore 64 v0.2.1 alpha build 298, 2026-04-01 10:59:19
// 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:  $0f40 (3904)
// IRQ handler:  $1080 (irq_1080)
//
// Code: 985 bytes, Data: 62503 bytes
// Labels: 147, Subroutines: 9
//
// Cross-references: all OK
// ============================================


// --- Region $0f40-$0fa0 ---
.pc = $0f40 "main_0f40"

main_0f40:
        jsr $e544
        ldx #$00

loc_0f45:
        lda $0e00,x
        sta $0478,x
        lda $0e40,x
        sta $04b8,x
        lda #$08
        sta $d878,x
        sta $d8b8,x
        lda #$00
        sta $d778,x
        sta $d900,x
        sta $da00,x
        sta $db00,x
        sta $d020
        sta smc_12a4                                // SMC: modifies $12a4
        inx
        bne loc_0f45
        ldx #$00

loc_0f72:
        lda #$a0
        sta $0400,x
        sta $0450,x
        lda txt_13d7,x
        sta $0608,x
        eor #$40
        sta $0630,x
        eor #$c0
        sta $0658,x
        lda txt_0ff8,x
        eor #$81
        sta $0428,x
        inx
        cpx #$28
        bne loc_0f72
        lda #$ff
        sta spr_0800
        jmp loc_0fc0

scr_0f9f:
        // === Screen RAM (2 bytes, $0f9f-$0fa0) ===
        .encoding "screencode_mixed"
        .text "@@"
        .encoding "petscii_upper"

// --- Region $0faf-$0fcd ---
.pc = $0faf "sub_0faf"
// Referenced by: jsr from $10fa, $fd25

sub_0faf:
        jsr sub_1280
        jsr sub_1280
        jsr sub_1280
        jsr sub_1280
        rts

scr_0fbc:
        // === Screen RAM (4 bytes, $0fbc-$0fbf) ===
        .encoding "screencode_mixed"
        .text "@@@@"
        .encoding "petscii_upper"

loc_0fc0:
        lda #$14
        sta smc_12a5                                // SMC: modifies $12a5
        lda #$ea
        sta $0328
        jmp loc_1060

dat_0fcd:
        // === Fill data (1 bytes, $0fcd-$0fcd) ===
        .byte $00                                   // .

// --- Region $1020-$1076 ---
.pc = $1020 "sub_1020"
// Referenced by: jsr from $10bd, $fce8

sub_1020:
        ldx #$09

loc_1022:
        dex
        bne loc_1022
        nop

loc_1026:
.label smc_1027 = * + 1
        lda $1210,x                                 // !SMC: modified by $11c6
        sta $d021
.label smc_102d = * + 1
        lda $1214,x                                 // !SMC: modified by $11d2, $fda7
        sta $d023
        ldy #$08

loc_1034:
        dey
        bne loc_1034
        inx
        cpx #$40
        bne loc_1026
        rts

scr_103d:
        // === Screen RAM (3 bytes, $103d-$103f) ===
        .encoding "screencode_mixed"
        .text "@@@"
        .encoding "petscii_upper"
// Referenced by: jsr from $10f7, $fd22

sub_1040:
        ldx #$09

loc_1042:
        dex
        bne loc_1042
        nop

loc_1046:
.label smc_1047 = * + 1
        lda $13ad,x                                 // !SMC: modified by $1397
        sta $d021
        sta $d021
        ldy #$08