Prev: 6A4A Up: Map Next: 6AA3
6A4F: Load next terrain fragment and initialize rendering state
Called when a terrain fragment finishes (after 16 pixel lines). Loads the next 4-byte terrain fragment from level_terrains[bridge_index][fragment_number] and initializes state for rendering.
Terrain fragment format (4 bytes): byte 0 = profile number (index into data_terrain_profiles), bytes 1-2 = row offset (added to profile values), byte 3 = upper 6 bits: island index (0=no island), lower 2 bits: edge calculation mode.
Profile numbers 2 and 3 have special meaning: 2 = bridge structure (clears destroyed flag), 3 = bridge approach (sets countdown). Fragment number wraps at 64, incrementing bridge_index.
render_terrain_row 6A4F LD A,$FF Reset state_terrain_position to $FF (will be incremented to 0).
6A51 LD ($5F7D),A
6A54 LD HL,$9500 Set up level_terrains lookup: HL = level_terrains, DE = $100 (level size).
6A57 LD DE,$0100
6A5A LD A,($5EF0)
6A5D OR A
6A5E SBC HL,DE
locate_level_terrain 6A60 ADD HL,DE Locate level_terrains[state_bridge_index] (256 bytes per level).
6A61 DEC A
6A62 JR NZ,locate_level_terrain
6A64 LD A,($5F76) Increment fragment number (0-63), store to state_level_fragment_number.
6A67 INC A
6A68 AND $3F
6A6A LD ($5F76),A
6A6D CP $00 If fragment wrapped to 0, call increase_bridge_index to advance to next bridge/level.
6A6F CALL Z,increase_bridge_index
6A72 LD DE,$0004 Set up fragment lookup: DE = 4 (fragment size).
6A75 INC A
6A76 OR A
6A77 SBC HL,DE
locate_level_terrain_fragment 6A79 ADD HL,DE Locate fragment within level: level_terrains[bridge][fragment].
6A7A DEC A
6A7B JR NZ,locate_level_terrain_fragment
6A7D LD A,(HL) Load byte 0 (profile number) to state_terrain_profile_number. Handle special values.
6A7E LD ($5F77),A
6A81 CP $03
6A83 CALL Z,init_bridge_approach
6A86 CP $02 Load bytes 1-2 (row offset) to state_terrain_element_23.
6A88 CALL Z,clear_bridge_destroyed
6A8B INC HL Byte 3: if upper 6 bits non-zero, call handle_island to initialize island.
6A8C LD C,(HL)
6A8D INC HL
6A8E LD B,(HL)
6A8F INC HL
6A90 LD ($5F78),BC
6A94 LD A,(HL) Store lower 2 bits of byte 3 to state_terrain_extras (edge mode: 0=direct, 1=mirrored, 2=offset).
6A95 PUSH AF
6A96 AND $FC
6A98 CP $00
6A9A CALL NZ,handle_island
6A9D POP AF
6A9E AND $03
6AA0 LD ($5F7A),A
Prev: 6A4A Up: Map Next: 6AA3