User Tag List

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

Тема: Нужно Exolon code source

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

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

    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    еще пару коментариев на свежую голову

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

    и по теме.

    традиционно дизасм был в IDA, база в проекте
    там же тулзы которые использовал для визуализации графики.

    из исходников при желании можно получить полную копию оригинала
    я в этих в паре мест явно неиспользуемый код закоментил
    (правда потом в одном месте пришлось раскоменчивать, поломал скролл таблицы рекордов)

    синхронизации нет,
    прерывания ни используются
    AY эффекты играют - в основмном цикле несколько вызовов doPSG

    код не использует ПЗУ
    не, в одном месте он читает один байт чтобы поставить флаг ZX128
    а не, опять забыл про задержку
    Код:
    ; BC
    
    _delayLDIR:
    		push	bc
    		push	de
    		push	hl
    		ld	hl, 0
    		ld	de, 0
    		ldir
    		pop	hl
    		pop	de
    		pop	bc
    		ret
    ну и используем, например в основном цикле игры
    Код:
      		ld	bc, 500
      124: 		call	_delayLDIR
    из "оптимизаций по размеру"
    то что не явное

    куча данных используется только при построении уровня
    их можно держать сжатыми и разжимать по необходимости.
    zone_blocks, perl_level_enemy_tab, level data, FONTS
    это больше 10к

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

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

    в коде при выводе спрайтов увеличивают счётчик,
    и есть такой код (он выводит фейковые спрайты на экран если на экране их меньше заданного)

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

    Код:
    CompensateSprites8x8preshifted:
    
    		ld	a, (Sprites8x8_OnScreen_count)
    		cp	16
    		ret	nc
    		ld	b, a
    		ld	a, 16
    		sub	b
    		ld	b, a
    		ld	a, 6		; 6 - Boom5 - Empty?
    
    loc_9E92:
    		call	Sprite8x8_XOR_Preshifted
    		djnz	loc_9E92
    		ret
    
    ; ---------------------------------------------------------------------------
    Sprites8x8_OnScreen_count:db 0
    
    CompensateSprites16x16:
    
    		ld	a, (Sprites16x16_OnScreen_count)
    		cp	6
    		ret	nc
    
    		ld	b, a
    		ld	a, 6
    		sub	b
    		ld	b, a
    		if FIX_SPRITE16x16COM = 1
    		ld 	hl, SPR_COMP
    		else
     		ld	hl, byte_B101
    		endif
    
    		xor	a
    
    		if FIX_SPRITE16x16COM = 1
    		ld 	de,0
    		endif
    loc_9EA8:
    		call	Sprite16x16	; A sprId (00..45)
    					; D - Y	(0..192)?
    					; E - X	(0..255)
    					; HL - saveSpriteArea
    					;
    		djnz	loc_9EA8
    		ret
    
    ; ---------------------------------------------------------------------------
    Sprites16x16_OnScreen_count:db	0
    [свернуть]


    так CompensateSprites16x16 - вызывается
    но инкрементировать Sprites16x16_OnScreen_count - забыли


    вот "карта" памяти, по lst файлу
    основные блоки "данных"

    Код:
    4000	screen
    5800	attr
    
    5b00	over_player_tab
    5e00	ATTR_TABLE_COPY
    6100	no_walk_tab
    6400	bitSwapTab
    6500	Y2SCR_HI
    6600	Y2SCR_LO
    6700	scr_addr_8 (2x256)
    								-----	~3583
    6D60	code start
    
    71ED	highscore table
    750E 							-----   ~ 800
    
    7D4D	beeper music+code
    807D								----    ~ 816
    
    84FB	zone_blocks
    8DC2								----    ~2247
    
    A3D3    trajectory
    A4D5								-----   ~ 258
    
    A644    per_level_enemy_tab		        -----   ~ 351
    A7A3
    
    A92E	xMessages
    AB61								-----   ~ 563
    
    B0A8	sprite buffers
    B678								-----	~1488
    
    B678	PSG related code
    C79A								-----	~4386
    
    C79B	level data
    D886								-----	~4331
    
    D887	"FONTS"
    ECE6								-----	~5215
    
    ECE7	SPRITES
    FEB6								-----	~4559
    Последний раз редактировалось esl; 16.12.2014 в 12:41.

    Этот пользователь поблагодарил esl за это полезное сообщение:

    AzAtom(23.09.2025)

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

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

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

Похожие темы

  1. "Byte-01" CP/M code to BASIC code
    от Gelip в разделе Программирование
    Ответов: 13
    Последнее: 31.05.2021, 00:47
  2. Prince of Persia Source Code — Found!
    от jerri в разделе Apple
    Ответов: 25
    Последнее: 08.02.2017, 13:38
  3. BASIC + CODE in one file
    от VELESOFT в разделе Софт
    Ответов: 5
    Последнее: 01.05.2013, 00:48
  4. BOOT - need source code
    от VELESOFT в разделе Софт
    Ответов: 7
    Последнее: 28.04.2013, 20:27
  5. Dizzy 8 by Code Busters
    от Striker в разделе Игры
    Ответов: 17
    Последнее: 19.02.2007, 02:19

Ваши права

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