Просмотр полной версии : Новая игра FIRE для ПК Специалист
https://i.ibb.co/P6h3k1H/Fire-EMU.png (https://ibb.co/P6h3k1H)
Игра сделана по мотивам игры FIRE из Game & Watch от NINTENDO. На оригинальность и красоту не претендует - написана в свободное время, дабы небыло застоя в мозгах... :v2_dizzy_coder::v2_dizzy_roll:
Управление 4 - в лево, 6 - в право. Счет до 999. Скорость растет каждые 50 очков (до 300). Генератор случайных чисел не очень, но пропуски позволяют секунду отдохнуть, т.к. жизни и скорость не сбрасывается как в оригинале.
Во вложении бинарный файл. Загружаем с адреса 0 и запускаем просто G (Специалист) или J (Лик).
CityAceE
10.12.2023, 18:27
Игра сделана по мотивам игры FIRE из Game & Watch от NINTENDO.
Отлично! Fire - была первой игрой Game&Watch, в которую я залипал за несколько лет до того, как Советская промышленность клонировала Eggs (Ну, погоди!).
Преобразовал в RKS для более удобной загрузки в эмуляторы и реалы.
А вот на Лике, к сожалению, не взлетело. Показывает начальный экран и выходит, показывая курсор - можно дальше набирать текст в Мониторе.
Сделана под Монитор-2.
Надо глянуть чем отличается от Монитора Лика. Использовал только две нестандартные процедуры - вывод звука низкого и высокого тона, все остальные точки входа - по журналу.
CityAceE
11.12.2023, 07:52
Использовал только две нестандартные процедуры - вывод звука низкого и высокого тона
Ну, скорее всего в них и дело, так как подавляющее большинство игр от Специалиста прекрасно себя чувствуют с ПЗУ Лик.
P.S. Вынес сообщения про игру в отдельную тему. Она того заслуживает! Да и людей так может больше обратит внимание.
Посмотрел на код Монитора Лик-а из эмулятора... Странно как на нем игры от Специалиста живут - в нем нет стандартных точек входа!
Игрушка виснет на вызове опроса клавиатуры по адресу C812h. В Лик-е по этому адресу есть вызов подпрограммы (так совпало, повезло), но вместо jmp стоит call, что и приводит к выходу в Монитор.
В Лик-е там где должны быть точки входа находится подпрограмма ожидания команды:
C800 : lxi sp,07FFFH
C803 : lxi h,0C800H
C806 : shld X8FE1
C809 : lxi h,0D120H
C80C : call LC86F
C80F : lxi h,X8F50
C812 : call 0С337H
C815 : cpi 00DH
C817 : jz 0C866H
Самое интересное, что нестандартные точки входа совпадают :)
MON_CLS .equ 0C010H
MON_PAUSE .equ 0C190H
MON_BEEP_HI .EQU 0C1A0H
MON_BEEP_LO .EQU 0C1ABH
CityAceE
11.12.2023, 10:51
В Лик-е по этому адресу есть вызов подпрограммы (так совпало, повезло), но вместо jmp стоит call, что и приводит к выходу в Монитор.
Есть мысли как сделать, чтобы заработало и там, и там?
Есть мысли как сделать, чтобы заработало и там, и там?
Попробовал заменить вызов с С812 на С337 - работает и на Лике, но это подпрограмма ожидания нажатия клавиши, пожарные двигаются, все остальное "висит"... Надо найти в коде Лика опрос клавиатуры без ожидания, аналог С812.
CityAceE
11.12.2023, 11:20
Надо найти в коде Лика опрос клавиатуры без ожидания, аналог С812.
Или вставить в код игры полностью свой опрос ;)
Или вставить в код игры полностью свой опрос ;)
Что и сделал,т.к. в Мониторе Лика нет возможности опроса клавиатуры без ожидания нажатия.
Перезалил в первое сообщение, теперь работает и на Лик-е.
CityAceE
11.12.2023, 16:33
Спасибо!
Во втором сообщении заменил вложение. Добавил в архив помимо обновлённой версии RKS-версии, также версию для Лика в формате RKS и WAV для загрузки на реал:
https://pic.maxiol.com/thumbs2/1702301445.780858384.20231211162337.jpg (https://pic.maxiol.com/?v=1702301445.780858384.20231211162337.jpg&dp=2)
На реале это картинка выглядит так:
https://pic.maxiol.com/thumbs2/1702301485.780858384.20231211162502.jpg (https://pic.maxiol.com/?v=1702301485.780858384.20231211162502.jpg&dp=2)
Но игра у меня что под эмулятором, что на реальном компьютере глючит (предыдущая версия тоже глючила):
https://pic.maxiol.com/thumbs2/1702301557.780858384.3.png (https://pic.maxiol.com/?v=1702301557.780858384.3.png&dp=2)
https://pic.maxiol.com/thumbs2/1702301601.780858384.20231211162427.jpg (https://pic.maxiol.com/?v=1702301601.780858384.20231211162427.jpg&dp=2)
Но игра у меня что под эмулятором, что на реальном компьютере глючит (предыдущая версия тоже глючила):
Странно, я как раз все на эмуляторе тестил.
Попробуйте с этим Монитором. Это стандартный Монитор-2.
В какой момент проявляется глюк?
CityAceE
12.12.2023, 08:58
Попробуйте с этим Монитором. Это стандартный Монитор-2.
Ровно такой же Монитор байт в байт у меня используется в эмуляторе. Не в нём дело. Это же подтверждает и то, что на настоящем Лике глюк тоже присутствует.
Я думаю, что дело в способе загрузки. Игре не нравится, когда её загружают по всем правилам, а не просто подкидывают бинарник.
Судя по скриншотам не выводятся цифры, а по картинке с Лика где адреса видно, что файл короче. В конце как раз цифры... Похоже, что Вы rks не полностью записали, чуть позже проверю у себя.
- - - Добавлено - - -
Ровно такой же Монитор байт в байт у меня используется в эмуляторе. Не в нём дело. Это же подтверждает и то, что на настоящем Лике глюк тоже присутствует.
Я думаю, что дело в способе загрузки. Игре не нравится, когда её загружают по всем правилам, а не просто подкидывают бинарник.
Все нормально. Попробовал загрузить Ваши файлы - все работает! Странно. Вот мои файлы для загрузки.
- - - Добавлено - - -
Пробовал на двух разных эмуляторах - как для Специалиста так и для Лика Ваши rks работают без глюков.
Эмуляторы Emu80 и EMU (Башкирия-2М).
CityAceE
12.12.2023, 19:15
А новый вариант загружается и работает без проблем. Начал сравнивать и нашёл отличие от бинарника, который выложен в первом сообщении:
https://pic.maxiol.com/images2/1702397011.780858384.fire.png
Остальные ошибки связаны с некорректным конечным адресом, ну и контрольная сумма, конечно, отличается.
Вторая цифра в заголовке RKS - это не длина файла, а конечный адрес. А конечный адрес != длина файла! Конечный адрес отличается от длины файла на единицу. Например, имеем программу размером в 2 байта. Загружаем её по адресу 0. Первый байт программы загрузится в ячейку 0, а второй - а ячейку 1. Стало быть конечный адрес будет 1, а не 2, как длина файла.
Длина бинарника Spc_FIRE.bin из первого сообщения - 4619 (0x120B) байт. Соответственно, конечный адрес 0x120A. Таким образом у меня в файле всё корректно. Но лишнее - это не недостающее. А вот отличия в районе 0x640, как выяснилось, были критичными.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot