Четверг, 10.10.2024, 08:01
Вы вошли как Гость | Группа "Гости" | RSS

.
 
 
Главная Регистрация Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Nemesis_c, Smoke, r57shell  
Zombie ate my neighbors
Nemesis_cДата: Пятница, 20.09.2013, 23:32 | Сообщение # 1


 
Сообщений: 1148
Статус: Offline
 

Формат уровней

Указатели на настройки уровней:
ROM:0000708E lsl.w #2,d0
ROM:00007090 lea (off_296B0).l,a0 ; ссылки на конфиги уровней
ROM:00007096 move.l (a0,d0.w),($FFF9CA).l
ROM:0000709E rts

Шапка настроек уровня (на примере первого уровня):
ROM:0002A8E8 dc.l unk_BB5A2 ; карты таилов каждой плиты (плита = 8*8 таилов)
ROM:0002A8EC dc.l word_B5EEE ; (сжат sub_B00) карта уровня - блоки идентичны снесовским
ROM:0002A8F0 dc.l unk_E36A2 ; (сжат sub_B00) коллизии - в преводе "столкновения" (проходимость короче)
ROM:0002A8F4 dc.l unk_9E07A ; (сжат sub_B00) таилы уровня
ROM:0002A8F8 dc.l word_E40AA ; статичные палитры уровня
ROM:0002A8FC dc.l dword_0 ; a pointer to the sprite palette for the level
ROM:0002A900 dc.l word_2A972 ; возобновляемые враги (перерождающиеся после убийства)
ROM:0002A904 dc.l word_2AA1C ; жертвы и не возобновляемые враги
ROM:0002A908 dc.l word_2AA96 ; предметы
ROM:0002A90C dc.w $16 ; размер карты по Х
ROM:0002A90E dc.w $D ; размер карты по Y
ROM:0002A910 dc.w $6D ; хер знает 1
ROM:0002A912 dc.w $1FF ; хер знает 2 - всегда 1FF
ROM:0002A914 dc.w $15E ; координата Х - игрок 1
ROM:0002A916 dc.w $249 ; координата Y - игрок 1
ROM:0002A918 dc.w $15E ; координата Х - игрок 2
ROM:0002A91A dc.w $272 ; координата Y - игрок 2
ROM:0002A91C dc.w $2C ; музыка на уровне
ROM:0002A91E dc.l unk_2A92E ; текст перед уровнем - первая страница
ROM:0002A922 dc.l unk_2A94D ; текст перед уровнем - вторая страница
ROM:0002A926 dc.l word_2A96C ; настройка доступных бонусов на уровень

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

ROM:0002E88C dc.l sub_31DC   ; сценарий смены палитры день/ночь (можно просто не писать)
ROM:0002E890 dc.l word_E44DA ; группа палитр для смены согласно сценария (можно просто не писать)

ROM:0002E894 dc.l sub_261E ; что-то с анимацией пола - пока не разобрал (можно не писать)
ROM:0002E898 dc.l off_2E8A8 ; что-то с анимацией пола  - пока не разобрал (можно не писать)

ROM:0002E89C dc.l loc_220E2 ; босс (доктор тонгу (паук затем голова - проверка в коде))  (можно не писать)
ROM:0002E8A0 dc.w $C8 ; координата Х босса  (можно не писать)
ROM:0002E8A2 dc.w $12C; координата У босса  (можно не писать)

ROM:0002A92A dc.l dword_0 ; конец шапки

Карты таилов плит:
всего на любой уровень дается 256 плит
каждая плита размером 8 на 8 таилов
карты таилов идут подряд начиная с нулевой плиты
на отрисовку плит дается 512 таилов, грузятся c $0000
пример:
первая плита (00- дверь) - первые 64 ворда
для редактирования уровней существующих локаций следует только подменять адреса в этой строке на уже готовые настройки блоков.
Варианты настроек карт таилов плит для существующих уровней:
$BB5A2 ;город/лес
$D36A2 ;магазин/завод
$C35A2 ;пирамида/пляж
$CB5A2 ;замок
$DB6A2 ;офис

Коллизии:
логики никакой, кроме того что размер в 4 раза больше чем плит на уровне, то есть на настройку одной плиты идет один лонг видимо...
в любом случае для редактирования уровней существующих локаций следует только подменять адреса в этой строке на уже готовые настройки плит.
в случае если кто-то решит добавить новую графику - можно просто графику подогнать под настройки коллизий любого уровня.
Варианты настроек коллизий плит для уровней:
$E36A2 ; коллизии - город/лес
$E3A9C ; коллизии - магазин/завод
$E37F2 ; коллизии - пирамида/пляж
$E3950 ; коллизии - замок
$E3BF0 ; коллизии - офис

Таилы уровня:
для редактирования уровней существующей графикой нужно только подменять адреса.
Всего в игре 5 блоков таилов уровней:
$9E07A ; таилы город/лес
$A514C ; таилы магазин/завод
$A05B8 ; таилы пирамида/пляж
$A2BA6 ; таилы замок
$A7588 ; таилы офис

Палитры уровня:
в начале перед палитрами стоит размер палитр $0040 или х.з. короче..
после $0040 идут 4 не сжатые палитры.

Возобновляемые враги:
Каждый возобновляемый враг имеет следующие параметры:
Код
ROM:0002A972 dc.w $32 ; радиус респауна
ROM:0002A974 dc.w $5C ; координата Х
ROM:0002A976 dc.w $8B ; координата У
ROM:0002A978 dc.w 0 ; задержка между респауном
ROM:0002A97A dc.l sub_15296 ; ссылка на код врага (обычный зомби)

Типы возобновляемых врагов:
$15296 ; Обычный зомби
$1540C ; Быстрый зомби
$15872 ; Мумия
$16C86 ; Клон$16d6c - быстрый клон
$162BE ; Марсианин 1
$16346 ; Марсианин 2
$1614E ; Оборотень
$1861A ; Чаки
$18B92 ; Бегающий огонь
$19C5E ; синий муравей
$19E10 ; синий муравей 2
$174B6 ; Рекбист
$17A8E ; Слизень
$1B1A8 ; Гриб с ногами
$1CF32 ; Подводный монстр 1
$1CE4A - подводный монстр 2 агрессивный
$1B698 ; Щупальце (Тентакль)
$227B8 - паучок

После всех врагов слово нулей - типа конец 0000.

Жертвы/соседи и не возобновляемые враги:
Каждая жертва или невозобновляемый враг имеют следующие параметры:
Код
ROM:0002AA40 dc.w $BE ; координата по Х
ROM:0002AA42 dc.w $1F7 ; координата по У
ROM:0002AA44 dc.w 0
ROM:0002AA46 dc.w 4 ; номер жертвы от 1 до A либо 0 если это не жертва а не возобновляемый враг
ROM:0002AA48 dc.l loc_129EC ; ссылка на код жертвы/не возобновляемого врага (девка из группы поддержки)

Типы жертв:
$11CF0 ; Чувак с сосисками
$11E44 ; Младенец
$11F7C ; Девка на батуте
$12164 ; Вояка
$1236C ; Собака
$12550 ; Сын доктора тонгу
$12668 ; Училка
$128EE ; Археолог
$12748 ; чувак в бассейне
$129EC ; Девка из группы поддержки
$12B7E ; Туристы
После десяти жертв в этом же формате идут не возобновляемые враги - их номер жертвы всегда ноль 0.

Типы не возобновляемых врагов:
$1E91C ; Дракула
$1ABB6 ; Маньяк с бензопилой
$1DB98 ; Франкенштейн
$1ADCA - статичный огонь не возобновляемый
$1f1cc - растение 1
$1f1d6 - растение 2 усилено
$22BFE ; Исчезающий Dr. Tongue
$1F908 ; Гигантская голова (уровень в офисе разработчиков с титрами)
$19D34 - муравей не возобновляемый, очень быстрый
После всех жертв или жертв/не возобновляемых врагов идет слово 0000.

Предметы:
Каждый предмет имеет следующие параметры:
ROM:0002AA96 dc.w $133 ; координата Х
ROM:0002AA98 dc.w $87 ; координата У
ROM:0002AA9A dc.w 0 ; предмет (0 = водяной пистолет)

#$0000 ; Водяной пистолет
#$0002 ; Огнетушитель
#$0004 ; Марсианский пистолет
#$0006 ; Газонокосилка
#$0008 ; Ключ
#$000A ; Ботинки
#$000C ; Зелье монстра
#$000E ; Зелье призрака
#$0010 ; Зелье рандом
#$0012 ; Зелье желтое - не используется
#$0014 ; Гамбургер
#$0016 ; Содовая
#$0018 ; Помидоры
#$001A ; Мороженное
#$001C ; Бананы - не используется
#$001E ; Аптечка
#$0020 ; Тарелки
#$0022 ; Столвое серебро
#$0024 ; Крест
#$0026 ; Базука
#$0028 ; Мячи для рекби
#$002A ; Огнемет ??? / банка с краской
#$002C ; Ящик пандоры
#$002E ; Ключ с черепом
#$0030 ; Клоуны
#$0032 ; Куча ключей (используется толлько при смерти игрока)
#$0034 ; Бонусный уровень
#$0036 ; 1up
#$0038 ; Монеты
#$003A ; Купюры
После всех предметов идет слово 0000 и ниипет.

Боссы:
в шапке пишется сначала указатель на код босса, затем координаты босса Х и У

;$2142a - огромный младенец босс
;$220E2 - доктор тонгу босс (паук или голова - проверка в коде)
;$2012a - нло босс
;$23e14 - земляной червь босс (медленный червь)
;$23e1e - земляной червь + 2 оборотня босс (быстрый агрессивный червь, приследует игрока)

Хер знает 2:
всегда равно 01FF

Музыка на уровнях:
#$02 = Evening of the Undead (02)
#$05 = Title Screen
#$28 = Pyramid of Fear ()
#$2A = Terror in Aisle Five ()
#$2C = Zombie Panic (01)
#$2D = Chainsaw Mayhem ()
#$2E = Mars Needs Cheerleaders ()
#$2F = Dr. Tongue's Castle
#$06 = Mushroom men
#$03 = The son of dr Tongue
#$01 = неиспользуемая мелодия - ремикс на тему Zombie Panic
#$17 = мелодия level complate
#$18 = мелодия при смерти

Голоса:
#$07 = no [nouph]
#$08 = выстрел из базуки
#$09 = ouch
#$0a = бензопила
#$0b = крик жертвы
#$0c = му-ха-ха-ха
#$0d = вой оборотня
#$0e = рев игрока-монстра при эффекте берсерка
#$11 = ха-ха-ха младенца мутанта
#$12 = туруру XD ящик пандоры

Текст перед уровнем:
текст имеет следующие параметры:

unk_2A92E: ; первая страница текста
dc.b 3 ; координата по х
dc.b 4 ; координата по у
dc.b 2 ; палитра (смотри ниже)
dc.b $61 ; a ; R
dc.b $5B ; [ ; e
dc.b $53 ; S ; s
dc.b $43 ; C ; c
dc.b $55 ; U ; u
dc.b $63 ; c ; e
dc.b $7D ; } ; T
dc.b $22 ; " ; h
dc.b $62 ; b ; e
dc.b $FF ; end
dc.b 4
dc.b $B
dc.b 2
dc.b $4E ; N ; N
dc.b $56 ; V ; ei
dc.b $47 ; G ; g
dc.b $48 ; H ; h
dc.b $42 ; B ; b
dc.b $65 ; e ; o
dc.b $61 ; a ; r
dc.b $5C ; \ ; s
dc.b $FF ; end
dc.b $D
dc.b $12
dc.b 2
dc.b $70 ; p ; i
dc.b $4E ; N ; n
dc.b 0 ; конец страницы

unk_2A94D: ; вторая страница текста
dc.b 9
dc.b 4
dc.b 2
dc.b $6C ; l ; L
dc.b $6D ; m ; e
dc.b $75 ; u ; v
dc.b $76 ; v ; e
dc.b $64 ; d ; l
dc.b $7D ; }
dc.b $31 ; 1 ; 1
dc.b $FF ; end
dc.b 3
dc.b $C
dc.b 2
dc.b $5A ; Z ; Z
dc.b $65 ; e ; o
dc.b $4D ; M ; m
dc.b $42 ; B ; b
dc.b $70 ; p ; i
dc.b $63 ; c ; e
dc.b $FF ; end
dc.b $D
dc.b $12
dc.b 2
dc.b $50 ; P ; P
dc.b $41 ; A ; a
dc.b $4E ; N ; n
dc.b $70 ; p ; i
dc.b $43 ; C ; c
dc.b 0 ; конец страницы
dc.b 0

00 = синие буквы
02 = зеленые буквы
04 = оранжевые буквы
06 = красные буквы

;============================
КОПИПАСТА ИЗ СНЕСОВСКОГО ОПИСАНИЯ ТОГО ЧТО Я НЕ РАЗОБРАЛ
структура схожа что в снес что на сеге

Хер знает 1:
Это значение всегда соответствует таилам этого уровня:
0057 = Office
0059 = Pyramid
0069 = Mall
0070 = Grass/Castle

Настройка доступных бонусов на уровень:
All of the bonuses available in the level are listed. They are 2 bytes each.
НОМЕРА НЕ ПРАВИЛЬНЫЕ - НЕ ПРОВЕРЯЛ
0004 = All Victims Saved
0006 = Ten Cheerleader
0008 = Massive Destruction
000A = Pass Completion
000C = Weed Cutting
000E = No Bazooka Fired
0010 = Monster Frozen
0012 = Extermination
0014 = Chainsaw Begone
0016 = Fish Fry Bonus
0018 = Frankenstein Destroyed
001A = Martian Bubbled
001C = Alien Invasion Repulsed
001E = Vampire Crossed Out
0020 = Secret Bonus
После всех бонусов идет слово #$0000.

Boss monsters:
Данные босса указаны непосредственно после шапки
Настройки любого босса идут в таком формате:
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
--+--------------------------------------------------
00|CODEPOINTER EXTRADATA--
CODEPOINTER - a pointer to the monsters code
$82873C = UFO
$829569 = Giant Baby
$82A8BB = Desert Snakeoid
$82A8C3 = Grass Snakeoid
$82AB95 = Palette fade
$82D7CF = Unknown
$83AD33 = Giant Spider
EXTRADATA - 4 bytes of extra data that can be used by the monster.
For all standard monsters this is 2 bytes for the x position followed by 2 bytes for the y position,
but for the palette fade sprite, these 4 bytes specify a pointer to
somewhere inside of the level file to this data:

|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
--+--------------------------------------------------
00|NEWBGPALETT NEWSPRITEPL

NEWBGPALETT - A pointer to the background palette to fade to
NEWSPRITEPL - A pointer to the sprite palette to fade to

После всех боссов в шапке должно быть двойное слово нулей 00000000.

Tileset Map16:
*Yaz0 - популярное для снес сжатие
This data is compressed using a compression method similar to Yaz0.
Once decompressed, this is the format:
Each tile gets 2 bytes. The first byte tells which graphics tile to use.
The second bytes individual bits set properties for the tile.
XY-PPP-G

X - Flip the tile horizontally
Y - Flip the tile vertically
P - The palette to use for the tile
G - Use the second graphics page (add 0x100 to the original graphics tile number)

Each full background tile is made of 64 of these. The tileset has 256 background tiles.

Addresses:

$9A:C000 = Castle
$9B:8000 = Grass
$9B:BCB5 = Pyramid/Beach
$9C:8000 = Office
$9C:B6EF = Mall

Background data:
This is just the numbers of the background tiles listed from left to right, top to bottom. Each tile is 2 bytes.
Collision data

There are 2 bytes for each graphics tile. The bits set properties of the tile. What each bit does is currently unknown.

Addresses:

$9B:F4D1 = Grass
$9B:F8D1 = Pyramid/Beach
$9C:EAAB = Castle
$9C:EEAB = Mall
$9C:F2AB = Office

Graphics data:
The graphics are stored in 4bpp planar format. There are 512 tiles per tileset.

Addresses:

$98:8000 = Grass
$98:C000 = Pyramid/Beach
$99:8000 = Castle
$99:C000 = Mall
$9A:8000 = Office

Palette data

Standard 0BBBBBGG GGGRRRRR color format. 128 colors are in the palette.

Addresses: $9E:xx76

8E = Grass
90 = Fall grass
91 = Snowy grass
92 = Night grass
94 = Pyramid
95 = Beach/Desert
96 = Dark beach
97 = Cave
98 = Castle
99 = Night castle
9A = Bright castle
9B = Dark castle
9C = Mall
9D = Dark mall
9E = Office
9F = Dark fire cave
A0 = Light office
A1 = Dark office
A2 = Fire cave
Sprite palette

Standard palette format. Is always $9E:8F76
Palette animation

This appears to point to code. I haven't yet tried to figure out how the code works.

Addresses:

$80A0AD = Castle
$80A0EF = Grass
$80A137 = Beach
$80A222 = Pyramid
$80A264 = Fire cave
;================================================================

$2c0a - воспроизвести звук???
$FFF91c - шапка уровня
Прикрепления: zombie_archives.lua (1.0 Kb)
 
r57shellДата: Суббота, 21.09.2013, 17:25 | Сообщение # 2


 
Сообщений: 632
Статус: Offline
 

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


Мальчик, девочка... какая в жопу разница..
 
  • Страница 1 из 1
  • 1
Поиск:


Select language:
English
French
German
Portuguese
Chinese
Nemesis_c, r57shell, Smoke, Lipetsk, GoodBye (aka vfiuchcikicshuusrch) & Segaman © 2024
Хостинг от uCoz