the cutting room mirror

Santa's Xmas Caper (Amiga)

Santa's Xmas Caper is a Christmas-themed platformer. The console warez group Magical also ripped the background of the title screen for their 1993 Magical Christmas Demo for the Mega Drive, as you do.

Uncompiled Source Code#

A piece of leftover 68k assembly source code appears on the disk.

    lea t_hit_code,a0
    move.w  #11,d1
2$  
    move.w  #19,d0
1$
    move.b  (a0),(a1)+
    move.b  1(a0),(a1)+
    move.b  40(a0),(a1)+
    move.b  41(a0),(a1)+
    addq.l  #2,a0
    dbf d0,1$
    add.l   #80-40,a0
    dbf d1,2$
    rts
con_map:
    clr.l   chars_data
    clr.l   chars_data+4

;   lea map-20*2,a0 ;-20*2,a0
    move.l  the_map,a0
    sub.l   #20*2,a0
    move.w  v_scroll,d0
    mulu.w  #map_hor_size,d0
    add.l   d0,a0
    move.w  h_scroll,d0
    and.l   #$ffff,d0
    add.l   d0,a0


    lea char,a1
    lea hit_code,a2
    
    move.w  #11,d2
2$ 
    move.w  #20,d0
1$
    move.w  (a0)+,d1
    add.w   d1,d1
    add.w   d1,d1
    move.w  (a2,d1.w),(a1)+
    move.w  2(a2,d1.w),40(a1)
    dbra    d0,1$
    lea 42(a1),a1
    add.l   #map_hor_size-(21*2),a0
    dbf d2,2$
    rts
blinky_feet:
    bsr blinky_pos
    lea co_sprite_vars,a0
    move.w  co_hor1(a0),d0
    sub.w   #8,d0
    sub.w   fine,d0
    lsr.w   #3,d0
    move.w  co_ver1(a0),d1
    add.w   fine_v,d1
    sub.w   #8,d1
    lsr.w   #3,d1
    mulu.w  #42,d1
    add.w   d0,d1
    
    lea char,a0
    add.l   d1,a0

    move.b  -43(a0),l_side0
    move.b  -42+3(a0),r_side0
    move.b  (a0),foot0
    move.b  1(a0),foot1
    move.b  2(a0),foot2

    lea co_sprite_vars,a0
    cmp.w   #10,co_ver1(a0)
    bgt.s   30$
    clr.b   foot0
    clr.b   foot1
    clr.b   foot2
30$
    rts
foot0:  dc.b    0
foot1:  dc.b    0
foot2:  dc.b    0
l_side0:    dc.b    0
r_side0:    dc.b    0
    even
show:   dc.w    1
p_codes:
    move.b  co_key1,d0
    cmp.b   #$66,d0
    bne.s   44$
500$    move.b  co_key1,d0
    btst    #7,d0
    beq.s   500$
    eor.w   #1,show
44$
    bsr con_map
    bsr blinky_feet

    tst.w   show
    bne 400$

    move.l  co_curmem,a0
    lea char,a3
    move.w  #23,d4
4$
    move.w  #41,d3
3$
    lea chars_data,a1
    move.b  (   (a1
    move.b  (move.b (hars_data,a1
    move.b  (
    move.b  (a1
    move.b  (a1
    move.b  (