0,0 → 1,904 |
; Initially written by CH@YKIN EVGENY, 2009 |
; Then disassembled for fun by dunkaist, 2017 |
use32 |
org 0 |
db 'MENUET01' |
dd 1 |
dd start |
dd I_END |
dd stacktop |
dd stacktop |
dd 0, 0 |
|
include 'proc32.inc' |
include 'struct.inc' |
include 'macros.inc' |
include 'encoding.inc' |
|
CLIENT_WIDTH = 300 |
CLIENT_HEIGHT = 200 |
|
HEALTH_INIT = 24 |
HEALTH_BONUS = 3 |
HEALTH_LEVEL_UP = 297 |
|
BULLET_DAMAGE = 12 |
BULLETS_CNT = 4 |
|
NOTE_DAMAGE = 0x31 |
NOTE_SAVE = 0x63 |
NOTE_WIN_0 = 0x36 |
NOTE_WIN_1 = 0x35 |
NOTE_WIN_2 = 0x31 |
NOTE_LOST_0 = 0x0d |
NOTE_LOST_1 = 0x09 |
NOTE_LOST_2 = 0x20 |
|
BULLET_SIZE = 7 |
SHIELD_SIZE = 20 |
|
DELAY_INIT = 10 |
DELAY_NOTE = 10 |
|
DELAYS_PER_GAME_STEP = 10 |
|
NW = 1 ; north west |
SW = 2 |
NE = 3 |
SE = 4 |
|
macro draw_bullet off_on, x, y { |
mov eax, 7 |
mov ebx, _pic_bullet_#off_on |
mov ecx, (BULLET_SIZE SHL 16) + BULLET_SIZE |
mov edx, x |
imul edx, edx, 0x10000 |
add edx, y |
mcall |
} |
|
macro draw_shield side, x, y { |
mov eax, 7 |
mov ebx, pic_shield_#side |
mov ecx, (SHIELD_SIZE SHL 16) + SHIELD_SIZE |
mov edx, x |
imul edx, edx, 0x10000 |
add edx, y |
mcall |
} |
|
macro play_note note { |
mov eax, note |
mov dword [speaker.note], eax |
mov eax, 55 |
mov ebx, eax |
mov esi, speaker |
mcall |
} |
|
start: |
mcall 48, 3, sys_colors, sizeof.system_colors |
jmp menu |
menu: |
mcall 10 |
cmp eax, 1 |
jz .redraw |
cmp eax, 2 |
jz .button |
cmp eax, 3 |
jz .key |
jmp menu |
.redraw: |
jmp .draw |
.button: |
mcall 2 |
cmp ah, '1' |
jz .init_game |
cmp ah, '2' |
jz .resume_game |
jmp menu |
.init_game: |
mov eax, 13 |
mov ebx, 0 |
imul ebx, ebx, 0x10000 |
add ebx, CLIENT_WIDTH |
mov ecx, 0 |
imul ecx, ecx, 0x10000 |
add ecx, CLIENT_HEIGHT |
mov edx, 0 |
mcall |
mov [game_started], 0 |
mov [shield_position], SE |
mov [finish_draw], 1 |
mov [next_bullet_side_prng], 3 |
mov [next_bullet_side], SE |
mov [bullet_1_pos], 1 |
mov [bullet_2_pos], 2 |
mov [bullet_3_pos], 3 |
mov [bullet_4_pos], 4 |
mov eax, NW |
mov [bullet_1_side], eax |
mov eax, SW |
mov [bullet_2_side], eax |
mov eax, NE |
mov [bullet_3_side], eax |
mov eax, SE |
mov [bullet_4_side], eax |
mov eax, 1 |
mov [bullet_pos], eax |
mov eax, NW |
mov [bullet_side], eax |
mov eax, 1 |
mov [cur_bullet], eax |
mov eax, 1 |
mov [delays_cnt], eax |
mov eax, HEALTH_INIT |
mov [health], eax |
mov eax, DELAY_INIT |
mov [delay], eax |
jmp redraw_window |
.resume_game: |
mov eax, 13 |
mov ebx, 0 |
imul ebx, ebx, 0x10000 |
add ebx, CLIENT_WIDTH |
mov ecx, 0 |
imul ecx, ecx, 0x10000 |
add ecx, CLIENT_HEIGHT |
mov edx, 0 |
mcall |
jmp redraw_window |
.key: |
mcall 17 |
cmp ah, 0x01 ; close button |
jnz menu |
.exit: |
mcall -1 |
.draw: |
mov eax, [finish_draw] |
cmp eax, 1 |
jz .draw.start |
jmp .draw.finish |
.draw.finish: |
mcall 12, 2 |
jmp .draw.start |
.draw.start: |
mov eax, 0 |
mov [finish_draw], eax |
mcall 12, 1 |
mcall 48, 4 |
mov [skin_height], eax |
mcall 48, 4 |
mov [skin_height], eax |
mov eax, 0 |
mov ebx, (100 SHL 16) + CLIENT_WIDTH + 10 |
mov ecx, 100 |
imul ecx, ecx, 0x10000 |
add ecx, CLIENT_HEIGHT + 4 |
add ecx, [skin_height] |
mov edx, 0x33000000 |
mov edi, window_title |
mcall |
mov eax, 13 |
mov ebx, 0 |
imul ebx, ebx, 0x10000 |
add ebx, CLIENT_WIDTH + 1 |
mov ecx, 0 |
imul ecx, ecx, 0x10000 |
add ecx, CLIENT_HEIGHT |
mov edx, 0 |
mcall |
mcall 4, (140 SHL 16) + 60, 0x10bbbbbb, msg_ataka, msg_ataka.size |
mcall 4, (140 SHL 16) + 61, 0x10bbbbbb, msg_ataka, msg_ataka.size |
mcall 4, (141 SHL 16) + 61, 0x10bbbbbb, msg_ataka, msg_ataka.size |
mcall 4, (141 SHL 16) + 60, 0x10bbbbbb, msg_ataka, msg_ataka.size |
mcall 4, ( 55 SHL 16) + 190, 0x10444444, msg_copyright, msg_copyright.size |
mov eax, 4 |
mov ebx, (34 SHL 16) + 160 |
mov ecx, 0x888888 |
mov edx, msg_control_by_numpad |
mov esi, 40 |
.print_line: |
mcall |
add ebx, 10 ; one line down |
add edx, 40 |
cmp byte [edx], 'x' |
jnz .print_line |
mcall 4, (110 SHL 16) + 95, 0x10999999, msg_new_game, msg_new_game.size |
mov eax, [game_started] |
cmp eax, 0 |
jz menu |
mcall 4, (110 SHL 16) + 110, 0x10999999, msg_continue, msg_continue.size |
jmp menu |
|
redraw_window: |
mov eax, [finish_draw] |
cmp eax, 1 |
jz redraw_window.start |
mcall 12, 2 |
jmp redraw_window.start |
redraw_window.start: |
mov eax, 0 |
mov [finish_draw], eax |
mcall 12, 1 |
mcall 48, 4 |
mov [skin_height], eax |
mov eax, 0 |
mov ebx, (100 SHL 16) + CLIENT_WIDTH + 10 |
mov ecx, 100 |
imul ecx, ecx, 0x10000 |
add ecx, CLIENT_HEIGHT + 4 |
add ecx, [skin_height] |
mov edx, 0x33000000 |
mov edi, window_title |
mcall |
jmp draw_field |
|
game_loop: |
mov [game_started], 1 |
mov eax, [health] |
cmp eax, HEALTH_LEVEL_UP |
jg level_up |
cmp eax, 0 |
jl lost |
jmp game_alive |
level_up: |
mov eax, HEALTH_INIT |
mov [health], eax |
mov eax, [delay] |
cmp eax, 10 ; delay for level_0 |
jz level_up_1 |
mov eax, [delay] |
cmp eax, 8 ; delay for level_1 |
jz level_up_2 |
mov eax, [delay] |
cmp eax, 7 |
jz level_up_3 |
mov eax, [delay] |
cmp eax, 6 |
jz level_up_4 |
mov eax, [delay] |
cmp eax, 5 |
jz level_up_5 |
mov eax, [delay] |
cmp eax, 4 |
jz level_up_6 |
mov eax, [delay] |
cmp eax, 3 |
jz win |
jmp game_alive |
lost: |
mcall 5, DELAY_NOTE |
play_note NOTE_LOST_0 |
mcall 5, DELAY_NOTE |
play_note NOTE_LOST_1 |
mcall 5, DELAY_NOTE |
play_note NOTE_LOST_2 |
|
mov [game_started], 0 |
mcall 4, (105 SHL 16) + 100, 0xff0000, msg_you_lost, msg_you_lost.size |
mcall 5, 100 |
mov eax, SE |
mov [shield_position], eax |
mov eax, 1 |
mov [finish_draw], eax |
mov eax, 3 |
mov [next_bullet_side_prng], eax |
mov eax, SE |
mov [next_bullet_side], eax |
mov eax, 1 |
mov [bullet_1_pos], eax |
mov eax, 2 |
mov [bullet_2_pos], eax |
mov eax, 3 |
mov [bullet_3_pos], eax |
mov eax, 4 |
mov [bullet_4_pos], eax |
mov eax, NW |
mov [bullet_1_side], eax |
mov eax, SW |
mov [bullet_2_side], eax |
mov eax, NE |
mov [bullet_3_side], eax |
mov eax, SE |
mov [bullet_4_side], eax |
mov eax, 1 |
mov [bullet_pos], eax |
mov eax, NW |
mov [bullet_side], eax |
mov eax, 1 |
mov [cur_bullet], eax |
mov eax, 1 |
mov [delays_cnt], eax |
mov eax, HEALTH_INIT |
mov [health], eax |
mov eax, DELAY_INIT |
mov [delay], eax |
jmp menu.draw |
|
level_up_1: |
mov eax, 8 |
mov [delay], eax |
jmp game_alive |
level_up_2: |
mov eax, 7 |
mov [delay], eax |
jmp game_alive |
level_up_3: |
mov eax, 6 |
mov [delay], eax |
jmp game_alive |
level_up_4: |
mov eax, 5 |
mov [delay], eax |
jmp game_alive |
level_up_5: |
mov eax, 4 |
mov [delay], eax |
jmp game_alive |
level_up_6: |
mov eax, 3 |
mov [delay], eax |
jmp game_alive |
win: |
mcall 5, DELAY_NOTE |
play_note NOTE_WIN_0 |
mcall 5, DELAY_NOTE |
play_note NOTE_WIN_1 |
mcall 5, DELAY_NOTE |
play_note NOTE_WIN_2 |
|
mcall 5, DELAY_NOTE |
|
mov [game_started], 0 |
mov eax, DELAY_INIT |
mov [delay], eax |
mcall 4, (105 SHL 16) + 100, 0xff0000, msg_you_won, msg_you_won.size |
mcall 5, 200 |
jmp menu.draw |
|
game_alive: |
; draw max health bar |
mov eax, 13 |
mov ebx, 0 |
imul ebx, ebx, 0x10000 |
add ebx, CLIENT_WIDTH + 1 |
mov ecx, 0 |
imul ecx, ecx, 0x10000 |
inc ecx |
mov edx, 0xff0000 |
mcall |
; draw left health bar |
mov eax, 13 |
mov ebx, 0 |
imul ebx, ebx, 0x10000 |
add ebx, [health] |
mov ecx, 0 |
imul ecx, ecx, 0x10000 |
inc ecx |
mov edx, 0x0000ff |
mcall |
mov eax, [next_bullet_side_prng] |
inc eax |
mov [next_bullet_side_prng], eax |
mov eax, [next_bullet_side_prng] |
cmp eax, 1 |
jz ._1 |
mov eax, [next_bullet_side_prng] |
cmp eax, 2 |
jz ._2 |
mov eax, [next_bullet_side_prng] |
cmp eax, 3 |
jz ._3 |
mov eax, [next_bullet_side_prng] |
cmp eax, 4 |
jz ._4 |
mov eax, [next_bullet_side_prng] |
cmp eax, 5 |
jz ._5 |
mov eax, [next_bullet_side_prng] |
cmp eax, 6 |
jz ._6 |
mov eax, [next_bullet_side_prng] |
cmp eax, 7 |
jz ._7 |
mov eax, [next_bullet_side_prng] |
cmp eax, 8 |
jz ._8 |
mov eax, [next_bullet_side_prng] |
cmp eax, 9 |
jg ._9 |
mov eax, 3 |
mov [next_bullet_side], eax |
jmp check_event |
._1: |
mov eax, 1 |
mov [next_bullet_side], eax |
jmp check_event |
._2: |
mov eax, 4 |
mov [next_bullet_side], eax |
jmp check_event |
._3: |
mov eax, 3 |
mov [next_bullet_side], eax |
jmp check_event |
._4: |
mov eax, 4 |
mov [next_bullet_side], eax |
jmp check_event |
._5: |
mov eax, 1 |
mov [next_bullet_side], eax |
jmp check_event |
._6: |
mov eax, 2 |
mov [next_bullet_side], eax |
jmp check_event |
._7: |
mov eax, 1 |
mov [next_bullet_side], eax |
jmp check_event |
._8: |
mov eax, 2 |
mov [next_bullet_side], eax |
jmp check_event |
._9: |
mov eax, 3 |
mov [next_bullet_side], eax |
mov eax, 1 |
mov [next_bullet_side_prng], eax |
jmp check_event |
|
check_event: |
mcall 5, [delay] |
mcall 11 |
cmp eax, 1 |
jz redraw_window |
cmp eax, 2 |
jz .button |
cmp eax, 3 |
jz .key |
jmp draw_field |
.key: |
mov al, 17 |
mcall |
cmp ah, 1 |
jnz draw_field |
mcall -1 |
|
.button: |
mov al, 2 |
mcall |
cmp ah, 0xb0 ; arrow left / numpad 4 |
jz .move_shield_tl |
cmp ah, 0xb5 ; end / numpad 1 |
jz .move_shield_bl |
cmp ah, 0xb3 ; arrow right / numpad 6 |
jz .move_shield_tr |
cmp ah, 0xb7 ; page down / numpad 3 |
jz .move_shield_br |
cmp ah, 0xb0 ; never happens, fixme |
jz menu.draw |
cmp ah, 'p' ; 'p' for pause |
jz menu.draw |
cmp ah, '4' |
jz .move_shield_tl |
cmp ah, '1' |
jz .move_shield_bl |
cmp ah, '6' |
jz .move_shield_tr |
cmp ah, '3' |
jz .move_shield_br |
jmp draw_field |
.move_shield_tl: |
mov eax, 1 |
mov [shield_position], eax |
jmp draw_field |
.move_shield_bl: |
mov eax, 2 |
mov [shield_position], eax |
jmp draw_field |
.move_shield_tr: |
mov eax, 3 |
mov [shield_position], eax |
jmp draw_field |
.move_shield_br: |
mov eax, 4 |
mov [shield_position], eax |
jmp draw_field |
draw_field: |
mcall 18, 14 |
; mcall 65, pic_bg, (CLIENT_WIDTH SHL 16) + CLIENT_HEIGHT, 0, 8, paletter, 0 |
mov eax, 65 |
mov ebx, pic_bg |
mov ecx, (CLIENT_WIDTH SHL 16) + CLIENT_HEIGHT |
mov edx, 0 |
mov esi, 8 ; indexed image |
mov edi, palette |
mov ebp, 0 |
mcall |
mov eax, [shield_position] |
cmp eax, NW |
jz .shield_nw |
cmp eax, SW |
jz .shield_sw |
cmp eax, NE |
jz .shield_ne |
cmp eax, SE |
jz .shield_se |
.shield_nw: |
draw_shield nw, 90, 70 |
jmp draw_bullets |
.shield_sw: |
draw_shield sw, 90, 105 |
jmp draw_bullets |
.shield_ne: |
draw_shield ne, CLIENT_HEIGHT, 70 |
jmp draw_bullets |
.shield_se: |
draw_shield se, CLIENT_HEIGHT, 105 |
jmp draw_bullets |
|
draw_bullets: ; off |
draw_bullet off, 90, 70 |
draw_bullet off, 75, 58 |
draw_bullet off, 59, 46 |
draw_bullet off, 89, 117 |
draw_bullet off, 74, 129 |
draw_bullet off, 56, 144 |
draw_bullet off, 211, 68 |
draw_bullet off, 224, 57 |
draw_bullet off, 236, 46 |
draw_bullet off, 210, 119 |
draw_bullet off, 223, 131 |
draw_bullet off, 237, 143 |
jmp draw_bullets_on |
|
draw_bullets_on: |
mov eax, [cur_bullet] |
cmp eax, 1 |
jz ._1 |
cmp eax, 2 |
jz ._2 |
cmp eax, 3 |
jz ._3 |
cmp eax, 4 |
jz ._4 |
._1: |
mov eax, [bullet_1_pos] |
mov [bullet_pos], eax |
mov eax, [bullet_1_side] |
mov [bullet_side], eax |
jmp bullet_on_defined |
._2: |
mov eax, [bullet_2_pos] |
mov [bullet_pos], eax |
mov eax, [bullet_2_side] |
mov [bullet_side], eax |
jmp bullet_on_defined |
._3: |
mov eax, [bullet_3_pos] |
mov [bullet_pos], eax |
mov eax, [bullet_3_side] |
mov [bullet_side], eax |
jmp bullet_on_defined |
._4: |
mov eax, [bullet_4_pos] |
mov [bullet_pos], eax |
mov eax, [bullet_4_side] |
mov [bullet_side], eax |
jmp bullet_on_defined |
|
bullet_on_defined: |
mov eax, [bullet_side] |
cmp eax, NW |
jz bullet_nw |
cmp eax, SW |
jz bullet_sw |
cmp eax, NE |
jz bullet_ne |
cmp eax, SE |
jz bullet_se |
bullet_nw: |
mov eax, [bullet_pos] |
cmp eax, 1 |
jz bullet_nw_dist._1 |
cmp eax, 2 |
jz bullet_nw_dist._2 |
cmp eax, 3 |
jz bullet_nw_dist._3 |
cmp eax, 4 |
jz bullet_nw_dist._4 |
cmp eax, 5 |
jz bullet_nw_dist._5 |
bullet_sw: |
mov eax, [bullet_pos] |
cmp eax, 1 |
jz bullet_sw_dist._1 |
cmp eax, 2 |
jz bullet_sw_dist._2 |
cmp eax, 3 |
jz bullet_sw_dist._3 |
cmp eax, 4 |
jz bullet_sw_dist._4 |
cmp eax, 5 |
jz bullet_sw_dist._5 |
bullet_ne: |
mov eax, [bullet_pos] |
cmp eax, 1 |
jz bullet_ne_dist._1 |
cmp eax, 2 |
jz bullet_ne_dist._2 |
cmp eax, 3 |
jz bullet_ne_dist._3 |
cmp eax, 4 |
jz bullet_ne_dist._4 |
cmp eax, 5 |
jz bullet_ne_dist._5 |
bullet_se: |
mov eax, [bullet_pos] |
cmp eax, 1 |
jz bullet_se_dist._1 |
cmp eax, 2 |
jz bullet_se_dist._2 |
cmp eax, 3 |
jz bullet_se_dist._3 |
cmp eax, 4 |
jz bullet_se_dist._4 |
cmp eax, 5 |
jz bullet_se_dist._5 |
|
bullet_nw_dist: |
._1: |
draw_bullet on, 44, 33 |
jmp bullet_on_drawn |
._2: |
draw_bullet on, 59, 46 |
jmp bullet_on_drawn |
._3: |
draw_bullet on, 75, 58 |
jmp bullet_on_drawn |
._4: |
draw_bullet on, 90, 70 |
jmp bullet_on_drawn |
._5: |
jmp bullet_on_drawn |
|
bullet_sw_dist: |
._1: |
draw_bullet on, 42, 156 |
jmp bullet_on_drawn |
._2: |
draw_bullet on, 56, 144 |
jmp bullet_on_drawn |
._3: |
draw_bullet on, 74, 129 |
jmp bullet_on_drawn |
._4: |
draw_bullet on, 89, 117 |
jmp bullet_on_drawn |
._5: |
jmp bullet_on_drawn |
|
bullet_ne_dist: |
._1: |
draw_bullet on, 250, 34 |
jmp bullet_on_drawn |
._2: |
draw_bullet on, 236, 46 |
jmp bullet_on_drawn |
._3: |
draw_bullet on, 224, 57 |
jmp bullet_on_drawn |
._4: |
draw_bullet on, 211, 68 |
jmp bullet_on_drawn |
._5: |
jmp bullet_on_drawn |
|
bullet_se_dist: |
._1: |
draw_bullet on, 251, 156 |
jmp bullet_on_drawn |
._2: |
draw_bullet on, 237, 143 |
jmp bullet_on_drawn |
._3: |
draw_bullet on, 223, 131 |
jmp bullet_on_drawn |
._4: |
draw_bullet on, 210, 119 |
jmp bullet_on_drawn |
._5: |
jmp bullet_on_drawn |
|
bullet_on_drawn: |
mov eax, [cur_bullet] |
inc eax |
mov [cur_bullet], eax |
mov eax, [cur_bullet] |
cmp eax, BULLETS_CNT + 1 |
jz all_bullets_drawn |
jmp draw_bullets_on |
all_bullets_drawn: |
mov eax, 1 |
mov [cur_bullet], eax |
jmp check_for_game_step |
check_for_game_step: |
mov eax, [delays_cnt] |
cmp eax, DELAYS_PER_GAME_STEP |
jz game_step |
jmp no_game_step |
no_game_step: |
mov eax, [delays_cnt] |
inc eax |
mov [delays_cnt], eax |
jmp game_loop |
game_step: |
mov eax, 1 |
mov [delays_cnt], eax |
mov eax, [bullet_1_pos] |
inc eax |
mov [bullet_1_pos], eax |
mov eax, [bullet_2_pos] |
inc eax |
mov [bullet_2_pos], eax |
mov eax, [bullet_3_pos] |
inc eax |
mov [bullet_3_pos], eax |
mov eax, [bullet_4_pos] |
inc eax |
mov [bullet_4_pos], eax |
mov eax, [bullet_1_pos] |
cmp eax, 6 |
jz bullet_1_new |
mov eax, [bullet_2_pos] |
cmp eax, 6 |
jz bullet_2_new |
mov eax, [bullet_3_pos] |
cmp eax, 6 |
jz bullet_3_new |
mov eax, [bullet_4_pos] |
cmp eax, 6 |
jz bullet_4_new |
jmp check_bullet_hit |
|
bullet_1_new: |
play_note NOTE_SAVE |
mov eax, 1 |
mov [bullet_1_pos], eax |
mov eax, [next_bullet_side] |
mov [bullet_1_side], eax |
jmp check_bullet_hit |
bullet_2_new: |
play_note NOTE_SAVE |
mov eax, 1 |
mov [bullet_2_pos], eax |
mov eax, [next_bullet_side] |
mov [bullet_2_side], eax |
jmp check_bullet_hit |
bullet_3_new: |
play_note NOTE_SAVE |
mov eax, 1 |
mov [bullet_3_pos], eax |
mov eax, [next_bullet_side] |
mov [bullet_3_side], eax |
jmp check_bullet_hit |
bullet_4_new: |
play_note NOTE_SAVE |
mov eax, 1 |
mov [bullet_4_pos], eax |
mov eax, [next_bullet_side] |
mov [bullet_4_side], eax |
jmp check_bullet_hit |
|
check_bullet_hit: |
mov eax, [bullet_1_pos] |
cmp eax, 5 |
jz bullet_1_hit |
mov eax, [bullet_2_pos] |
cmp eax, 5 |
jz bullet_2_hit |
mov eax, [bullet_3_pos] |
cmp eax, 5 |
jz bullet_3_hit |
mov eax, [bullet_4_pos] |
cmp eax, 5 |
jz bullet_4_hit |
jmp game_loop |
|
bullet_1_hit: |
mov eax, [bullet_1_side] |
cmp eax, [shield_position] |
jz save |
jmp damage |
bullet_2_hit: |
mov eax, [bullet_2_side] |
cmp eax, [shield_position] |
jz save |
jmp damage |
bullet_3_hit: |
mov eax, [bullet_3_side] |
cmp eax, [shield_position] |
jz save |
jmp damage |
bullet_4_hit: |
mov eax, [bullet_4_side] |
cmp eax, [shield_position] |
jz save |
jmp damage |
|
damage: |
mov eax, [health] |
sub eax, BULLET_DAMAGE |
mov [health], eax |
play_note NOTE_DAMAGE |
jmp game_loop |
save: |
mov eax, [health] |
add eax, HEALTH_BONUS |
mov [health], eax |
play_note NOTE_SAVE |
jmp game_loop |
|
skin_height dd 0 |
shield_position dd SE |
finish_draw dd 1 ; 0 -- finish, 1 -- start |
next_bullet_side_prng dd 3 |
next_bullet_side dd SE |
bullet_1_pos dd 1 |
bullet_2_pos dd 2 |
bullet_3_pos dd 3 |
bullet_4_pos dd 4 |
bullet_1_side dd NW |
bullet_2_side dd SW |
bullet_3_side dd NE |
bullet_4_side dd SE |
bullet_pos dd 1 ; nearest to the gun |
bullet_side dd NW |
cur_bullet dd NW |
delays_cnt dd 1 |
health dd HEALTH_INIT |
delay dd DELAY_INIT |
game_started dd 0 |
speaker: |
.duration db 0x90 |
.note db 0x30 |
.end db 0x00 |
pic_bg: |
file 'picture_bg.rgba' |
pic_shield_sw: |
file 'shield_sw.rgb' |
pic_shield_nw: |
file 'shield_nw.rgb' |
pic_shield_ne: |
file 'shield_ne.rgb' |
pic_shield_se: |
file 'shield_se.rgb' |
_pic_bullet_off: |
file 'bullet_off.rgb' |
_pic_bullet_on: |
file 'bullet_on.rgb' |
sz msg_copyright, '(c) 2009 CH@YKIN EVGENY' |
msg_new_game cp866 '1 новая игра' |
msg_new_game.size = $ - msg_new_game |
msg_continue cp866 '2 продолжить' |
msg_continue.size = $ - msg_continue |
msg_you_lost cp866 ' вы проиграли' |
msg_you_lost.size = $ - msg_you_lost |
msg_you_won cp866 'ПОБЕДА :)' |
msg_you_won.size = $ - msg_you_won |
msg_control_by_numpad cp866 'Управление клавишами NumLock клавиатуры' |
msg_control_by_numpad.size = $ - msg_control_by_numpad |
msg_controls cp866 ' 1, 4, 6, 3 и пауза Р(Eng). x' |
msg_controls.size = $ - msg_controls |
palette: |
file 'palette.rgba' |
|
sz msg_ataka, 'ATAKA' |
window_title db 'ATAKA V 1.0',0 |
I_END: |
sys_colors system_colors |
rb 0x80d |
stacktop: |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |