User Tag List

Показано с 1 по 10 из 60

Тема: Помогите перевести игры в TR-DOS

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    74
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Немного помощи по Ball Breaker:

    Отключив автостарт Бейсик-загрузчика, находим в нем такой кусок:

    Скрытый текст


    Код:
    5D81	DI	
    	LD	HL,(#5C53)
    	LD	DE,#005A
    	ADD	HL,DE
    	LD	DE,#5B00
    	PUSH	DE
    	LD	BC,#0106
    	LDIR	
    	JP	#5B00
    [свернуть]


    как с проверкой переменной начала Бейсик-программы 5C53, так и с точкой останова в 5B00 (или логически) можно выяснить, что далее с 5B00 будет выполняться кусок кода - загрузчик,- лежащий в Бейсик-файле сразу за этим куском выше, с 5D95. Предполагаемые изменения отмечены в тексте:

    Скрытый текст


    Код:
    5B00	POP	HL			; тот же адрес, куда перемещен код, #5B00
    	LD	DE,#004E
    	ADD	HL,DE			; HL указывает на данные о грузимых блоках
    	LD	E,(HL)
    	INC	HL
    	LD	D,(HL)			; стартовый адрес первого блока
    	INC	HL
    	LD	SP,#5C80		; стек слишком низко для DOS, еще ниже
    					; он снова перемещается, так что
    		 			; безболезненно поднимаем на #5E80
    					; т.к. блоки грузятся намного выше
    	PUSH	DE			;1 --- 1 --- этот кусок надо переделать
    	LD	E,(HL)			;1 достаточно старшего байта
    	INC	HL			;1 только помещаемого в B, т.к. грузить
    	LD	D,(HL)			;1 будем секторами, только для длины #416A
    	POP	IX			;2 выйдет #42 сектора. Старт-ад надо в HL,
    	PUSH	HL			;1 а не IX. Еще надо LD C,5 и LD DE,(#5CF4)
    	XOR	A			;1 это все не нужно, и даст нам место 
    	DEC	A			;1
    	SCF				;1
    	EX	AF,AF'			;1=11 байт
    	CALL	#056C			; --- 1 --- а вызывать надо будет #3D13
    	DI	
    	POP	HL
    	INC	HL			; хотя адрес-длина блока вынесены, и все
    	LD	E,(HL)			; похоже на подпрограмму, второй блок
    	INC	HL			; грузится уже этим местом программы
    	LD	D,(HL)
    	INC	HL
    	PUSH	DE			;1 --- 2 --- отсюда начнем переделку куска
    	LD	E,(HL)			;1 аналогично первому
    	INC	HL			;1
    	LD	D,(HL)			;1
    	POP	IX			;2
    	XOR	A			;1
    	DEC	A			;1
    	SCF				;1
    	EX	AF,AF'			;1=10 байт
    	CALL	#056C			; --- 2 ---
    	DI				; дальше все оставляем, код можно изменить
    	LD	DE,#004C		; так, чтоб даже данные старт-длины не
    	LD	HL,#5B00		; менять (судя по копирующей процедуре
    	ADD	HL,DE			; слева, они куда-то еще переносятся, 
    	LD	DE,#4000		; вдруг нужны в неизменном виде?
    	LD	A,#06			; :) хотя вряд ли)
    	LD	BC,#0020
    	LDIR	
    	INC	D
    	LD	E,#00
    	DEC	A
    	JR	NZ,$-#09
    	LD	SP,#401F
    	JP	#4200
    5B4C	NOP	
    	DEC	DE
    5B4E	JR	NZ,$+#80		;  но это данные, байты DB	#20, #7E, #6A, #41
    	LD	L,D
    	LD	B,C
    5B52	ADC	DD			; DB	#8A, #BF, #77, #40
    	CP	A
    	LD	(HL),A
    	LD	B,B
    [свернуть]


    Наши правки приводят к чему-то такому (изменения отмечены комментариями):

    Скрытый текст


    Код:
    5D95	POP	HL
    	LD	DE,#004E
    	ADD	HL,DE	
    	LD	E,(HL)
    	INC	HL
    	LD	D,(HL)
    	INC	HL
    	LD	SP,#5E80		; стек повыше для DOS
    	INC	HL			;1
    	LD	B,(HL)			;1
    	INC	B			;1
    	LD	C,#05			;2
    	PUSH	HL			;1
    	LD	HL,(#5CF4)		;3
    	XOR	A			;1
    	EX	DE,HL			;1=11 байт
    	CALL	#3D13			;
    	DI	
    	POP	HL
    	INC	HL
    	LD	E,(HL)
    	INC	HL
    	LD	D,(HL)
    	INC	HL
    	INC	HL			;1
    	LD	B,(HL)			;1
    	INC	B			;1
    	LD	C,#05			;2
    	LD	HL,(#5CF4)		;3
    	XOR	A			;1
    	EX	DE,HL			;1=10 байт
    	CALL	#3D13			;
    [свернуть]


    Теперь исправленный загрузчик можно сохранить с тем же LINE-автостартом, который мы убрали. Такой метод посекторной подгрузки, естественно, работает, когда подгружаемые файлы лежат за загрузчиком всегда в одинаковом заданном порядке.

    И все, что остается для получения красивой версии в едином файле - в каком-нибудь дисковом редакторе увеличить длину файла загрузчика в секторах, чтобы она была равна сумме длин в секторах всех трех файлов игры. Затем с этой дискеты можно скопировать только новый "длинный" Бейсик-файл, и кодовые блоки будут уже копироваться вместе с ним, "охваченные" его длиной. В то же время грузиться программа будет, как обычно, т.к. параметры старт-длина у Бейсик-файла не менялись. Теперь порядок файлов перепутать не удастся.

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

    ---------- Post added at 16:57 ---------- Previous post was at 16:55 ----------

    (тему действительно надо бы переместить в соответствующий раздел)
    Последний раз редактировалось TomCaT; 03.07.2010 в 18:10.
    Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
    Власть людей сильнее, чем люди у власти.
    Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)

    Скрытый текст

    Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
    Мы все немного режем по дереву, а потом собираем корабли в бутылках.
    Is it the same old story you are going to tell me
    or is it the old story telling me and you we are the same?
    http://www.sky.od.ua/~ptsk
    [свернуть]


Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Помогите перевести DSK в ROM
    от makler_ в разделе MSX
    Ответов: 0
    Последнее: 23.12.2009, 23:49
  2. Ответов: 6
    Последнее: 29.09.2008, 00:05
  3. Помогите с названием игры!
    от Mat1sha в разделе Игры
    Ответов: 4
    Последнее: 19.01.2008, 22:44
  4. Помогите перевести стихи (для пати)
    от newart в разделе Разный софт
    Ответов: 3
    Последнее: 28.02.2007, 00:56
  5. Помогите с названием игры!
    от Levit в разделе Игры
    Ответов: 29
    Последнее: 01.11.2006, 13:01

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •