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