junglejourney

changeset 112:174f536c9512

Moved the initialisation code into a loader file to free up some space for more game code.
author David Boddie <david@boddie.org.uk>
date Sun Sep 04 19:06:28 2011 +0200
parents 8bf248930f5c
children f4cdc821c831
files build.py loader.oph mapcode.oph
diffstat 3 files changed, 165 insertions(+), 109 deletions(-) [+]
line diff
     1.1 --- a/build.py	Sun Sep 04 18:08:17 2011 +0200
     1.2 +++ b/build.py	Sun Sep 04 19:06:28 2011 +0200
     1.3 @@ -50,7 +50,7 @@
     1.4      # 1000 completion screen
     1.5      # 1780 title screen
     1.6      # 1F00 CODE
     1.7 -    # 3?00 space
     1.8 +    # 3??0 space
     1.9      # 3D00 character table (0x24/6 = 6 entries + 1 special entry)
    1.10      #   n   type (0 missing, 1 player, 2 projectile, 3 explosion,
    1.11      #             4 item,
    1.12 @@ -137,30 +137,26 @@
    1.13      
    1.14      files = []
    1.15      
    1.16 -    system("ophis mapcode.oph CODE")
    1.17 -    code = open("CODE").read()
    1.18 -    code_start = 0x1f00
    1.19 +    system("ophis loader.oph JUNGLE")
    1.20 +    code = open("JUNGLE").read()
    1.21 +    code_start = 0x5100
    1.22 +    files.append(("JUNGLE", code_start, code_start, code))
    1.23      
    1.24 -    addresses = []
    1.25 -    i = 0
    1.26 -    while i < len(code):
    1.27 -        if ord(code[i]) == 0x60:
    1.28 -            if i + 1 < len(code):
    1.29 -                addresses.append(code_start + i + 1)
    1.30 -        i += 1
    1.31 -    
    1.32 -    files.append(("CODE", code_start, code_start, code))
    1.33 -    
    1.34 +    data = makesprites.read_sprites([makesprites.title])
    1.35 +    data += makesprites.encode(makesprites.read_sprites([makesprites.completed]))
    1.36 +    files.append(("TITLE", 0x5A80, 0x5A80, data))
    1.37 +
    1.38      data = makesprites.read_sprites(makesprites.tiles)
    1.39      files.append(("SPRITES", 0x5300, 0x5300, data))
    1.40      
    1.41      data = makesprites.read_sprites(makesprites.chars)
    1.42      files.append(("CHARS", 0x3400, 0x3400, data))
    1.43  
    1.44 -    data = makesprites.read_sprites([makesprites.title])
    1.45 -    data += makesprites.encode(makesprites.read_sprites([makesprites.completed]))
    1.46 -    files.append(("TITLE", 0x5A80, 0x5A80, data))
    1.47 -
    1.48 +    system("ophis mapcode.oph CODE")
    1.49 +    code = open("CODE").read()
    1.50 +    code_start = 0x1f00
    1.51 +    files.append(("CODE", code_start, code_start, code))
    1.52 +    
    1.53      u = UEFfile.UEFfile(creator = 'build.py '+version)
    1.54      u.minor = 6
    1.55      
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/loader.oph	Sun Sep 04 19:06:28 2011 +0200
     2.3 @@ -0,0 +1,151 @@
     2.4 +.org $5100
     2.5 +
     2.6 +init:
     2.7 +    lda #22         ; MODE 5
     2.8 +    jsr $ffee
     2.9 +    lda #5
    2.10 +    jsr $ffee
    2.11 +
    2.12 +    lda #23         ; disable flashing cursor
    2.13 +    jsr $ffee
    2.14 +    lda #1
    2.15 +    jsr $ffee
    2.16 +    ldx #7
    2.17 +    cursor_loop:
    2.18 +        lda #0
    2.19 +        jsr $ffee
    2.20 +        dex
    2.21 +        bpl cursor_loop
    2.22 +
    2.23 +    jsr set_hidden_palette
    2.24 +
    2.25 +    ; Define ENVELOPEs.
    2.26 +    lda #0
    2.27 +    sta $70
    2.28 +    define_envelopes_loop:
    2.29 +
    2.30 +        ldx $70
    2.31 +        lda envelopes_high,x
    2.32 +        tay
    2.33 +        lda envelopes_low,x
    2.34 +        tax
    2.35 +        lda #8
    2.36 +        jsr $fff1
    2.37 +
    2.38 +        inc $70
    2.39 +        lda $70
    2.40 +        cmp #1
    2.41 +        bne define_envelopes_loop
    2.42 +
    2.43 +    ldx #0
    2.44 +    init_load_window_loop:
    2.45 +
    2.46 +        lda init_load_window_vdu_bytes,x
    2.47 +        jsr $ffee
    2.48 +        inx
    2.49 +        cpx #5
    2.50 +        bne init_load_window_loop
    2.51 +
    2.52 +    lda #255
    2.53 +    ldx #<title_block
    2.54 +    ldy #>title_block
    2.55 +    jsr $ffdd
    2.56 +
    2.57 +    lda #255
    2.58 +    ldx #<sprites_block
    2.59 +    ldy #>sprites_block
    2.60 +    jsr $ffdd
    2.61 +
    2.62 +    lda #255
    2.63 +    ldx #<chars_block
    2.64 +    ldy #>chars_block
    2.65 +    jsr $ffdd
    2.66 +
    2.67 +    lda #255
    2.68 +    ldx #<code_block
    2.69 +    ldy #>code_block
    2.70 +    jsr $ffdd
    2.71 +
    2.72 +    jmp $1f00
    2.73 +
    2.74 +sprites_file_name: .byte "SPRITES", 13
    2.75 +chars_file_name: .byte "CHARS", 13
    2.76 +title_file_name: .byte "TITLE", 13
    2.77 +code_file_name: .byte "CODE", 13
    2.78 +
    2.79 +sprites_block: .byte <sprites_file_name, >sprites_file_name
    2.80 +               .byte 0, $53, 0, 0
    2.81 +               .byte 0, $53, 0, 0
    2.82 +               .byte $60, $03, 0, 0
    2.83 +               .byte $60, $56, 0, 0
    2.84 +
    2.85 +chars_block: .byte <chars_file_name, >chars_file_name
    2.86 +               .byte $00, $3e, 0, 0
    2.87 +               .byte $00, $3e, 0, 0
    2.88 +               .byte $80, $12, 0, 0
    2.89 +               .byte $80, $50, 0, 0
    2.90 +
    2.91 +title_block: .byte <title_file_name, >title_file_name
    2.92 +               .byte $80, $5a, 0, 0
    2.93 +               .byte $80, $5a, 0, 0
    2.94 +               .byte $80, $16, 0, 0
    2.95 +               .byte $00, $71, 0, 0
    2.96 +
    2.97 +code_block: .byte <code_file_name, >code_file_name
    2.98 +               .byte $00, $1f, 0, 0
    2.99 +               .byte $00, $1f, 0, 0
   2.100 +               .byte $dd, $1c, 0, 0
   2.101 +               .byte $dd, $3b, 0, 0
   2.102 +
   2.103 +init_load_window_vdu_bytes: .byte 28,0,29,19,24
   2.104 +
   2.105 +set_hidden_palette:
   2.106 +
   2.107 +    lda #1
   2.108 +    sta $70
   2.109 +    lda #0
   2.110 +    sta $71
   2.111 +    jsr set_palette
   2.112 +
   2.113 +    ; Run on into the next routine.
   2.114 +
   2.115 +set_core_palette:
   2.116 +
   2.117 +    lda #2
   2.118 +    sta $70
   2.119 +    lda #2
   2.120 +    sta $71
   2.121 +    jsr set_palette
   2.122 +
   2.123 +    lda #3
   2.124 +    sta $70
   2.125 +    lda #3
   2.126 +    sta $71
   2.127 +    jsr set_palette
   2.128 +
   2.129 +    rts
   2.130 +
   2.131 +set_palette:
   2.132 +                    ; $70=logical colour
   2.133 +                    ; $71=physical colour
   2.134 +    lda $70
   2.135 +    sta $3dfb
   2.136 +    lda $71
   2.137 +    sta $3dfc
   2.138 +    lda #0
   2.139 +    sta $3dfd
   2.140 +    sta $3dfe
   2.141 +    sta $3dff
   2.142 +
   2.143 +    lda #$c         
   2.144 +    ldx #$fb
   2.145 +    ldy #$3d
   2.146 +    jsr $fff1
   2.147 +    rts
   2.148 +
   2.149 +envelopes_low:  .byte <explosion_envelope, <damage_envelope, <item_envelope
   2.150 +envelopes_high: .byte >explosion_envelope, >damage_envelope, >item_envelope
   2.151 +
   2.152 +explosion_envelope: .byte 1,1,252,0,0,10,0,0,126,0,0,130,126,126
   2.153 +damage_envelope:    .byte 2,4,8,0,248,2,0,2,126,0,0,130,126,126
   2.154 +item_envelope:      .byte 3,2,2,254,1,4,4,2,126,0,0,130,126,126
     3.1 --- a/mapcode.oph	Sun Sep 04 18:08:17 2011 +0200
     3.2 +++ b/mapcode.oph	Sun Sep 04 19:06:28 2011 +0200
     3.3 @@ -4239,73 +4239,7 @@
     3.4  
     3.5      jmp copy_title  ; optimise away the rts
     3.6  
     3.7 -sprites_file_name: .byte "SPRITES", 13
     3.8 -chars_file_name: .byte "CHARS", 13
     3.9 -title_file_name: .byte "TITLE", 13
    3.10 -
    3.11 -sprites_block: .byte <sprites_file_name, >sprites_file_name
    3.12 -               .byte 0, $53, 0, 0
    3.13 -               .byte 0, $53, 0, 0
    3.14 -               .byte $60, $03, 0, 0
    3.15 -               .byte $60, $56, 0, 0
    3.16 -
    3.17 -chars_block: .byte <chars_file_name, >chars_file_name
    3.18 -               .byte $00, $3e, 0, 0
    3.19 -               .byte $00, $3e, 0, 0
    3.20 -               .byte $80, $12, 0, 0
    3.21 -               .byte $80, $50, 0, 0
    3.22 -
    3.23 -title_block: .byte <title_file_name, >title_file_name
    3.24 -               .byte $80, $5a, 0, 0
    3.25 -               .byte $80, $5a, 0, 0
    3.26 -               .byte $80, $16, 0, 0
    3.27 -               .byte $00, $71, 0, 0
    3.28 -
    3.29 -init_load_window_vdu_bytes: .byte 28,0,29,19,24
    3.30 -
    3.31  init:
    3.32 -    lda #22         ; MODE 5
    3.33 -    jsr $ffee
    3.34 -    lda #5
    3.35 -    jsr $ffee
    3.36 -
    3.37 -    lda #23         ; disable flashing cursor
    3.38 -    jsr $ffee
    3.39 -    lda #1
    3.40 -    jsr $ffee
    3.41 -    ldx #7
    3.42 -    cursor_loop:
    3.43 -        lda #0
    3.44 -        jsr $ffee
    3.45 -        dex
    3.46 -        bpl cursor_loop
    3.47 -
    3.48 -    jsr set_hidden_palette
    3.49 -
    3.50 -    ldx #0
    3.51 -    init_load_window_loop:
    3.52 -
    3.53 -        lda init_load_window_vdu_bytes,x
    3.54 -        jsr $ffee
    3.55 -        inx
    3.56 -        cpx #5
    3.57 -        bne init_load_window_loop
    3.58 -
    3.59 -    lda #255
    3.60 -    ldx #<title_block
    3.61 -    ldy #>title_block
    3.62 -    jsr $ffdd
    3.63 -
    3.64 -    lda #255
    3.65 -    ldx #<sprites_block
    3.66 -    ldy #>sprites_block
    3.67 -    jsr $ffdd
    3.68 -
    3.69 -    lda #255
    3.70 -    ldx #<chars_block
    3.71 -    ldy #>chars_block
    3.72 -    jsr $ffdd
    3.73 -
    3.74      ; Copy the title screen to a lower address in memory.
    3.75      jsr copy_title_down
    3.76  
    3.77 @@ -4318,24 +4252,6 @@
    3.78      lda #26     ; unset the text window
    3.79      jsr $ffee
    3.80  
    3.81 -    ; Define ENVELOPEs.
    3.82 -    lda #0
    3.83 -    sta $70
    3.84 -    define_envelopes_loop:
    3.85 -
    3.86 -        ldx $70
    3.87 -        lda envelopes_high,x
    3.88 -        tay
    3.89 -        lda envelopes_low,x
    3.90 -        tax
    3.91 -        lda #8
    3.92 -        jsr $fff1
    3.93 -
    3.94 -        inc $70
    3.95 -        lda $70
    3.96 -        cmp #1
    3.97 -        bne define_envelopes_loop
    3.98 -
    3.99      ; Define the default high scores.
   3.100      ldy #0
   3.101      lda #$80
   3.102 @@ -4382,13 +4298,6 @@
   3.103  
   3.104  high_score_default_name: .byte "- David -"
   3.105  
   3.106 -envelopes_low:  .byte <explosion_envelope, <damage_envelope, <item_envelope
   3.107 -envelopes_high: .byte >explosion_envelope, >damage_envelope, >item_envelope
   3.108 -
   3.109 -explosion_envelope: .byte 1,1,252,0,0,10,0,0,126,0,0,130,126,126
   3.110 -damage_envelope:    .byte 2,4,8,0,248,2,0,2,126,0,0,130,126,126
   3.111 -item_envelope:      .byte 3,2,2,254,1,4,4,2,126,0,0,130,126,126
   3.112 -
   3.113  title_vdu_bytes:    .byte 17,2, 31,4,27, "Press SPACE", 31,7,28, "to play"
   3.114  title_vdu_bytes1:   .byte 17,3, 31,1,30, "Copyright (c) 2011"
   3.115  title_vdu_bytes2:   .byte 17,3, 31,1,30, "   David Boddie   "