"""Compile Russian presentation copy to CP1251 byte declarations for MASM.""" from pathlib import Path ROOT = Path(__file__).resolve().parents[2] TEXT = { 'presNext': 'ENTER / SPACE: ДАЛЬШЕ ESC: ПРОПУСТИТЬ', 'presAIHeader': 'ОБ ИСПОЛЬЗОВАНИИ AI', 'presAITag': 'TRANSPARENCY NOTICE / 01', 'presAIBody': 'В игре есть материалы, созданные\n' 'с помощью искусственного интеллекта.\n\n' 'При создании части текстур игры\n' 'использовались технологии\n' 'искусственного интеллекта.\n\n' 'Также используются сторонние ресурсы.\n' 'Их авторы и лицензии сохранены.', 'presAIFooter': 'СОЗДАНО С AI. СОБРАНО ВРУЧНУ.', 'presCodeHeader': 'А ВЫ ЗНАЛИ?', 'presCodeSub': 'ИГРОВОЙ ДВИЖОК НАПИСАН НА MASM32', 'presCodeLeft': 'C++ / ПРИМЕР', 'presCodeRight': 'MASM / КОД ЭТОЙ ИГРЫ', 'presCodeCaption': 'ОДНА ЗАДАЧА — ДВА ЯЗЫКА.', 'presCodeNote': 'Рендер, управление и игры — x86 ASM.\n' 'C++ слева показан только для сравнения.', 'presCpp0': '// Clear the framebuffer', 'presCpp1': 'void clearFrame() {', 'presCpp2': ' for (int i = 0;', 'presCpp3': ' i < 640 * 480; ++i) {', 'presCpp4': ' screenBuffer[i] = 0x050809;', 'presCpp5': ' }', 'presCpp6': '}', 'presAsm0': '; startup_sequence.inc', 'presAsm1': 'lea edi, screenBuffer', 'presAsm2': 'mov eax, 00050809h', 'presAsm3': 'mov ecx, SCREEN_SIZE', 'presAsm4': 'rep stosd', 'presAsm5': '; 640 * 480 pixels', 'presAsm6': '; Native x86 / Win32', 'welcomeHeader': 'ASSEMBLER CASINO', 'welcomeTag': 'LOCAL SESSION / SYSTEM BRIEFING', 'welcomeBody': '> ВЕРСИЯ 4.0 / WINDOWS x86\n\n' 'Добро пожаловать в Assembler Casino.\n' 'Казино с собственным 2.5D-движком\n' 'на ассемблере MASM32.\n\n' 'Внутри: карточные игры, автоматы,\n' 'боулинг, бильярд, секреты и поход в Ад.\n\n' 'WASD — движение. Мышь — осмотр.\n' 'E — взаимодействие. ESC — пауза.\n' 'Прогресс сохраняется в вашем профиле.', 'welcomeTypeHint': 'ENTER: ПОКАЗАТЬ ТЕКСТ ЦЕЛИКОМ', 'welcomeDoneHint': 'ENTER / ESC: ЗАКРЫТЬ И НАЧАТЬ ИГРУ', 'welcomeButton': 'ВОЙТИ В ИГРУ', } TEXT = {name:text.replace('\u2014','-') for name,text in TEXT.items()} def main(): lines = ['; Generated by tools/generators/make_presentation_text.py. CP1251 bytes.', '.data'] for name, text in TEXT.items(): data = text.encode('cp1251') + b'\0' for offset in range(0,len(data),32): prefix = f'{name} db ' if offset == 0 else ' db ' lines.append(prefix + ','.join(map(str, data[offset:offset+32]))) lines.append(f'{name}End label byte') lines.append('.code') (ROOT/'src_graphics/presentation_text.inc').write_bytes(('\n'.join(lines)+'\n').encode('ascii')) if __name__ == '__main__': main()