С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
пост #15
...............
процедура по адресу 38774 вычисляет адрес карты уровня. A=№(00-14)
27837,15*2 ; адреса карт размещения кирпичиков
27867,15*15*12 ; карты уровней
30567 код игры
почему адреса карт хранятся в таблице, а не вычисляются сложением (карты уровней фиксированной длины) мне непонятно
........
38221,199 ; текст меню
38420 XXXX; какая-то переменная
.........
я сначала не понял как игра `помечает` выбитые кирпичи
(для построения экрана после потери мячика используется тажа карта что и для начала уровня)
оказывается кроме цвета у кирпичика есть свойства (биты 4-7).
перед началом уровня они сбрасываются, а например при попадании в него устанавливаются.
- - - Добавлено - - -
так она вроде есть. бонус smash - большой мяч который пробивает всё
Последний раз редактировалось goodboy; 15.06.2020 в 21:08.
Barmaley_m(28.06.2020)
goodboy,нада смотреть на какой машине было сделано раньше.ZX Spectrum, Amstrad CPC, Commodore 64
С уважением,
Jerri / Red Triangle.
Там есть вот такое место:
И сравни, например, с анимацией птицы:Код:; Data block at 77BE anim_ball_resize: DEFW spr_ball_normal DEFW spr_empty_1 DEFW spr_empty_2 DEFW spr_empty_3 DEFW spr_empty_4 DEFW spr_empty_5 DEFW spr_empty_6 DEFW spr_empty_7 DEFW spr_big_ball
Я думаю, что мы сейчас делаем двойную работу. Многое из того, что вы написали с ivagor, мне уже было известно из кода. Давайте я закончу с дизассемблированием, выложу то, что получилось и мы потом вместе приступим к анализу кода. Это будет гораздо удобнее и быстрее. Я сейчас по ходу разбора переименовываю некоторые безликие цифровые метки, присваивая им осмысленные названия. И уже дальше, опираясь на эти названия, из контекста становится примерно понятно что значат соседние процедуры. Например:Код:; Анимация птицы anim_bird: DEFW spr_bird_1 DEFW spr_bird_2 DEFW spr_bird_3 DEFW spr_bird_4 DEFW spr_bird_3 DEFW spr_bird_2 DEFW spr_bird_1 DEFW spr_bird_5 DEFW spr_bird_1 DEFW spr_bird_2 DEFW spr_bird_3
Код:; Used by the routines at L927F and LB9E8. L93F8: LD HL,$0000 LD (L938A),HL CALL draw_frame LD HL,$BF00 ; Координаты окна (весь экран нижняя строка) LD DE,win_full_screen_purple_ink CALL fill_attrib LD HL,$B708 ; Координаты окна LD DE,win_1e_16_white_ink CALL fill_attrib LD HL,$4718 ; Адрес на экране LD DE,spr_press_a CALL print_sprite ; Press A LD HL,$47C8 ; Адрес на экране LD DE,spr_press_b CALL print_sprite ; Press B LD HL,hi_score_1up LD DE,txt_score_1up+4 CALL copy_score LD HL,hi_score_2up LD DE,txt_score_2up+4 CALL copy_score LD DE,txt_main_menu LD B,$0F ; Количество строк в сообщении CALL print_message LD HL,(coord_ctrl_1up) LD DE,spr_pointer_1 CALL print_sprite LD HL,(coord_ctrl_2up) LD DE,spr_pointer_2 CALL print_spriteКод:; Data block at 9614 L9614: DEFW txt_1_player DEFW txt_controls
Последний раз редактировалось CityAceE; 16.06.2020 в 03:04.
С уважением, Станислав.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)