GalaforceAtomDevDiary
From Retrosoftware
(Difference between revisions)
(→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>- 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
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 MODE2 | BBC MODE5 | Atom CLEAR4a | |
| Colours/pixel | 16 | 4 | 4 |
| Bits/pixel | 4 | 2 | 2 |
| Pixels/byte | 2 | 4 | 4 |
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 Posted: 16:22, 17 Aug 2011 | Galaforce High Score screenshot Posted: 16:22, 17 Aug 2011 |