├── screen.png ├── screen2.png ├── screen3.png ├── Source ├── bin2tap ├── Gif │ ├── D0.gif │ ├── D1.gif │ ├── D2.gif │ ├── D3.gif │ ├── H0.gif │ ├── H1.gif │ ├── H2.gif │ ├── H3.gif │ ├── H4.gif │ ├── H5.gif │ ├── R0.gif │ ├── R1.gif │ ├── R2.gif │ ├── R3.gif │ ├── R4.gif │ ├── ES1.gif │ ├── ES2.gif │ ├── ES3.gif │ ├── ES4.gif │ ├── ESA1.gif │ ├── Flek.gif │ ├── H4m1.gif │ ├── H4m2.gif │ ├── H4m3.gif │ ├── H4m4.gif │ ├── I_bg.gif │ ├── K1m1.gif │ ├── K2m1.gif │ ├── K3m1.gif │ ├── K4m2.gif │ ├── Pd0.gif │ ├── Pd1.gif │ ├── Pd2.gif │ ├── Pd3.gif │ ├── Pdl1.gif │ ├── Pdl2.gif │ ├── Pdl3.gif │ ├── Pu0.gif │ ├── Pu1.gif │ ├── Pu2.gif │ ├── Pu3.gif │ ├── Pul1.gif │ ├── Pul2.gif │ ├── Pul3.gif │ ├── R1m1.gif │ ├── R2m1.gif │ ├── R3m1.gif │ ├── V0m1.gif │ ├── V3m2.gif │ ├── V4m1.gif │ ├── V4m3.gif │ ├── miss.gif │ ├── FFace01.gif │ ├── FFace02.gif │ ├── FFace03.gif │ ├── FFace04.gif │ ├── H0rune.gif │ ├── H1rune.gif │ ├── H2rune.gif │ ├── H3rune.gif │ ├── I0_bone.gif │ ├── I1_bone.gif │ ├── I2_bone.gif │ ├── I_ankh.gif │ ├── I_axe.gif │ ├── I_bgm.gif │ ├── I_bone.gif │ ├── I_book.gif │ ├── I_boots.gif │ ├── I_bow.gif │ ├── I_empty.gif │ ├── I_helm.gif │ ├── I_mace.gif │ ├── I_ram.gif │ ├── I_ring.gif │ ├── I_sling.gif │ ├── I_sword.gif │ ├── Kanal0.gif │ ├── Kanal1.gif │ ├── Kanal2.gif │ ├── Kanal3.gif │ ├── Komp_E.gif │ ├── Komp_N.gif │ ├── Komp_S.gif │ ├── Komp_W.gif │ ├── Kompas.gif │ ├── MFace01.gif │ ├── MFace02.gif │ ├── MFace03.gif │ ├── MFace04.gif │ ├── S_vlevo.gif │ ├── Body_left.gif │ ├── I0_armor.gif │ ├── I0_unknwn.gif │ ├── I0_weapon.gif │ ├── I1_armor.gif │ ├── I1_unknwn.gif │ ├── I1_weapon.gif │ ├── I2_armor.gif │ ├── I2_unknwn.gif │ ├── I2_weapon.gif │ ├── I_armor_l.gif │ ├── I_armor_p.gif │ ├── I_bracers.gif │ ├── I_dagger.gif │ ├── I_helm_d.gif │ ├── I_rations.gif │ ├── I_ring_b.gif │ ├── I_ring_g.gif │ ├── I_ring_r.gif │ ├── I_ring_w.gif │ ├── I_shield.gif │ ├── I_shield2.gif │ ├── I_toulec.gif │ ├── S_doleva.gif │ ├── S_doprava.gif │ ├── S_dopredu.gif │ ├── S_dozadu.gif │ ├── S_vpravo.gif │ ├── S_vsechny.gif │ ├── I_armor_ch.gif │ ├── I_necklace.gif │ ├── I_potion_b.gif │ ├── I_potion_g.gif │ ├── I_potion_r.gif │ ├── I_prostirani.gif │ ├── I_zakazano.gif │ └── dno_bufferu.gif ├── dungeon7.bin ├── grafika.bin ├── Gif_original │ ├── D0.gif │ ├── D1.gif │ ├── D2.gif │ ├── D3.gif │ ├── ES1.gif │ ├── ES2.gif │ ├── ES3.gif │ ├── ES4.gif │ ├── H0.gif │ ├── H1.gif │ ├── H2.gif │ ├── H3.gif │ ├── H4.gif │ ├── H5.gif │ ├── Pd0.gif │ ├── Pd1.gif │ ├── Pd2.gif │ ├── Pd3.gif │ ├── Pu0.gif │ ├── Pu1.gif │ ├── Pu2.gif │ ├── Pu3.gif │ ├── R0.gif │ ├── R1.gif │ ├── R2.gif │ ├── R3.gif │ ├── R4.gif │ ├── ESA1.gif │ ├── Flek.gif │ ├── H4m1.gif │ ├── H4m2.gif │ ├── H4m3.gif │ ├── H4m4.gif │ ├── I_axe.gif │ ├── I_bg.gif │ ├── I_bgm.gif │ ├── I_bow.gif │ ├── I_ram.gif │ ├── K1m1.gif │ ├── K2m1.gif │ ├── K3m1.gif │ ├── K4m2.gif │ ├── Pdl1.gif │ ├── Pdl2.gif │ ├── Pdl3.gif │ ├── Pul1.gif │ ├── Pul2.gif │ ├── Pul3.gif │ ├── R1m1.gif │ ├── R2m1.gif │ ├── R3m1.gif │ ├── V0m1.gif │ ├── V3m2.gif │ ├── V4m1.gif │ ├── V4m3.gif │ ├── miss.gif │ ├── FFace01.gif │ ├── FFace02.gif │ ├── FFace03.gif │ ├── FFace04.gif │ ├── H0rune.gif │ ├── H1rune.gif │ ├── H2rune.gif │ ├── H3rune.gif │ ├── I0_armor.gif │ ├── I0_bone.gif │ ├── I1_armor.gif │ ├── I1_bone.gif │ ├── I2_armor.gif │ ├── I2_bone.gif │ ├── I_ankh.gif │ ├── I_bone.gif │ ├── I_book.gif │ ├── I_boots.gif │ ├── I_dagger.gif │ ├── I_empty.gif │ ├── I_helm.gif │ ├── I_helm_d.gif │ ├── I_mace.gif │ ├── I_ring.gif │ ├── I_ring_b.gif │ ├── I_ring_g.gif │ ├── I_ring_r.gif │ ├── I_ring_w.gif │ ├── I_shield.gif │ ├── I_sling.gif │ ├── I_sword.gif │ ├── I_toulec.gif │ ├── Kanal0.gif │ ├── Kanal1.gif │ ├── Kanal2.gif │ ├── Kanal3.gif │ ├── Komp_E.gif │ ├── Komp_N.gif │ ├── Komp_S.gif │ ├── Komp_W.gif │ ├── Kompas.gif │ ├── MFace01.gif │ ├── MFace02.gif │ ├── MFace03.gif │ ├── MFace04.gif │ ├── S_doleva.gif │ ├── S_dozadu.gif │ ├── S_vlevo.gif │ ├── S_vpravo.gif │ ├── Body_left.gif │ ├── I0_unknwn.gif │ ├── I0_weapon.gif │ ├── I1_unknwn.gif │ ├── I1_weapon.gif │ ├── I2_unknwn.gif │ ├── I2_weapon.gif │ ├── I_armor_ch.gif │ ├── I_armor_l.gif │ ├── I_armor_p.gif │ ├── I_bracers.gif │ ├── I_necklace.gif │ ├── I_potion_b.gif │ ├── I_potion_g.gif │ ├── I_potion_r.gif │ ├── I_rations.gif │ ├── I_shield2.gif │ ├── I_zakazano.gif │ ├── S_doprava.gif │ ├── S_dopredu.gif │ ├── S_vsechny.gif │ ├── I_prostirani.gif │ ├── dno_bufferu.gif │ └── read.me ├── readme.txt ├── gif2bin.sh ├── map.h ├── move.h ├── input.h ├── font.h ├── make.sh ├── typy.h ├── strings.h ├── objects.h ├── move.asm ├── input.asm ├── draw3D.asm ├── zrcadlovy.h ├── inventory.h ├── sprites.h ├── draw3D.h ├── strings.asm ├── table.h ├── inventory.asm └── objects.asm ├── dungeon_v7.z80 ├── dungeon_v7_original.z80 ├── LICENSE └── README.md /screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/screen.png -------------------------------------------------------------------------------- /screen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/screen2.png -------------------------------------------------------------------------------- /screen3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/screen3.png -------------------------------------------------------------------------------- /Source/bin2tap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/bin2tap -------------------------------------------------------------------------------- /dungeon_v7.z80: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/dungeon_v7.z80 -------------------------------------------------------------------------------- /Source/Gif/D0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/D0.gif -------------------------------------------------------------------------------- /Source/Gif/D1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/D1.gif -------------------------------------------------------------------------------- /Source/Gif/D2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/D2.gif -------------------------------------------------------------------------------- /Source/Gif/D3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/D3.gif -------------------------------------------------------------------------------- /Source/Gif/H0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H0.gif -------------------------------------------------------------------------------- /Source/Gif/H1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H1.gif -------------------------------------------------------------------------------- /Source/Gif/H2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H2.gif -------------------------------------------------------------------------------- /Source/Gif/H3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H3.gif -------------------------------------------------------------------------------- /Source/Gif/H4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H4.gif -------------------------------------------------------------------------------- /Source/Gif/H5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H5.gif -------------------------------------------------------------------------------- /Source/Gif/R0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/R0.gif -------------------------------------------------------------------------------- /Source/Gif/R1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/R1.gif -------------------------------------------------------------------------------- /Source/Gif/R2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/R2.gif -------------------------------------------------------------------------------- /Source/Gif/R3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/R3.gif -------------------------------------------------------------------------------- /Source/Gif/R4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/R4.gif -------------------------------------------------------------------------------- /Source/Gif/ES1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/ES1.gif -------------------------------------------------------------------------------- /Source/Gif/ES2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/ES2.gif -------------------------------------------------------------------------------- /Source/Gif/ES3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/ES3.gif -------------------------------------------------------------------------------- /Source/Gif/ES4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/ES4.gif -------------------------------------------------------------------------------- /Source/Gif/ESA1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/ESA1.gif -------------------------------------------------------------------------------- /Source/Gif/Flek.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Flek.gif -------------------------------------------------------------------------------- /Source/Gif/H4m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H4m1.gif -------------------------------------------------------------------------------- /Source/Gif/H4m2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H4m2.gif -------------------------------------------------------------------------------- /Source/Gif/H4m3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H4m3.gif -------------------------------------------------------------------------------- /Source/Gif/H4m4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H4m4.gif -------------------------------------------------------------------------------- /Source/Gif/I_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_bg.gif -------------------------------------------------------------------------------- /Source/Gif/K1m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/K1m1.gif -------------------------------------------------------------------------------- /Source/Gif/K2m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/K2m1.gif -------------------------------------------------------------------------------- /Source/Gif/K3m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/K3m1.gif -------------------------------------------------------------------------------- /Source/Gif/K4m2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/K4m2.gif -------------------------------------------------------------------------------- /Source/Gif/Pd0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pd0.gif -------------------------------------------------------------------------------- /Source/Gif/Pd1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pd1.gif -------------------------------------------------------------------------------- /Source/Gif/Pd2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pd2.gif -------------------------------------------------------------------------------- /Source/Gif/Pd3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pd3.gif -------------------------------------------------------------------------------- /Source/Gif/Pdl1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pdl1.gif -------------------------------------------------------------------------------- /Source/Gif/Pdl2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pdl2.gif -------------------------------------------------------------------------------- /Source/Gif/Pdl3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pdl3.gif -------------------------------------------------------------------------------- /Source/Gif/Pu0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pu0.gif -------------------------------------------------------------------------------- /Source/Gif/Pu1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pu1.gif -------------------------------------------------------------------------------- /Source/Gif/Pu2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pu2.gif -------------------------------------------------------------------------------- /Source/Gif/Pu3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pu3.gif -------------------------------------------------------------------------------- /Source/Gif/Pul1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pul1.gif -------------------------------------------------------------------------------- /Source/Gif/Pul2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pul2.gif -------------------------------------------------------------------------------- /Source/Gif/Pul3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Pul3.gif -------------------------------------------------------------------------------- /Source/Gif/R1m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/R1m1.gif -------------------------------------------------------------------------------- /Source/Gif/R2m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/R2m1.gif -------------------------------------------------------------------------------- /Source/Gif/R3m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/R3m1.gif -------------------------------------------------------------------------------- /Source/Gif/V0m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/V0m1.gif -------------------------------------------------------------------------------- /Source/Gif/V3m2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/V3m2.gif -------------------------------------------------------------------------------- /Source/Gif/V4m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/V4m1.gif -------------------------------------------------------------------------------- /Source/Gif/V4m3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/V4m3.gif -------------------------------------------------------------------------------- /Source/Gif/miss.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/miss.gif -------------------------------------------------------------------------------- /Source/dungeon7.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/dungeon7.bin -------------------------------------------------------------------------------- /Source/grafika.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/grafika.bin -------------------------------------------------------------------------------- /Source/Gif/FFace01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/FFace01.gif -------------------------------------------------------------------------------- /Source/Gif/FFace02.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/FFace02.gif -------------------------------------------------------------------------------- /Source/Gif/FFace03.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/FFace03.gif -------------------------------------------------------------------------------- /Source/Gif/FFace04.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/FFace04.gif -------------------------------------------------------------------------------- /Source/Gif/H0rune.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H0rune.gif -------------------------------------------------------------------------------- /Source/Gif/H1rune.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H1rune.gif -------------------------------------------------------------------------------- /Source/Gif/H2rune.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H2rune.gif -------------------------------------------------------------------------------- /Source/Gif/H3rune.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/H3rune.gif -------------------------------------------------------------------------------- /Source/Gif/I0_bone.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I0_bone.gif -------------------------------------------------------------------------------- /Source/Gif/I1_bone.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I1_bone.gif -------------------------------------------------------------------------------- /Source/Gif/I2_bone.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I2_bone.gif -------------------------------------------------------------------------------- /Source/Gif/I_ankh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_ankh.gif -------------------------------------------------------------------------------- /Source/Gif/I_axe.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_axe.gif -------------------------------------------------------------------------------- /Source/Gif/I_bgm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_bgm.gif -------------------------------------------------------------------------------- /Source/Gif/I_bone.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_bone.gif -------------------------------------------------------------------------------- /Source/Gif/I_book.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_book.gif -------------------------------------------------------------------------------- /Source/Gif/I_boots.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_boots.gif -------------------------------------------------------------------------------- /Source/Gif/I_bow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_bow.gif -------------------------------------------------------------------------------- /Source/Gif/I_empty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_empty.gif -------------------------------------------------------------------------------- /Source/Gif/I_helm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_helm.gif -------------------------------------------------------------------------------- /Source/Gif/I_mace.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_mace.gif -------------------------------------------------------------------------------- /Source/Gif/I_ram.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_ram.gif -------------------------------------------------------------------------------- /Source/Gif/I_ring.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_ring.gif -------------------------------------------------------------------------------- /Source/Gif/I_sling.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_sling.gif -------------------------------------------------------------------------------- /Source/Gif/I_sword.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_sword.gif -------------------------------------------------------------------------------- /Source/Gif/Kanal0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Kanal0.gif -------------------------------------------------------------------------------- /Source/Gif/Kanal1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Kanal1.gif -------------------------------------------------------------------------------- /Source/Gif/Kanal2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Kanal2.gif -------------------------------------------------------------------------------- /Source/Gif/Kanal3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Kanal3.gif -------------------------------------------------------------------------------- /Source/Gif/Komp_E.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Komp_E.gif -------------------------------------------------------------------------------- /Source/Gif/Komp_N.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Komp_N.gif -------------------------------------------------------------------------------- /Source/Gif/Komp_S.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Komp_S.gif -------------------------------------------------------------------------------- /Source/Gif/Komp_W.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Komp_W.gif -------------------------------------------------------------------------------- /Source/Gif/Kompas.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Kompas.gif -------------------------------------------------------------------------------- /Source/Gif/MFace01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/MFace01.gif -------------------------------------------------------------------------------- /Source/Gif/MFace02.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/MFace02.gif -------------------------------------------------------------------------------- /Source/Gif/MFace03.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/MFace03.gif -------------------------------------------------------------------------------- /Source/Gif/MFace04.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/MFace04.gif -------------------------------------------------------------------------------- /Source/Gif/S_vlevo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/S_vlevo.gif -------------------------------------------------------------------------------- /Source/Gif/Body_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/Body_left.gif -------------------------------------------------------------------------------- /Source/Gif/I0_armor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I0_armor.gif -------------------------------------------------------------------------------- /Source/Gif/I0_unknwn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I0_unknwn.gif -------------------------------------------------------------------------------- /Source/Gif/I0_weapon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I0_weapon.gif -------------------------------------------------------------------------------- /Source/Gif/I1_armor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I1_armor.gif -------------------------------------------------------------------------------- /Source/Gif/I1_unknwn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I1_unknwn.gif -------------------------------------------------------------------------------- /Source/Gif/I1_weapon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I1_weapon.gif -------------------------------------------------------------------------------- /Source/Gif/I2_armor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I2_armor.gif -------------------------------------------------------------------------------- /Source/Gif/I2_unknwn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I2_unknwn.gif -------------------------------------------------------------------------------- /Source/Gif/I2_weapon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I2_weapon.gif -------------------------------------------------------------------------------- /Source/Gif/I_armor_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_armor_l.gif -------------------------------------------------------------------------------- /Source/Gif/I_armor_p.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_armor_p.gif -------------------------------------------------------------------------------- /Source/Gif/I_bracers.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_bracers.gif -------------------------------------------------------------------------------- /Source/Gif/I_dagger.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_dagger.gif -------------------------------------------------------------------------------- /Source/Gif/I_helm_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_helm_d.gif -------------------------------------------------------------------------------- /Source/Gif/I_rations.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_rations.gif -------------------------------------------------------------------------------- /Source/Gif/I_ring_b.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_ring_b.gif -------------------------------------------------------------------------------- /Source/Gif/I_ring_g.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_ring_g.gif -------------------------------------------------------------------------------- /Source/Gif/I_ring_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_ring_r.gif -------------------------------------------------------------------------------- /Source/Gif/I_ring_w.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_ring_w.gif -------------------------------------------------------------------------------- /Source/Gif/I_shield.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_shield.gif -------------------------------------------------------------------------------- /Source/Gif/I_shield2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_shield2.gif -------------------------------------------------------------------------------- /Source/Gif/I_toulec.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_toulec.gif -------------------------------------------------------------------------------- /Source/Gif/S_doleva.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/S_doleva.gif -------------------------------------------------------------------------------- /Source/Gif/S_doprava.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/S_doprava.gif -------------------------------------------------------------------------------- /Source/Gif/S_dopredu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/S_dopredu.gif -------------------------------------------------------------------------------- /Source/Gif/S_dozadu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/S_dozadu.gif -------------------------------------------------------------------------------- /Source/Gif/S_vpravo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/S_vpravo.gif -------------------------------------------------------------------------------- /Source/Gif/S_vsechny.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/S_vsechny.gif -------------------------------------------------------------------------------- /dungeon_v7_original.z80: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/dungeon_v7_original.z80 -------------------------------------------------------------------------------- /Source/Gif/I_armor_ch.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_armor_ch.gif -------------------------------------------------------------------------------- /Source/Gif/I_necklace.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_necklace.gif -------------------------------------------------------------------------------- /Source/Gif/I_potion_b.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_potion_b.gif -------------------------------------------------------------------------------- /Source/Gif/I_potion_g.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_potion_g.gif -------------------------------------------------------------------------------- /Source/Gif/I_potion_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_potion_r.gif -------------------------------------------------------------------------------- /Source/Gif/I_prostirani.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_prostirani.gif -------------------------------------------------------------------------------- /Source/Gif/I_zakazano.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/I_zakazano.gif -------------------------------------------------------------------------------- /Source/Gif/dno_bufferu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif/dno_bufferu.gif -------------------------------------------------------------------------------- /Source/Gif_original/D0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/D0.gif -------------------------------------------------------------------------------- /Source/Gif_original/D1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/D1.gif -------------------------------------------------------------------------------- /Source/Gif_original/D2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/D2.gif -------------------------------------------------------------------------------- /Source/Gif_original/D3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/D3.gif -------------------------------------------------------------------------------- /Source/Gif_original/ES1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/ES1.gif -------------------------------------------------------------------------------- /Source/Gif_original/ES2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/ES2.gif -------------------------------------------------------------------------------- /Source/Gif_original/ES3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/ES3.gif -------------------------------------------------------------------------------- /Source/Gif_original/ES4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/ES4.gif -------------------------------------------------------------------------------- /Source/Gif_original/H0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H0.gif -------------------------------------------------------------------------------- /Source/Gif_original/H1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H1.gif -------------------------------------------------------------------------------- /Source/Gif_original/H2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H2.gif -------------------------------------------------------------------------------- /Source/Gif_original/H3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H3.gif -------------------------------------------------------------------------------- /Source/Gif_original/H4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H4.gif -------------------------------------------------------------------------------- /Source/Gif_original/H5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H5.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pd0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pd0.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pd1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pd1.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pd2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pd2.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pd3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pd3.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pu0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pu0.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pu1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pu1.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pu2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pu2.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pu3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pu3.gif -------------------------------------------------------------------------------- /Source/Gif_original/R0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/R0.gif -------------------------------------------------------------------------------- /Source/Gif_original/R1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/R1.gif -------------------------------------------------------------------------------- /Source/Gif_original/R2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/R2.gif -------------------------------------------------------------------------------- /Source/Gif_original/R3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/R3.gif -------------------------------------------------------------------------------- /Source/Gif_original/R4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/R4.gif -------------------------------------------------------------------------------- /Source/Gif_original/ESA1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/ESA1.gif -------------------------------------------------------------------------------- /Source/Gif_original/Flek.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Flek.gif -------------------------------------------------------------------------------- /Source/Gif_original/H4m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H4m1.gif -------------------------------------------------------------------------------- /Source/Gif_original/H4m2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H4m2.gif -------------------------------------------------------------------------------- /Source/Gif_original/H4m3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H4m3.gif -------------------------------------------------------------------------------- /Source/Gif_original/H4m4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H4m4.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_axe.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_axe.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_bg.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_bgm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_bgm.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_bow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_bow.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_ram.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_ram.gif -------------------------------------------------------------------------------- /Source/Gif_original/K1m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/K1m1.gif -------------------------------------------------------------------------------- /Source/Gif_original/K2m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/K2m1.gif -------------------------------------------------------------------------------- /Source/Gif_original/K3m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/K3m1.gif -------------------------------------------------------------------------------- /Source/Gif_original/K4m2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/K4m2.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pdl1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pdl1.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pdl2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pdl2.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pdl3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pdl3.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pul1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pul1.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pul2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pul2.gif -------------------------------------------------------------------------------- /Source/Gif_original/Pul3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Pul3.gif -------------------------------------------------------------------------------- /Source/Gif_original/R1m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/R1m1.gif -------------------------------------------------------------------------------- /Source/Gif_original/R2m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/R2m1.gif -------------------------------------------------------------------------------- /Source/Gif_original/R3m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/R3m1.gif -------------------------------------------------------------------------------- /Source/Gif_original/V0m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/V0m1.gif -------------------------------------------------------------------------------- /Source/Gif_original/V3m2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/V3m2.gif -------------------------------------------------------------------------------- /Source/Gif_original/V4m1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/V4m1.gif -------------------------------------------------------------------------------- /Source/Gif_original/V4m3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/V4m3.gif -------------------------------------------------------------------------------- /Source/Gif_original/miss.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/miss.gif -------------------------------------------------------------------------------- /Source/Gif_original/FFace01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/FFace01.gif -------------------------------------------------------------------------------- /Source/Gif_original/FFace02.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/FFace02.gif -------------------------------------------------------------------------------- /Source/Gif_original/FFace03.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/FFace03.gif -------------------------------------------------------------------------------- /Source/Gif_original/FFace04.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/FFace04.gif -------------------------------------------------------------------------------- /Source/Gif_original/H0rune.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H0rune.gif -------------------------------------------------------------------------------- /Source/Gif_original/H1rune.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H1rune.gif -------------------------------------------------------------------------------- /Source/Gif_original/H2rune.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H2rune.gif -------------------------------------------------------------------------------- /Source/Gif_original/H3rune.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/H3rune.gif -------------------------------------------------------------------------------- /Source/Gif_original/I0_armor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I0_armor.gif -------------------------------------------------------------------------------- /Source/Gif_original/I0_bone.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I0_bone.gif -------------------------------------------------------------------------------- /Source/Gif_original/I1_armor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I1_armor.gif -------------------------------------------------------------------------------- /Source/Gif_original/I1_bone.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I1_bone.gif -------------------------------------------------------------------------------- /Source/Gif_original/I2_armor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I2_armor.gif -------------------------------------------------------------------------------- /Source/Gif_original/I2_bone.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I2_bone.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_ankh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_ankh.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_bone.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_bone.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_book.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_book.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_boots.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_boots.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_dagger.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_dagger.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_empty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_empty.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_helm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_helm.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_helm_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_helm_d.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_mace.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_mace.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_ring.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_ring.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_ring_b.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_ring_b.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_ring_g.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_ring_g.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_ring_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_ring_r.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_ring_w.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_ring_w.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_shield.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_shield.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_sling.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_sling.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_sword.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_sword.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_toulec.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_toulec.gif -------------------------------------------------------------------------------- /Source/Gif_original/Kanal0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Kanal0.gif -------------------------------------------------------------------------------- /Source/Gif_original/Kanal1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Kanal1.gif -------------------------------------------------------------------------------- /Source/Gif_original/Kanal2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Kanal2.gif -------------------------------------------------------------------------------- /Source/Gif_original/Kanal3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Kanal3.gif -------------------------------------------------------------------------------- /Source/Gif_original/Komp_E.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Komp_E.gif -------------------------------------------------------------------------------- /Source/Gif_original/Komp_N.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Komp_N.gif -------------------------------------------------------------------------------- /Source/Gif_original/Komp_S.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Komp_S.gif -------------------------------------------------------------------------------- /Source/Gif_original/Komp_W.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Komp_W.gif -------------------------------------------------------------------------------- /Source/Gif_original/Kompas.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Kompas.gif -------------------------------------------------------------------------------- /Source/Gif_original/MFace01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/MFace01.gif -------------------------------------------------------------------------------- /Source/Gif_original/MFace02.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/MFace02.gif -------------------------------------------------------------------------------- /Source/Gif_original/MFace03.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/MFace03.gif -------------------------------------------------------------------------------- /Source/Gif_original/MFace04.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/MFace04.gif -------------------------------------------------------------------------------- /Source/Gif_original/S_doleva.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/S_doleva.gif -------------------------------------------------------------------------------- /Source/Gif_original/S_dozadu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/S_dozadu.gif -------------------------------------------------------------------------------- /Source/Gif_original/S_vlevo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/S_vlevo.gif -------------------------------------------------------------------------------- /Source/Gif_original/S_vpravo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/S_vpravo.gif -------------------------------------------------------------------------------- /Source/Gif_original/Body_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/Body_left.gif -------------------------------------------------------------------------------- /Source/Gif_original/I0_unknwn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I0_unknwn.gif -------------------------------------------------------------------------------- /Source/Gif_original/I0_weapon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I0_weapon.gif -------------------------------------------------------------------------------- /Source/Gif_original/I1_unknwn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I1_unknwn.gif -------------------------------------------------------------------------------- /Source/Gif_original/I1_weapon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I1_weapon.gif -------------------------------------------------------------------------------- /Source/Gif_original/I2_unknwn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I2_unknwn.gif -------------------------------------------------------------------------------- /Source/Gif_original/I2_weapon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I2_weapon.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_armor_ch.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_armor_ch.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_armor_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_armor_l.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_armor_p.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_armor_p.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_bracers.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_bracers.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_necklace.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_necklace.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_potion_b.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_potion_b.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_potion_g.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_potion_g.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_potion_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_potion_r.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_rations.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_rations.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_shield2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_shield2.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_zakazano.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_zakazano.gif -------------------------------------------------------------------------------- /Source/Gif_original/S_doprava.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/S_doprava.gif -------------------------------------------------------------------------------- /Source/Gif_original/S_dopredu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/S_dopredu.gif -------------------------------------------------------------------------------- /Source/Gif_original/S_vsechny.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/S_vsechny.gif -------------------------------------------------------------------------------- /Source/Gif_original/I_prostirani.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/I_prostirani.gif -------------------------------------------------------------------------------- /Source/Gif_original/dno_bufferu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/HEAD/Source/Gif_original/dno_bufferu.gif -------------------------------------------------------------------------------- /Source/Gif_original/read.me: -------------------------------------------------------------------------------- 1 | Původní stínování. Tmavnutí až od určité vzdálenosti. Nově jsou tmavé všechny šikmé plochy. 2 | -------------------------------------------------------------------------------- /Source/readme.txt: -------------------------------------------------------------------------------- 1 | # 0. 2 | # gcc gif2bin.c -o gif2bin 3 | # grep -B 2 --include=\*.{asm,h} -rnw 'directory' -e 'pattern' 4 | " 5 | 1. zkompiluje gif2bin a prevede vsechny gify na bin format 6 | bash gif2bin.sh 7 | #bash gif2bin.sh ./Gif_original 8 | 9 | 2. vytvor sprites.h z bin obrazku, slepi je do grafika.bin a zkompiluje dungeon_v_?_?.bin 10 | bash make.sh 11 | -------------------------------------------------------------------------------- /Source/gif2bin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Ocekavan zadny nebo jeden parametr obsahujici cestu k adresari s gify 4 | 5 | if [ "$1" == "" ] 6 | then 7 | source="./Gif" 8 | else 9 | source="$1" 10 | fi 11 | 12 | gcc gif2bin.c -o gif2bin 13 | #gcc gif2bin.c -o gif2bin -D INFO 14 | 15 | [ ! -d ./Bin ] && mkdir Bin 16 | rm ./Bin/* 17 | 18 | sirka=`tput cols` 19 | nyni=0 20 | 21 | for soubor in ${source}/*.gif 22 | do 23 | nyni=$(($nyni+20)) 24 | if [ $nyni -gt $sirka ] 25 | then 26 | echo 27 | nyni=20 28 | fi 29 | 30 | naco=${soubor##*/} 31 | printf "%20s" $naco 32 | naco="./Bin/${naco%.*}" 33 | ./gif2bin ${soubor} ${naco} 61 > /dev/null 34 | done 35 | echo 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Source/map.h: -------------------------------------------------------------------------------- 1 | BIT_NEPRUCHOZI equ 0 2 | BIT_STENA equ 1 3 | 4 | 5 | DUNGEON_MAP: 6 | ; 0 1 2 3 4 5 6 7 8 9 A B C D E F 7 | defb 3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3 ; $00 0 ( na pozici 0 musi byt stena ( = zadny predmet, paka, dvere ), znaci rozsirene udaje u TABLE_OBJECTS ) 8 | defb 0,0,3,0,0,0,0,3,0,0,0,3,0,0,0,3 ; $10 16 9 | defb 0,0,3,0,0,3,0,0,0,3,0,3,0,3,0,3 ; $20 32 10 | defb 0,0,0,0,0,0,3,3,3,0,0,0,0,3,0,3 ; $30 48 11 | defb 0,0,0,0,0,0,3,3,0,0,3,3,0,3,0,3 ; $40 64 12 | defb 0,0,0,0,0,0,3,0,0,3,0,0,0,3,0,3 ; $50 80 87 dvere 13 | defb 0,0,0,0,0,3,3,3,3,0,0,3,0,3,0,3 ; $60 96 14 | defb 3,0,0,2,0,0,0,0,0,0,0,0,0,3,0,3 ; $70 112 119 dvere 15 | defb 3,2,3,3,3,3,3,3,3,3,0,3,3,3,0,3 ; $80 128 132-S paka,142 dvere 16 | defb 3,0,0,0,0,0,0,0,3,0,0,0,0,3,0,3 ; $90 144 158 zavrene dvere otevirane kombinaci pak 17 | defb 3,0,3,0,3,0,0,0,3,0,0,0,0,3,0,3 ; $A0 160 18 | defb 3,0,0,0,0,0,0,0,3,3,3,3,3,3,0,3 ; $B0 176 185..188-S paky 19 | defb 3,0,3,0,3,0,0,0,3,0,0,0,3,3,0,0 ; $C0 192 20 | defb 3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0 ; $D0 208 216-W Paka 216-E Paka 21 | defb 3,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0 ; $E0 224 232 dvere 22 | defb 3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3 ; $F0 240 ( na pozici 255 musi byt stena ( = zadny predmet, paka, dvere ), znaci zarazku u TABLE_OBJECTS ) 23 | ; 0 1 2 3 4 5 6 7 8 9 A B C D E F 24 | sirka equ 16 25 | 26 | ; drobny bug .) $ff lokace nesmi byt totiz ani v dohledu -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | :warning: GitHub users are now required to enable two-factor authentication as an additional security measure. Your activity on GitHub includes you in this requirement. You will need to enable two-factor authentication on your account before October 12, 2023, or be restricted from account actions. 2 | 3 | `This code is obsolete due to author's access being denied by github. The migration took place at:` [https://codeberg.org/DW0RKiN/3D-Dungeon](https://codeberg.org/DW0RKiN/3D-Dungeon) 4 | 5 | # 3D-Dungeon 6 | 3D dungeon demo on ZX Spectrum 48K 7 | 8 | Malý test jak by mohl vypadat 3D dungeon na počítači ZX Spectrum 48K. 9 | 10 | Kempston joystick: 11 | 12 | up move 13 | down move 14 | left move 15 | right move 16 | 17 | up+left turning 18 | up+right turning 19 | 20 | down+left inventory 21 | down+right inventory 22 | 23 | fire action 24 | 25 | fire+up first hand 26 | fire+down second hand 27 | fire+left another person 28 | fire+right another person 29 | 30 | 31 | 32 | ![Screenshot 3D Dungeon on ZX](https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/master/screen.png "Screenshot 3D Dungeon on ZX") 33 | 34 | ![Screenshot 3D Dungeon on ZX](https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/master/screen2.png "Screenshot 3D Dungeon on ZX") 35 | 36 | ![Screenshot 3D Dungeon on ZX](https://raw.githubusercontent.com/DW0RKiN/3D-Dungeon/master/screen3.png?raw=true?raw=true "Screenshot 3D Dungeon on ZX") 37 | -------------------------------------------------------------------------------- /Source/move.h: -------------------------------------------------------------------------------- 1 | north equ 0 2 | east equ 1 3 | south equ 2 4 | west equ 3 5 | 6 | 7 | ;----------- Vazane promnene kvuli optimalizacim ( ale nic zasadniho v nejake kriticke casti ) 8 | LOCATION: 9 | defb 52 ; musi byt pred VECTOR! kvuli optimalizaci ld hl,(LOCATION) ; 16:3 L=LOCATION, H=VECTOR 10 | VECTOR: 11 | defb north ; 0 = N,1 = E,2 = S,3 = W 12 | POHYB: 13 | defb 0 ; nulty bit meni hodnotu pokazde pri otoceni nebo pohybu ( resi se to pres rychle inc(hl) = pocitadlo pohybu/otoceni ) 14 | ; pouziva se pro zmenu podlahy, pocit zmeny pri stejnych stenach 15 | ;----------- 16 | 17 | 18 | 19 | POSUN_VLEVO_INVENTAREM: 20 | ; rozsah do+1 posun o 21 | defb 2, 16-MAX_INVENTORY 22 | defb 3, 27 ; 2->29 23 | defb 5, 26 ; 3->29,4->30 24 | defb 6, 25 ; 5->30 25 | defb 7, 20 ; 6->26(p.prsten) 26 | defb 8, 15 ; 7->22(boty) 27 | defb 21, -8 28 | defb 23, -7 29 | defb 27, -5 30 | defb 29, -3 31 | defb MAX_INVENTORY, -2 32 | 33 | POSUN_VPRAVO_INVENTAREM: 34 | ; rozsah do posun o 35 | defb 13, 8 36 | defb 17, 7 37 | defb 18, 6 ; 17(hlava)->23(toulec) 38 | defb 22, 5 39 | defb 23, 16 ; 22(boty)->7 40 | defb 24, 4 ; 23(toulec)->27 41 | defb 26, 3 42 | defb 27, 11 ; 26(p.prsten)->6 43 | defb 29, 2 ; leva zem->prava zem 44 | defb MAX_INVENTORY, 5 45 | POSUN_VLEVO_INVENTAREM_END: 46 | 47 | -------------------------------------------------------------------------------- /Source/input.h: -------------------------------------------------------------------------------- 1 | TIMER_ADR equ $5C78 2 | LAST_KEY_ADR equ $5C08 3 | 4 | 5 | REPEAT_READING_JOY equ $06 6 | JOY_PORT equ $1F 7 | 8 | ; ----------------------- 9 | 10 | FLOP_BIT_ATTACK equ $40 11 | 12 | KEY_DOPREDU equ 119 ; w 13 | KEY_DOZADU equ 115 ; s 14 | KEY_VLEVO equ 97 ; a 15 | KEY_VPRAVO equ 100 ; d 16 | KEY_DOLEVA equ 113 ; q 17 | KEY_DOPRAVA equ 101 ; e 18 | KEY_SPACE equ 32 ; mezernik 19 | KEY_INVENTAR equ 105 ; i 20 | KEY_FHAND equ 114 ; r 21 | KEY_SHAND equ 102 ; f 22 | KEY_PLUS equ 107 ; k 23 | KEY_MINUS equ 106 ; j 24 | 25 | stisknuto_dopredu equ 0 26 | stisknuto_dozadu equ 1 27 | stisknuto_vlevo equ 2 28 | stisknuto_vpravo equ 3 29 | 30 | ; Cte se z portu 31 31 | ; D0- joy RIGHT 32 | ; D1- joy LEFT 33 | ; D2- joy DOWN 34 | ; D3- joy UP 35 | ; D4- joy FIRE 1 36 | ; D5- joy FIRE 2 (podporovano jen u K-MOUSE interface, kde je podpora vsech trech tlacitek joysticku) 37 | ; D6- joy FIRE 3 (podporovano jen u K-MOUSE interface, kde je podpora vsech trech tlacitek joysticku) 38 | ; D7- nepouzito, obycejne zde vraci log.0 39 | 40 | ; vvvv ----------------- zacatek souvisleho bloku 41 | DATA_KEMPSTON: 42 | defb $01, KEY_VPRAVO ; right 43 | defb $02, KEY_VLEVO ; left 44 | defb $09, KEY_DOPRAVA ; up+r 45 | defb $0a, KEY_DOLEVA ; up+l 46 | defb $04, KEY_DOZADU ; down 47 | defb $08, KEY_DOPREDU ; up 48 | defb $10, KEY_SPACE ; fire 49 | defb $05, KEY_INVENTAR ; down+r 50 | defb $06, KEY_INVENTAR ; down+l 51 | defb $11, KEY_PLUS ; fire+r 52 | defb $12, KEY_MINUS ; fire+l 53 | defb $18, KEY_FHAND ; fire+up 54 | defb $14, KEY_SHAND ; fire+down 55 | DATA_KEMPSTON_END: 56 | defb $00 57 | ; ^^^^ ----------------- konec souvisleho bloku 58 | 59 | DATA_KEMPSTON_SUM equ (DATA_KEMPSTON_END-DATA_KEMPSTON)/2 60 | 61 | 62 | -------------------------------------------------------------------------------- /Source/font.h: -------------------------------------------------------------------------------- 1 | 2 | PISMO_5PX: 3 | defb $00,$00,$00,$00,$00 ; 32 space 0-4 4 | defb $00,$3a,$00,$00,$00 ; 33 ! 0-4 5 | defb $00,$60,$00,$60,$00 ; 34 " 5-9 6 | defb $14,$3e,$14,$3e,$14 ; 35 # 10-14 7 | defb $00,$12,$2a,$6b,$24 ; 36 $ 15-19 8 | defb $32,$34,$08,$16,$26 ; 37 % 20-24 9 | defb $00,$14,$3a,$14,$0a ; 38 & 25-29 10 | defb $00,$00,$60,$00,$00 ; 39 ' 30-34 11 | defb $00,$00,$3c,$42,$00 ; 40 ( 35-39 12 | defb $00,$00,$42,$3c,$00 ; 41 ) 40-44 13 | defb $00,$14,$08,$14,$00 ; 42 * 45-49 14 | defb $00,$08,$1c,$08,$00 ; 43 + 50-54 15 | defb $00,$02,$04,$00,$00 ; 44 , 55-59 16 | defb $00,$08,$08,$08,$00 ; 45 - 60-64 17 | defb $00,$02,$00,$00,$00 ; 46 . 65-69 18 | defb $02,$04,$08,$10,$20 ; 47 / 70-74 19 | defb $00,$1c,$26,$2a,$1c ; 48 0 75-79 20 | defb $00,$12,$3e,$02,$00 ; 49 1 80-84 21 | defb $00,$26,$2a,$2a,$12 ; 50 2 85-89 22 | defb $00,$22,$2a,$2a,$14 ; 51 3 90-94 23 | defb $00,$3c,$04,$0e,$04 ; 52 4 95-99 24 | defb $00,$3a,$2a,$2a,$24 ; 53 5 100-104 25 | defb $00,$1c,$2a,$2a,$04 ; 54 6 105-109 26 | defb $00,$20,$26,$28,$30 ; 55 7 110-114 27 | defb $00,$14,$2a,$2a,$14 ; 56 8 115-119 28 | defb $00,$10,$2a,$2a,$1c ; 57 9 120-124 29 | defb $00,$00,$14,$00,$00 ; 58 : 125-129 30 | defb $00,$02,$14,$00,$00 ; 59 ; 130-134 31 | defb $00,$08,$14,$22,$00 ; 60 < 135-139 32 | defb $00,$14,$14,$14,$00 ; 61 = 140-144 33 | defb $00,$22,$14,$08,$00 ; 62 > 145-149 34 | defb $00,$10,$20,$2a,$10 ; 63 ? 150-154 35 | defb $00,$1c,$22,$3a,$1a ; 64 @ 155-159 36 | defb $00,$1e,$28,$28,$1e ; 65 A 160-164 37 | defb $00,$3e,$2a,$2a,$14 ; 66 B 165-169 38 | defb $00,$1c,$22,$22,$22 ; 67 C 170-174 39 | defb $00,$3e,$22,$22,$1c ; 68 D 175-179 40 | defb $00,$3e,$2a,$2a,$22 ; 69 E 180-184 41 | defb $00,$3e,$28,$28,$20 ; 70 F 185-189 42 | defb $00,$1c,$22,$2a,$0c ; 71 G 190-194 43 | defb $00,$3e,$08,$08,$3e ; 72 H 195-199 44 | defb $00,$22,$3e,$22,$00 ; 73 I 200-204 45 | defb $00,$04,$02,$02,$3c ; 74 J 205-209 46 | defb $00,$3e,$08,$14,$22 ; 75 K 210-214 47 | defb $00,$3e,$02,$02,$02 ; 76 L 215-219 48 | defb $00,$3e,$10,$10,$3e ; 77 M 220-224 49 | defb $00,$3e,$10,$08,$3e ; 78 N 225-229 50 | defb $00,$1c,$22,$22,$1c ; 79 O 230-234 51 | defb $00,$3e,$28,$28,$10 ; 80 P 235-239 52 | defb $00,$1c,$22,$26,$1e ; 81 Q 240-244 53 | defb $00,$3e,$28,$28,$16 ; 82 R 245-249 54 | defb $00,$12,$2a,$2a,$24 ; 83 S 250-254 55 | defb $00,$20,$3e,$20,$20 ; 84 T 255-259 56 | defb $00,$3c,$02,$02,$3c ; 85 U 260-264 57 | defb $00,$3e,$02,$04,$38 ; 86 V 265-269 58 | defb $00,$3e,$04,$04,$3e ; 87 W 270-274 59 | defb $00,$36,$08,$08,$36 ; 88 X 275-279 60 | defb $00,$38,$06,$08,$30 ; 89 Y 280-284 61 | defb $00,$26,$2a,$2a,$32 ; 90 Z 285-289 62 | defb $00,$00,$7e,$42,$00 ; 91 [ 290-294 63 | defb $20,$10,$08,$04,$02 ; 92 \ 295-299 64 | defb $00,$00,$42,$7e,$00 ; 93 ] 300-304 65 | defb $10,$20,$40,$20,$10 ; 94 ^ 305-309 66 | defb $00,$02,$02,$02,$02 ; 95 _ 310-314 67 | defb $00,$08,$3e,$4a,$22 ; 96 ` 315-319 68 | 69 | if (PISMO_5PX % 256 != 0) 70 | .error 'Adresa pocatku fontu PISMO_5PX nelezi na pocatku segmentu' 71 | endif -------------------------------------------------------------------------------- /Source/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | [ -f ./grafika.bin ] && rm ./grafika.bin 4 | [ -f ./grafika.tap ] && rm ./grafika.tap 5 | 6 | ls ./Bin 7 | ls ./Bin -l | awk 'BEGIN{ first_adr=24320; adr=first_adr; sum=1; printf("; SPRITY od adresy $%X = %i\n",adr,adr); } { if ($9!="") printf("%16s equ $%X ; %i %3i. = %5i, +%i\n",$9,adr,adr,sum++,$5,adr-first_adr); adr+=$5; } END{ 8 | printf("; first address after $%X = %i\n\nSeg_Screen equ $40\nAdr_Screen equ $4000\nSeg_Attr_Screen equ $58\nAdr_Attr_Screen equ $5800\nSeg_Buffer equ $%X\nAdr_Buffer equ (256*Seg_Buffer)\nSeg_Attr_Buffer equ $%X\nAdr_Attr_Buffer equ (256*Seg_Attr_Buffer)\nAdr_Buf_end equ $%X00",adr, adr, 1+(adr/256), 25+(adr/256), 28+(adr/256) ); 9 | printf("\n\n\ 10 | Xm5 equ $FB00\n\ 11 | Xm4 equ $FC00\n\ 12 | Xm3 equ $FD00\n\ 13 | Xm2 equ $FE00\n\ 14 | Xm1 equ $FF00\n\ 15 | X00 equ $0000\n\ 16 | X01 equ $0100\n\ 17 | X02 equ $0200\n\ 18 | X03 equ $0300\n\ 19 | X04 equ $0400\n\ 20 | X05 equ $0500\n\ 21 | X06 equ $0600\n\ 22 | X07 equ $0700\n\ 23 | X08 equ $0800\n\ 24 | X09 equ $0900\n\ 25 | X10 equ $0A00\n\ 26 | X11 equ $0B00\n\ 27 | X12 equ $0C00\n\ 28 | X13 equ $0D00\n\ 29 | X14 equ $0E00\n\ 30 | X15 equ $0F00\n\ 31 | X16 equ $1000\n\ 32 | X17 equ $1100\n\ 33 | X18 equ $1200\n\ 34 | X19 equ $1300\n\ 35 | X20 equ $1400\n\ 36 | X21 equ $1500\n\ 37 | X22 equ $1600\n\ 38 | X23 equ $1700\n\ 39 | X24 equ $1800\n\ 40 | X25 equ $1900\n\ 41 | X26 equ $1A00\n\ 42 | X27 equ $1B00\n\ 43 | X28 equ $1C00\n\ 44 | X29 equ $1D00\n\ 45 | X30 equ $1E00\n\ 46 | X31 equ $1F00\n\ 47 | \n\ 48 | Y00 equ $00\n\ 49 | Y01 equ $20\n\ 50 | Y02 equ $40\n\ 51 | Y03 equ $60\n\ 52 | Y04 equ $80\n\ 53 | Y05 equ $A0\n\ 54 | Y06 equ $C0\n\ 55 | Y07 equ $E0\n\ 56 | Y08 equ $09\n\ 57 | Y09 equ $29\n\ 58 | Y10 equ $49\n\ 59 | Y11 equ $69\n\ 60 | Y12 equ $89\n\ 61 | Y13 equ $A9\n\ 62 | Y14 equ $C9\n\ 63 | Y15 equ $E9\n\ 64 | Y16 equ $12\n\ 65 | Y17 equ $32\n\ 66 | Y18 equ $52\n\ 67 | Y19 equ $72\n\ 68 | Y20 equ $92\n\ 69 | Y21 equ $B2\n\ 70 | Y22 equ $D2\n\ 71 | Y23 equ $F2\n\ 72 | \n\ 73 | Z00 equ $04\n\ 74 | Z01 equ $24\n\ 75 | Z02 equ $44\n\ 76 | Z03 equ $64\n\ 77 | Z04 equ $84\n\ 78 | Z05 equ $A4\n\ 79 | Z06 equ $C4\n\ 80 | Z07 equ $E4\n\ 81 | Z08 equ $0D\n\ 82 | Z09 equ $2D\n\ 83 | Z10 equ $4D\n\ 84 | Z11 equ $6D\n\ 85 | Z12 equ $8D\n\ 86 | Z13 equ $AD\n\ 87 | Z14 equ $CD\n\ 88 | Z15 equ $ED\n\ 89 | Z16 equ $16\n\ 90 | Z17 equ $36\n\ 91 | Z18 equ $56\n\ 92 | Z19 equ $76\n\ 93 | Z20 equ $96\n\ 94 | Z21 equ $B6\n\ 95 | Z22 equ $D6\n\ 96 | Z23 equ $F6\n"); 97 | }' > ./sprites.h 98 | 99 | cat ./Bin/* >> ./grafika.bin 100 | #./bin2tap grafika.bin 101 | 102 | pasmo -d dungeon_v_0_7.asm dungeon7.bin > test.asm 103 | #./bin2tap dungeon7.bin -------------------------------------------------------------------------------- /Source/typy.h: -------------------------------------------------------------------------------- 1 | MASKA_PREPINACE equ %11100000 2 | ZAM_1 equ $80 ; zamek c. 1 (bit 7) 3 | ZAM_2 equ $40 ; zamek c. 2 (bit 6) 4 | ZAM_3 equ $20 ; zamek c. 3 (bit 5) 5 | ZAM_12 equ $C0 ; (bity 7 a 6) 6 | ZAM_13 equ $A0 ; (bity 7 a 5) 7 | ZAM_23 equ $60 ; (bity 6 a 5) 8 | ZAM_123 equ $E0 ; (bity 7, 6 a 5) 9 | 10 | 11 | MASKA_TYP equ %00011100 12 | MASKA_NATOCENI equ %00000011 13 | MASKA_PODTYP equ %00011111 14 | 15 | 16 | 17 | ODEMCENO equ $00 18 | 19 | POSUN_TYP equ 4 20 | POSUN_PODTYP equ 1 ; dokud je to jedna tak to pri nasobeni nic nedela 21 | 22 | 23 | TYP_PREPINAC equ 0*POSUN_TYP ; pozor, nemenit hodnotu, pouziva se "dec ? a zero flag" v PREHOD_PAKU 24 | PODTYP_PAKA equ 0*POSUN_PODTYP 25 | PODTYP_TLACITKO equ 1*POSUN_PODTYP 26 | PODTYP_TAJNE_TLACITKO equ 2*POSUN_PODTYP 27 | PODTYP_ZAMEK equ 3*POSUN_PODTYP 28 | 29 | TYP_DVERE equ 1*POSUN_TYP 30 | 31 | TYP_ENEMY equ 2*POSUN_TYP 32 | PODTYP_SKRET equ 0*POSUN_PODTYP 33 | PODTYP_PAVOUK equ 1*POSUN_PODTYP 34 | PODTYP_TRPASLIK equ 2*POSUN_PODTYP 35 | PODTYP_NEMRTVY equ 3*POSUN_PODTYP 36 | 37 | TYP_DEKORACE equ 3*POSUN_TYP 38 | 39 | PODTYP_KANAL equ 0*POSUN_PODTYP 40 | PODTYP_RUNA equ 1*POSUN_PODTYP 41 | PODTYP_RAM equ 2*POSUN_PODTYP 42 | 43 | 44 | ; mel by byt posledni, kvuli fci FIND_LAST_OBJECT 45 | TYP_ITEM equ 4*POSUN_TYP 46 | PODTYP_EMPTY equ 0 47 | ;----- 48 | PODTYP_RING equ 1*POSUN_PODTYP 49 | PODTYP_RING_R equ 2*POSUN_PODTYP 50 | PODTYP_RING_G equ 3*POSUN_PODTYP 51 | PODTYP_RING_B equ 4*POSUN_PODTYP 52 | PODTYP_RING_W equ 5*POSUN_PODTYP 53 | ;----- serazeno tak, aby se co nejlepe zjistovaly zakazane pozice pro dane predmety 54 | PODTYP_HELM equ 6*POSUN_PODTYP 55 | PODTYP_HELM_D equ 7*POSUN_PODTYP 56 | PODTYP_NECKLACE equ 8*POSUN_PODTYP 57 | ;-- 58 | PODTYP_ARMOR equ 9*POSUN_PODTYP 59 | PODTYP_ARMOR_CH equ 10*POSUN_PODTYP 60 | PODTYP_ARMOR_L equ 11*POSUN_PODTYP 61 | PODTYP_ARMOR_P equ 12*POSUN_PODTYP 62 | ;-- 63 | PODTYP_ARROW equ 13*POSUN_PODTYP 64 | PODTYP_BRACERS equ 14*POSUN_PODTYP 65 | PODTYP_BOOTS equ 15*POSUN_PODTYP 66 | ;----- 67 | PODTYP_ANKH equ 16*POSUN_PODTYP 68 | PODTYP_AXE equ 17*POSUN_PODTYP 69 | PODTYP_BOOK equ 18*POSUN_PODTYP 70 | PODTYP_BOW equ 19*POSUN_PODTYP 71 | PODTYP_DAGGER equ 20*POSUN_PODTYP 72 | PODTYP_MACE equ 21*POSUN_PODTYP 73 | PODTYP_SHIELD equ 22*POSUN_PODTYP 74 | PODTYP_SHIELD2 equ 23*POSUN_PODTYP 75 | PODTYP_SLING equ 24*POSUN_PODTYP 76 | PODTYP_SWORD equ 25*POSUN_PODTYP 77 | PODTYP_BONE equ 26*POSUN_PODTYP 78 | 79 | ;----- veci s hodnotou MIN_FOOD vcetne musi byt jedle 80 | PODTYP_FOOD equ 27*POSUN_PODTYP 81 | PODTYP_POTION_R equ 28*POSUN_PODTYP 82 | PODTYP_POTION_G equ 29*POSUN_PODTYP 83 | PODTYP_POTION_B equ 30*POSUN_PODTYP 84 | 85 | ; kolik vyleci snezeni jidla 86 | FOOD_HEALING equ 20 -------------------------------------------------------------------------------- /Source/strings.h: -------------------------------------------------------------------------------- 1 | ; 0 1 2 3 4 5 2 | ; "123456789012345678901234567890123456789012345678901" 3 | VETA_NO_WAY: 4 | defb "YOU CAN'T GO THAT WAY.",0 5 | VETA_NO_PUT: 6 | defb "YOU CANT PUT THAT ITEM THERE.",0 7 | 8 | VETA_CASTS: 9 | defb "??? CASTS BLESS.",0 10 | VETA_PRY_DOOR: 11 | defb "NO ONE IS ABLE TO PRY THIS DOOR OPEN.",0 ; Nikdo neni schopen tyto dvere vypacit/zvednout. 12 | VETA_FORCES: 13 | defb "THE PARTY FORCES THE DOOR.",0 14 | 15 | VETA_TAKEN: 16 | defb " TAKEN.",0 17 | 18 | VETA_PUT: 19 | defb " WAS PUT.",0 20 | 21 | VETA_DRINK: 22 | defb " WAS DRUNK.",0 23 | 24 | VETA_EAT: 25 | defb " WAS EATEN.",0 26 | 27 | 28 | 29 | ; 0 1 2 3 4 5 30 | ; "123456789012345678901234567890123456789012345678901" 31 | ; modrozeleny 32 | 33 | ARRAY_STRING_DEKORACE: ; radi se podle podtypu TYP_DEKORACE 34 | defb "SOMETHING SCURRIES DEEPER INTO THE FLOOR DRAIN.",0 35 | defb "THIS RUNE IS UNRECOGNIZED.",0 36 | 37 | ARRAY_STRING_PREPINACE: ; radi se podle podtypu TYP_PREPINAC 38 | defb "YOU SWITCHED THE LEVER.", 0 39 | defb "YOU PRESSED THE BUTTON.", 0 40 | defb "YOU PRESSED THE HIDE BUTTON.", 0 41 | defb "YOU SWITCHED THE LOCK.", 0 42 | 43 | VETA_11: 44 | defb "THIS SLIMY, SMELLY DRAIN PIPE REVEALS NOTHING.",0 45 | VETA_13: 46 | defb "THERE IS A DRAINAGE GRATE HERE.",0 47 | VETA_14: 48 | defb "ONLY THE STRONG SHALL PASS.",0 49 | VETA_15: 50 | defb "WATCH YOUR STEP.",0 ; divej se kam slapes 51 | VETA_16: 52 | defb "NOT ALL IS AS IT APPEARS",0 ; nic neni takove jako se zda 53 | 54 | 55 | 56 | ; fialovy 57 | VETA_EXP: 58 | defb "??? HAS GAINED A LEVEL OF EXPERIENCE.",0 59 | 60 | ; zluty 61 | VETA_DOWN: 62 | defb "GOING DOWN...",0 63 | VETA_UP: 64 | defb "GOING UP.",0 65 | VETA_DOOR: 66 | defb "THE DOOR APPEARS STUCK.",0 67 | VETA_DAGGER: 68 | defb "THE DAGGER FITS.",0 69 | VETA_HOLLOW: 70 | defb "A HOLLOW LAUGHTER ECHOES FAINTLY.",0 ; duty smich se rozleha 71 | 72 | ; cerveny 73 | VETA_UNDEAD: 74 | defb "??? USES THE POWER TO TURN UNDEAD!",0 75 | 76 | 77 | ; 0 1 2 3 4 5 78 | ; "123456789012345678901234567890123456789012345678901" 79 | HELP_STRING: 80 | defb "TEST ZX DUNGEON DEMO V 0.73",0 81 | defb "OVLADANI: ",KEY_DOLEVA-32,",",KEY_DOPRAVA-32,"-OTOCENI; ",KEY_DOPREDU-32,",",KEY_DOZADU-32,"-POHYB; ",KEY_VLEVO-32,",",KEY_VPRAVO-32,"-UKROK",0 82 | defb KEY_MINUS-32,",",KEY_PLUS-32,",1..6-AKTIVNI POSTAVA; ",KEY_INVENTAR-32,"-INVENTAR; ", KEY_FHAND-32,",",KEY_SHAND-32,"-HANDS",0 83 | defb "SPACE (MEZERNIK) - AKCE; SS+X (CTRL+X) - KONEC",0 84 | NEXT_NAME equ 11 85 | 86 | 87 | VETA_HP: 88 | defb "HP",0 89 | 90 | ; pozpatku, kvuli vykresleni ve smycce 91 | NAMES: 92 | defb "DOHRUM ",0 93 | defb "WYRD ",0 94 | defb "LINDA ",0 95 | defb "EITHNE ",0 96 | defb "TOD UPHILL",0 97 | defb "IRIS ",0 98 | NAMES_END: 99 | 100 | 101 | ARRAY_STRING_ITEMS: 102 | defb "",0 ; empty 103 | ;----- 104 | defb "RING",0 105 | defb "RUBIN RING",0 106 | defb "SMARAGD RING",0 107 | defb "SAPPHIRE RING",0 108 | defb "DIAMOND RING",0 109 | ;----- serazeno tak, aby se co nejlepe zjistovaly zakazane pozice pro dane predmety 110 | defb "HELM",0 111 | defb "DWARVEN HELM",0 112 | defb "NECKLACE",0 113 | ;-- 114 | defb "ARMOR",0 115 | defb "CHAINMAIL",0 116 | defb "LEATHER ARMOR",0 117 | defb "PLATE ARMOR",0 118 | ;-- 119 | defb "ARROW",0 120 | defb "BRACERS",0 121 | defb "BOOTS",0 122 | ;----- 123 | defb "ANKH",0 124 | defb "AXE",0 125 | defb "BOOK",0 126 | defb "BOW",0 127 | defb "DAGGER",0 128 | defb "MACE",0 129 | defb "SHIELD",0 130 | defb "SPIDER SHIELD",0 131 | defb "SLING",0 132 | defb "SWORD",0 133 | defb "BONE",0 134 | ;----- veci s hodnotou MIN_FOOD vcetne musi byt jedle 135 | defb "RATIONS",0 136 | defb "HEALING POTION",0 137 | defb "ANTIDOTE POTION",0 138 | defb "POTION_B",0 139 | 140 | ; RATIONS, CLERIC HOLY SYMBOL, LOCK PICKS, SHORT SWORD, HALFLING BONES 141 | ; SILVER KEY, IRON RATIONS, POTION, POTION OF GIANT STRENGTH, POTION OF HEALING 142 | ; ARROW, SLING, STONE DAGGER 143 | ; MAGE SCROLL OF DETECT MAGIC 144 | ; MAGE SCROLL OF ARMOR 145 | ; CLERIC SCROLL OF BLESS 146 | -------------------------------------------------------------------------------- /Source/objects.h: -------------------------------------------------------------------------------- 1 | ; pokud chceme prepinat vsechno daneho typu na dane lokaci tak nechat 0 2 | ; pokud chceme rozlisit i natoceni, dat 1 3 | KONTROLUJ_NATOCENI_U_PREPINACU equ 0 4 | 5 | NEXT_PAKA equ 120 6 | PAKA_DOWN equ 60 7 | NEXT_ENEMY equ 72 8 | 9 | 10 | ; ------------ aktualni adresa podfce je v test.asm 11 | 12 | ; cisla rohu pri pohledu danym smerem 13 | ; levy zadni ma vzdy index stejny jako smer pohledu 14 | ;Sever = 0 0 1 15 | ; 3 2 16 | 17 | ;Vychod = 1 1 2 18 | ; 0 3 19 | 20 | ;Jih = 2 2 3 21 | ; 1 0 22 | 23 | ;Zapad = 3 3 0 24 | ; 2 1 25 | 26 | ;VECTOR: 27 | ;defb north ; 0 = N,1 = E,2 = S,3 = W 28 | 29 | 30 | if (0) 31 | i_ld equ 0 ; predmet vidim jako levy-dal 32 | i_pd equ 2 ; predmet vidim jako pravy-dal 33 | i_pb equ 4 ; predmet vidim jako pravy-bliz 34 | i_lb equ 6 ; predmet vidim jako levy-bliz 35 | endif 36 | 37 | 38 | ; vvvv ----------------- 39 | HLAVNI_POSTAVA: 40 | defb 0 ; 0..5 41 | SUM_POSTAV: 42 | defb 6 ; 1..6 zpozor musi navazovat s HLAVNI_POSTAVA 43 | ; ^^^^ ----------------- musi navazovat a byt v tomto poradi 44 | 45 | 46 | BORDER: 47 | defb 0 48 | 49 | 50 | 51 | ; vvvv ----------------- zacatek souvisleho bloku 52 | POZICE_RUKOU: 53 | defw X22+Y01 ; postava 1. horni zbran 54 | defw X22+Y03 ; postava 1. dolni zbran 55 | defw X29+Y01 ; postava 2. horni zbran 56 | defw X29+Y03 ; postava 2. dolni zbran 57 | defw X22+Y08 ; postava 3. horni zbran 58 | defw X22+Y10 ; postava 3. dolni zbran 59 | defw X29+Y08 ; postava 4. horni zbran 60 | defw X29+Y10 ; postava 4. dolni zbran 61 | defw X22+Y15 ; postava 5. horni zbran 62 | defw X22+Y17 ; postava 5. dolni zbran 63 | defw X29+Y15 ; postava 6. horni zbran 64 | defw X29+Y17 ; postava 6. dolni zbran 65 | POZICE_RUKOU_END: 66 | ; ^^^^ ----------------- konec souvisleho bloku 67 | 68 | 69 | SIPKY_POZICE equ X00+Y15 70 | KOMPAS_POZICE equ X07+Y15 71 | 72 | AVATARS: 73 | defw MFace02, X18+Y01, FFace02, X25+Y01 74 | defw FFace03, X18+Y08, FFace04, X25+Y08 75 | defw MFace01, X18+Y15, FFace01, X25+Y15 76 | 77 | ; je label nutny? asi ne, ale musi bezprostredne navazovat za AVATARS 78 | KOMPAS: 79 | defw Kompas, KOMPAS_POZICE 80 | 81 | ; vvvv ----------------- zacatek souvisleho bloku 82 | SIPKY: 83 | defw S_vsechny, SIPKY_POZICE ; 84 | STISKNUTA_SIPKA: 85 | defw S_dopredu, X03+Y15 ; 0 86 | defw S_dozadu, X03+Y17 ; 4 87 | defw S_vlevo, X01+Y17 ; 8 ukrok 88 | defw S_vpravo, X05+Y17 ; 12 ukrok 89 | defw S_doleva, X01+Y15 ; 16 otoceni 90 | defw S_doprava, X05+Y15 ; 20 otoceni 91 | defw 0, 0 ; 24 92 | SIPKY_END: 93 | ; ^^^^ ----------------- konec souvisleho bloku 94 | 95 | 96 | SIPKA_DOPREDU equ 0 97 | SIPKA_DOZADU equ 4 98 | SIPKA_VLEVO equ 8 99 | SIPKA_VPRAVO equ 12 100 | SIPKA_OTOCDOLEVA equ 16 101 | SIPKA_OTOCDOPRAVA equ 20 102 | SIPKA_NIC equ 24 103 | 104 | RUZICE: 105 | defw Komp_N, X08+Y15 106 | defw Komp_E, X08+Y15 107 | defw Komp_S, X08+Y15 108 | defw Komp_W, X08+Y15 109 | RUZICE_END: 110 | 111 | 112 | 113 | ; index do tabulek, ktery znaci ze je nepritel primo pred nama 114 | ENEMY_ATTACK_DISTANCE equ 12 115 | 116 | ENEMY_GROUP: 117 | ; 3 4 3(4) (3)4 118 | ; 1 2 1(2) (1)2 119 | ; * vpravo * vlevo * 120 | ; 1 2 3 4 1 2 3 4 1 2 3 4 121 | defw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 122 | defw X03+Y05, X10+Y05, X04+Y04, X09+Y04, X17+Y05, 0, X16+Y04, 0, 0, Xm4+Y05, 0, Xm3+Y04 ; 16 123 | defw X05+Y05, X10+Y05, X06+Y04, X09+Y04, X15+Y05, 0, X14+Y04, 0, 0, X00+Y05, 0, X01+Y04 ; 10 124 | defw X06+Y05, X09+Y05, X07+Y05, X08+Y05, X13+Y05, X15+Y05, X12+Y05, X14+Y05, X00+Y05, X02+Y05, X01+Y05, X03+Y05 ; 6 125 | defw X08+Z04, X09+Y04, X09+Z04, X10+Z04, X12+Z04, X14+Z04, X10+Y04, X13+Z04, X03+Y04, X05+Y04, X04+Y04, X07+Z04 ; 3.75? V tehle vzdalenosti to chce jeste o 2 vpravo a o 2 vlevo 126 | 127 | 128 | 129 | DIV_6: 130 | defw 0, 0, 0, 0, 0, 0 131 | defw 2, 2, 2, 2, 2, 2 132 | defw 4, 4, 4, 4, 4, 4 133 | defw 6, 6, 6, 6, 6, 6 134 | defw 8, 8, 8, 8, 8, 8 135 | 136 | 137 | 138 | ITEM_POZICE: 139 | ; dvoubajtove cislo oznacuje levy horni roh odkud kreslit sprite 140 | ; prvni je souradnice se znamenkem X (zleva doprava) 141 | ; druhe je kladna souradnice Y (shora dolu), pokud je zaporna, tak se ma sprite kreslit zprava doleva 142 | ; primy smer vpravo vlevo sirka zadni 143 | ; l.dal p.dal p.bliz l.bliz l.dal p.dal p.bliz l.bliz l.dal p.dal p.bliz l.bliz steny 144 | defw X00+Y12, X17+Z12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; 16 145 | defw X04+Y10, X13+Z10, X14+Z11, X03+Y11, X16+Y10, 0, 0, X17+Y11, 0, X01+Z10, X00+Z11, 0 ; 10 146 | defw X06+Y08, X11+Z08, X12+Z09, X05+Y09, X13+Y08, X18+Z08, X19+Z09, X14+Y09, Xm1+Y08, X04+Z08, X03+Z09, Xm2+Y09 ; 6 147 | defw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; 4 148 | defw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; 149 | 150 | 151 | MAX_VIDITELNOST_PREDMETU_PLUS_1 equ 3*4*5 ; (primy smer/vpravo/vlevo) * ( 2 * world ) * 5 radek 152 | 153 | -------------------------------------------------------------------------------- /Source/move.asm: -------------------------------------------------------------------------------- 1 | ; ===================================================== 2 | ; VSTUP: b = -1 otoceni doleva, +1 otoceni doprava 3 | OTOC_SE: 4 | ; PRUMER equ ( SIPKA_OTOCDOLEVA + SIPKA_OTOCDOPRAVA ) /2 5 | ; ld a,PRUMER 6 | ld a,SIPKA_OTOCDOLEVA/2 + SIPKA_OTOCDOPRAVA/2 7 | add a,b 8 | add a,b 9 | call AKTUALIZUJ_SIPKY ; a = 16 otoceni doleva, 20 = otoceni doprava 10 | 11 | ld a,c ; 4:1 (VECTOR) 12 | add a,b ; 4:1 13 | and MASKA_NATOCENI ; 7:2 14 | ld hl,VECTOR ; 10:3 15 | ld (hl),a ; 7:1 ulozi novy VECTOR pohledu 16 | 17 | call INC_POCITADLO_POHYBU_A_ZVUK ; zvedne "pocitadlo pohybu/otoceni" 18 | 19 | 20 | ret 21 | 22 | 23 | ; ===================================================== 24 | ; ulozi do registru L novou pozici 25 | ; VSTUP: 26 | ; L = aktualni pozice 27 | ; C = (VECTOR) 28 | ; A = { 0 dopredu, 4 dozadu, 8 vlevo, 12 vpravo } 29 | ; VYSTUP: 30 | ; L = nova pozice 31 | ; MENI: 32 | ; A, DE 33 | HL_NOVA_POZICE: 34 | ld d,VEKTORY_POHYBU/256 ; 7:2 35 | add a,c ; 4:1 (VECTOR) = {0, 1, 2, 3} = sloupec 36 | ld e,a ; 4:1 de = @(VECTORY_POHYBU[radek][sloupec]) 37 | 38 | ld a,(de) ; 7:1 o kolik zmenit LOCATION pro pohyb danym smerem 39 | add a,l ; 4:1 ZMENIT POKUD BUDE MAPA 16bit!!! ( ..a nejen to, pozice predmetu, dveri atd. ) 40 | ld l,a ; 4:1 hl = pozice na mape po presunu 41 | ret 42 | 43 | 44 | ; ===================================================== 45 | ; VSTUP: 46 | ; VYSTUP: 47 | ; H = natoceni 48 | ; L = adresa na mape lokace pred nama 49 | ; MENI: 50 | ; A 51 | HL_VEPREDU: 52 | ld HL, (LOCATION) ; 16:3 L=LOCATION, H=VECTOR 53 | push HL ; 11:1 54 | ld A, L ; 4:1 A=LOCATION 55 | ld L, H ; 4:1 L=VECTOR 56 | ld H, VEKTORY_POHYBU/256 ; 7:2 HL = @(VECTORY_POHYBU[0][sloupec]) 57 | add A, (HL) ; 7:1 o kolik zmenit LOCATION pro pohyb danym smerem 58 | pop HL ; 10:1 59 | ld L, A ; 4:1 L = pozice na mape po presunu 60 | ret 61 | 62 | 63 | ; ===================================================== 64 | ; VSTUP: nic 65 | ; NEMENI: b ( protoze nesmi ) 66 | INC_POCITADLO_POHYBU_A_ZVUK: 67 | ld hl,POHYB ; 10:3 68 | inc (hl) 69 | 70 | ld hl,1000 71 | IPPAZ_LOOP: 72 | ld a,(hl) 73 | and 248 74 | out (254),a 75 | dec hl 76 | ld a,h 77 | or l 78 | jr nz,IPPAZ_LOOP 79 | ret 80 | 81 | 82 | ; ===================================================== 83 | ; Pokud je aktivni panel s inventarem, tak sipky pohybuji s kurzorem v inventari 84 | ; VSTUP 85 | ; B = stisknuto_dopredu..stisknuto_vpravo = { stisknuto_dopredu = 0,stisknuto_dozadu = 1,stisknuto_vlevo = 2,stisknuto_vpravo = 3 } 86 | ; A = KEY_DOPREDU (119), KEY_DOZADU (115), KEY_VLEVO (97), KEY_VPRAVO (100) 87 | POSUN: 88 | ; zobrazeni co je stisknuto primo na SCREEN 89 | ld A, B 90 | add A, A 91 | add A, A 92 | call AKTUALIZUJ_SIPKY 93 | 94 | call TEST_OTEVRENY_INVENTAR ; 95 | ; A = 0..MAX_INVENTORY-1 96 | jp z, POSUN_NEJSEM_V_INVENTARI 97 | ; jsme v inventari 98 | ld C, B ; 4:1 99 | dec B ; 4:1 100 | jr z, POSUN_PRICTI ;12/7:2 bylo to stisknuto_dozadu(=dolu)? pak C = 1 101 | ld C, B ; 4:1 102 | jp m, POSUN_PRICTI ; 10:3 bylo to stisknuto_dopredu(=nahoru)? pak C = -1 103 | 104 | 105 | if ((POSUN_VLEVO_INVENTAREM-1)/256) != (POSUN_VLEVO_INVENTAREM_END/256) 106 | .error 'Seznam POSUN_VLEVO_INVENTAREM prekracuje 256 bajtovy segment!' 107 | endif 108 | 109 | ld HL, POSUN_VLEVO_INVENTAREM-1; 10:3 110 | dec B ; 4:1 111 | jr z, POSUN_LOOP ;12/7:2 bylo to stisknuto_vlevo? 112 | ld L, POSUN_VPRAVO_INVENTAREM-1; 7:2 113 | 114 | POSUN_LOOP: ; prochazeni pole POSUN_VLEVO_INVENTAREM nebo POSUN_VPRAVO_INVENTAREM a hledani spravneho rozsahu 115 | inc l ; 4:1 116 | cp (hl) ; 7:1 117 | inc l ; 4:1 carry flag nebude zmenen 118 | jr nc,POSUN_LOOP ;12/7:2 119 | 120 | ld c,(hl) ; 7:1 121 | 122 | ; VSTUP: 123 | ; C = o kolik mam zmenit aktualni index 124 | POSUN_PRICTI: 125 | add a,c ; 4:1 126 | ld b,MAX_INVENTORY 127 | jp p,POSUN_NEZAPORNY 128 | add a,B ; k zapornemu kurzoru prictu MAX_INVENTORY 129 | POSUN_NEZAPORNY: 130 | cp b 131 | jr c,POSUN_V_MEZICH 132 | sub b ; u kurzoru co pretekl odectu MAX_INVENTORY 133 | POSUN_V_MEZICH: 134 | ld (KURZOR_V_INVENTARI),a ; opraveny zmeneny ulozim 135 | jp INVENTORY_WINDOW_KURZOR 136 | 137 | 138 | ; ----------------------------------------------------- 139 | POSUN_NEJSEM_V_INVENTARI: 140 | 141 | ld a, b 142 | add a, a ; 4:1 2x 143 | add a, a ; 4:1 4x 144 | push af ; uchovam smer kvuli sipkam 145 | call AKTUALIZUJ_SIPKY 146 | pop af 147 | 148 | call HL_NOVA_POZICE 149 | ; test steny 150 | ld ix, VETA_NO_WAY 151 | bit BIT_NEPRUCHOZI, (hl) ; 12:2 self-modifying pokud meni patra 152 | jr nz, PRINT_MESSAGE ;12/7:1 exit + hlaska 153 | ; test nepruchoziho objektu 154 | call JE_POZICE_BLOKOVANA_L ; vraci carry priznak kdyz je zablokovana 155 | jr c, PRINT_MESSAGE ;12/7:1 exit + hlaska 156 | 157 | ld a, l 158 | ld (LOCATION), a ; 13:3 ulozi novou pozici 159 | 160 | jr INC_POCITADLO_POHYBU_A_ZVUK ;zvedne "pocitadlo pohybu/otoceni" 161 | 162 | ; ret 163 | -------------------------------------------------------------------------------- /Source/input.asm: -------------------------------------------------------------------------------- 1 | ; ===================================================== 2 | ; VSTUP: 3 | ; cte porty pro KEMPSTON joystick 4 | ; VYSTUP: 5 | ; A = podvrzeny ascii kod stisknute klavesy 6 | ; zero flag kdyz nic nenacetl 7 | TEST_KEMPSTON: 8 | xor A ; A = novy stav joysticku 9 | ld H, A ; H = puvodni stav joystiku 10 | ld L, A ; HL = 0 11 | TK_NOVY_STAV: 12 | ld B, REPEAT_READING_JOY ; pocet opakovani cteni stavu joysticku po kazde zmene 13 | or H ; pridame k puvodnimu stavu novy 14 | ld H, A ; ulozime do puvodniho 15 | TK_LOOP: 16 | halt ; 17 | in A, (JOY_PORT) ; cteme stav joysticku 18 | and $1F ; odmazem sum v hornich bitech, krome spodnich 5 19 | cp $1F ; je neco stisknuto? 20 | ret z ; 21 | cp L ; lisi se nove cteni od predchoziho? 22 | ld L, A ; posledni cteni do registru "l" 23 | jr nz, TK_NOVY_STAV ; lisi se 24 | djnz TK_LOOP ; nelisilo se, snizime pocitadlo 25 | 26 | ld A, H ; vysledny stav do akumulatoru 27 | ld HL, DATA_KEMPSTON ; 28 | ld B, DATA_KEMPSTON_SUM ; delka tabulky 29 | TK_TEST_STAVU: 30 | cp (HL) ; je to hledana kombinace 31 | inc HL ; nemeni priznaky 32 | jr z, TK_SHODNY_STAV ; 33 | inc HL ; 34 | djnz TK_TEST_STAVU ; 35 | 36 | TK_SHODNY_STAV: 37 | ld A, (HL) ; nahradi stav joysticku ekvivalentnim znakem klavesnice 38 | or A ; (not) zero flag 39 | ret ; 40 | 41 | 42 | 43 | ; ===================================================== 44 | ; VSTUP: nic 45 | ; VYSTUP: 46 | KEYPRESSED: 47 | ld DE, TIMER_ADR 48 | ld A, (DE) 49 | and FLOP_BIT_ATTACK/2 50 | ld B, A ; nastav bit 51 | ld HL, LAST_KEY_ADR ; 10:3 23560 = LAST K system variable. 52 | KEYPRESSED_NO: 53 | 54 | ld A, (DE) 55 | and FLOP_BIT_ATTACK/2 56 | xor B 57 | ret nz ; pokud bit uz neni shodny tak prekresli scenu 58 | 59 | ld A, (HL) ; 7:1 a = LAST K 60 | or a ; 4:1 nula? 61 | push hl 62 | push bc 63 | call z, TEST_KEMPSTON 64 | pop bc 65 | pop hl 66 | 67 | jr z,KEYPRESSED_NO ;12/7:2 v tehle smycce bude Z80 nejdelsi dobu... 68 | 69 | ld b,0 ; 7:2 70 | ld (hl),b ; 7:1 smazem, LAST K = 0 71 | 72 | ld HL, (LOCATION) ; 16:3 L=LOCATION, H=VECTOR 73 | ld C, H ; 4:1 (VECTOR) 74 | ld H, DUNGEON_MAP/256 ; 7:2 HL = aktualni pozice na mape 75 | 76 | ; Vstup: 77 | ; HL = adresa mapy 78 | ; C = vektor natoceni 79 | ; A = stisknuty znak 80 | 81 | ; B = 0 = stisknuto_dopredu = offset radku tabulky VEKTORY_POHYBU 82 | 83 | ld DE, POSUN 84 | push DE 85 | 86 | if ( stisknuto_dopredu = 0 and stisknuto_dozadu = 1 and stisknuto_vlevo = 2 and stisknuto_vpravo = 3 ) 87 | cp KEY_DOPREDU ; 7:2, "w" = dopredu 88 | ret z 89 | 90 | inc B ; 4:1 B = stisknuto_dozadu 91 | cp KEY_DOZADU ; 7:2, "s" = dozadu 92 | ret z 93 | 94 | inc B ; 4:1 B = stisknuto_vlevo 95 | cp KEY_VLEVO ; 7:2, "a" = vlevo 96 | ret z 97 | 98 | inc B ; 4:1 B = stisknuto_vpravo 99 | cp KEY_VPRAVO ; 7:2, "d" = vpravo 100 | ret z 101 | 102 | else 103 | 104 | .warning 'Delsi kod o 4 bajty protoze stisknuto_dopredu..stisknuto_vpravo != 0..3' 105 | 106 | cp KEY_DOPREDU ; 7:2, "w" = dopredu 107 | ret z 108 | 109 | ld B, stisknuto_dozadu ; 7:2, offset radku tabulky VEKTORY_POHYBU 110 | cp KEY_DOZADU ; 7:2, "s" = dozadu 111 | ret z 112 | 113 | ld B, stisknuto_vlevo ; 7:2, offset radku tabulky VEKTORY_POHYBU 114 | cp KEY_VLEVO ; 7:2, "a" = vlevo 115 | ret z 116 | 117 | ld B, stisknuto_vpravo ; 7:2, offset radku tabulky VEKTORY_POHYBU 118 | cp KEY_VPRAVO ; 7:2, "d" = vpravo 119 | ret z 120 | endif 121 | pop DE 122 | 123 | ld b,-1 ; 7:2, pouzito pro VECTOR += b 124 | cp KEY_DOLEVA ; 7:2, "q" = otoc se vlevo 125 | jr z,OTOC_SE 126 | 127 | ld b,1 ; 7:2, pouzito pro VECTOR += b 128 | cp KEY_DOPRAVA ; 7:2, "e" = otoc se vpravo 129 | jr z, OTOC_SE 130 | 131 | cp KEY_SPACE ; 7:2, "mezernik/asi space" = prepnuti paky 132 | jp z, PREHOD_PREPINAC 133 | 134 | cp KEY_INVENTAR ; 7:2 "i" = inventar / hraci 135 | jp z,SET_RIGHT_PANEL 136 | 137 | cp KEY_FHAND ; 7:2 "f" first hand 138 | jp z, BOJ 139 | 140 | cp KEY_SHAND ; 7:2 "g" second hand 141 | jp z, BOJ 142 | 143 | cp 42 ; 7:2 "*" = ctrl+b ( nastavi border pro test synchronizace obrazu ) 144 | jp z, SET_BORDER 145 | 146 | cp 96 ; ctrl+x 147 | jr nz, K_NOEXIT ; jina klavesa? 148 | pop hl ; zrusim ret 149 | call POP_ALL 150 | ret ; return to BASIC 151 | K_NOEXIT: 152 | 153 | 154 | ld HL, SUM_POSTAV 155 | ld DE, NEW_PLAYER_ACTIVE 156 | push DE 157 | 158 | cp KEY_PLUS ; 7:2 "k" = "+" 159 | jp z, POSTAVA_PLUS 160 | 161 | cp KEY_MINUS ; 7:2 "j" = "-" 162 | jp z, POSTAVA_MINUS 163 | 164 | sub '1' ; 0..5? 165 | cp (HL) ; 1..6 166 | jp nc, HELP 167 | 168 | dec HL ; 6:1 HL = HLAVNI_POSTAVA 169 | ld (HL), A ; 7:1 nova HLAVNI_POSTAVA 170 | ret ; jp NEW_PLAYER_ACTIVE 171 | 172 | 173 | ; ===================================================== 174 | SET_BORDER: 175 | ld a, (BORDER) 176 | xor $07 177 | ld (BORDER), a 178 | ret 179 | 180 | -------------------------------------------------------------------------------- /Source/draw3D.asm: -------------------------------------------------------------------------------- 1 | ; ===================================================== 2 | DRAW3D: 3 | call SET_MAX_17 4 | 5 | ; vykresleni pozadi ( strop a podlaha ) 6 | ld B, $12 ; 18 prouzku ( sloupcu ) 7 | ld A, (POHYB) ; 13:3 8 | rrca ; carry? 9 | add A, A ; 4:1 2x 10 | add A, A ; 4:1 4x 11 | if ( BIT_ZRCADLOVE != 2 || Y00 != 0 ) 12 | .error 'Zmenit kod BIT_ZRCADLOVE != 4 nebo Y00 != 0...' 13 | endif 14 | and MASKA_ZRCADLOVE ; 7:2 15 | ld C, A 16 | 17 | D_POZADI_LOOP: 18 | ld DE, H5 19 | push BC 20 | dec B ; 0..17 21 | call COPY_SPRITE2BUFFER 22 | pop BC 23 | djnz D_POZADI_LOOP 24 | 25 | ; vykresli dno bufferu 26 | ld de, dno_bufferu 27 | ld bc, X00+Y14 ; 28 | call COPY_SPRITE2BUFFER 29 | 30 | ld h, VEKTORY_POHYBU/256 ; 7:2 31 | ld a, (VECTOR) ; 13:3 {0, 1, 2, 3} 32 | ld l, a ; 4:1 33 | ld c, (hl) ; 7:1 modifikator pro posun vpred (prvni radek) 34 | add a, 12 ; 7:2 35 | ld l, a ; 4:1 36 | ld a, (hl) ; 7:1 modifikator pro posun vpravo (posledni radek) 37 | ld e, a ; 4:1 "e" obsahuje "o 1 vpravo" 38 | add a, a ; 4:1 2 * vpravo 39 | add a, a ; 4:1 4 * vpravo 40 | ld d, a ; 4:1 "d" obsahuje "max vpravo" 41 | 42 | ld h,DUNGEON_MAP/256 ; 7:2 43 | ld a,(LOCATION) ; 13:3 44 | ld b,6 ; 7:2 45 | NULA: 46 | ld l,a ; 4:1 47 | push hl ; 11:1 48 | add a,c ; 4:1 c = modifikator pro posun vpred 49 | djnz NULA ; 13/8:2 50 | 51 | 52 | pop ix ; do IX nactem nejvzdalenejsi pozici co vidim pred sebou 53 | push de 54 | ld hl,TABLE_VIEW_9_DEPTH_4 55 | ld b,-1 ; hloubka 56 | call PROHLEDEJ_PROSTOR_VPREDU ; -40 H4 57 | pop de 58 | ld a,d 59 | sub e 60 | ld d,a 61 | 62 | pop ix 63 | push de 64 | ld hl,TABLE_VIEW_7_DEPTH_3 65 | ld b,48 ; hloubka 66 | call PROHLEDEJ_PROSTOR_VPREDU ; -32 H3 67 | pop de 68 | ld a,d 69 | sub e 70 | ld d,a 71 | 72 | pop ix 73 | push de 74 | ld hl,TABLE_VIEW_5_DEPTH_2 75 | ld b,36 ; hloubka 76 | call PROHLEDEJ_PROSTOR_VPREDU ; -24 H2 77 | pop de 78 | ld a,d 79 | sub e 80 | ld d,a 81 | 82 | pop ix 83 | push de 84 | ld hl,TABLE_DEPTH_1 85 | ld b,24 ; hloubka 86 | call PROHLEDEJ_PROSTOR_VPREDU ; -16 H1 87 | pop de 88 | 89 | pop ix 90 | push de 91 | ld hl,TABLE_DEPTH_0 92 | ld b,12 ; hloubka 93 | call PROHLEDEJ_PROSTOR_VPREDU ; -8 H0 94 | pop de 95 | 96 | pop ix 97 | ld hl,TABLE_DEPTH_x 98 | ld b,0 99 | call PROHLEDEJ_PROSTOR_VPREDU 100 | 101 | call VYKRESLI_AKTIVNI_PREDMET 102 | 103 | call SET_MAX_31 104 | ret 105 | 106 | 107 | ; ===================================================== 108 | ; VSTUP: 109 | ; IX obsahuje pozici na mape kterou vykresluji 110 | ; HL obsahuje odkaz do tabulky sten 111 | ; D obsahuje max vpravo 112 | ; E obsahuje pozice_vpravo - pozice (o 1 vpravo) 113 | ; B obsahuje hloubku/vzdalenost pro zjisteni jakou verzi spritu nakreslit v objektech 114 | PROHLEDEJ_PROSTOR_VPREDU: 115 | ld C, IXL ; ulozime offset pozice 116 | ld A, D 117 | PPV_LOOP: ; djnz smycka 118 | add A, C 119 | ld IXL, A ; ix = max. vpravo 120 | 121 | 122 | ; test steny 123 | bit BIT_STENA, (IX) ; test 0000 0010 124 | call INIT_COPY_PATTERN2BUFFER 125 | call INIT_COPY_PATTERN2BUFFER 126 | 127 | ld A, D 128 | cp E 129 | ; jsme o 1 vpravo 130 | ld A, $04 ; primy pohled, o 1 vpravo, o 1 vlevo 131 | call z, INIT_FIND_OBJECT 132 | 133 | 134 | ld a,c 135 | sub d 136 | ld ixl,a ; ix = max. vlevo 137 | ; test steny 138 | bit BIT_STENA, (IX) 139 | call INIT_COPY_PATTERN2BUFFER 140 | call INIT_COPY_PATTERN2BUFFER 141 | 142 | ld a,d 143 | cp e 144 | ; jsme o 1 vlevo 145 | ld a, $08 ; primy pohled, o 1 vpravo, o 1 vlevo 146 | call z, INIT_FIND_OBJECT 147 | 148 | ld a,d 149 | sub e 150 | ld d,a 151 | jr nz,PPV_LOOP 152 | 153 | ld ixl,c 154 | ; test steny 155 | bit BIT_STENA, (IX) 156 | call INIT_COPY_PATTERN2BUFFER 157 | ; divame se vpred 158 | xor a ; primy pohled, o 1 vpravo, o 1 vlevo 159 | call INIT_FIND_OBJECT 160 | 161 | 162 | ret 163 | 164 | 165 | ADD_BC_INIT_COPY_PATTERN2BUFFER_NOZEROFLAG: 166 | 167 | add HL, BC 168 | ; ===================================================== 169 | ; VSTUP: 170 | ; HL adresa od ktere se budou cist data ( adresa spritu a XY na obrazovce ) 171 | ; VYSTUP: HL = HL + 4 i kdyz se nic nekreslilo 172 | ; MENI: 173 | ; AF , HL=HL+4 174 | INIT_COPY_PATTERN2BUFFER_NOZEROFLAG: 175 | or 1 ; reset zero flag 176 | ; ----------------------------------------------------- 177 | ; VSTUP: 178 | ; zero-flag = 0, nebude se kreslit, = 1 bude 179 | ; HL adresa od ktere se budou cist data ( adresa spritu a XY na obrazovce ) 180 | ; VYSTUP: HL = HL + 4 i kdyz se nic nekreslilo 181 | ; MENI: 182 | ; F , HL=HL+4 183 | INIT_COPY_PATTERN2BUFFER: 184 | push DE 185 | push BC 186 | 187 | ld e, (hl) 188 | inc hl 189 | ld d, (hl) 190 | inc hl 191 | ld c, (hl) 192 | inc hl 193 | ld b, (hl) 194 | inc hl 195 | 196 | jr z, ICP_EXIT ; je tam chodba, nekreslime 197 | 198 | inc d ; ochranujem akumulator 199 | dec d ; D = 0? nekreslime 200 | 201 | push af 202 | push hl 203 | push ix 204 | 205 | call nz, COPY_SPRITE2BUFFER 206 | 207 | pop ix 208 | pop hl 209 | pop af 210 | 211 | ICP_EXIT: 212 | pop BC 213 | pop DE 214 | ret 215 | 216 | 217 | ; ===================================================== 218 | INIT_FIND_OBJECT: 219 | 220 | bit 7,B ; zaporna hloubka, nekreslim, usetrim si radek s nulama v kazde tabulce 221 | ret nz 222 | 223 | push hl 224 | push de 225 | push bc 226 | 227 | add a,b 228 | ld c,a ; C = 0 -> stojime primo na dane lokaci 229 | ld b,0 ; bc ted dela index pro danou hloubku a kolmici 230 | 231 | call FIND_OBJECT 232 | pop bc 233 | pop de 234 | pop hl 235 | ret 236 | 237 | 238 | 239 | -------------------------------------------------------------------------------- /Source/zrcadlovy.h: -------------------------------------------------------------------------------- 1 | ZRCADLOVY: 2 | defb %00000000 ; 0 00000000 3 | defb %10000000 ; 1 00000001 4 | defb %01000000 ; 2 00000010 5 | defb %11000000 ; 3 00000011 6 | defb %00100000 ; 4 00000100 7 | defb %10100000 ; 5 00000101 8 | defb %01100000 ; 6 00000110 9 | defb %11100000 ; 7 00000111 10 | defb %00010000 ; 8 00001000 11 | defb %10010000 ; 9 00001001 12 | defb %01010000 ; 10 00001010 13 | defb %11010000 ; 11 00001011 14 | defb %00110000 ; 12 00001100 15 | defb %10110000 ; 13 00001101 16 | defb %01110000 ; 14 00001110 17 | defb %11110000 ; 15 00001111 18 | defb %00001000 ; 16 00010000 19 | defb %10001000 ; 17 00010001 20 | defb %01001000 ; 18 00010010 21 | defb %11001000 ; 19 00010011 22 | defb %00101000 ; 20 00010100 23 | defb %10101000 ; 21 00010101 24 | defb %01101000 ; 22 00010110 25 | defb %11101000 ; 23 00010111 26 | defb %00011000 ; 24 00011000 27 | defb %10011000 ; 25 00011001 28 | defb %01011000 ; 26 00011010 29 | defb %11011000 ; 27 00011011 30 | defb %00111000 ; 28 00011100 31 | defb %10111000 ; 29 00011101 32 | defb %01111000 ; 30 00011110 33 | defb %11111000 ; 31 00011111 34 | defb %00000100 ; 32 00100000 35 | defb %10000100 ; 33 00100001 36 | defb %01000100 ; 34 00100010 37 | defb %11000100 ; 35 00100011 38 | defb %00100100 ; 36 00100100 39 | defb %10100100 ; 37 00100101 40 | defb %01100100 ; 38 00100110 41 | defb %11100100 ; 39 00100111 42 | defb %00010100 ; 40 00101000 43 | defb %10010100 ; 41 00101001 44 | defb %01010100 ; 42 00101010 45 | defb %11010100 ; 43 00101011 46 | defb %00110100 ; 44 00101100 47 | defb %10110100 ; 45 00101101 48 | defb %01110100 ; 46 00101110 49 | defb %11110100 ; 47 00101111 50 | defb %00001100 ; 48 00110000 51 | defb %10001100 ; 49 00110001 52 | defb %01001100 ; 50 00110010 53 | defb %11001100 ; 51 00110011 54 | defb %00101100 ; 52 00110100 55 | defb %10101100 ; 53 00110101 56 | defb %01101100 ; 54 00110110 57 | defb %11101100 ; 55 00110111 58 | defb %00011100 ; 56 00111000 59 | defb %10011100 ; 57 00111001 60 | defb %01011100 ; 58 00111010 61 | defb %11011100 ; 59 00111011 62 | defb %00111100 ; 60 00111100 63 | defb %10111100 ; 61 00111101 64 | defb %01111100 ; 62 00111110 65 | defb %11111100 ; 63 00111111 66 | defb %00000010 ; 64 01000000 67 | defb %10000010 ; 65 01000001 68 | defb %01000010 ; 66 01000010 69 | defb %11000010 ; 67 01000011 70 | defb %00100010 ; 68 01000100 71 | defb %10100010 ; 69 01000101 72 | defb %01100010 ; 70 01000110 73 | defb %11100010 ; 71 01000111 74 | defb %00010010 ; 72 01001000 75 | defb %10010010 ; 73 01001001 76 | defb %01010010 ; 74 01001010 77 | defb %11010010 ; 75 01001011 78 | defb %00110010 ; 76 01001100 79 | defb %10110010 ; 77 01001101 80 | defb %01110010 ; 78 01001110 81 | defb %11110010 ; 79 01001111 82 | defb %00001010 ; 80 01010000 83 | defb %10001010 ; 81 01010001 84 | defb %01001010 ; 82 01010010 85 | defb %11001010 ; 83 01010011 86 | defb %00101010 ; 84 01010100 87 | defb %10101010 ; 85 01010101 88 | defb %01101010 ; 86 01010110 89 | defb %11101010 ; 87 01010111 90 | defb %00011010 ; 88 01011000 91 | defb %10011010 ; 89 01011001 92 | defb %01011010 ; 90 01011010 93 | defb %11011010 ; 91 01011011 94 | defb %00111010 ; 92 01011100 95 | defb %10111010 ; 93 01011101 96 | defb %01111010 ; 94 01011110 97 | defb %11111010 ; 95 01011111 98 | defb %00000110 ; 96 01100000 99 | defb %10000110 ; 97 01100001 100 | defb %01000110 ; 98 01100010 101 | defb %11000110 ; 99 01100011 102 | defb %00100110 ; 100 01100100 103 | defb %10100110 ; 101 01100101 104 | defb %01100110 ; 102 01100110 105 | defb %11100110 ; 103 01100111 106 | defb %00010110 ; 104 01101000 107 | defb %10010110 ; 105 01101001 108 | defb %01010110 ; 106 01101010 109 | defb %11010110 ; 107 01101011 110 | defb %00110110 ; 108 01101100 111 | defb %10110110 ; 109 01101101 112 | defb %01110110 ; 110 01101110 113 | defb %11110110 ; 111 01101111 114 | defb %00001110 ; 112 01110000 115 | defb %10001110 ; 113 01110001 116 | defb %01001110 ; 114 01110010 117 | defb %11001110 ; 115 01110011 118 | defb %00101110 ; 116 01110100 119 | defb %10101110 ; 117 01110101 120 | defb %01101110 ; 118 01110110 121 | defb %11101110 ; 119 01110111 122 | defb %00011110 ; 120 01111000 123 | defb %10011110 ; 121 01111001 124 | defb %01011110 ; 122 01111010 125 | defb %11011110 ; 123 01111011 126 | defb %00111110 ; 124 01111100 127 | defb %10111110 ; 125 01111101 128 | defb %01111110 ; 126 01111110 129 | defb %11111110 ; 127 01111111 130 | defb %00000001 ; 128 10000000 131 | defb %10000001 ; 129 10000001 132 | defb %01000001 ; 130 10000010 133 | defb %11000001 ; 131 10000011 134 | defb %00100001 ; 132 10000100 135 | defb %10100001 ; 133 10000101 136 | defb %01100001 ; 134 10000110 137 | defb %11100001 ; 135 10000111 138 | defb %00010001 ; 136 10001000 139 | defb %10010001 ; 137 10001001 140 | defb %01010001 ; 138 10001010 141 | defb %11010001 ; 139 10001011 142 | defb %00110001 ; 140 10001100 143 | defb %10110001 ; 141 10001101 144 | defb %01110001 ; 142 10001110 145 | defb %11110001 ; 143 10001111 146 | defb %00001001 ; 144 10010000 147 | defb %10001001 ; 145 10010001 148 | defb %01001001 ; 146 10010010 149 | defb %11001001 ; 147 10010011 150 | defb %00101001 ; 148 10010100 151 | defb %10101001 ; 149 10010101 152 | defb %01101001 ; 150 10010110 153 | defb %11101001 ; 151 10010111 154 | defb %00011001 ; 152 10011000 155 | defb %10011001 ; 153 10011001 156 | defb %01011001 ; 154 10011010 157 | defb %11011001 ; 155 10011011 158 | defb %00111001 ; 156 10011100 159 | defb %10111001 ; 157 10011101 160 | defb %01111001 ; 158 10011110 161 | defb %11111001 ; 159 10011111 162 | defb %00000101 ; 160 10100000 163 | defb %10000101 ; 161 10100001 164 | defb %01000101 ; 162 10100010 165 | defb %11000101 ; 163 10100011 166 | defb %00100101 ; 164 10100100 167 | defb %10100101 ; 165 10100101 168 | defb %01100101 ; 166 10100110 169 | defb %11100101 ; 167 10100111 170 | defb %00010101 ; 168 10101000 171 | defb %10010101 ; 169 10101001 172 | defb %01010101 ; 170 10101010 173 | defb %11010101 ; 171 10101011 174 | defb %00110101 ; 172 10101100 175 | defb %10110101 ; 173 10101101 176 | defb %01110101 ; 174 10101110 177 | defb %11110101 ; 175 10101111 178 | defb %00001101 ; 176 10110000 179 | defb %10001101 ; 177 10110001 180 | defb %01001101 ; 178 10110010 181 | defb %11001101 ; 179 10110011 182 | defb %00101101 ; 180 10110100 183 | defb %10101101 ; 181 10110101 184 | defb %01101101 ; 182 10110110 185 | defb %11101101 ; 183 10110111 186 | defb %00011101 ; 184 10111000 187 | defb %10011101 ; 185 10111001 188 | defb %01011101 ; 186 10111010 189 | defb %11011101 ; 187 10111011 190 | defb %00111101 ; 188 10111100 191 | defb %10111101 ; 189 10111101 192 | defb %01111101 ; 190 10111110 193 | defb %11111101 ; 191 10111111 194 | defb %00000011 ; 192 11000000 195 | defb %10000011 ; 193 11000001 196 | defb %01000011 ; 194 11000010 197 | defb %11000011 ; 195 11000011 198 | defb %00100011 ; 196 11000100 199 | defb %10100011 ; 197 11000101 200 | defb %01100011 ; 198 11000110 201 | defb %11100011 ; 199 11000111 202 | defb %00010011 ; 200 11001000 203 | defb %10010011 ; 201 11001001 204 | defb %01010011 ; 202 11001010 205 | defb %11010011 ; 203 11001011 206 | defb %00110011 ; 204 11001100 207 | defb %10110011 ; 205 11001101 208 | defb %01110011 ; 206 11001110 209 | defb %11110011 ; 207 11001111 210 | defb %00001011 ; 208 11010000 211 | defb %10001011 ; 209 11010001 212 | defb %01001011 ; 210 11010010 213 | defb %11001011 ; 211 11010011 214 | defb %00101011 ; 212 11010100 215 | defb %10101011 ; 213 11010101 216 | defb %01101011 ; 214 11010110 217 | defb %11101011 ; 215 11010111 218 | defb %00011011 ; 216 11011000 219 | defb %10011011 ; 217 11011001 220 | defb %01011011 ; 218 11011010 221 | defb %11011011 ; 219 11011011 222 | defb %00111011 ; 220 11011100 223 | defb %10111011 ; 221 11011101 224 | defb %01111011 ; 222 11011110 225 | defb %11111011 ; 223 11011111 226 | defb %00000111 ; 224 11100000 227 | defb %10000111 ; 225 11100001 228 | defb %01000111 ; 226 11100010 229 | defb %11000111 ; 227 11100011 230 | defb %00100111 ; 228 11100100 231 | defb %10100111 ; 229 11100101 232 | defb %01100111 ; 230 11100110 233 | defb %11100111 ; 231 11100111 234 | defb %00010111 ; 232 11101000 235 | defb %10010111 ; 233 11101001 236 | defb %01010111 ; 234 11101010 237 | defb %11010111 ; 235 11101011 238 | defb %00110111 ; 236 11101100 239 | defb %10110111 ; 237 11101101 240 | defb %01110111 ; 238 11101110 241 | defb %11110111 ; 239 11101111 242 | defb %00001111 ; 240 11110000 243 | defb %10001111 ; 241 11110001 244 | defb %01001111 ; 242 11110010 245 | defb %11001111 ; 243 11110011 246 | defb %00101111 ; 244 11110100 247 | defb %10101111 ; 245 11110101 248 | defb %01101111 ; 246 11110110 249 | defb %11101111 ; 247 11110111 250 | defb %00011111 ; 248 11111000 251 | defb %10011111 ; 249 11111001 252 | defb %01011111 ; 250 11111010 253 | defb %11011111 ; 251 11111011 254 | defb %00111111 ; 252 11111100 255 | defb %10111111 ; 253 11111101 256 | defb %01111111 ; 254 11111110 257 | defb %11111111 ; 255 11111111 -------------------------------------------------------------------------------- /Source/inventory.h: -------------------------------------------------------------------------------- 1 | MAX_INVENTORY equ 31 2 | MAX_HOLD_INVENTORY equ (MAX_INVENTORY-4) 3 | 4 | COLOR_OTHER_PLAYERS equ %00000111 ; white ink + black paper 5 | COLOR_ACTIVE_PLAYER equ %00000011 ; magenta ink + black paper 6 | 7 | 8 | INVENTORY_ITEMS: 9 | ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 | ; player 0 11 | defb PODTYP_ARMOR_P, PODTYP_SHIELD, PODTYP_FOOD, PODTYP_FOOD, PODTYP_ANKH, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 12 | ; prostirani hlava nahrdelnik brneni l.ruka l.prsten boty toulec chran.predlokti p.ruka p.prsten na zemi na zemi na zemi na zemi 13 | defb 0, PODTYP_HELM_D, 0, PODTYP_ARMOR_CH,PODTYP_AXE, 0, PODTYP_BOOTS, 0, 0, PODTYP_SHIELD, PODTYP_RING_B, 5, 4, 3, 2 14 | 15 | ; player 1 16 | defb PODTYP_FOOD, PODTYP_DAGGER, 0, 0, PODTYP_ANKH, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 17 | defb 0, PODTYP_HELM, PODTYP_NECKLACE,PODTYP_ARMOR_P, PODTYP_SWORD, PODTYP_RING_R, 0, 0, PODTYP_BRACERS, PODTYP_SHIELD, 0, 0, 0, 0, 0 18 | 19 | ; player 2 20 | defb PODTYP_POTION_R,PODTYP_POTION_R,PODTYP_POTION_G,PODTYP_POTION_B,PODTYP_ANKH, 0, 0, 0, PODTYP_DAGGER, 0, 0, 0, 0, 0, 0, 0 21 | defb 0, 0, PODTYP_NECKLACE,PODTYP_ARMOR_L, PODTYP_MACE, 0, PODTYP_BOOTS, 0, 0, PODTYP_ANKH, 0, 0, 0, 0, 0 22 | 23 | ; player 3 24 | defb PODTYP_DAGGER, PODTYP_SHIELD2, PODTYP_FOOD, 0, PODTYP_SLING, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 25 | defb 0, 0, 0, 0, PODTYP_DAGGER, PODTYP_RING_W, PODTYP_BOOTS, 0, 0, PODTYP_DAGGER, 0, 0, 0, 0, 0 26 | 27 | ; player 4 28 | defb PODTYP_DAGGER, PODTYP_SHIELD, 0, 0, PODTYP_BONE, 0, 0, 0, 0, 0, 0, PODTYP_BOW, 0, 0, 0, 0 29 | defb 0, 0, 0, 0, PODTYP_BOW, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 30 | 31 | ; player 5 32 | defb PODTYP_DAGGER, PODTYP_SHIELD, 0, 0, 0, 0, 0, PODTYP_MACE, 0, 0, 0, 0, 0, 0, 0, 0 33 | defb 0, 0, PODTYP_NECKLACE,0, 0, PODTYP_RING_G, 0, 0, 0, PODTYP_BOOK, PODTYP_RING, 0, 0, 0, 0 34 | 35 | INVENTORY_ITEMS_END: 36 | 37 | 38 | 39 | 40 | ; vvvvvvvvvvvvvvvvvvvvvvvvv zacatek souvisleho bloku vvvvvvvvvvvvvvvvvvvvvvvvv 41 | ; Tabulka prevodu jednobytove identifikace predmetu na 2D sprite 42 | ITEM2SPRITE: 43 | defw 0 44 | defw I_ring ; PODTYP_RING equ 1*POSUN_PODTYP 45 | defw I_ring_r ; PODTYP_RING_R equ 2*POSUN_PODTYP 46 | defw I_ring_g ; PODTYP_RING_G equ 3*POSUN_PODTYP 47 | defw I_ring_b ; PODTYP_RING_B equ 4*POSUN_PODTYP 48 | defw I_ring_w ; PODTYP_RING_W equ 5*POSUN_PODTYP 49 | MAX_RING_PLUS_1 equ (1+PODTYP_RING_W) 50 | ;--- 51 | defw I_helm ; PODTYP_HELM equ 6*POSUN_PODTYP 52 | defw I_helm_d ; PODTYP_HELM_D equ 7*POSUN_PODTYP 53 | defw I_necklace ; PODTYP_NECKLACE equ 8*POSUN_PODTYP 54 | ;-- 55 | MIN_ARMOR equ PODTYP_ARMOR 56 | defw 0 ; PODTYP_ARMOR equ 9*POSUN_PODTYP 57 | defw I_armor_ch ; PODTYP_ARMOR_CH equ 10*POSUN_PODTYP 58 | defw I_armor_l ; PODTYP_ARMOR_L equ 11*POSUN_PODTYP 59 | defw I_armor_p ; PODTYP_ARMOR_P equ 12*POSUN_PODTYP 60 | MAX_ARMOR_PLUS_1 equ (1+PODTYP_ARMOR_P) 61 | ;-- 62 | defw 0 ; PODTYP_ARROW equ 13*POSUN_PODTYP 63 | defw I_bracers ; PODTYP_BRACERS equ 14*POSUN_PODTYP 64 | defw I_boots ; PODTYP_BOOTS equ 15*POSUN_PODTYP 65 | ;--- 66 | defw I_ankh ; PODTYP_ANKH equ 16*POSUN_PODTYP 67 | defw I_axe ; PODTYP_AXE equ 17*POSUN_PODTYP 68 | defw I_book ; PODTYP_BOOK equ 18*POSUN_PODTYP 69 | defw I_bow ; PODTYP_BOW equ 19*POSUN_PODTYP 70 | defw I_dagger ; PODTYP_DAGGER equ 20*POSUN_PODTYP 71 | defw I_mace ; PODTYP_MACE equ 21*POSUN_PODTYP 72 | defw I_shield ; PODTYP_SHIELD equ 22*POSUN_PODTYP 73 | defw I_shield2 ; PODTYP_SHIELD2 equ 23*POSUN_PODTYP 74 | defw I_sling ; PODTYP_SLING equ 24*POSUN_PODTYP 75 | defw I_sword ; PODTYP_SWORD equ 25*POSUN_PODTYP 76 | defw I_bone ; PODTYP_BONE equ 26*POSUN_PODTYP 77 | ;--- 78 | MIN_FOOD equ PODTYP_FOOD 79 | defw I_rations ; PODTYP_FOOD equ 27*POSUN_PODTYP 80 | defw I_potion_r ; PODTYP_POTION_R equ 28*POSUN_PODTYP 81 | defw I_potion_g ; PODTYP_POTION_G equ 29*POSUN_PODTYP 82 | defw I_potion_b ; PODTYP_POTION_B equ 30*POSUN_PODTYP 83 | ITEM2SPRITE_END: 84 | ; ^^^^^^^^^^^^^^^^^^^^^^^^^ konec souvisleho bloku ^^^^^^^^^^^^^^^^^^^^^^^^^ 85 | 86 | 87 | 88 | ; vvvv ----------------- zacatek souvisleho bloku 89 | PRESOUVANY_PREDMET: 90 | defb 0 91 | KURZOR_V_INVENTARI: 92 | defb 0 ; 1..MAX_INVENTORY 93 | ; ^^^^^^^^^^^^^^^^^^^^^^^^^ konec souvisleho bloku ^^^^^^^^^^^^^^^^^^^^^^^^^ 94 | 95 | POZICE_PROSTIRANI equ X25+Y04 96 | POZICE_HLAVA equ X26+Y07 97 | POZICE_NAHRDELNIK equ X26+Y09 98 | POZICE_BRNENI equ X26+Y11 99 | POZICE_LPRSTEN equ X24+Y16 100 | POZICE_BOTY equ X26+Y18 101 | POZICE_TOULEC equ X29+Y09 102 | POZICE_NATEPNIK equ X29+Y11 103 | POZICE_PPRSTEN equ X28+Y16 104 | 105 | ; vvvv ----------------- zacatek souvisleho bloku 106 | POZICE_V_INVENTARI: 107 | defw X18+Y04, X18+Y06, X18+Y08, X18+Y10, X18+Y12, X18+Y14, X18+Y16, X18+Y18 108 | defw X21+Y04, X21+Y06, X21+Y08, X21+Y10, X21+Y12, X21+Y14, X21+Y16, X21+Y18 109 | PROSTIRANI: 110 | defw POZICE_PROSTIRANI ; prostirani 111 | defw POZICE_HLAVA ; hlava 112 | defw POZICE_NAHRDELNIK ; nahrdelnik 113 | defw POZICE_BRNENI ; brneni 114 | defw X24+Y13 ; l.ruka 115 | defw POZICE_LPRSTEN ; l.prsten 116 | defw POZICE_BOTY ; boty 117 | defw POZICE_TOULEC ; toulec 118 | defw POZICE_NATEPNIK ; natepnik / chranic predlokti 119 | defw X28+Y13 ; p.ruka 120 | defw POZICE_PPRSTEN ; p.prsten 121 | POZICE_V_INVENTARI_HOLD_END: 122 | defw X04+Y11 ; na zemi vlevo nahore 123 | defw X02+Y13 ; na zemi vlevo dole 124 | defw X11+Y11 ; na zemi vpravo nahore 125 | defw X13+Y13 ; na zemi vpravo dole 126 | POZICE_V_INVENTARI_END: 127 | ; ^^^^ ----------------- konec souvisleho bloku 128 | 129 | 130 | ; INDEXY pocitane od 1 do MAX_INVENTORY 131 | INDEX_PROSTIRANI equ 17 132 | INDEX_HLAVA equ 18 133 | INDEX_NAHRDELNIK equ 19 134 | INDEX_BRNENI equ 20 135 | INDEX_LRUKA equ 21 136 | INDEX_LPRSTEN equ 22 137 | INDEX_BOTY equ 23 138 | INDEX_TOULEC equ 24 139 | INDEX_NATEPNIK equ 25 140 | INDEX_PRUKA equ 26 141 | INDEX_PPRSTEN equ 27 142 | 143 | INDEX_ZEM_LU_M1 equ 27 144 | INDEX_ZEM_LD_M1 equ 28 145 | INDEX_ZEM_RU_M1 equ 29 146 | INDEX_ZEM_RD_M1 equ 30 147 | 148 | ; vvvvvvvvvvvvvvvvvvvvvvvvv zacatek souvisleho bloku vvvvvvvvvvvvvvvvvvvvvvvvv 149 | ; Tabulka pro zjistni zda muze byt predmet ulozen na dane pozici 150 | POVOLENE_POZICE: 151 | defb INDEX_LPRSTEN ; PODTYP_RING equ 1*POSUN_PODTYP 152 | defb INDEX_LPRSTEN ; PODTYP_RING_R equ 2*POSUN_PODTYP 153 | defb INDEX_LPRSTEN ; PODTYP_RING_G equ 3*POSUN_PODTYP 154 | defb INDEX_LPRSTEN ; PODTYP_RING_B equ 4*POSUN_PODTYP 155 | defb INDEX_LPRSTEN ; PODTYP_RING_W equ 5*POSUN_PODTYP 156 | ;--- 157 | defb INDEX_HLAVA ; PODTYP_HELM equ 6*POSUN_PODTYP 158 | defb INDEX_HLAVA ; PODTYP_HELM_D equ 7*POSUN_PODTYP 159 | defb INDEX_NAHRDELNIK; PODTYP_NECKLACE equ 8*POSUN_PODTYP 160 | ;-- 161 | defb INDEX_BRNENI ; PODTYP_ARMOR equ 9*POSUN_PODTYP 162 | defb INDEX_BRNENI ; PODTYP_ARMOR_CH equ 10*POSUN_PODTYP 163 | defb INDEX_BRNENI ; PODTYP_ARMOR_L equ 11*POSUN_PODTYP 164 | defb INDEX_BRNENI ; PODTYP_ARMOR_P equ 12*POSUN_PODTYP 165 | ;-- 166 | defb INDEX_TOULEC ; PODTYP_ARROW equ 13*POSUN_PODTYP 167 | defb INDEX_NATEPNIK ; PODTYP_BRACERS equ 14*POSUN_PODTYP 168 | defb INDEX_BOTY ; PODTYP_BOOTS equ 15*POSUN_PODTYP 169 | ;--- 170 | defb INDEX_LRUKA ; PODTYP_ANKH equ 16*POSUN_PODTYP 171 | defb INDEX_LRUKA ; PODTYP_AXE equ 17*POSUN_PODTYP 172 | defb INDEX_LRUKA ; PODTYP_BOOK equ 18*POSUN_PODTYP 173 | defb INDEX_LRUKA ; PODTYP_BOW equ 19*POSUN_PODTYP 174 | defb INDEX_LRUKA ; PODTYP_DAGGER equ 20*POSUN_PODTYP 175 | defb INDEX_LRUKA ; PODTYP_MACE equ 21*POSUN_PODTYP 176 | defb INDEX_LRUKA ; PODTYP_SHIELD equ 22*POSUN_PODTYP 177 | defb INDEX_LRUKA ; PODTYP_SHIELD2 equ 23*POSUN_PODTYP 178 | defb INDEX_LRUKA ; PODTYP_SLING equ 24*POSUN_PODTYP 179 | defb INDEX_LRUKA ; PODTYP_SWORD equ 25*POSUN_PODTYP 180 | defb INDEX_LRUKA ; PODTYP_BONE equ 26*POSUN_PODTYP 181 | ;--- 182 | defb INDEX_PROSTIRANI; PODTYP_FOOD equ 27*POSUN_PODTYP 183 | defb INDEX_PROSTIRANI; PODTYP_POTION_R equ 28*POSUN_PODTYP 184 | defb INDEX_PROSTIRANI; PODTYP_POTION_G equ 29*POSUN_PODTYP 185 | defb INDEX_PROSTIRANI; PODTYP_POTION_B equ 30*POSUN_PODTYP 186 | POVOLENE_POZICE_END: 187 | ; ^^^^^^^^^^^^^^^^^^^^^^^^^ konec souvisleho bloku ^^^^^^^^^^^^^^^^^^^^^^^^^ 188 | 189 | 190 | DATA_ZIVOTY: 191 | ; aktualni pocet zivotu, 192 | ; maximalni pocet zivotu, 193 | ; trvale zraneni, 194 | ; offset atributu prouzku, 195 | ; segment atributu prouzku, 196 | ; velikost posledniho zraneni, 197 | ; cas ukonceni zobrazeni krvaveho fleku 198 | 199 | ; nyni max trvale offset segment konec zraneni 200 | defb 132, 132, 1, $b4, Adr_Attr_Buffer/256+0, 0, 0 201 | defb 90, 90, 1, $bb, Adr_Attr_Buffer/256+0, 0, 0 202 | defb 64, 64, 1, $94, Adr_Attr_Buffer/256+1, 0, 0 203 | defb 40, 40, 1, $9b, Adr_Attr_Buffer/256+1, 0, 0 204 | defb 46, 46, 1, $74, Adr_Attr_Buffer/256+2, 0, 0 205 | defb 40, 40, 1, $7b, Adr_Attr_Buffer/256+2, 0, 0 206 | DATA_ZIVOTY_END: 207 | 208 | -------------------------------------------------------------------------------- /Source/sprites.h: -------------------------------------------------------------------------------- 1 | ; SPRITY od adresy $5F00 = 24320 2 | Body_left equ $5F00 ; 24320 1. = 234, +0 3 | dno_bufferu equ $5FEA ; 24554 2. = 165, +234 4 | D0 equ $608F ; 24719 3. = 1083, +399 5 | D1 equ $64CA ; 25802 4. = 507, +1482 6 | D2 equ $66C5 ; 26309 5. = 353, +1989 7 | D3 equ $6826 ; 26662 6. = 127, +2342 8 | ESA1 equ $68A5 ; 26789 7. = 537, +2469 9 | ES1 equ $6ABE ; 27326 8. = 419, +3006 10 | ES2 equ $6C61 ; 27745 9. = 253, +3425 11 | ES3 equ $6D5E ; 27998 10. = 108, +3678 12 | ES4 equ $6DCA ; 28106 11. = 81, +3786 13 | FFace01 equ $6E1B ; 28187 12. = 147, +3867 14 | FFace02 equ $6EAE ; 28334 13. = 147, +4014 15 | FFace03 equ $6F41 ; 28481 14. = 147, +4161 16 | FFace04 equ $6FD4 ; 28628 15. = 147, +4308 17 | Flek equ $7067 ; 28775 16. = 117, +4455 18 | H0 equ $70DC ; 28892 17. = 1731, +4572 19 | H0rune equ $779F ; 30623 18. = 87, +6303 20 | H1 equ $77F6 ; 30710 19. = 723, +6390 21 | H1rune equ $7AC9 ; 31433 20. = 41, +7113 22 | H2 equ $7AF2 ; 31474 21. = 299, +7154 23 | H2rune equ $7C1D ; 31773 22. = 31, +7453 24 | H3 equ $7C3C ; 31804 23. = 147, +7484 25 | H3rune equ $7CCF ; 31951 24. = 23, +7631 26 | H4 equ $7CE6 ; 31974 25. = 195, +7654 27 | H4m1 equ $7DA9 ; 32169 26. = 131, +7849 28 | H4m2 equ $7E2C ; 32300 27. = 171, +7980 29 | H4m3 equ $7ED7 ; 32471 28. = 147, +8151 30 | H4m4 equ $7F6A ; 32618 29. = 67, +8298 31 | H5 equ $7FAD ; 32685 30. = 129, +8365 32 | I_ankh equ $802E ; 32814 31. = 57, +8494 33 | I_armor_ch equ $8067 ; 32871 32. = 57, +8551 34 | I_armor_l equ $80A0 ; 32928 33. = 57, +8608 35 | I_armor_p equ $80D9 ; 32985 34. = 57, +8665 36 | I_axe equ $8112 ; 33042 35. = 49, +8722 37 | I_bg equ $8143 ; 33091 36. = 57, +8771 38 | I_bgm equ $817C ; 33148 37. = 57, +8828 39 | I_bone equ $81B5 ; 33205 38. = 57, +8885 40 | I_book equ $81EE ; 33262 39. = 57, +8942 41 | I_boots equ $8227 ; 33319 40. = 57, +8999 42 | I_bow equ $8260 ; 33376 41. = 49, +9056 43 | I_bracers equ $8291 ; 33425 42. = 57, +9105 44 | I_dagger equ $82CA ; 33482 43. = 41, +9162 45 | I_empty equ $82F3 ; 33523 44. = 49, +9203 46 | I_helm equ $8324 ; 33572 45. = 57, +9252 47 | I_helm_d equ $835D ; 33629 46. = 57, +9309 48 | I_mace equ $8396 ; 33686 47. = 51, +9366 49 | I_necklace equ $83C9 ; 33737 48. = 41, +9417 50 | I_potion_b equ $83F2 ; 33778 49. = 41, +9458 51 | I_potion_g equ $841B ; 33819 50. = 41, +9499 52 | I_potion_r equ $8444 ; 33860 51. = 41, +9540 53 | I_prostirani equ $846D ; 33901 52. = 57, +9581 54 | I_ram equ $84A6 ; 33958 53. = 25, +9638 55 | I_rations equ $84BF ; 33983 54. = 57, +9663 56 | I_ring equ $84F8 ; 34040 55. = 41, +9720 57 | I_ring_b equ $8521 ; 34081 56. = 57, +9761 58 | I_ring_g equ $855A ; 34138 57. = 57, +9818 59 | I_ring_r equ $8593 ; 34195 58. = 57, +9875 60 | I_ring_w equ $85CC ; 34252 59. = 57, +9932 61 | I_shield equ $8605 ; 34309 60. = 57, +9989 62 | I_shield2 equ $863E ; 34366 61. = 57, +10046 63 | I_sling equ $8677 ; 34423 62. = 49, +10103 64 | I_sword equ $86A8 ; 34472 63. = 49, +10152 65 | I_toulec equ $86D9 ; 34521 64. = 41, +10201 66 | I_zakazano equ $8702 ; 34562 65. = 57, +10242 67 | I0_armor equ $873B ; 34619 66. = 245, +10299 68 | I0_bone equ $8830 ; 34864 67. = 251, +10544 69 | I0_unknwn equ $892B ; 35115 68. = 122, +10795 70 | I0_weapon equ $89A5 ; 35237 69. = 162, +10917 71 | I1_armor equ $8A47 ; 35399 70. = 123, +11079 72 | I1_bone equ $8AC2 ; 35522 71. = 133, +11202 73 | I1_unknwn equ $8B47 ; 35655 72. = 57, +11335 74 | I1_weapon equ $8B80 ; 35712 73. = 97, +11392 75 | I2_armor equ $8BE1 ; 35809 74. = 46, +11489 76 | I2_bone equ $8C0F ; 35855 75. = 54, +11535 77 | I2_unknwn equ $8C45 ; 35909 76. = 21, +11589 78 | I2_weapon equ $8C5A ; 35930 77. = 37, +11610 79 | Kanal0 equ $8C7F ; 35967 78. = 363, +11647 80 | Kanal1 equ $8DEA ; 36330 79. = 165, +12010 81 | Kanal2 equ $8E8F ; 36495 80. = 75, +12175 82 | Kanal3 equ $8EDA ; 36570 81. = 39, +12250 83 | Kompas equ $8F01 ; 36609 82. = 386, +12289 84 | Komp_E equ $9083 ; 36995 83. = 160, +12675 85 | Komp_N equ $9123 ; 37155 84. = 160, +12835 86 | Komp_S equ $91C3 ; 37315 85. = 160, +12995 87 | Komp_W equ $9263 ; 37475 86. = 160, +13155 88 | K1m1 equ $9303 ; 37635 87. = 411, +13315 89 | K2m1 equ $949E ; 38046 88. = 427, +13726 90 | K3m1 equ $9649 ; 38473 89. = 318, +14153 91 | K4m2 equ $9787 ; 38791 90. = 191, +14471 92 | MFace01 equ $9846 ; 38982 91. = 147, +14662 93 | MFace02 equ $98D9 ; 39129 92. = 147, +14809 94 | MFace03 equ $996C ; 39276 93. = 147, +14956 95 | MFace04 equ $99FF ; 39423 94. = 147, +15103 96 | miss equ $9A92 ; 39570 95. = 105, +15250 97 | Pdl1 equ $9AFB ; 39675 96. = 49, +15355 98 | Pdl2 equ $9B2C ; 39724 97. = 39, +15404 99 | Pdl3 equ $9B53 ; 39763 98. = 21, +15443 100 | Pd0 equ $9B68 ; 39784 99. = 115, +15464 101 | Pd1 equ $9BDB ; 39899 100. = 95, +15579 102 | Pd2 equ $9C3A ; 39994 101. = 39, +15674 103 | Pd3 equ $9C61 ; 40033 102. = 39, +15713 104 | Pul1 equ $9C88 ; 40072 103. = 57, +15752 105 | Pul2 equ $9CC1 ; 40129 104. = 49, +15809 106 | Pul3 equ $9CF2 ; 40178 105. = 21, +15858 107 | Pu0 equ $9D07 ; 40199 106. = 115, +15879 108 | Pu1 equ $9D7A ; 40314 107. = 95, +15994 109 | Pu2 equ $9DD9 ; 40409 108. = 57, +16089 110 | Pu3 equ $9E12 ; 40466 109. = 31, +16146 111 | R0 equ $9E31 ; 40497 110. = 1055, +16177 112 | R1 equ $A250 ; 41552 111. = 1011, +17232 113 | R1m1 equ $A643 ; 42563 112. = 111, +18243 114 | R2 equ $A6B2 ; 42674 113. = 515, +18354 115 | R2m1 equ $A8B5 ; 43189 114. = 227, +18869 116 | R3 equ $A998 ; 43416 115. = 225, +19096 117 | R3m1 equ $AA79 ; 43641 116. = 193, +19321 118 | R4 equ $AB3A ; 43834 117. = 131, +19514 119 | S_doleva equ $ABBD ; 43965 118. = 39, +19645 120 | S_doprava equ $ABE4 ; 44004 119. = 39, +19684 121 | S_dopredu equ $AC0B ; 44043 120. = 39, +19723 122 | S_dozadu equ $AC32 ; 44082 121. = 39, +19762 123 | S_vlevo equ $AC59 ; 44121 122. = 39, +19801 124 | S_vpravo equ $AC80 ; 44160 123. = 39, +19840 125 | S_vsechny equ $ACA7 ; 44199 124. = 318, +19879 126 | V0m1 equ $ADE5 ; 44517 125. = 129, +20197 127 | V3m2 equ $AE66 ; 44646 126. = 146, +20326 128 | V4m1 equ $AEF8 ; 44792 127. = 99, +20472 129 | V4m3 equ $AF5B ; 44891 128. = 143, +20571 130 | ; first address after $AFEA = 45034 131 | 132 | Seg_Screen equ $40 133 | Adr_Screen equ $4000 134 | Seg_Attr_Screen equ $58 135 | Adr_Attr_Screen equ $5800 136 | Seg_Buffer equ $B0 137 | Adr_Buffer equ (256*Seg_Buffer) 138 | Seg_Attr_Buffer equ $C8 139 | Adr_Attr_Buffer equ (256*Seg_Attr_Buffer) 140 | Adr_Buf_end equ $CB00 141 | 142 | Xm5 equ $FB00 143 | Xm4 equ $FC00 144 | Xm3 equ $FD00 145 | Xm2 equ $FE00 146 | Xm1 equ $FF00 147 | X00 equ $0000 148 | X01 equ $0100 149 | X02 equ $0200 150 | X03 equ $0300 151 | X04 equ $0400 152 | X05 equ $0500 153 | X06 equ $0600 154 | X07 equ $0700 155 | X08 equ $0800 156 | X09 equ $0900 157 | X10 equ $0A00 158 | X11 equ $0B00 159 | X12 equ $0C00 160 | X13 equ $0D00 161 | X14 equ $0E00 162 | X15 equ $0F00 163 | X16 equ $1000 164 | X17 equ $1100 165 | X18 equ $1200 166 | X19 equ $1300 167 | X20 equ $1400 168 | X21 equ $1500 169 | X22 equ $1600 170 | X23 equ $1700 171 | X24 equ $1800 172 | X25 equ $1900 173 | X26 equ $1A00 174 | X27 equ $1B00 175 | X28 equ $1C00 176 | X29 equ $1D00 177 | X30 equ $1E00 178 | X31 equ $1F00 179 | 180 | Y00 equ $00 181 | Y01 equ $20 182 | Y02 equ $40 183 | Y03 equ $60 184 | Y04 equ $80 185 | Y05 equ $A0 186 | Y06 equ $C0 187 | Y07 equ $E0 188 | Y08 equ $09 189 | Y09 equ $29 190 | Y10 equ $49 191 | Y11 equ $69 192 | Y12 equ $89 193 | Y13 equ $A9 194 | Y14 equ $C9 195 | Y15 equ $E9 196 | Y16 equ $12 197 | Y17 equ $32 198 | Y18 equ $52 199 | Y19 equ $72 200 | Y20 equ $92 201 | Y21 equ $B2 202 | Y22 equ $D2 203 | Y23 equ $F2 204 | 205 | Z00 equ $04 206 | Z01 equ $24 207 | Z02 equ $44 208 | Z03 equ $64 209 | Z04 equ $84 210 | Z05 equ $A4 211 | Z06 equ $C4 212 | Z07 equ $E4 213 | Z08 equ $0D 214 | Z09 equ $2D 215 | Z10 equ $4D 216 | Z11 equ $6D 217 | Z12 equ $8D 218 | Z13 equ $AD 219 | Z14 equ $CD 220 | Z15 equ $ED 221 | Z16 equ $16 222 | Z17 equ $36 223 | Z18 equ $56 224 | Z19 equ $76 225 | Z20 equ $96 226 | Z21 equ $B6 227 | Z22 equ $D6 228 | Z23 equ $F6 229 | -------------------------------------------------------------------------------- /Source/draw3D.h: -------------------------------------------------------------------------------- 1 | ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 | ; 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 3 | ; 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 4 | 5 | ; prvni word obsahuje adresu spritu 6 | ; treti bajt "x" souradnici (nula vlevo, roste doprava) 7 | ; ctvrty bajt "y" souradnici (nula nahore, roste dolu) 8 | ; pokud je "y" zaporna ( xor $ff ) tak je to vetsinou signal, ze se ma kreslit zprava doleva 9 | 10 | BIT_ZRCADLOVE equ 2 11 | MASKA_ZRCADLOVE equ $04 12 | 13 | 14 | ; 5. krychle pred nama ( sirka 21 px blizsi strana, hloubka 5 px ) 15 | TABLE_VIEW_9_DEPTH_4: 16 | ; x y x y x y x y x y 17 | defw H4m4, X17+Z03, 0, 0, H4m4, X00+Y03, 0, 0 ; 18 | defw H4m3, X17+Z03, 0, 0, H4m3, X00+Y03, 0, 0 ; 19 | defw H4m2, X15+Z03, 0, 0, H4m2, X02+Y03, 0, 0 ; 20 | defw H4m1, X12+Z03, 0, 0, H4m1, X05+Y03, 0, 0, H4, X07+Y03 ; 21 | 22 | ; 4. krychle pred nama ( sirka 4 blizsi strana, hloubka 6 px ) 23 | TABLE_VIEW_7_DEPTH_3: 24 | defw V4m3, X17+Z03, 0, 0, V4m3, X00+Y03, 0, 0 25 | defw K4m2, X17+Z03, 0, 0, K4m2, X00+Y03, 0, 0 26 | defw H3, X14+Z03, V4m1, X11+Z03, H3, X03+Y03, V4m1, X06+Y03, H3, X07+Y03 27 | 28 | ; 3. krychle pred nama ( sirka 6 blizsi strana, hloubka 1 ) 29 | TABLE_VIEW_5_DEPTH_2: 30 | defw V3m2, X17+Z03, 0, 0, V3m2, X00+Y03, 0, 0 31 | defw K3m1, X17+Z03, 0, 0, K3m1, X00+Y03, 0, 0, H2, X05+Y03 32 | 33 | ; 2. krychle pred nama ( sirka 10 blizsi strana, hloubka 2 ) 34 | TABLE_DEPTH_1: 35 | defw K2m1, X17+Z02, 0, 0, K2m1, X00+Y02, 0, 0, H1, X04+Y02 36 | 37 | ; 1. krychle pred nama ( sirka 16 blizsi strana, hloubka 3 ) 38 | TABLE_DEPTH_0: 39 | defw K1m1, X17+Z01, 0, 0, K1m1, X00+Y01, 0, 0, H0, X01+Y01 40 | 41 | ; uvnitr prazdne krychle ve ktere jsme ( jen leva a prava stena ) 42 | TABLE_DEPTH_x: 43 | defw V0m1, X17+Z00, 0, 0, V0m1, X00+Y00, 0, 0, 0, 0 44 | 45 | 46 | 47 | PAKY_TABLE: 48 | 49 | ; front view 50 | ; PAKA_UP_TABLE: 51 | ; primy smer vpravo vlevo 52 | defw 0, 0, 0, 0, 0, 0 53 | defw Pu0, X07+Y02, 0, 0, 0, 0 54 | defw Pu1, X07+Y03, 0, 0, 0, 0 55 | defw Pu2, X08+Y03, Pu2, X15+Z03, Pu2, X02+Y03 ; 6 56 | defw Pu3, X08+Y03, Pu3, X13+Z03, Pu3, X04+Y03 ; 4 57 | 58 | ; PAKA_DOWN_TABLE: 59 | ; primy smer vpravo vlevo 60 | defw 0, 0, 0, 0, 0, 0 61 | defw Pd0, X07+Y04, 0, 0, 0, 0 62 | defw Pd1, X07+Y04, 0, 0, 0, 0 63 | defw Pd2, X08+Y04, Pd2, X15+Z04, Pd2, X02+Y04 64 | defw Pd3, X08+Y04, Pd3, X13+Z04, Pd3, X04+Y04 65 | 66 | ; pohled vlevo 67 | ; primy smer vpravo vlevo 68 | ; PAKA_UP_LEVA_TABLE: 69 | defw 0, 0, 0, 0, 0, 0 70 | defw 0, 0, 0, 0, Pul1, X02+Y03 71 | defw 0, 0, 0, 0, Pul2, X04+Y03 72 | defw 0, 0, 0, 0, Pul3, X06+Y04 73 | defw 0, 0, 0, 0, 0, X07+Y04 74 | 75 | ; primy smer vpravo vlevo 76 | ; PAKA_DOWN_LEVA_TABLE: 77 | defw 0, 0, 0, 0, 0, 0 78 | defw 0, 0, 0, 0, Pdl1, X02+Y04 79 | defw 0, 0, 0, 0, Pdl2, X04+Y04 80 | defw 0, 0, 0, 0, Pdl3, X06+Y04 81 | defw 0, 0, 0, 0, 0, 0 82 | 83 | 84 | ; pohled vpravo 85 | ; primy smer vpravo vlevo 86 | ; PAKA_UP_PRAVA_TABLE: 87 | defw 0, 0, 0, 0, 0, 0 88 | defw 0, 0, Pul1, X15+Z03, 0, 0 89 | defw 0, 0, Pul2, X13+Z03, 0, 0 90 | defw 0, 0, Pul3, X11+Z04, 0, 0 91 | defw 0, 0, 0, 0, 0, 0 92 | 93 | ; primy smer vpravo vlevo 94 | ; PAKA_DOWN_PRAVA_TABLE: 95 | defw 0, 0, 0, 0, 0, 0 96 | defw 0, 0, Pdl1, X15+Z04, 0, 0 97 | defw 0, 0, Pdl2, X13+Z04, 0, 0 98 | defw 0, 0, Pdl3, X11+Z04, 0, 0 99 | defw 0, 0, 0, X10+Y04, 0, 0 100 | 101 | 102 | ; primy smer vpravo vlevo 103 | DOOR_TABLE: 104 | defw 0, 0, 0, 0, 0, 0 105 | defw D0, X03+Y02, 0, 0, 0, 0 106 | defw D1, X05+Y03, D1, X15+Y03, D1, Xm5+Y03 ; 107 | defw D2, X06+Y03, D2, X12+Y03, D2, X00+Y03 108 | defw D3, X07+Y04, D3, X11+Y04, D3, X03+Y04 109 | 110 | ; primy smer vpravo vlevo 111 | RAM_TABLE: 112 | defw R0, X04+Y00, 0, 0, 0, 0 ; bocni pohled zevnitr dveri 113 | defw R1, X01+Y01, R1m1, X17+Z01, R1m1, X00+Y01 ; 16 114 | defw R2, X04+Y02, R2m1, X17+Z02, R2m1, X00+Y02 ; 10 115 | defw R3, X06+Y03, R3, X12+Y03, R3m1, X00+Y03 ; 6 116 | defw R4, X07+Y03, R4, X11+Y03, R4, X03+Y03 ; 4 117 | 118 | 119 | 120 | 121 | NEXT_TYP_ENEMY equ 10 122 | 123 | ; vvvvvvvvvvvvvvvvvvvvvvvvv zacatek souvisleho bloku vvvvvvvvvvvvvvvvvvvvvvvvv 124 | 125 | ENEMY_TABLE: 126 | ; primy smer vpravo vlevo 127 | ;PODTYP_SKRET 128 | defw 0 129 | defw ES1 ; 16 130 | defw ES2 ; 10 131 | defw ES3 ; 6 132 | defw ES4 133 | 134 | ;PODTYP_PAVOUK 135 | defw 0 136 | defw ESA1 137 | defw 0 138 | defw 0 139 | defw 0 140 | ; ^^^^^^^^^^^^^^^^^^^^^^^^^ konec souvisleho bloku ^^^^^^^^^^^^^^^^^^^^^^^^^ 141 | 142 | 143 | ; Tabulka prevadejici predmet na 3D sprite 144 | ITEM_TABLE: 145 | ; 16 10 6 146 | 147 | defw 0, 0, 0, 0 ; PODTYP_EMPTY 148 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_RING 149 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_RING_R 150 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_RING_G 151 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_RING_B 152 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_RING_W 153 | ;-- 154 | defw I0_armor, I1_armor, I2_armor, 0 ; PODTYP_HELM equ 6*POSUN_PODTYP 155 | defw I0_armor, I1_armor, I2_armor, 0 ; PODTYP_HELM_D equ 7*POSUN_PODTYP 156 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_NECKLACE equ 8*POSUN_PODTYP 157 | ;-- 158 | defw 0, I1_armor, I2_armor, 0 ; PODTYP_ARMOR equ 9*POSUN_PODTYP (neni nakreslen) 159 | defw I0_armor, I1_armor, I2_armor, 0 ; PODTYP_ARMOR_CH equ 10*POSUN_PODTYP 160 | defw I0_armor, I1_armor, I2_armor, 0 ; PODTYP_ARMOR_L equ 11*POSUN_PODTYP 161 | defw I0_armor, I1_armor, I2_armor, 0 ; PODTYP_ARMOR_P equ 12*POSUN_PODTYP 162 | ;-- 163 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_ARROW equ 13*POSUN_PODTYP 164 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_BRACERS equ 14*POSUN_PODTYP 165 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_BOOTS equ 15*POSUN_PODTYP 166 | ;--- 167 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_ANKH equ 16*POSUN_PODTYP 168 | defw I0_weapon, I1_weapon, I2_weapon, 0 ; PODTYP_AXE equ 17*POSUN_PODTYP 169 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_BOOK equ 18*POSUN_PODTYP 170 | defw I0_weapon, I1_weapon, I2_weapon, 0 ; PODTYP_BOW equ 19*POSUN_PODTYP 171 | defw I0_weapon, I1_weapon, I2_weapon, 0 ; PODTYP_DAGGER equ 20*POSUN_PODTYP 172 | defw I0_weapon, I1_weapon, I2_weapon, 0 ; PODTYP_MACE equ 21*POSUN_PODTYP 173 | defw I0_armor, I1_armor, I2_armor, 0 ; PODTYP_SHIELD equ 22*POSUN_PODTYP 174 | defw I0_armor, I1_armor, I2_armor, 0 ; PODTYP_SHIELD2 equ 23*POSUN_PODTYP 175 | defw I0_weapon, I1_weapon, I2_weapon, 0 ; PODTYP_SLING equ 24*POSUN_PODTYP 176 | defw I0_weapon, I1_weapon, I2_weapon, 0 ; PODTYP_SWORD equ 25*POSUN_PODTYP 177 | defw I0_bone, I1_bone, I2_bone, 0 ; PODTYP_BONE equ 26*POSUN_PODTYP 178 | ;--- 179 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_FOOD equ 27*POSUN_PODTYP 180 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_POTION_R equ 28*POSUN_PODTYP 181 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_POTION_G equ 29*POSUN_PODTYP 182 | defw I0_unknwn, I1_unknwn, I2_unknwn, 0 ; PODTYP_POTION_B equ 30*POSUN_PODTYP 183 | 184 | 185 | 186 | 187 | ; primy smer vpravo vlevo 188 | KANAL_TABLE: 189 | defw 0, 0, 0, 0, 0, 0 ; 190 | defw Kanal0, X05+Y08, 0, 0, 0, 0 ; 16 191 | defw Kanal1, X06+Y07, Kanal1, X16+Y07, Kanal1, Xm4+Y07 ; 10 192 | defw Kanal2, X07+Y06, Kanal2, X13+Y06, Kanal2, X01+Y06 ; 6 193 | defw Kanal3, X08+Y05, Kanal3, X12+Y05, Kanal3, X04+Y05 ; 4 194 | 195 | ; primy smer vpravo vlevo 196 | RUNE_TABLE: 197 | defw 0, 0, 0, 0, 0, 0 ; 198 | defw H0rune, X07+Y04, 0, 0, 0, 0 ; 16 199 | defw H1rune, X07+Y04, H1rune, X17+Y04, 0, 0 ; 10 200 | defw H2rune, X08+Y04, H2rune, X14+Y04, H2rune, X02+Y04 ; 6 201 | defw H3rune, X08+Y04, H3rune, X12+Y04, H3rune, X04+Y04 ; 4 202 | 203 | ; primy smer vpravo vlevo 204 | ;WALL_TABLE: 205 | ;defw 0, 0, 0, 0, V0m1, X17+Z00, 0, 0, V0m1, X00+Y00, 0, 0 206 | ;defw H0, X01+Y01, 0, 0, K1m1, X14+Z01, 0, 0, K1m1, X00+Y01, 0, 0 ; 16 207 | ;defw H1, X04+Y02, 0, 0, K2m1, X12+Z02, 0, 0, K2m1, X00+Y02, 0, 0 ; 10 208 | ;defw H2, X05+Y03, 0, 0, K3m1, X11+Z03, 0, 0, K3m1, X00+Y03, 0, 0 ; 6 209 | ;defw H3, X07+Y03, 0, 0, V4m1, X10+Z03, H3, X11+Y03, V4m1, X06+Y03, H3, X03+Y03 ; 4 210 | 211 | 212 | 213 | 214 | 215 | 216 | -------------------------------------------------------------------------------- /Source/strings.asm: -------------------------------------------------------------------------------- 1 | ; ===================================================== 2 | ; VSTUP: 3 | ; IX ukazatel na string zakonceny znakem mensim jak 32 a ktery neni vetsi jak 85+32 4 | ; HL = adresa atributu prvniho znaku 5 | ; offset PISMO_5PX = 0 6 | ; VYSTUP: 7 | ; IX ukazuje na zacatek dalsiho retece 8 | ; pokud nebyl prvni znak 0, tak B = 0 9 | ; MENI: 10 | ; DE, HL, BC, A 11 | PRINT_STRING: ; ver 0.3 12 | ld A, $07 ; white 13 | 14 | ; ----------------------------------------------------- 15 | ; VSTUP: 16 | ; A = color 17 | PRINT_STRING_COLOR: ; 18 | 19 | ld E, L ; 4:1 20 | ld L, A ; 4:1 21 | push HL ; 11:1 22 | 23 | call SEG_ATTR2SCREEN ; 17:3 24 | ld D, H ; 4:1 25 | 26 | ld C, $40 ; 7:2 27 | 28 | 29 | PS_NEXT_CHAR: 30 | ; na zacatku a na konci obarvuji, takze i kdyz prekroci znak bude to spravne 31 | pop HL ; 10:1 32 | 33 | ; ----------------------------------------------------- 34 | ; IX ukazatel na aktualni znak retezce 35 | ; DE adresa znaku na obrazovce 36 | ; C maska bitu kde ve znaku zaciname 37 | ; H segment atributu 38 | ; L color 39 | PRINT_STRING_CONTINUE: 40 | ld A, L ; 4:1 color 41 | ld L, E ; 4:1 42 | ld (HL), A ; 7:1 set color 43 | ld L, A ; 4:1 44 | 45 | ld A, (IX+$00) ; 19:3 46 | inc IX ; 10:2 pri ukonceni ukazuje na zacatek dalsiho retezce 47 | sub 32 ; 7:2 z mezery udela nulu 48 | ret c ;11/5:1 if ( char < 32 ) return 49 | 50 | push HL ; 11:1 51 | 52 | ; 5*char Funguje az do znaku char = (85+32), pak pretece 85*3=255 53 | ld H, A ; 4:1 1x 54 | add A, A ; 4:1 2x 0..128 55 | ld L, A ; 4:1 2x 56 | add A, H ; 4:1 3x 0..192 57 | add A, L ; 4:1 5x 0..320 carry? 58 | ld L, A ; 4:1 59 | adc A, PISMO_5PX/256 ; 7:2 60 | sub L ; 4:1 61 | ld H, A ; 4:1 HL adresa prvniho sloupce znaku 62 | 63 | ; HL adresa sloupcu znaku, DE adresa v pameti, C bit 64 | ld B, $05 ; 7:2 65 | PS_RIGHT_LOOP: 66 | 67 | ld A, (HL) ; 68 | or A ; 69 | jr z, PS_PX_RIGHT ; same nuly 70 | 71 | push HL ; 11:1 72 | ld L, A ; 7:1 73 | ld H, D ; 4:1 74 | push BC ; 11:1 75 | ld B, $08 ; 7:2 76 | 77 | PS_LOOP_PX_DOWN: 78 | rl L ; 8:2 79 | jr nc, PS_NEXT_PX_DOWN ; 12/7:2 80 | ld A, (DE) ; 7:1 81 | xor C ; 4:1 82 | ld (DE), A ; 7:1 83 | PS_NEXT_PX_DOWN: 84 | inc D ; 4:1 85 | djnz PS_LOOP_PX_DOWN ;13/8:2 86 | 87 | pop BC ; 10:1 88 | ld D, H ; 4:1 89 | pop HL ; 10:1 90 | PS_PX_RIGHT: 91 | inc HL ; 4:1 ukazatel na dalsi mikroradek znaku 92 | 93 | xor A ; 4:1 94 | rrc C ; 8:2 95 | adc A, E ; 4:1 96 | ld E, A ; 4:1 97 | 98 | djnz PS_RIGHT_LOOP ;13/8:2 99 | 100 | jr PS_NEXT_CHAR 101 | 102 | 103 | ; ===================================================== 104 | ; VSTUP: 105 | ; a color 106 | ; HL adresa atributu prvniho znaku 107 | ; IX ukazatel na string zakonceny znakem mensim jak 32 108 | PRINT_STRING_OBAL: 109 | push HL ; 110 | push DE 111 | push BC ; 112 | call PRINT_STRING_COLOR ; 113 | pop BC ; 114 | pop DE 115 | pop HL ; 116 | ret ; 117 | 118 | ;------------------------------------ 119 | 120 | if (0) 121 | PRINT2BUFFER: 122 | ld a,Adr_Buffer / 256 123 | ld (PS_ADRESA_SEGMENTU+1),a 124 | ret 125 | 126 | PRINT2SCREEN: 127 | ld a,$40 128 | ld (PS_ADRESA_SEGMENTU+1),a 129 | ret 130 | endif 131 | 132 | 133 | ; ===================================================== 134 | ; scroll routine, o jeden radek nahoru textoveho pole 135 | ; ver 0.1 136 | ; NEMENI: "a","IX" ( dulezite, lze pak volat pred PRINT_STRING, ktere ma IX jako parameter s adresou retezce ) 137 | ; DODELAT: nakonec napravo ma byt CAMP takze se to musi cele prepsat... 138 | SCROLL: 139 | ld h,$50 ; 7:2 posledni tretina obrazovky 140 | SCROLL_LOOP: 141 | ld d,h ; 4:1 "h" je inkrementovano pres ldir protoze "l" pretece na 0 142 | ld e,4*32 ; 7:2 na radek 4 ( od nuly) 143 | ld l,5*32 ; 7:2 zacneme kopirovat radek 5 144 | ld bc,3*32 ; 10:3 cele to zopakujeme 3 radky 145 | ldir ; 21/16:2 "LD (DE),(HL)", DE++, HL++, BC-- 146 | bit 3,h ; 8:2 147 | 148 | ; $51-$57 0101 0??? 149 | ; $58 0101 1000 150 | ; $5B 0101 1011 151 | 152 | jr z,SCROLL_LOOP ; 12/7:2 153 | bit 0,h ; 8:2 h = $58 = 0101 1000 / h = $5B = 0101 1011 154 | ld h,$5A ; posledni tretina atributu 155 | jr z,SCROLL_LOOP ; 12/7:2 156 | 157 | SCROLL_LAST_LINE: ; smazani posledniho radku 158 | ld b,8 159 | ld h,$50 160 | SCROLL_NEXT_MICROLINE: 161 | ld l,e ; po ldir "e" = E0 = 256-32 162 | SCROLL_CLEAR_MICROLINE: 163 | ld (hl),c ; v "c"je nula po ldir 164 | inc l 165 | jr nz,SCROLL_CLEAR_MICROLINE 166 | inc h 167 | djnz SCROLL_NEXT_MICROLINE 168 | ret ; atributy nemazem protoze PAPER bude cerny a INK se nastavi pri psani 169 | 170 | 171 | 172 | ; ===================================================== 173 | ; Odskroluje textove pole a zapise naspod novy retezec 174 | ; VSTUP: IX ukazatel na string zakonceny znakem mensim jak 32 175 | ; zapisuje primo na obrazovku 176 | PRINT_MESSAGE: 177 | ld a, %00000111 ; INK = 7 = bila 178 | 179 | ; ----------------------------------------------------- 180 | ; VSTUP: 181 | ; A = color 182 | PRINT_MESSAGE_COLOR: 183 | call SCROLL ; nemeni "IX" ani "a" 184 | 185 | ld HL, $5AE0 ; zacatek posledniho radku 186 | call PRINT_STRING_COLOR 187 | ret 188 | 189 | 190 | ; ===================================================== 191 | ; VSTUP: 192 | ; B = index vety 193 | ; HL = je pocatecni veta 194 | PRINT_MESSAGE_ARRAY: 195 | 196 | call ADR_X_STRING 197 | ld a,%00000101 ; azurova 198 | call PRINT_MESSAGE_COLOR 199 | 200 | ret 201 | 202 | 203 | ; ===================================================== 204 | PRINT_DEKORACE: 205 | call PUSH_ALL 206 | 207 | inc DE ; DE = &(TABLE_OBJECTS[?].dodatecny) 208 | ld A, (DE) 209 | and MASKA_PODTYP 210 | ld B, A ; index vety 211 | ld HL, ARRAY_STRING_DEKORACE ; pocatecni veta 212 | call PRINT_MESSAGE_ARRAY ; 213 | 214 | call POP_ALL 215 | ret 216 | 217 | 218 | ; ===================================================== 219 | PRINT_PREPINAC: 220 | call PUSH_ALL 221 | 222 | ld A, (DE) 223 | and MASKA_PODTYP 224 | srl A 225 | srl A ; odstranime natoceni 226 | 227 | ld B, A ; index vety 228 | ld HL, ARRAY_STRING_PREPINACE ; pocatecni veta 229 | call PRINT_MESSAGE_ARRAY ; 230 | 231 | call POP_ALL 232 | ret 233 | 234 | 235 | ; ===================================================== 236 | ; Najde pocatek x-teho retezce zakonceny nulou od pocatecni adresy 237 | ; VSTUP: 238 | ; HL pocatecni adresa 239 | ; B kolikaty retezec hledam od nuly 240 | ; VYSTUP: 241 | ; IX = @(strings[B]) 242 | ; A = 0 243 | ; BC = 0 244 | AXS_NEXT_STRING: 245 | cpir ; hl++, bc-- 246 | 247 | ; VSTUPNI_BOD FCE!!! 248 | ; ----------------------------------------------------- 249 | ADR_X_STRING: 250 | xor A ; 251 | ld C, A ; BC = $??00 -> cpir -> B-- 252 | cp B ; 253 | jr nz, AXS_NEXT_STRING 254 | 255 | push hl 256 | pop ix 257 | ret 258 | 259 | 260 | if (0) 261 | ; VSTUP: hl = odkud, de = kam 262 | STRING_COPY: 263 | ld a,(hl) 264 | inc hl 265 | ld (de),a 266 | inc de 267 | or a 268 | jr nz,STRING_COPY 269 | ret 270 | endif 271 | 272 | 273 | ; ===================================================== 274 | ; VSTUP: 275 | ; A index predmetu 276 | ; HL ukazatel na pokracujici vetu 277 | ; MENI: 278 | ; AF, BC, DE, HL, IX 279 | ; pokud neni druha tiskova veta "" tak B = 0 280 | ITEM_MAKE_A: 281 | or A 282 | ret z 283 | 284 | push HL ; ulozime na zasobnik aby to mohlo byt vybrano jako druha tisknuta veta 285 | 286 | ld B, A 287 | ld HL, ARRAY_STRING_ITEMS 288 | call ADR_X_STRING 289 | 290 | call SCROLL 291 | 292 | ld HL, $5AE0 ; zacatek posledniho radku 293 | call PRINT_STRING 294 | 295 | pop IX 296 | ; navazeme na tisknutou vetu 297 | call PRINT_STRING_CONTINUE 298 | 299 | ret 300 | 301 | 302 | ; ===================================================== 303 | ; VSTUP: 304 | ; A index predmetu 305 | ; VYSTUP: 306 | ; Vypiset NECO TAKEN na spodek obrazovky 307 | ITEM_TAKEN_A: 308 | ld HL, VETA_TAKEN 309 | jr ITEM_MAKE_A ; diky tomu ze to neni call, nemenime zasobnik 310 | 311 | 312 | ; ===================================================== 313 | ; VSTUP: 314 | ; A index predmetu 315 | ; VYSTUP: 316 | ; Vypiset NECO PUT na spodek obrazovky 317 | ITEM_PUT_A: 318 | ld HL, VETA_PUT 319 | jr ITEM_MAKE_A ; diky tomu ze to neni call, nemenime zasobnik 320 | 321 | -------------------------------------------------------------------------------- /Source/table.h: -------------------------------------------------------------------------------- 1 | 2 | i_nw equ 0 ; item north-west position 3 | i_ne equ 1 ; item north-east position 4 | i_se equ 2 ; item south-east position 5 | i_sw equ 3 ; item south-west position 6 | 7 | 8 | ; lokace = dolnich 8 bitu pozice na mape, pokud je nulova tak radek pridava dalsi informace k predchozimu 9 | 10 | ; typ = bity 7 6 5 ? ? ? ? ? = aspon jeden nenulovy bit znamena nepruchozi objekt ( u dveri zaroven zavreno ), u paky 0=nahore, 1=dole 11 | ; typ = bity ? ? ? 4 3 2 ? ? = identifikace typu objektu: prepinac, enemy, dvere, dekorace (runa, kanal)... 12 | ; typ = bity ? ? ? ? ? ? 0 1 = natoceni v danem ctverci, 13 | ; u dveri je to shodny se smerem pohledu kdy to ma byt vykresleno pri zavrenych dveri (tzn. kazde dvere maji 2 radky) 14 | ; kdyz se pod ne polozi predmety melo by to spravne vykreslovat zacloneni 15 | ; protoze objektu muze byt vic tak teprve s natocenim jednoznacne identifikuji co to je (u dekoraci nepouzito) 16 | 17 | ; dodatecny = bity ? ? ? 4 3 2 1 0 = podtyp objektu 18 | 19 | ; pokud lokace zacina nulou tak jsou to pomocne radky prepinace nad tim (prvni nenulove lokace) 20 | ; pomocne radky urcuji co vsechno to prepne, pricemz je to diky te prvni nule posunuty, 21 | ; takze druha polozka znaci lokaci a posledni identifikaci objektu, kde horni 3 bity jsou ty co maji byt xorovany 22 | 23 | 24 | CHODBA_VZ equ 1 25 | CHODBA_SJ equ 0 26 | 27 | 28 | TYP_DVERE_N equ (TYP_DVERE+north) 29 | TYP_DVERE_E equ (TYP_DVERE+east) 30 | TYP_DVERE_S equ (TYP_DVERE+south) 31 | TYP_DVERE_W equ (TYP_DVERE+west) 32 | TYP_ZARAZKA equ $ff 33 | 34 | ADR_ZARAZKY: 35 | defw ZARAZKA ; ma ukazovat adresu $ff zarazky v TABLE_OBJECTS, pouziva se pri brani/vkladani radku 36 | 37 | 38 | TABLE_OBJECTS: 39 | ; POZOR! Predmety neustale udrzuj ve vzestupne lokaci a nasledne vzestupne podle prepinace+typ (horni 3 bity na prepinace se berou jako vynulovane) 40 | ; lokace prepinace+typ dodatecny 41 | defb 1, TYP_DEKORACE, PODTYP_KANAL 42 | 43 | defb 6, TYP_DEKORACE, PODTYP_RUNA 44 | 45 | defb 16, TYP_ITEM, PODTYP_SWORD 46 | defb 16, TYP_ITEM + i_ne, PODTYP_DAGGER 47 | defb 16, TYP_ITEM + i_se, PODTYP_SWORD 48 | defb 16, TYP_ITEM + i_sw, PODTYP_SHIELD 49 | 50 | defb 17, TYP_ITEM, PODTYP_BONE 51 | defb 17, TYP_ITEM + i_ne, PODTYP_SHIELD2 52 | defb 17, TYP_ITEM + i_se, PODTYP_ARMOR_CH 53 | defb 17, TYP_ITEM + i_sw, PODTYP_ARMOR_L 54 | 55 | defb 21, 4 * 32 + TYP_ENEMY + east, $80 + PODTYP_SKRET 56 | 57 | defb 32, TYP_ITEM, PODTYP_MACE 58 | defb 32, TYP_ITEM + i_ne, PODTYP_BOW 59 | defb 32, TYP_ITEM + i_se, PODTYP_SLING 60 | defb 32, TYP_ITEM + i_sw, PODTYP_AXE 61 | 62 | defb 33, TYP_ITEM, PODTYP_ARMOR_P 63 | defb 33, TYP_ITEM + i_ne, PODTYP_HELM 64 | defb 33, TYP_ITEM + i_se, PODTYP_HELM_D 65 | defb 33, TYP_ITEM + i_sw, PODTYP_SHIELD2 66 | 67 | defb 48, TYP_ITEM, PODTYP_SWORD 68 | 69 | defb 50, TYP_ITEM + i_se, PODTYP_RING_B 70 | defb 50, TYP_ITEM + i_sw, PODTYP_RING_R 71 | 72 | defb 64, TYP_ITEM, PODTYP_BONE 73 | defb 64, TYP_ITEM + i_ne, PODTYP_BONE 74 | defb 64, TYP_ITEM + i_se, PODTYP_BONE 75 | defb 64, TYP_ITEM + i_sw, PODTYP_BONE 76 | 77 | 78 | defb 66, TYP_ITEM, PODTYP_ANKH 79 | defb 66, TYP_ITEM + i_ne, PODTYP_POTION_R 80 | defb 66, TYP_ITEM + i_se, PODTYP_POTION_G 81 | defb 66, TYP_ITEM + i_sw, PODTYP_POTION_B 82 | 83 | defb 68, 4 * 32 + TYP_ENEMY + east, $80 + PODTYP_SKRET 84 | 85 | defb 80, TYP_ITEM, PODTYP_BONE 86 | defb 80, TYP_ITEM + i_ne, PODTYP_BONE 87 | defb 80, TYP_ITEM + i_se, PODTYP_BONE 88 | defb 80, TYP_ITEM + i_sw, PODTYP_BONE 89 | 90 | defb 82, TYP_ITEM, PODTYP_BOOK 91 | defb 82, TYP_ITEM + i_ne, PODTYP_NECKLACE 92 | defb 82, TYP_ITEM + i_se, PODTYP_FOOD 93 | defb 82, TYP_ITEM + i_sw, PODTYP_POTION_G 94 | 95 | 96 | defb 87, ZAM_1 + TYP_DVERE, CHODBA_VZ 97 | defb 87, TYP_ITEM + i_nw, PODTYP_SHIELD 98 | defb 87, TYP_ITEM + i_nw, PODTYP_POTION_G 99 | defb 87, TYP_ITEM + i_nw, PODTYP_POTION_G 100 | defb 87, TYP_ITEM + i_nw, PODTYP_POTION_G 101 | defb 87, ZAM_1 + TYP_DVERE_E, 0 102 | defb 87, ZAM_1 + TYP_DVERE_W, 0 103 | defb 87, TYP_ITEM + i_sw, PODTYP_BONE 104 | defb 87, TYP_ITEM + i_sw, PODTYP_AXE 105 | 106 | defb 89, TYP_PREPINAC + east, PODTYP_PAKA ; dodatecne jeste neni pouzit, vzdy je to paka 107 | defb 0, 87, ZAM_1 + TYP_DVERE ; aktivace paky prepne bit ZAM_1 dveri na lokaci 87 108 | 109 | defb 95, TYP_DEKORACE, PODTYP_KANAL 110 | 111 | defb 115, ZAM_1 + TYP_DEKORACE, PODTYP_KANAL 112 | defb 115, TYP_ITEM + i_se, PODTYP_POTION_G ; ve stene (jakoby v kanalu) 113 | 114 | 115 | defb 119, ZAM_1 + TYP_DVERE, CHODBA_VZ 116 | defb 119, ZAM_1 + TYP_DVERE_E, 0 117 | defb 119, ZAM_1 + TYP_DVERE_W, 0 118 | 119 | defb 129, TYP_DEKORACE, PODTYP_RUNA 120 | 121 | defb 132, TYP_PREPINAC + south, PODTYP_PAKA ; dodatecne jeste neni pouzit, vzdy je to paka 122 | defb 0, 119, ZAM_1 + TYP_DVERE ; aktivace paky prepne bit ZAM_1 dveri na lokaci 119 123 | 124 | 125 | defb 142, ZAM_1 + TYP_DVERE, CHODBA_SJ 126 | defb 142, ZAM_1 + TYP_DVERE_N, 0 ; 127 | defb 142, ZAM_1 + TYP_DVERE_S, 0 ; 128 | 129 | defb 158, ZAM_123 + TYP_DVERE, CHODBA_SJ 130 | defb 158, ZAM_123 + TYP_DVERE_N, 0 ; zavreno az na 3 bity!!! 131 | defb 158, ZAM_123 + TYP_DVERE_S, 0 ; zavreno az na 3 bity!!! 132 | 133 | defb 176, TYP_DEKORACE, PODTYP_KANAL 134 | 135 | ; ---------- ctverice pak na dvere 158 136 | 137 | PAKA_A equ 185 138 | PAKA_B equ 186 139 | PAKA_C equ 187 140 | PAKA_D equ 188 141 | 142 | ; Bit dveri 7 6 5 143 | ; Paka A B C D = 185 .. 188 144 | ; zaroven s + + + + 145 | ; pakou B C D B 146 | ; a zaroven C 147 | ; a jeste D 148 | 149 | 150 | ; lokace prepinace+typ dodatecny 151 | 152 | defb PAKA_A, TYP_PREPINAC + south, PODTYP_PAKA ; paka A meni dvere 142 a paky pro dvere 158 (takze rovnou otevre dvere pokud jsou shodne nahore) 153 | defb 0, 142, ZAM_1 + TYP_DVERE ; meni bit ZAM_1 154 | defb 0, 158, ZAM_123 + TYP_DVERE ; celkove meni bity ZAM_1 + ZAM_2 + ZAM_3 155 | defb 0, PAKA_B, ZAM_1 + TYP_PREPINAC + south ; zmeni i paku B 156 | defb 0, PAKA_C, ZAM_1 + TYP_PREPINAC + south ; zmeni i paku C 157 | defb 0, PAKA_D, ZAM_1 + TYP_PREPINAC + south ; zmeni i paku D 158 | 159 | defb PAKA_B, TYP_PREPINAC + south, PODTYP_PAKA ; paka B primarne meni bit ZAM_1 na dverich v lokaci 158 160 | defb 0, 158, ZAM_12 + TYP_DVERE ; celkove meni bity ZAM_1 + ZAM_2 s pakou C 161 | defb 0, PAKA_C, ZAM_1 + TYP_PREPINAC + south ; zmeni i paku C 162 | 163 | defb PAKA_C, TYP_PREPINAC + south, PODTYP_PAKA ; paka C primarne meni bit ZAM_2 na dverich v lokaci 158 164 | defb 0, 158, ZAM_23 + TYP_DVERE ; celkove meni bity ZAM_2 + ZAM_3 s pakou D 165 | defb 0, PAKA_D, ZAM_1 + TYP_PREPINAC + south ; zmeni i paku D 166 | 167 | defb PAKA_D, TYP_PREPINAC + south, PODTYP_PAKA ; paka D primarne meni bit ZAM_3 na dverich v lokaci 158 168 | defb 0, 158, ZAM_13 + TYP_DVERE ; celkove meni bity ZAM_1 + ZAM_3 s pakou B 169 | defb 0, PAKA_B, ZAM_1 + TYP_PREPINAC + south ; zmeni i paku B 170 | 171 | ; ---------- 172 | 173 | defb 216, TYP_PREPINAC + east, PODTYP_PAKA 174 | if ( KONTROLUJ_NATOCENI_U_PREPINACU ) 175 | defb 0, 216, ZAM_1 + TYP_PREPINAC + west ; prepne i paku na druhe strane 176 | endif 177 | defb 0, 232, ZAM_1 + TYP_DVERE ; aktivace paky prepne predmet na lokaci 232 s typem dvere 178 | 179 | 180 | defb 216, TYP_PREPINAC + west, PODTYP_PAKA 181 | if ( KONTROLUJ_NATOCENI_U_PREPINACU ) 182 | defb 0, 216, ZAM_1 + TYP_PREPINAC + east ; prepne i paku na druhe strane 183 | endif 184 | defb 0, 232, ZAM_1 + TYP_DVERE ; aktivace paky prepne predmet na lokaci 232 s typem dvere 185 | 186 | defb 232, ZAM_1 + TYP_DVERE, CHODBA_VZ 187 | defb 232, ZAM_1 + TYP_DVERE_E, 0 188 | defb 232, ZAM_1 + TYP_DVERE_W, 0 189 | 190 | defb 246, TYP_DEKORACE, PODTYP_RUNA 191 | 192 | defb 246, TYP_ITEM, PODTYP_POTION_G 193 | defb 246, TYP_ITEM + i_ne, PODTYP_POTION_R 194 | defb 246, TYP_ITEM + i_se, PODTYP_POTION_G 195 | defb 246, TYP_ITEM + i_sw, PODTYP_POTION_G 196 | 197 | defb 254, TYP_DEKORACE, PODTYP_KANAL 198 | 199 | ZARAZKA: 200 | defb TYP_ZARAZKA 201 | 202 | ; za touhle casti roste heap az k zasobniku ( nic sem uz nedavat ) 203 | -------------------------------------------------------------------------------- /Source/inventory.asm: -------------------------------------------------------------------------------- 1 | ; ===================================================== 2 | ; Nastavi zero flag kdyz nejsme v inventari 3 | ; Do akumulatoru vlozi kurzor v inventari 4 | TEST_OTEVRENY_INVENTAR: 5 | ld a, (PRIZNAKY) ;caa6 3a 13 c6 6 | and PRIZNAK_OTEVRENY_INVENTAR ;caa9 e6 01 7 | ld a, (KURZOR_V_INVENTARI) ;caab 3a 66 ce 8 | ret 9 | 10 | 11 | ; ===================================================== 12 | ; VSTUP: nic 13 | ; VYSTUP: 14 | ; DE = @(INVENTORY_ITEMS[HLAVNI_POSTAVA][0]) 15 | ; MENI: 16 | ; AF, B = 0, DE 17 | DE_INVENTORY_ITEMS_AKTIVNI_B0: 18 | ld B, $00 19 | 20 | ; ----------------------------------------------------- 21 | ; VYSTUP: 22 | ; B = index polozky 23 | ; VYSTUP: 24 | ; DE = @(INVENTORY_ITEMS[HLAVNI_POSTAVA][B]) 25 | ; MENI: 26 | ; AF, DE 27 | DE_INVENTORY_ITEMS_AKTIVNI_B: 28 | ld A, (HLAVNI_POSTAVA) ; 13:3 29 | ld E, A ; 4:1 30 | 31 | ; ----------------------------------------------------- 32 | ; VSTUP: 33 | ; A = E = 0..5 34 | ; B = index polozky 35 | ; VYSTUP: 36 | ; DE = @(INVENTORY_ITEMS[HLAVNI_POSTAVA][B]) 37 | ; MENI: 38 | ; AF, DE 39 | DE_INVENTORY_ITEMS_ABE: 40 | 41 | if ( MAX_INVENTORY != 31 ) 42 | .error 'Zmenit kod pro nasobeni 27x' 43 | endif 44 | 45 | add A, A ; 4:1 2x 46 | add A, A ; 4:1 4x 47 | add A, A ; 4:1 8x 48 | add A, A ; 4:1 16x 49 | add A, A ; 4:1 32x 50 | sub E ; 4:1 31x 51 | add A, B ; 4:1 52 | add A, INVENTORY_ITEMS % 256; 7:2 53 | ld E, A ; 4:1 54 | 55 | if ( INVENTORY_ITEMS/256 != (INVENTORY_ITEMS_END+1)/256) 56 | .warning 'Delsi kod o 2 bajty! Pole INVENTORY_ITEMS = preleza segment!' 57 | 58 | adc A, INVENTORY_ITEMS / 256; 7:2 59 | sub E ; 4:1 60 | ld D, A ; 4:1 61 | else 62 | ld D, INVENTORY_ITEMS / 256; 7:2 63 | endif 64 | ret 65 | 66 | 67 | ; ===================================================== 68 | SET_RIGHT_PANEL: 69 | ld hl,PRIZNAKY ; 10:3 70 | ld a,(hl) ; 7:1 71 | xor PRIZNAK_OTEVRENY_INVENTAR ; 7:2 72 | ld (hl),a ; 7:1 73 | and PRIZNAK_OTEVRENY_INVENTAR ; 7:2 74 | 75 | jp nz,INVENTORY_WINDOW_OPEN 76 | jr PLAYERS_WINDOW 77 | 78 | 79 | ; ===================================================== 80 | NEW_PLAYER_ACTIVE: 81 | ; je nastaveny pravy panel na zobrazeni vsech hracu? 82 | call TEST_OTEVRENY_INVENTAR ;dc11 83 | jp nz, INVENTORY_WINDOW_REFRESH; uz se nevratime 84 | ; jinak pokracujem v PLAYER_WINDOW 85 | ; ret 86 | 87 | ; ----------------------------------------------------- 88 | PLAYERS_WINDOW: 89 | 90 | ; Vymazani vseho krome casti s avatarem a rukama 91 | ld bc,$0E01 ; blok o 14 sloupcich a 1 radku 92 | ld hl,Adr_Attr_Buffer + $12 93 | call FILL_ATTR_BLOCK 94 | 95 | ld bc,$0E03 ; blok o 14 sloupcich a 3 radcich 96 | ld hl,Adr_Attr_Buffer + $B2 97 | call FILL_ATTR_BLOCK 98 | 99 | ld bc,$0E03 ; blok o 14 sloupcich a 3 radcich 100 | ld hl,Adr_Attr_Buffer + $192 101 | call FILL_ATTR_BLOCK 102 | 103 | ld bc,$0E01 ; blok o 14 sloupcich a 1 radku 104 | ld hl,Adr_Attr_Buffer + $272 105 | call FILL_ATTR_BLOCK 106 | 107 | 108 | ; Vypsani textu u vsech postav ( jmena + HP ) 109 | ld IX, NAMES ; 14:4 110 | ld BC,(HLAVNI_POSTAVA) ; 20:4 111 | inc C ; 4:1 112 | 113 | ld HL, Adr_Attr_Buffer+$12 ; 10:3 114 | ld DE, Adr_Attr_Buffer+$19 ; 10:3 115 | 116 | PW_JMENA_LOOP: 117 | ld A, COLOR_ACTIVE_PLAYER ; 7:2 118 | dec C 119 | jr z, PW_AKTIVNI ;12/7:2 120 | ld A, COLOR_OTHER_PLAYERS ; 7:2 121 | PW_AKTIVNI: 122 | push AF ; 11:1 color 123 | call PRINT_STRING_OBAL ; 17:3 124 | 125 | ld A, L ; 4:1 126 | add A, $A0 ; 7:2 127 | ld L, A ; 4:1 128 | adc A, H ; 4:1 129 | sub L ; 4:1 130 | ld H, A ; 4:1 131 | pop AF ; 10:1 132 | 133 | push IX ; 15:2 134 | ld IX, VETA_HP ; 14:4 135 | call PRINT_STRING_OBAL ; 17:3 136 | pop IX ; 14:2 137 | 138 | ld A, L ; 4:1 139 | add A, $40 ; 7:2 140 | ld L, A ; 4:1 141 | adc A, H ; 4:1 142 | sub L ; 4:1 143 | ld H, A ; 4:1 144 | 145 | ex DE, HL ; 4:1 146 | djnz PW_JMENA_LOOP ;13/8:2 147 | 148 | 149 | ld ix, INVENTORY_ITEMS ; 150 | xor a ; 151 | push AF ; stop symbol 152 | ld c, MAX_INVENTORY ; 153 | PW_HANDS_LOOP: 154 | ld B, A ; "b" = cislo ruky 0..11 155 | ld a,(ix+$14) ; leva ruka 156 | call VYKRESLI_RUKU ; 157 | inc B ; 158 | ld a,(ix+$19) ; prava ruka 159 | call VYKRESLI_RUKU ; 160 | inc B ; 161 | ld A, B ; schovame cislo ruky do akumulatoru 162 | ld B, $00 ; 163 | add ix,BC ; + MAX_INVENTORY = inventar dalsi postavy 164 | cp 12 ; pocet zobrazenych ruk 165 | jp nz,PW_HANDS_LOOP ; 166 | 167 | call KRESLI_ZE_ZASOBNIKU ;dce4 168 | 169 | ld hl,AVATARS ; odkud se budou cist data 170 | ld B, $06 ; citac 171 | PW_AVATARS: 172 | call INIT_COPY_PATTERN2BUFFER_NOZEROFLAG ;dced cd 9d d6 . . . 173 | djnz PW_AVATARS ; 174 | 175 | call ZOBRAZ_ZIVOTY ;dd02 cd 4b df . K . 176 | ret ;dd0c c9 . 177 | 178 | 179 | ; ===================================================== 180 | ; Tento vstup se pouzije pokud predtim byl vykreslen jiny panel 181 | INVENTORY_WINDOW_OPEN: 182 | 183 | INVENTORY_WINDOW_KURZOR: 184 | INVENTORY_WINDOW_REFRESH: 185 | 186 | ld bc,$0804 ; blok o 8 sloupcich a 4 radcich 187 | ld hl,Adr_Attr_Buffer + $98 188 | call FILL_ATTR_BLOCK 189 | 190 | ld bc,$0808 ; blok o 8 sloupcich a 8 radcich 191 | ld hl,Adr_Attr_Buffer + $118 192 | call FILL_ATTR_BLOCK 193 | 194 | ld bc,$0804 ; blok o 8 sloupcich a 4 radcich 195 | ld hl,Adr_Attr_Buffer + $218 196 | call FILL_ATTR_BLOCK 197 | 198 | 199 | ; --------------- 200 | ; Menime jen aktivni postavu 201 | ; INVENTORY_WINDOW_REFRESH: 202 | ; napravo od tvare, mazem jmeno predchozi postavy 203 | ld bc,$0A04 ; blok o 10 sloupcich a 4 radcich 204 | ld hl,Adr_Attr_Buffer + $16 205 | call FILL_ATTR_BLOCK 206 | 207 | ld a,(HLAVNI_POSTAVA) 208 | push af ; ulozime aktivni postavu na zasobnik 209 | 210 | 211 | if (NAMES/256 != NAMES_END/256) 212 | .warning 'Pomalejsi kod protoze NAMES preleza segment!' 213 | 214 | inc a ; 4:1 215 | ld bc,NEXT_NAME ; 10:3 216 | ld hl,NAMES-NEXT_NAME ; 10:3 217 | IW_NEXT_NAME: 218 | add hl,bc ; 11:1 219 | dec a ; 4:1 220 | jr nz,IW_NEXT_NAME ;12/7:2 221 | push hl ; 11:1 222 | pop ix ; 14:2 ix <- hl 223 | else 224 | ld H, A ; 4:1 1x 225 | add A, A ; 4:1 2x 226 | add A, A ; 4:1 4x 227 | ld L, A ; 4:1 4x 228 | add A, A ; 4:1 8x 229 | add A, L ; 4:1 12x 230 | sub H ; 4:1 11x 231 | add A, NAMES % 256 ; 7:2 232 | ld IXL, A ; 8:2 233 | ld IXH, NAMES / 256 ; 11:3 234 | endif 235 | 236 | if (NAMES/256 = NAMES_END/256 & NEXT_NAME != 11) 237 | .error 'Zmen kod protoze se NEXT_NAME != 11!' 238 | endif 239 | 240 | ld hl, Adr_Attr_Buffer + $16 241 | call PRINT_STRING 242 | 243 | pop af ; nacteme aktivni postavu ze zasobniku 244 | add a,a ; 2x 245 | add a,a ; 4x 246 | add a,AVATARS % 256 247 | ld l,a 248 | adc a,AVATARS / 256 249 | sub l 250 | ld h,a ; hl = index na avatar aktivniho hrace 251 | ld e,(hl) 252 | inc hl 253 | ld d,(hl) ; de = ukazatel na sprite avatara aktivniho hrace 254 | 255 | ld bc,X18+Y00 256 | call COPY_SPRITE2BUFFER 257 | 258 | ;--- Nastrkame spravna data (parametry dale volane fce) na zasobnik a protoze je to zasobnik, posledni bude prvni kreslene. 259 | 260 | ; Vykresleni v poradi: 261 | ; 2 x pul silueta postavy 262 | ; toulec 263 | ; pokud je predmet a nebo mensi jak 17 tak modre pozadi 264 | ; pokud kurzor tak vzdy pozadi a to fialove 265 | ; ram 266 | ; kdyz je na pozici predmet tak vykresleni predmetu 267 | ; prostirani 268 | ; kdyz je presouvany predmet a nesmi tam tak mrizka 269 | 270 | ; kdyz je presouvany predmet tak najit pozici a posunout ji o jedno nahoru a doleva 271 | ; nakreslit podklad 272 | ; nakreslit ram 273 | ; nakreslit presouvany predmet 274 | 275 | xor A 276 | push AF ; zarazka na zasobnik 277 | ; init VYKRESLI_ITEM_NA_POZICI_B 278 | ld B, MAX_HOLD_INVENTORY ; 7:2 279 | IW_LOOP: 280 | call VYKRESLI_ITEM_NA_POZICI_B 281 | djnz IW_LOOP 282 | 283 | ld DE, I_toulec 284 | push DE 285 | ld DE, POZICE_TOULEC 286 | push DE 287 | ld DE, Body_left 288 | push DE 289 | ld DE, X25+Y07 290 | push DE 291 | ld DE, Body_left 292 | push DE 293 | ld DE, X29+Z07 ; 7bit znaci zrcadlove kresleni 294 | push DE 295 | ; v zasobniku mame za sebou souradnice a pod tim adresu obrazku 296 | call KRESLI_ZE_ZASOBNIKU 297 | 298 | call VYKRESLI_AKTIVNI_PREDMET 299 | 300 | ret 301 | 302 | 303 | 304 | ; ===================================================== 305 | ; Ulozi na zasobnik dvojice 16 bitovych hodnot (adresu a pak souradnice) pro pozdejsi vykresleni 306 | ; VSTUP: 307 | ; B = index pozice 1..MAX_INVENTORY 308 | VYKRESLI_ITEM_NA_POZICI_B: 309 | pop HL 310 | ld (VINPB_SELF+1), HL 311 | 312 | ld A, B 313 | add A, A 314 | 315 | PVIm2 equ (POZICE_V_INVENTARI-2) 316 | 317 | add A, PVIm2 % 256 318 | ld L, A 319 | if (PVIm2/256 != POZICE_V_INVENTARI_END/256) 320 | .warning 'Pomalejsi a delsi kod, POZICE_V_INVENTARI preleza segment!' 321 | adc A, PVIm2 / 256 322 | sub L 323 | ld H, A 324 | ld A, (HL) 325 | inc HL 326 | else 327 | ld H, POZICE_V_INVENTARI / 256 328 | ld A, (HL) 329 | inc L 330 | endif 331 | ld H, (HL) 332 | ld L, A ; HL = pozice v inventari 333 | 334 | ; vykresleni mrizky 335 | ld A, (PRESOUVANY_PREDMET) ; 13:3 336 | ld C, A ; 4:1 337 | call TEST_NEPOVOLENE_POZICE ; 17:3 338 | 339 | jr z, IW_BEZ_MRIZKY 340 | ld DE, I_zakazano ; vykresleni mrizky 341 | push DE ; ulozeni adresy spritu 342 | push HL ; ulozeni pozice 343 | IW_BEZ_MRIZKY: 344 | 345 | ; vykresleni predmetu 346 | ld C, B ; C = B = priznak ze je prazdne policko; 347 | call DE_INVENTORY_ITEMS_AKTIVNI_B 348 | if (INVENTORY_ITEMS/256 != INVENTORY_ITEMS_END/256) 349 | .warning 'Pomalejsi kod, INVENTORY_ITEMS preleza segment!' 350 | dec DE 351 | else 352 | dec E 353 | endif 354 | ld A, (DE) 355 | add A, A 356 | jr z, IW_BEZ_PREDMETU 357 | 358 | call DE_2DSPRITE_A 359 | push DE ; ulozeni adresy spritu 360 | push HL ; ulozeni pozice 361 | dec C ; zrusime priznak prazdneho policka 362 | IW_BEZ_PREDMETU: 363 | 364 | ; vykresleni prostirani 365 | ld A, B 366 | cp INDEX_PROSTIRANI 367 | jr nz, IW_NENI_PROSTIRANI 368 | ld DE, I_prostirani ; adresa spritu 369 | push DE ; ulozeni adresy spritu 370 | push HL ; ulozeni pozice 371 | IW_NENI_PROSTIRANI: 372 | 373 | ; vykresleni prazdneho ramu nebo modreho/fialoveho podkladu 374 | ld DE, I_ram ; adresa spritu 375 | jr c, IW_MODRY ; prvnich 16 pozic ma vzdy modre pozadi 376 | jr z, IW_MODRY ; pod prostiranim je take modro 377 | ; vykresleni mozneho podkladu 378 | cp C 379 | jr z, IW_PRAZDNE_POLICKO ; zero = prazdne policko 380 | IW_MODRY: 381 | ld DE, I_bg ; modry podklad 382 | IW_PRAZDNE_POLICKO: 383 | ; fialovy podklad je pod kurzorem vzdy 384 | ld A, (KURZOR_V_INVENTARI) 385 | inc A 386 | cp B 387 | jr nz, IW_NEJSME_NA_KURZORU 388 | ld DE, I_bgm ; fialovy podklad pro kurzor 389 | IW_NEJSME_NA_KURZORU: 390 | push DE ; ulozeni adresy spritu 391 | push HL ; ulozeni pozice 392 | 393 | 394 | VINPB_SELF: 395 | jp $0000 396 | 397 | 398 | ; ===================================================== 399 | KRESLI_ZE_ZASOBNIKU: 400 | pop HL ; navratova adresa 401 | pop BC 402 | inc B 403 | dec B 404 | jr z, KZZ_EXIT 405 | pop DE 406 | push HL ; navratova adresa 407 | call COPY_SPRITE2BUFFER 408 | jr KRESLI_ZE_ZASOBNIKU 409 | KZZ_EXIT: 410 | push HL 411 | ret ; return 412 | 413 | 414 | 415 | ; ===================================================== 416 | ; VSTUP: 417 | ; A = 2*PODTYP 418 | ; VYSTUP: 419 | ; DE = adresa spritu 420 | ; MENI: 421 | ; AF 422 | DE_2DSPRITE_A: 423 | push HL 424 | add A, ITEM2SPRITE % 256 ; 425 | ld L, A 426 | if (ITEM2SPRITE/256 != ITEM2SPRITE_END/256) 427 | .warning 'ITEM2SPRITE preleze segment!' 428 | adc A, ITEM2SPRITE / 256 429 | sub L 430 | ld H, A 431 | ld E, (HL) 432 | inc HL 433 | else 434 | ld H, ITEM2SPRITE / 256 435 | ld E, (HL) 436 | inc L 437 | endif 438 | ld D, (HL) 439 | pop HL 440 | ret 441 | 442 | 443 | ; ===================================================== 444 | ; VSTUP: 445 | ; H = roh 446 | ; L = lokace 447 | ; VYSTUP: 448 | ; A = PODTYP_ITEM 449 | ; MENI: 450 | ; AF 451 | A_NAJDI_POLOZENY_PREDMET_HL: 452 | push HL 453 | push BC 454 | push DE 455 | 456 | call DEH_FIND_LAST_ITEM_HL 457 | ; H = TYP_ITEM + roh 458 | ex DE, HL 459 | dec HL ; PODTYP 460 | ld A, (HL) 461 | dec HL ; zamky + typ + roh 462 | ld B, (HL) 463 | dec HL ; lokace 464 | ld C, (HL) 465 | ex DE, HL 466 | 467 | sbc HL, BC 468 | jr z, NPP_EXIT 469 | xor A 470 | NPP_EXIT: 471 | pop DE 472 | pop BC 473 | pop HL 474 | ret 475 | 476 | 477 | 478 | ; ===================================================== 479 | VYKRESLI_AKTIVNI_PREDMET: 480 | call TEST_OTEVRENY_INVENTAR ; 481 | ret z ; u zavreneho nebudem vykreslovat presah 482 | 483 | 484 | ; predmety nahore strcim do poslednich 4 polozek inventare 485 | call DE_INVENTORY_ITEMS_AKTIVNI_B0 486 | push DE 487 | pop IX 488 | ; polozeny predmet na zemi 489 | ld HL, (LOCATION) ; 16:3 L=LOCATION, H=VECTOR=ROH VLEVO VZADU 490 | call A_NAJDI_POLOZENY_PREDMET_HL ; roh 0 (vlevo vzadu) 491 | ld (IX+INDEX_ZEM_LD_M1), A ; 19:3 28 492 | inc H 493 | call A_NAJDI_POLOZENY_PREDMET_HL ; roh 1 (vpravo vzadu) 494 | ld (IX+INDEX_ZEM_RD_M1), A ; 30 495 | call HL_VEPREDU ; 17:3 496 | dec H ; roh 3 (-1) 497 | call A_NAJDI_POLOZENY_PREDMET_HL ; roh vlevo vepredu na ctverci pred nama 498 | ld (IX+INDEX_ZEM_LU_M1), A ; 27 499 | dec H ; roh 2 (-2) 500 | call A_NAJDI_POLOZENY_PREDMET_HL ; roh vpravo vepredu na ctverci pred nama 501 | ld (IX+INDEX_ZEM_RU_M1), A ; 29 502 | 503 | ; vykreslim odzadu posledni 4 polozky inventare 504 | xor A 505 | push AF ; zarazka na zasobnik 506 | ; init VYKRESLI_ITEM_NA_POZICI_B 507 | ld B, MAX_INVENTORY ; 7:2 508 | VAP_LOOP: 509 | call VYKRESLI_ITEM_NA_POZICI_B 510 | dec B 511 | ld A, INDEX_PPRSTEN 512 | cp B 513 | jr nz, VAP_LOOP 514 | call KRESLI_ZE_ZASOBNIKU 515 | 516 | 517 | ld a, (PRESOUVANY_PREDMET) 518 | add a, a ; 2x 519 | ret z ; nic nedrzi 520 | 521 | add a, ITEM2SPRITE % 256 522 | ld l, a 523 | if ( ITEM2SPRITE / 256 != ITEM2SPRITE_END ) 524 | adc a, ITEM2SPRITE / 256 525 | sub l 526 | ld h, a 527 | ld e, (hl) 528 | inc hl 529 | else 530 | ld h, ITEM2SPRITE / 256 531 | ld e, (hl) 532 | inc l 533 | endif 534 | ld d, (hl) 535 | push de 536 | 537 | ld A, (KURZOR_V_INVENTARI) 538 | add A, A 539 | add A, POZICE_V_INVENTARI % 256 540 | ld L, A 541 | adc A, POZICE_V_INVENTARI / 256 542 | sub L 543 | ld H, A 544 | ld C, (HL) 545 | inc HL 546 | ld B, (HL) 547 | dec B ; posunem doleva 548 | ; C = xxxTT0TT 549 | ld A, C 550 | sub $20 551 | jr nc, VAP_V_TRETINE 552 | sbc A, $08 553 | VAP_V_TRETINE: 554 | ld C, A ; posunem nahoru 555 | 556 | ld de,I_bgm 557 | push bc 558 | call COPY_SPRITE2BUFFER 559 | 560 | pop bc 561 | pop de 562 | call COPY_SPRITE2BUFFER 563 | ret 564 | 565 | 566 | ; ===================================================== 567 | ; VSTUP: 568 | ; C = PODTYP_ITEM testovaneho predmetu ( 0 = povolen vzdy ) 569 | ; B = index testovane pozice 1..MAX_INVENTORY 570 | ; VYSTUP: 571 | ; zero = povoleno 572 | ; not zero = zakazano 573 | ; MENI: 574 | ; AF 575 | TEST_NEPOVOLENE_POZICE: 576 | ld A, B 577 | dec A ; 1+ -> 0+ 578 | 579 | cp INDEX_ZEM_LU_M1 580 | jr c, TNP_NOSENE 581 | ; pozice na zemi 582 | ; sude jsou vzdy povolene 583 | ; liche jen kdyz neni pred nama stena 584 | and $01 585 | ret z 586 | ; byla to suda pozice 587 | push HL 588 | call HL_VEPREDU 589 | ld H, DUNGEON_MAP / 256 ; 7:2 590 | bit BIT_NEPRUCHOZI, (HL) 591 | pop HL 592 | ret 593 | TNP_NOSENE: 594 | 595 | and $F0 ; cokoliv na mensi pozici je povoleno 596 | ret z ; vracim ZERO 597 | 598 | ld A, C 599 | or A 600 | ret z ; vracim ZERO 601 | 602 | POZICE_M1 equ POVOLENE_POZICE-1 603 | push HL 604 | add A, POZICE_M1 % 256 605 | ld L, A 606 | adc A, POZICE_M1 / 256 607 | sub L 608 | ld H, A 609 | 610 | ld A, B 611 | cp INDEX_PPRSTEN 612 | jr nz, TNP_NENI_PRSTEN 613 | ld A, INDEX_LPRSTEN ; tabulka ukazuje jen na levy prst 614 | TNP_NENI_PRSTEN: 615 | 616 | cp INDEX_PRUKA 617 | jr nz, TNP_NENI_RUKA 618 | ld A, INDEX_LRUKA ; tabulka obsahuje jen na levou ruku 619 | TNP_NENI_RUKA: 620 | 621 | cp (HL) ; jedina povolena pozice 622 | pop HL 623 | ret 624 | 625 | 626 | ; ===================================================== 627 | DE_POZICE_RUKOU_A: 628 | ; MENI: 629 | ; AF, DE, HL 630 | if ( POZICE_RUKOU / 256 ) != ( POZICE_RUKOU_END / 256 ) 631 | .error 'Seznam POZICE_RUKOU prekracuje 256 bajtovy segment!' 632 | endif 633 | ; push HL 634 | add A, A ; polozky jsou word 635 | add A, POZICE_RUKOU % 256 636 | ld L, A ; 637 | ld H, POZICE_RUKOU / 256 638 | ld E, (HL) 639 | inc L 640 | ld D, (HL) 641 | ; pop HL 642 | ret 643 | 644 | 645 | ; ===================================================== 646 | ; VSTUP: 647 | ; A = PODTYP predmetu 648 | ; B = cislo ruky od 0 649 | ; MENI: 650 | ; A, HL, DE 651 | ; VYSTUP: 652 | ; ulozi na zasobnik 4x word (pozice, pozadi, pozice, ruku/predmet) 653 | VYKRESLI_RUKU: 654 | 655 | pop HL ; vytahni navratovou adresu 656 | ld (VR_SELF+1), HL ; nastav "jp nn" na konci fce 657 | 658 | ld DE, I_empty ; obrazek prazdne dlane kdyz nic nedrzi 659 | add A, A ; v tabulce jsou 16 bit hodnoty 660 | jr z, VR_PRAZDNA 661 | 662 | add A, ITEM2SPRITE % 256 663 | ld L, A 664 | if ( ITEM2SPRITE / 256 != ITEM2SPRITE_END / 256 ) 665 | adc A, ITEM2SPRITE / 256 666 | sub L 667 | ld H, A 668 | ld E, (HL) 669 | inc HL 670 | else 671 | ld H, ITEM2SPRITE / 256 672 | ld E, (HL) 673 | inc L 674 | endif 675 | ld D, (HL) 676 | VR_PRAZDNA: 677 | push DE ; adresa ruky/predmetu 678 | 679 | ld A, B 680 | call DE_POZICE_RUKOU_A 681 | push DE ; XY pozice ruky 682 | 683 | ld HL, I_bg ; 684 | push HL ; prazdny podklad 685 | push DE ; XY pozice ruky 686 | 687 | VR_SELF: 688 | jp 0 ; self-modifying 689 | 690 | -------------------------------------------------------------------------------- /Source/objects.asm: -------------------------------------------------------------------------------- 1 | ; ===================================================== 2 | ; VSTUP: 3 | ; L = hledana lokace 4 | ; VYSTUP: 5 | ; DE = &(TABLE_OBJECTS[?].prepinace+typ) 6 | ; clear carry flag 7 | ; zero flag = nalezen ( A = L = offset lokace ) 8 | ; not zero flag = nenalezen ( A > L a je roven nasledujici nebo zarazce ) 9 | ; NEMENI: 10 | ; HL, BC 11 | DE_FIND_FIRST_OBJECT_L: 12 | ld DE, TABLE_OBJECTS-2 ; 10:3 DE = &(TABLE_OBJECTS[-1].prepinace+typ) 13 | ; VSTUP: 14 | ; DE = &(TABLE_OBJECTS[?].prepinace+typ) 15 | FFO_NEXT: 16 | inc DE ; 6:1 DE = &(TABLE_OBJECTS[?].dodatecny) 17 | ; VSTUP: 18 | ; DE = &(TABLE_OBJECTS[?].dodatecny) 19 | FIND_NEXT_OBJECT: 20 | inc DE ; 6:1 DE = &(TABLE_OBJECTS[?].lokace) 21 | ld A, (DE) ; 7:1 22 | inc DE ; 6:1 DE = &(TABLE_OBJECTS[?].prepinace+typ) 23 | cp L ; 4:1 "lokace predmetu" - "nase hledana lokace" 24 | jp c, FFO_NEXT ; 10:3 carry flag = zaporny = jsme pod lokaci 25 | ret ; 10:1 zero = nasli jsme lokaci, not zero = presli jsme ji, neni tam 26 | 27 | 28 | ; ===================================================== 29 | ; Prohleda seznam predmetu zda na dane pozici ( ulozene v registru "l" ) nelezi nepruchozi predmet ( = aspon jeden z hornich bajtu "typ" je nenulovy ) 30 | ; VSTUP: 31 | ; L = hledana lokace 32 | ; VYSTUP: 33 | ; carry = zablokovana ( nepruchozi ) 34 | ; MENI: 35 | ; DE, L, A 36 | JE_POZICE_BLOKOVANA_L: 37 | call DE_FIND_FIRST_OBJECT_L 38 | ret nz ;11/5:1 nenalezena 39 | 40 | JPB_NALEZEN_OBJECT: ; na lokaci lezi nejaky predmet 41 | ld A, (DE) ; 7:1 typ 42 | add A, MASKA_PREPINACE 43 | ret c ; blokovany? 44 | 45 | call FFO_NEXT ; hledej dalsi 46 | jr z, JPB_NALEZEN_OBJECT ; 10:1 nalezen dalsi objekt na lokaci 47 | ret 48 | 49 | 50 | ; ===================================================== 51 | ; VSTUP: 52 | ; H = hledany roh 53 | ; L = hledana lokace 54 | ; VYSTUP: 55 | ; DE = ukazuje na TABLE_OBJECTS[x].lokace v prvnim radku se shodnym nebo vyssim natocenim (= za poslednim s nizsim natocenim) nebo prvni predmet na vyssi lokaci 56 | ; carry = 0 57 | ; H = TYP_ITEM + C 58 | ; MENI: 59 | ; A, H, DE 60 | DEH_FIND_LAST_ITEM_HL: 61 | 62 | ld DE, TABLE_OBJECTS-2 63 | 64 | ld A, H 65 | and MASKA_NATOCENI ; osetreni preteceni 3->0 66 | inc A ; chceme posledni misto s danym natocenim, takze prvni s vyssim nebo pri rohu 3 dalsi lokaci 67 | ld H, A ; 4:1 1..4 68 | 69 | FLI_LOOP 70 | inc DE ; 6:1 de: "typ"->"dodatecny" 71 | inc DE ; 6:1 de: "dodatecny"->"lokace" 72 | ld A, (DE) ; 7:1 73 | inc DE ; 6:1 de: "lokace"->"typ" 74 | cp L ; 4:1 "lokace predmetu" - "nase hledana lokace" 75 | jr c, FLI_LOOP ; 10:3 carry flag = zaporny = jsme pod lokaci 76 | jr nz, FLI_EXIT ; jsme za polickem 77 | ld A, (DE) ; zamky + typ + natoceni 78 | and MASKA_NATOCENI ; 79 | cp H ; 80 | jr c,FLI_LOOP 81 | FLI_EXIT: 82 | dec DE ; prvni bajt radku, (de) = lokace "za" nebo zarazka, od teto pozice vcetne ulozime 3 byty a zbytek vcetne zarazky o 3 posunem. 83 | ld A, TYP_ITEM-1 ; TYP_ITEM - 1 84 | add A, H ; TYP_ITEM - 1 + natoceni + 1 85 | ld H, A ; TYP_ITEM + natoceni 86 | 87 | ret ; not carry 88 | 89 | ; ===================================================== 90 | ; VSTUP: 91 | ; A = PODTYP_ITEM 92 | ; L = lokace kam vkladam 93 | ; H = roh 94 | ; Je to komplikovanejsi fce nez sebrani, protoze musi najit to spravne misto kam to vlozit. 95 | ; Polozky jsou razeny podle lokace a nasledne podle natoceni (prepinace jsou ignorovany). 96 | ; Pak existuji polozky ktere maji dodatecne radky zacinajici nulou. 97 | VLOZ_ITEM_NA_POZICI: 98 | push AF ; ukladany predmet 99 | 100 | call DEH_FIND_LAST_ITEM_HL 101 | push HL ; uchovame TYP + NATOCENI a lokaci 102 | 103 | ld hl,(ADR_ZARAZKY) ; 16:3 104 | push hl 105 | sbc hl,de ; 15:2 carry = 0 diky DEH_FIND_LAST_ITEM_HL 106 | ld b,h ; 4:1 107 | ld c,l ; 4:1 o kolik bajtu 108 | inc bc ; pridame zarazku a odstranime problem kdy bc = 0 109 | pop hl 110 | ld d,h ; 4:1 111 | ld e,l ; 4:1 112 | inc hl 113 | inc hl 114 | inc hl 115 | ld (ADR_ZARAZKY),hl ; 16:3 116 | ex de,hl 117 | ; BC = velikost kopirovaneho bloku = 1 + ZARAZKA - DE ( pokud DE ukazuje na zarazku tak nepretecem ) 118 | ; HL = zdroj = ZARAZKA 119 | ; DE = cil = ZARAZKA + 3 120 | lddr ; "LD (DE),(HL)", DE--, HL--, BC-- 121 | 122 | pop BC ; TYP + NATOCENI a lokace 123 | pop AF ; ukladany predmet 124 | 125 | ex DE, HL 126 | ld (HL), A ; dodatecny 127 | dec HL 128 | ld (HL), B ; TYP + NATOCENI 129 | dec HL 130 | ld (HL), C ; lokace 131 | 132 | call ITEM_PUT_A 133 | 134 | xor A 135 | ld (PRESOUVANY_PREDMET), A ; 10:2 vyprazdnime misto kde byl drzeny predmet 136 | 137 | 138 | jp INVENTORY_WINDOW_KURZOR 139 | 140 | 141 | ; ===================================================== 142 | ; VSTUP: L = odkud beru 143 | ; H = (vector) 144 | VEZMI_ITEM_Z_POZICE: 145 | 146 | call DEH_FIND_LAST_ITEM_HL 147 | 148 | ex DE, HL 149 | dec HL ; MASKA_PODTYP 150 | ld A, (HL) ; presouvany predmet 151 | dec HL ; MASKA_TYP + MASKA_NATOCENI 152 | ld B, (HL) 153 | dec HL ; lokace 154 | ld C, (HL) 155 | 156 | ex DE, HL 157 | sbc HL, BC ; spravna lokace i spravny predmet s natocenim? 158 | ret nz ; nenalezen predmet na dane lokaci a rohu 159 | 160 | ld (PRESOUVANY_PREDMET), A 161 | 162 | 163 | ld HL, (ADR_ZARAZKY) ; 16:3 164 | sbc HL, DE ; carry = 0 165 | inc HL ; presunem i zarazku a vyresime preteceni pri BC = 0 166 | ld B, H 167 | ld C, L 168 | ld H, D 169 | ld L, E 170 | inc HL 171 | inc HL 172 | inc HL ; odkud brat 173 | ; BC = velikost kopirovaneho bloku = 1 + ZARAZKA - DE ( pokud DE ukazuje na zarazku tak nepretecem ) 174 | ; HL = zdroj = DE + 3 175 | ; DE = cil 176 | ldir 177 | 178 | dec de ; zrusime +1 z ldi 179 | ld (ADR_ZARAZKY),de ; 180 | 181 | jp INVENTORY_WINDOW_KURZOR 182 | ; ret 183 | 184 | 185 | ; ===================================================== 186 | ; fce hleda na lokaci L, objekt H a xoruje mu bity 187 | ; VSTUP: 188 | ; H "bity+typ+natoceni" 189 | ; L hledana lokace 190 | PREPNI_OBJECT: 191 | 192 | push de 193 | call DE_FIND_FIRST_OBJECT_L 194 | ; DE = &(TABLE_OBJECTS[?].prepinace+typ) 195 | jr nz, PO_EXIT 196 | 197 | PO_NALEZEN_OBJECT: 198 | ; na lokaci lezi nejaky predmet 199 | ld A, (DE) ; 7:1 typ 200 | xor H 201 | and MASKA_TYP 202 | jr nz, PO_NEXT_OBJECT ;12/7:2 neshoduje se typ 203 | 204 | 205 | if ( KONTROLUJ_NATOCENI_U_PREPINACU) 206 | ; pokud jsou to dvere ignoruji natoceni 207 | ld A, H 208 | and MASKA_TYP 209 | cp TYP_DVERE 210 | jr z, PO_FOUND 211 | 212 | ; jinak musi sedet i natoceni 213 | ld a,(de) ; 7:1 typ 214 | sub h 215 | and MASKA_NATOCENI 216 | jr nz,PO_NEXT_OBJECT ;12/7:2 ??? pokud je horni bit nastaven tak to bude blbnout? 217 | 218 | PO_FOUND: 219 | endif 220 | 221 | ; je to hledany predmet AKTUALIZOVAT 222 | ld a,h 223 | and MASKA_PREPINACE 224 | ex de,hl ; 4:1 225 | xor (hl) ; 7:1 xorujeme flagy v horni casti "typ" 226 | ld (hl),a ; 7:1 227 | ex de,hl ; 4:1 228 | 229 | PO_NEXT_OBJECT: 230 | call FFO_NEXT 231 | jr z,PO_NALEZEN_OBJECT 232 | 233 | PO_EXIT: 234 | pop de 235 | ret 236 | 237 | 238 | ; ===================================================== 239 | ; VSTUP: 240 | ; IX je zkoumana lokace 241 | ; BC je hloubka * 12 = radek v DOOR_TABLE/RAM_TABLE/... 242 | ; tzn B = 0 243 | ; MENI: 244 | ; mam povoleno menit A, HL, DE, BC 245 | FIND_OBJECT: 246 | 247 | inc ixl 248 | ret z ; !!!!! drobny bug .) $ff lokace nesmi byt totiz ani v dohledu 249 | dec ixl 250 | 251 | ld de,TABLE_OBJECTS-2 ; 10:3 "defb lokace, typ, dodatecny" 252 | FO_LOOP: 253 | inc de ; 6:1 de: "typ"->"dodatecny" 254 | FO_LOOP_DODATECNY: 255 | inc de ; 6:1 de: "dodatecny"->"lokace" 256 | ld a,(de) ; 7:1 257 | inc de ; 6:1 de: "lokace"->"typ" 258 | sub ixl ; 8:2 "lokace predmetu" - "nase hledana lokace" 259 | jr c,FO_LOOP ;12/7:2 carry flag? 260 | ret nz ;11/5:1 lezi na lokaci "hl"? 261 | 262 | ; na lokaci lezi nejaky predmet 263 | ld a,(de) ; 7:1 typ 264 | and MASKA_TYP ; 7:2 265 | 266 | if ( TYP_PREPINAC != 0 ) 267 | cp TYP_PREPINAC ; 7:2 268 | 269 | .warning 'Delsi kod, protoze TYP_PREPINAC != 0' 270 | else 271 | or a ; 4:1 272 | endif 273 | jr z,FOUND_PREPINAC ;12/7:2 274 | 275 | 276 | 277 | cp TYP_ENEMY ; 7:2 278 | jr z, FOUND_ENEMY ;12/7:2 279 | 280 | cp TYP_DVERE ; 7:2 281 | jp z, FOUND_RAM ;12/7:2 282 | 283 | cp TYP_ITEM ; 7:2 284 | jp z, FOUND_ITEM ;12/7:2 285 | 286 | cp TYP_DEKORACE ; musi byt posledni varianta 287 | jr nz, FO_LOOP 288 | 289 | inc de ; typ -> podtyp 290 | ld a, (de) 291 | and MASKA_PODTYP 292 | 293 | ld hl,RUNE_TABLE 294 | cp PODTYP_RUNA ; 7:2 295 | jr z,FOUND_DEKORACE ; 10:2 296 | 297 | ld hl,KANAL_TABLE 298 | 299 | ; ----------------------------------------------------- 300 | ; VSTUP: bc = index v tabulce 301 | ; adresa tabulky spravne dekorace 302 | ; de = ukazuje na podtyp/dodatecny!!! proto se vracim pomoci FO_LOOP_DODATECNY 303 | FOUND_DEKORACE: 304 | call ADD_BC_INIT_COPY_PATTERN2BUFFER_NOZEROFLAG 305 | jr FO_LOOP_DODATECNY ; return s de = dodatecny 306 | 307 | FO_EXIT: 308 | ret 309 | 310 | 311 | 312 | 313 | 314 | ; ===================================================== 315 | FOUND_PREPINAC: 316 | push bc 317 | 318 | ld a,(de) ; 7:1 "typ" 319 | and MASKA_NATOCENI ; 7:2 320 | 321 | ld hl,VECTOR ; 10:3 322 | ld l,(hl) ; 0 = N, 1 = E, 2 = S, 3 = W 323 | sub l ; pohledy musi sedet 324 | 325 | ld hl,PAKY_TABLE ; L uz nebudem potrebovat 326 | add hl,bc 327 | 328 | and 3 ; protoze nekdy potrebujeme aby sever byl 4 tak jsou validni jen posledni 2 bity 329 | ; pak 3-0 = -1 (000000-11) a 0-3 = 1 (111111-01) 330 | jr z,FD_PREPINAC_INIT ; z oci do oci 331 | 332 | ld bc,NEXT_PAKA 333 | add hl,BC ; leve paky 334 | cp 3 ; 3 = -1 ve 2 bitech 335 | jr z,FD_PREPINAC_INIT ; leva paka trci doprava ( kdybych byl natocen doleva tak se shoduji nase smery ) 336 | 337 | add hl,BC ; prave paky 338 | cp 1 ; 339 | jr nz,FD_PREPINAC_EXIT ; je tu moznost paky co je za stenou a trci ode mne a tu nevidim... 340 | 341 | ; zero flag = prava paka trci doleva ( kdybych byl natocen doprava tak se shoduji nase smery ) 342 | 343 | FD_PREPINAC_INIT: 344 | 345 | ld a,(de) ; "typ" 346 | or a 347 | jp p,FD_PREPINAC_VIEW ; kladne = paka je nahore 348 | 349 | ld bc,PAKA_DOWN 350 | add hl,bc 351 | 352 | FD_PREPINAC_VIEW: 353 | call INIT_COPY_PATTERN2BUFFER_NOZEROFLAG 354 | 355 | FD_PREPINAC_EXIT: 356 | pop bc 357 | jr FO_LOOP 358 | 359 | 360 | 361 | ; ===================================================== 362 | FOUND_ENEMY: 363 | push de 364 | push ix 365 | push bc 366 | 367 | ld a,ENEMY_ATTACK_DISTANCE ; 7:2 368 | cp c 369 | jr nz,FE_FAR 370 | ; vzdalenost 1, levy predni skret... 371 | ld a,(TIMER_ADR) ; timer 372 | and FLOP_BIT_ATTACK 373 | ld a,2 374 | jp z,FE_FAR 375 | ld a,1 376 | FE_FAR: 377 | ld (FE_SELFMODIFIYNG2+1),a 378 | 379 | 380 | ld a,(de) ; 7:1 typ 381 | and MASKA_PREPINACE ; 7:2 382 | rlca ; 4:1 383 | rlca ; 4:1 384 | rlca ; 4:1 385 | 386 | ld ixl,a ; pocet nepratel 387 | 388 | rlca ; 4:1 pocet nepratel ve skupine * 2 389 | add a,c ; 4:1 390 | add a,c ; 4:1 391 | add a,ENEMY_GROUP % 256 ; 7:2 392 | ld l,a ; 4:1 393 | adc a,ENEMY_GROUP / 256 ; 7:2 394 | sub l ; 4:1 395 | ld h,a ; 4:1 v hl je adresa kde je ulozena spravna pozice spritu s poslednim nepritelem 396 | ; [64]:[16] 397 | 398 | inc de ; dodatecny, na zasobniku je puvodni hodnota 399 | ld a,(de) ; 7:1 dodatecny 400 | ex de,hl 401 | 402 | ld hl,DIV_6 ; 10:3 403 | add hl,BC ; 11:1 404 | ld c,(hl) ; 7:1 z bc chceme jen hloubku * 2 = bc / ( 6 * 2 ) 405 | ld hl,ENEMY_TABLE+1 ; 10:3 406 | add hl,BC ; 11:1 HL je index+1 do tabulky adres spritu nepratel pro danou hloubku, nepritel je zatim jen prvni podtyp 407 | 408 | and MASKA_PODTYP ; 7:2 409 | jr z,FE_VIEW 410 | 411 | ld bc,NEXT_TYP_ENEMY ; uz nebudem potrebovat puvodni hodnotu, pak obnovime ze zasobniku 412 | FE_NEXT: 413 | add hl,BC ; 11:1 hledame sprite spravneho nepritele 414 | dec a ; snizime 415 | jr nz,FE_NEXT 416 | 417 | FE_VIEW: 418 | ld a,(hl) ; 7:1 segment 419 | or a ; 4:1 420 | jp z,FE_EXIT ; v teto hloubce nebude sprite na zadne pozici = exit 421 | 422 | dec hl ; 6:1 423 | ld l,(hl) ; 7:1 424 | ld h,a ; 4:1 425 | ld (FE_SELFMODIFIYNG+1),hl ; 16:3 426 | ex de,hl 427 | 428 | FE_LOOP: 429 | 430 | dec hl 431 | ld b, (hl) 432 | dec hl 433 | ld c, (hl) 434 | inc c ; ochranujem akumulator 435 | dec c 436 | jp z, FE_TEST_LOOP ; sirka muze byt nula, ale vyska nula znamena nekreslit 437 | 438 | FE_SELFMODIFIYNG: 439 | ld de, $0000 ; 10:3 adresa spritu nepritele ve spravne hloubce 440 | 441 | FE_SELFMODIFIYNG2: 442 | ld a, $00 443 | cp ixl 444 | jp nz, FE_CALL 445 | 446 | ld de, ESA1 447 | dec b ; X??-1 448 | ld c, Y03 ; Y03 449 | 450 | FE_CALL: 451 | push hl ; 11:1 452 | push ix ; 15:2 453 | call COPY_SPRITE2BUFFER 454 | pop ix ; 14:2 455 | pop hl ; 10:1 456 | 457 | FE_TEST_LOOP: 458 | dec ixl ; 8:2 459 | jr nz,FE_LOOP 460 | 461 | FE_EXIT: 462 | pop bc 463 | pop ix 464 | pop de 465 | jp FO_LOOP ; return 466 | 467 | 468 | ; ===================================================== 469 | ; VSTUP: 470 | ; H = (VECTOR) 471 | ; MENI: 472 | ; A, HL 473 | FOUND_DOOR: 474 | inc C 475 | dec C 476 | ret z 477 | 478 | ; vykreslim jen jedny dvere ze dvou co jsou v tabulce 479 | ld A, (DE) 480 | inc A 481 | inc A ; +2 482 | xor H 483 | and MASKA_NATOCENI 484 | ret nz 485 | 486 | ; vykresli ram 487 | ld hl,RAM_TABLE 488 | call ADD_BC_INIT_COPY_PATTERN2BUFFER_NOZEROFLAG 489 | 490 | ld A, (DE) 491 | add A, MASKA_PREPINACE ; nektere dvere jsou otevrene, AKTUALIZOVAT!!! 492 | ret nc ; 493 | 494 | ld hl,DOOR_TABLE 495 | call ADD_BC_INIT_COPY_PATTERN2BUFFER_NOZEROFLAG 496 | 497 | ret ; 498 | 499 | 500 | ; ===================================================== 501 | ; VSTUP: 502 | ; DE = @(TABLE_OBJECTS[?].prepinace+typ) 503 | ; IXl = TABLE_OBJECTS[?].lokace 504 | ; BC = 6*word*radek + 2*word*sloupec = offset v table, sloupec = {0..2} = {primy smer, vlevo, vpravo}, radek = hloubka 505 | FOUND_RAM: 506 | inc DE 507 | ld A, (DE) 508 | inc DE 509 | inc DE 510 | 511 | inc C 512 | dec C 513 | jr nz, FOUND_ITEM 514 | 515 | ld H, A 516 | ld A, (VECTOR) 517 | xor H 518 | and 1 519 | ld hl, RAM_TABLE 520 | call INIT_COPY_PATTERN2BUFFER 521 | 522 | ; ===================================================== 523 | ; VSTUP: 524 | ; DE = @(TABLE_OBJECTS[?].prepinace+typ) 525 | ; IXl = TABLE_OBJECTS[?].lokace 526 | ; B = 0 527 | ; C = 6*word*radek + 2*word*sloupec = offset v table, sloupec = {0..2} = {primy smer, vlevo, vpravo}, radek = hloubka 528 | ; VYSTUP: 529 | ; vraci se jen pokud je predmet prilis daleko aby byl videt, ale ne tak daleko aby se nevykreslovali dekorace atd. 530 | ; jinak vykresli predmety pokud jsou videt 531 | FOUND_ITEM: 532 | 533 | if (0) 534 | ld a,c 535 | cp MAX_VIDITELNOST_PREDMETU_PLUS_1 536 | jp nc, FO_LOOP ; return ( bohuzel tolikrat, kolikrat je predmetu na policku ) 537 | endif 538 | 539 | bit BIT_STENA, (IX+$00) ; 20:4 jsme v nepruhledne stene? Nebude videt ze tam neco je ani kdyz jsme uvnitr... 540 | ret nz 541 | 542 | push DE ; ulozime adresu prvniho predmetu pro pripad preteceni na zacatek 543 | 544 | ld A, (VECTOR) 545 | ld H, A ; 4:1 ulozime si smer pohledu 546 | 547 | ; Roh = index rohu ctverce ve kterem lezi predmet (narusta po smeru hodinovych rucicek pri pohledu shora) 548 | ; vektor = index natoceni pri pohledu danym smerem 549 | ; 550 | ; Pohled na Rohy od N = 0 E = 1 S = 2 W = 3 551 | ; 0 1 1 2 2 3 3 0 552 | ; 3 2 0 3 1 0 2 1 553 | ; 554 | ; Rohy-vektor rohy-N rohy-E rohy-S rohy-W 555 | ; 0 1 0 1 0 1 0 -3 556 | ; 3 2 -1 2 -1 -2 -1 -2 557 | 558 | ; Pokud by vsechny rohy obsahovaly aspon jeden predmet tak staci preskakovat dokud nenarazim rohy-smer = not carry. To je prvni predmet ktery je nejdal (NEJVZDALENEJSI). 559 | ; Pokud v levem zadnim rohu (= vektor) nic neni tak zacnu vykreslovat od nasledujiciho v seznamu, pokud ma index vyssi jak vektor. 560 | ; Pokud nema, tak pretecu na dalsi lokaci nebo zarazku a NEJVZDALENEJSI je prvni predmet na dane lokaci. 561 | 562 | FI_HLEDANI_NEJVZDALENEJSIHO: 563 | ld a,(de) ; 564 | and MASKA_NATOCENI ; roh 565 | cp H ; roh - vektor natoceni 566 | jr nc,FI_NEJVZDALENEJSI ; roh je ten nejvzdalenejsi? 567 | FI_DALSI_RADEK: 568 | ; prejdeme na dalsi predmet ( jsou razeny podle rohu ) 569 | inc de ; @(TABLE_OBJECTS[?].podtyp) 570 | inc de ; @(TABLE_OBJECTS[?].lokace) 571 | ld a,(de) ; lokace ( muzem vytect do jine lokace, pak to znamena ze musime kreslit od ITEM_ADR_POCATKU ) 572 | inc de ; @(TABLE_OBJECTS[?].prepinace+typ) 573 | 574 | ; je to poteba? Muze byt na stejne lokaci predmet a prepinac? 575 | or a 576 | jr z,FI_DALSI_RADEK ; preskakujeme dodatecne radky (lokace = 0) 577 | 578 | cp ixl 579 | jr z,FI_HLEDANI_NEJVZDALENEJSIHO ; neopustili jsme policko? 580 | 581 | ; preteceni na zacatek ( levy zadni neni obsazen a po smeru hodinovych rucicek jsme pretekli na index 0, ktery jsem ignorovali ) 582 | pop DE ; nacteme prvni 583 | push DE 584 | 585 | FI_NEJVZDALENEJSI: 586 | ld L, E ; ulozim si offset prvne vykresleneho predmetu, kvuli ukonceni az pretecem zase k nemu 587 | ; diky tomu ze polozky jsou po 3 tak bude shodny az po 256 predmetech na stejne lokaci 588 | ; pak vznikne chyba!!! 589 | FI_VYKRESLI_ITEM_LOOP: 590 | 591 | ; Rohy-vektor rohy-N rohy-E rohy-S rohy-W 592 | ; 0 1 0 1 0 1 0 -3 593 | ; 3 2 -1 2 -1 -2 -1 -2 594 | ; MASKA_NATOCENI &(Roh-vektor) 595 | ; 0 1 0 1 0 1 0 1 596 | ; 3 2 3 2 3 2 3 2 597 | 598 | 599 | push hl 600 | push de 601 | push ix 602 | push bc 603 | 604 | ld A, (DE) ; typ + roh 605 | and MASKA_TYP 606 | cp TYP_ITEM 607 | jr z, FI_ITEM 608 | 609 | cp TYP_DVERE 610 | call z, FOUND_DOOR 611 | 612 | jr FI_NEKRESLI 613 | 614 | FI_ITEM: 615 | 616 | ; nastaveni XY do BC 617 | ld A, (DE) ; zamky + typ + roh 618 | sub H 619 | and MASKA_NATOCENI 620 | add A, A ; 0, 2, 4, 6 = 2*(roh-natoceni) & $07 621 | 622 | ; nastaveni adresy spritu do DE 623 | ld HL, DIV_6 ; 10:3 624 | add HL, BC ; 11:1 625 | 626 | ; B uz nepotrebujeme 627 | ; nastaveni XY do BC 628 | ld B, A ; 2 * index rohu 629 | 630 | ; nastaveni adresy spritu do DE 631 | ld A, (HL) ; 7:1 A = 2 * hloubka = C / 6 632 | cp 6 ; hloubku 3+ vcetne ignorujeme 633 | jr nc, FI_NEKRESLI 634 | 635 | inc DE 636 | ld A, (DE) 637 | add A, A ; 2 * PODTYP 638 | add A, A ; 4 * PODTYP 639 | add A, A ; 8 * PODTYP (4 * word * PODTYP) = ofset radku 640 | add A, (HL) ; + ofset sloupce = + 2*hloubka 641 | add A, ITEM_TABLE % 256 642 | ld L, A 643 | adc A, ITEM_TABLE / 256 644 | sub L 645 | ld H, A ; hl = adresa, kde je ulozena adresa spritu daneho predmetu v ITEM_TABLE vcetne hloubky 646 | ld E, (HL) 647 | inc HL 648 | ld D, (HL) ; de = adr. spritu 649 | 650 | inc D 651 | dec D 652 | jr z,FI_NEKRESLI ; adresa je rovna nule, po dokonceni vsech nahledu snad nenastane... POZOR aktualizovat? 653 | 654 | ; nastaveni XY do BC 655 | ld A, C ; C = 12*radek, kvuli TYP_TABLE 656 | add A, A ; A = 24*radek, protoze ITEM_POZICE ma 24 bajtu na radek 657 | add A, B ; pridame spravny podsloupec {0,2,4,6} = 2*(VECTOR) 658 | add A, ITEM_POZICE % 256 ; 659 | ld L, A 660 | adc A, ITEM_POZICE / 256 661 | sub L 662 | ld H, A ; hl = adr. v ITEM_POZICE 663 | ld C, (HL) 664 | 665 | inc C 666 | dec C 667 | jr z, FI_NEKRESLI ; sirka muze byt nula, ale vyska nula znamena nekreslit 668 | 669 | ; nastaveni XY do BC 670 | inc HL 671 | ld B, (HL) 672 | 673 | call COPY_SPRITE2BUFFER 674 | 675 | 676 | FI_NEKRESLI: 677 | pop bc 678 | pop ix 679 | pop de 680 | pop hl 681 | 682 | inc de ; typ -> podtyp 683 | inc de ; podtyp -> lokace 684 | ld a,(de) 685 | inc de ; lokace -> podtyp 686 | cp ixl 687 | jr z,FI_TEST_ZACATKU_SELF ; jsme stale na spravne lokaci? 688 | ; POZOR udelat test zda je to predmet??? Kolidovat muze enemy a dvere. 689 | 690 | ; nejsme takze pretecem na zacatek 691 | pop DE ; vracime se na zacatek 692 | push DE 693 | 694 | FI_TEST_ZACATKU_SELF: 695 | ld A, L ; 696 | cp E 697 | 698 | ; Jediny exit s fce! 699 | jr nz, FI_VYKRESLI_ITEM_LOOP ; ret ne jp, takze ukonci i nadrazenou fci 700 | 701 | ;FI_EXIT 702 | pop DE 703 | ret 704 | 705 | --------------------------------------------------------------------------------