Просмотр полной версии : Загрузка вставка экрана заставки *.scr перед самой игрой
romancha
16.01.2019, 15:44
Всем доброго дня! Подскажите как реализовать загрузку экрана заставки перед самой игрой? (вроде бы ранее было все просто, эдак во времена загрузки с магнитофона:v2_dizzy_roll:). Формат файла экрана *.scr (6912 кб). Компилирую игру кросс-ассемблером SjAsmPlus в образ TRD. Спасибо!
romancha
16.01.2019, 16:00
load"filename"code16384?
ммм все правильно, но загружать не планирую с кассеты) надо как то скомпилить в образ дискеты TRD
RANDOMIZE USER 15619 : REM : LOAD "filename" CODE 16384 , 6912 без пробелов и можно без 6912
Так кодовый блок самой игры как-то получается загрузить? Здесь так-же.
randomize usr 15619:rem:load"filename"code16384 (load"filename"screen$ в tr-dos не работает!).
romancha
16.01.2019, 16:31
Так кодовый блок самой игры как-то получается загрузить? Здесь так-же.
randomize usr 15619:rem:load"filename"code16384 (load"filename"screen$ в tr-dos не работает!).
Я так понимаю, в загрузчик добавить ниже выделено красным?
; этот модуль содержит бэйск-загрузчик
; поскольку SjAsm не умеет компилировать текст на бэйсике в файл, понятный ZX Spectrum,
; придется определять содержимое этого файла побайтно директивой defb (db)
MODULE boot
; коды токенов бэйсика
RANDOMIZE EQU #0f9
USR EQU #0c0
REM EQU #0ea
LOAD EQU #0ef
CODE EQU #0af
CLEAR EQU #0fd
NUMERIC EQU #0e ; символ, оределяющий 5-юайтное представление числа
ENTER EQU #0d ; код символа конца строки
TRD_ENTRY EQU #3d03 ; адрес точки входа в ПЗУ TR-DOS (15619)
; далее формируется такая бэйсик-программа (в квадратных скобках - реальные значения числовых констант, записываемых в
; 5-байтное представление
; 1 CLEAR 0 [CodeStart - 1]: RANDOMIZE USR 0 [15619]: REM : LOAD "<TRDosFileName>" CODE
; 2 load"filename"code16384
; 3 RANDOMIZE USR 0 [CodeStart]
Basic:
DB #00, #01 ; номер строки
DW EndLine1 - Line1 ; длина строки
Line1:
DB CLEAR, "0", NUMERIC, #00, #00, low (CodeStart - 1), high (CodeStart - 1), #00, ":" ; текст строки 1
DB RANDOMIZE, USR, "0", NUMERIC, #00, #00, low TRD_ENTRY, high TRD_ENTRY, #00, ":"
DB REM, ":"
DB LOAD, """
DB TRDOSFileName
DB """, CODE, ENTER
EndLine1: ; номер строки
DB #00, #02 ; длина строки
DW EndLine2 - Line2
Line2:
DB RANDOMIZE, USR, "0" ; текст строки 2
DB NUMERIC, #00, #00, low CodeStart, high CodeStart, #00, ENTER
EndLine2:
EndBasic:
ENDMODULE
влоб, на ужасме у мну всегда так
;================================
org 16384
screens: incbin "podlodkafin.scr"
;================================
более интереснее , грузим упакованный экранный файл пофиг куда, и расжимаем в экранную область. Viola
ну да, ето для случая, если не подгружать с диска.
romancha, только randomize usr 15619:rem: всё-таки надо поставить. И картинку лучше грузить до кодового блока. И уж для полного счастья полезно перез запуском кодового блока сделать ожидание нажатия любой клавиши, чтобы успеть насладиться заставкой:
1 CLEAR [CodeStart - 1]: RANDOMIZE USR [15619]: REM : LOAD "заставка" CODE 16384
2 RANDOMIZE USR [15619]: REM : load "код" code
3 pause 0: RANDOMIZE USR [CodeStart]
Хорошим тоном считается компрессия заставки (и кодов!), соответственно:
1 CLEAR [CodeStart - 1]: RANDOMIZE USR [15619]: REM : LOAD "заставка" CODE
2 RANDOMIZE USR [адрес запуска распаковки заставки] + USR [15619]: REM : load "код" code
3 pause 0: RANDOMIZE USR 0 [CodeStart]
romancha
17.01.2019, 09:53
Вроде бы все понятно, и все равно запутался. Прошу разжевать, попытки прописать LOAD "2.scr" CODE 16384 в бэйсик загрузчик безуспешны) Имеется главный файл проекта Sample.a80, Code1.a80 - сама игра, 2.scr - экран заставка (лежит в этой же директории), бэйсик загрузчик boot.a80
Sample.a80
; главный файл проекта - именно он отправл¤етс¤ на компил¤цию ассемблером
DEVICE ZXSPECTRUM48 ; определ¤ет модель пам¤ти
MODULE Sample ; главный модуль называетс¤ Sample
; несколько констант, подставл¤ющихс¤ вместо их имен прикомпил¤ции
DEFINE DiskName "Sample.trd" ; им¤ образа диска, получающегос¤ прикомпил¤ции (этот файл будет запускатьс¤ bat-ником start.bat)
DEFINE BasicFileName "boot.B" ; им¤ бейсик-файла программы на образе дискеты (boot.B, чтобы запускалс¤ автоматически)
DEFINE CodeFileName "sample.C" ; им¤ кодового файла на образе дискеты
DEFINE TRDOSFileName "sample" ; им¤ кодового файла без расширени¤ (дл¤ вставки в бэйсик-загрузчик)
DEFINE CodeStart 24576 ; адрес компил¤ции (и запуска) кодового файла
EMPTYTRD DiskName ; создание (или затирание существующего) пустого образа дискеты
ORG #5d3b ; это адрес, с которого начинаетс¤ бэйсик-программа при подключенном TR_DOS
INCLUDE "boot.a80" ; включаем сюда текст модул¤ boot.a80 - текста бейсик-программы
SAVETRD DiskName, BasicFileName, boot.Basic, boot.EndBasic - boot.Basic ; запись бейсик-программы на образ дискеты
ORG CodeStart ; компил¤ци¤ кодового файла
INCLUDE "Code1.a80" ; включение текста модул¤ Code.a80 дл¤ его компил¤ции с адреса CodeStart (определ¤етс¤ директивой ORG)
CodeEnd: ; конец кода
SAVETRD DiskName, CodeFileName, CodeStart, CodeEnd - CodeStart ; запись на образ дискеты файла sample.C с откомпилированным кодом
ENDMODULE
boot.a80
; этот модуль содержит бэйск-загрузчик
; поскольку SjAsm не умеет компилировать текст на бэйсике в файл, понятный ZX Spectrum,
; придется определять содержимое этого файла побайтно директивой defb (db)
MODULE boot
; коды токенов бэйсика
RANDOMIZE EQU #0f9
USR EQU #0c0
REM EQU #0ea
LOAD EQU #0ef
CODE EQU #0af
CLEAR EQU #0fd
NUMERIC EQU #0e ; символ, оределяющий 5-юайтное представление числа
ENTER EQU #0d ; код символа конца строки
PAUSE EQU #0f2
TRD_ENTRY EQU #3d03 ; адрес точки входа в ПЗУ TR-DOS (15619)
; далее формируется такая бэйсик-программа (в квадратных скобках - реальные значения числовых констант, записываемых в
; 5-байтное представление
; 1 CLEAR 0 [CodeStart - 1]: RANDOMIZE USR 0 [15619]: REM : LOAD "<TRDosFileName>" CODE
; 2 RANDOMIZE USR 0 [CodeStart]
Basic:
DB #00, #01 ; номер строки
DW EndLine1 - Line1 ; длина строки
Line1:
DB CLEAR, "0", NUMERIC, #00, #00, low (CodeStart - 1), high (CodeStart - 1), #00, ":" ; текст строки 1
DB RANDOMIZE, USR, "0", NUMERIC, #00, #00, low TRD_ENTRY, high TRD_ENTRY, #00, ":"
DB REM, ":"
DB LOAD, """
DB TRDOSFileName
DB """, CODE, ENTER
EndLine1: ; номер строки
DB #00, #02 ; длина строки
DW EndLine2 - Line2
Line2:
DB RANDOMIZE, USR, "0" ; текст строки 2
DB NUMERIC, #00, #00, low CodeStart, high CodeStart, #00, ENTER
EndLine2:
EndBasic:
ENDMODULE
Заранее Благодарю!;)
Прошу разжевать
Как то у тебя сложно с басик-загрузчиком. По идее в него добавить одну строку с загрузкой картинки , и все.
ну вот пример моего *вно-загрузчика
http://s1.micp.ru/7o49N.jpg
смотрим 100 и 110 строку.
100 - грузит картинку, 110 - сам код. Все.
а, ну да, 120 - запускает его))
дальше там по кругу, картинка-код. Куда проще.
попытки прописать LOAD "2.scr" CODE 16384 в бэйсик загрузчик безуспешны
думаю на имени файла и спотыкаеЦЦа твоя безуспешная попытка :))
romancha
17.01.2019, 10:42
Как то у тебя сложно с басик-загрузчиком. По идее в него добавить одну строку с загрузкой картинки , и все.
ну вот пример моего *вно-загрузчика
http://s1.micp.ru/7o49N.jpg
смотрим 100 и 110 строку.
100 - грузит картинку, 110 - сам код. Все.
а, ну да, 120 - запускает его))
дальше там по кругу, картинка-код. Куда проще.
Да вообще тупняк, на физическом спеке все понятно. Но на эмуляторе как??? Спектакулятор то как увидит файл что запускать,он ж к в директорию не полезет? Как все собрать во едино скомпилировать игру и картинку + загрузчик и запихнуть это в образ дискеты, или все в один TAP, недогоняю....
Зачем столько извратов? удобнее файлы грузить через #3d13, о5 же можно и в моноблок собрать.
Спектакулятор то как увидит файл что запускать,он ж к в директорию не полезет? Как все собрать во едино скомпилировать игру и картинку + загрузчик и запихнуть это в образ дискеты, или все в один TAP
в ТАР то это и само впихнется. а в образ надо впихивать как минимум три файла:
1- басик-файл-загрузчик
2- код скрина
3 -код самой проги.
или проблема в том, чтобы басик добавитЬ в ТРД ?))))) и плотно утрамбовать.
ну я добЫвляю по факту, ручками
romancha
17.01.2019, 11:12
дальше в поисках правды... пишу на ассемблере, не в эмуляторе!, текстовый редактор ConTEXT. Вот даже если в TAP запихнуть, каким образом? извиняюсь, но вообще не пойму. Например, написал программку на ConText, скомпилировал SjAsm-ом, по примеру могу только в TRD , и все а далее темнота((((
в ужасме дописываем, фконце,, что компилить в ТАР. или во все сразу, и в TRD и в .SNA
Не?
а5, пример
END:
savesna "konetc.sna" ,start
savetap "konetc.tap" ,start
; savebin "KONETC1.C" ,start,END-start
про .TAPки здесь (https://zx-pk.ru/threads/447-sjasmplus-z80-kross-assembler.html?p=914142&viewfull=1#post914142). Только надо разбираться и думать.
- - - Добавлено - - -
скомпилировал SjAsm-ом, по примеру могу только в TRD , и все а далее темнота((((
выкладывай материал, надо глянуть.
romancha
17.01.2019, 12:00
про .TAPки здесь (https://zx-pk.ru/threads/447-sjasmplus-z80-kross-assembler.html?p=914142&viewfull=1#post914142). Только надо разбираться и думать.
- - - Добавлено - - -
выкладывай материал, надо глянуть.
67696
Sample.7z
так-с, проблема была с 2.scr. файла нет на диске, не сохраняется из boot.
- - - Добавлено - - -
device zxspectrum128
ORG #4000
incbin "2.scr"
begin
end
MODULE boot
Basic:
db #00,#01;номер строки
DW EndLine1 - Line1
Line1:
db $F9 ; randomize
db $C0 ; usr
db 176 ; val
db 34 ; "
db "15619"
db 34 ; "
db ":" ; :
db 234 ; rem
db ":" ; :
db 239 ; load
db 34 ; "
db "2_scr"
db 34 ; "
db 175 ; code
db 176 ; val
db 34 ; "
db "16384"
db 34 ; "
db #0D
EndLine1:
EndBasic:
ENDMODULE
EMPTYTRD "pic.trd" ;create empty TRD image
SAVETRD "pic.trd", "boot.B", boot.Basic, boot.EndBasic - boot.Basic
SAVETRD "pic.trd","2_scr.C",$4000,$1B00
Примерно так. А вообще это изврат писать Бейсик побайтно, если есть заготовка. Удобнее получить Бейсик на диске, вытащить файл как Hobeta и добавлять утилкой на образ. Или каким-то шаманством.
romancha
17.01.2019, 13:19
так-с, проблема была с 2.scr. файла нет на диске, не сохраняется из boot.
- - - Добавлено - - -
device zxspectrum128
ORG #4000
incbin "2.scr"
begin
end
MODULE boot
Basic:
db #00,#01;номер строки
DW EndLine1 - Line1
Line1:
db $F9 ; randomize
db $C0 ; usr
db 176 ; val
db 34 ; "
db "15619"
db 34 ; "
db ":" ; :
db 234 ; rem
db ":" ; :
db 239 ; load
db 34 ; "
db "2_scr"
db 34 ; "
db 175 ; code
db 176 ; val
db 34 ; "
db "16384"
db 34 ; "
db #0D
EndLine1:
EndBasic:
ENDMODULE
EMPTYTRD "pic.trd" ;create empty TRD image
SAVETRD "pic.trd", "boot.B", boot.Basic, boot.EndBasic - boot.Basic
SAVETRD "pic.trd","2_scr.C",$4000,$1B00
Примерно так. А вообще это изврат писать Бейсик побайтно, если есть заготовка. Удобнее получить Бейсик на диске, вытащить файл как Hobeta и добавлять утилкой на образ. Или каким-то шаманством.
Согласен, что изврат. Попробую конечно ваше примерчик.Буду рад если подробнее распишите "...Удобнее получить Бейсик на диске, вытащить файл как Hobeta и добавлять утилкой на образ. Или каким-то шаманством.":v2_dizzy_punk:
- - - Добавлено - - -
в ужасме дописываем, фконце,, что компилить в ТАР. или во все сразу, и в TRD и в .SNA
Не?
а5, пример
END:
savesna "konetc.sna" ,start
savetap "konetc.tap" ,start
; savebin "KONETC1.C" ,start,END-start
Спасибо, как вариант, буду пробовать!
Буду рад если подробнее распишите "...Удобнее получить Бейсик на диске, вытащить файл как Hobeta и добавлять утилкой на образ. Или каким-то шаманством.
zxeditor (http://www.zx-modules.de/zxeditor/zxeditor.html) - Бейсик-редактор, позволяет сохранить .trd. из .trd можно вытпщить готовый файл с помощью Far manager с плагинами.
последний шаг - вызов hob2trd из ужасма - SHELLEXEC описан в документации.
как-то так.
:) AC_TP.sna (https://yadi.sk/d/nr6_-b27iXMJPA)
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot