PDA

Просмотр полной версии : Загрузка вставка экрана заставки *.scr перед самой игрой



romancha
16.01.2019, 15:44
Всем доброго дня! Подскажите как реализовать загрузку экрана заставки перед самой игрой? (вроде бы ранее было все просто, эдак во времена загрузки с магнитофона:v2_dizzy_roll:). Формат файла экрана *.scr (6912 кб). Компилирую игру кросс-ассемблером SjAsmPlus в образ TRD. Спасибо!

creator
16.01.2019, 15:52
load"filename"code16384?

romancha
16.01.2019, 16:00
load"filename"code16384?

ммм все правильно, но загружать не планирую с кассеты) надо как то скомпилить в образ дискеты TRD

alvis
16.01.2019, 16:08
RANDOMIZE USER 15619 : REM : LOAD "filename" CODE 16384 , 6912 без пробелов и можно без 6912

creator
16.01.2019, 16:09
Так кодовый блок самой игры как-то получается загрузить? Здесь так-же.
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

zebest
16.01.2019, 16:40
влоб, на ужасме у мну всегда так


;================================
org 16384
screens: incbin "podlodkafin.scr"
;================================

более интереснее , грузим упакованный экранный файл пофиг куда, и расжимаем в экранную область. Viola
ну да, ето для случая, если не подгружать с диска.

creator
16.01.2019, 16:50
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


Заранее Благодарю!;)

zebest
17.01.2019, 10:26
Прошу разжевать
Как то у тебя сложно с басик-загрузчиком. По идее в него добавить одну строку с загрузкой картинки , и все.
ну вот пример моего *вно-загрузчика
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, недогоняю....

Shiny
17.01.2019, 10:50
Зачем столько извратов? удобнее файлы грузить через #3d13, о5 же можно и в моноблок собрать.

zebest
17.01.2019, 11:03
Спектакулятор то как увидит файл что запускать,он ж к в директорию не полезет? Как все собрать во едино скомпилировать игру и картинку + загрузчик и запихнуть это в образ дискеты, или все в один TAP
в ТАР то это и само впихнется. а в образ надо впихивать как минимум три файла:
1- басик-файл-загрузчик
2- код скрина
3 -код самой проги.
или проблема в том, чтобы басик добавитЬ в ТРД ?))))) и плотно утрамбовать.
ну я добЫвляю по факту, ручками

romancha
17.01.2019, 11:12
дальше в поисках правды... пишу на ассемблере, не в эмуляторе!, текстовый редактор ConTEXT. Вот даже если в TAP запихнуть, каким образом? извиняюсь, но вообще не пойму. Например, написал программку на ConText, скомпилировал SjAsm-ом, по примеру могу только в TRD , и все а далее темнота((((

zebest
17.01.2019, 11:15
в ужасме дописываем, фконце,, что компилить в ТАР. или во все сразу, и в TRD и в .SNA
Не?
а5, пример

END:
savesna "konetc.sna" ,start
savetap "konetc.tap" ,start
; savebin "KONETC1.C" ,start,END-start

Shiny
17.01.2019, 11:31
про .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

Shiny
17.01.2019, 13:06
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

Спасибо, как вариант, буду пробовать!

Shiny
17.01.2019, 13:47
Буду рад если подробнее распишите "...Удобнее получить Бейсик на диске, вытащить файл как Hobeta и добавлять утилкой на образ. Или каким-то шаманством.

zxeditor (http://www.zx-modules.de/zxeditor/zxeditor.html) - Бейсик-редактор, позволяет сохранить .trd. из .trd можно вытпщить готовый файл с помощью Far manager с плагинами.
последний шаг - вызов hob2trd из ужасма - SHELLEXEC описан в документации.

как-то так.

Destr
19.01.2019, 01:07
:) AC_TP.sna (https://yadi.sk/d/nr6_-b27iXMJPA)