GalaforceAtomDevDiary

From Retrosoftware

(Difference between revisions)
Jump to: navigation, search
(Font)
(Program)
Line 259: Line 259:
<table>
<table>
<tr><td width=150><b>Font</b></td>
<tr><td width=150><b>Font</b></td>
-
<td>- The textfont is stored in the SPFONT.INC file</td></tr>
+
<td>- You can print single- (CHARP.INC) or double size characters (TITLE.INC)</td></tr>
-
<tr><td></td><td>- You can print single- (CHARP.INC) or double size characters (TITLE.INC)</td></tr>
+
<tr><td></td><td>- Double size characters prints all pixels and rows double</td></tr>
<tr><td></td><td>- Double size characters prints all pixels and rows double</td></tr>
<tr><td></td><td>- Every pixel is shifted out of the Storage byte and put on screen as a coloured pixel</td></tr>
<tr><td></td><td>- Every pixel is shifted out of the Storage byte and put on screen as a coloured pixel</td></tr>

Revision as of 14:09, 2 September 2011

Contents

Galaforce Acorn Atom Development Diary

by Kees van Oss

16 August 2011

Program


MEMORY MAP


$0400 - $06D4 Variables $06D5 - $06FF

$0700 - $07BD SPFONT $07BE - $09FF

$0A00 - $0B9F DIGITS

 $0A00 - $0A4F	  Left byte digit left aligned
 $0A50 - $0A9F	  Left byte digit right aligned
 $0AA0 - $0AFF
 $0B00 - $0B4F	  Right byte digit left aligned
 $0B50 - $0B9F	  Right byte digit right aligned

$0BA0 - $0C00


BOMBS1.INC


process_my_bombs - Check if RET/fire is pressed
- If less then 3 bullets on the screen, place new bullet
- If bullet reaches top of screen, erase it
move_bomb - Move all bullets on screen
mksound - Play sound when bullet is fired



STARS.INC:


starinit - Plot stars at random positions
- Start at y=8 to screenheight-8 with a 8 pixel step
- Plot in a random colour, excluding background colour
movestars - Move all stars 1 pixel down
- After 8 pixels down, plot at new position in same band (8 pixels) for blinking effect
- If star scrolls of screen, plot new star at y=8
rand - Create random nr in rand1 (3 byte)



CHARP.INC


prnstr - Print string with pointer in Y (must be even)
- Get stringadres from strdat,Y
- Print string on screen
strdat - 2-bytes stringdata pointers
stringdata - Word = screenaddress
- Byte = stringlength
- Byte = color
- Byte = stringdata



TITLE.INC


title - Print title on screen in double height and width



SPRITES.INC


sprite - Erase sprite (16 x 16) at old pos
- Plot same sprite (16 x 16) on new pos



ROUT1.INC


check_joy - Check if joystick direction left (X=1) or up (X=2) is activated
check_joy2 - Check if joystick direction right (X=1) or down (X=2) is activated
pause4 - Check if key 'P' is pressed
check_key - Check if key in X is pressed
delay - Wait for +/- 3100 cycles
delay2 - Wait for X * 1024 cycles
pause - Check sound_on_off
- Check if key 'P' is pressed
- If key 'P' is pressed, wait again for 'P'
- Print pause status on screen
rstall - Reset gamevars
seed_rnd - Fill 3 bytes of random var rand1
xycalc - Calculate screenaddress from X,Y
- Output X=lb, A=hb screenaddress
pokmypos - Calculate screenaddress myship
- Set vars for plotting
sound_on_off - Wait for 'S' key is pressed for 8 cycles
- Check if 'K' key is pressed
display_sound_status - Print sound status on screen
key_joy - Check if 'K' key is pressed
key_joy2 - Save key_joy flag
display_key_joy_status - Print keyboard status on screen
addrelx - Table with relative X-movement aliens
addrely - Table with relative Y-movement aliens



ROUT3.INC


move_my_base - Check controls to move myship or automove in demomode
print_scores - Print score digit X on screen from score_base
- 0<=X<= 6 Myscore
- 7<=X<=13 Highscore
- Digits can be left- or right aligned because a digit is 6 pixels width
init_score - Reset myscore=0 and print myscore + high score
add_to_score - ???
check_new_high - ???
reset_score_to_0 - Erase, reset and print myscore
toggle_demo_direct - Revert direction in demomode



ROUT4.INC


message_loop - Play demo until loop counter=255 or space/fire pressed
end_message - Print tilte and credits
escape - End game if ESC (gamemode) or space/fire (demomode) pressed
game_over_loop - Play tune and print 'GAME OVER'
chk_spc_fire - Check if space or fire is pressed
completion_message - Print bonus text if wavenr=16,32 or 48



FLAGS.INC


liveson - Plot for every life a ship on the second last screen row
flagson - Plot wavenr with flags signed 10,5 and 1



SPFONT.INC


Font - You can print single- (CHARP.INC) or double size characters (TITLE.INC)
- Double size characters prints all pixels and rows double
- Every pixel is shifted out of the Storage byte and put on screen as a coloured pixel
- A letter (5 x 8) is stored 90 degrees rotated (8 x 5)
- A letter on the screen is 6 x 8 pixels so there's 1 pixel space between 2 letters
The letter G is stored like this:
Image:Letter.PNG


Pixel

  • A pixel is plotted on the screen as a coloured pixel.
  • Below you can find a table with the difference between a BBC and an Atom coloured pixel:


BBC MODE2BBC MODE5Atom CLEAR4a
Colours/pixel1644
Bits/pixel422
Pixels/byte244


Score

  • Score digits (line 1) are stored in the file DIGITS.INC
  • The size of a digit is 5 x 8 pixels
  • A digit in DIGITS.INC is an image of the digit on screen

Stars

  • On init, a pixel (star) is plot in a random colour random on every line (8 pixels high) on line 4 except the first (score) line
  • During scrolling, a star is wiped and replotted 1 pixel lower
  • After 8 pixels of movement, a star will blink

Screenshots

Galaforce Intro screenshot
Galaforce Intro screenshot
Posted: 16:22, 17 Aug 2011
Galaforce Highscore screenshot
Galaforce High Score screenshot
Posted: 16:22, 17 Aug 2011