e1ee447b7f
Раскладка (по подтверждённой пробником модели, tests/w3bankgfx): - roomtest переведён на MEMORY=huge: та же small-раскладка резидента (CODE в W1, DATA за ним) плюс банки кода в W3; - guards.c собирается как --bank 1=guards.c — там будет ИИ и боёвка; - СОСТОЯНИЕ стража живёт в W1/W2 (pop_guard.c): писучие статики __banked-модуля линкуются в страницу банка и снаружи не читаются, так что банк — только код; - поля pop_char_t повторяют char_type оригинала (types.h:302), чтобы порт seg005/seg006 ложился один в один. Режим читов (порт cheats_enabled, seg000:111): глобальный флаг pop_cheats, на время разработки включается в main. Реализован один чит — K (kill guard, seg000:786): скелета не берёт, живому стражу ставит guardhp_delta = -guardhp_curr и alive = 0. Обработка по фронту нажатия. Остальные читы оригинала не портированы. Проверено в MAME: приложение в huge-раскладке стартует, комната рисуется, Kid бегает — то есть банкованный pop_guard_tick() зовётся каждый кадр через трамплин и корректно возвращается; K не роняет приложение (стража в комнате пока нет). Банк занят на 6 Б из 16384. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
22 lines
1.0 KiB
C
22 lines
1.0 KiB
C
/*
|
|
* pop_cheat.h — режим читов (порт cheats_enabled, seg000:111).
|
|
*
|
|
* В оригинале включается ключом командной строки megahit/debug и меняет
|
|
* набор доступных клавиш. У нас конфигурации/UI пока нет, поэтому это
|
|
* просто глобальный флаг: main ставит его при старте (на время разработки —
|
|
* ВКЛЮЧЁН). Клавиши читов обрабатывает главный цикл.
|
|
*
|
|
* Реализовано: K — убить стража (seg000:786). Остальные читы оригинала
|
|
* (время, перо, воскрешение, переход по комнатам) пока не портированы.
|
|
*/
|
|
#ifndef POP_CHEAT_H
|
|
#define POP_CHEAT_H
|
|
|
|
#include <stdint.h>
|
|
|
|
extern uint8_t pop_cheats; /* 0 = выключены, иначе включены */
|
|
|
|
#define KBD_CHEAT_KILL 0x42 /* K (PS/2 set 2) — kill guard */
|
|
|
|
#endif
|