Важная информация

User Tag List

Страница 5 из 16 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 151

Тема: Ретро-ЯП Millfork для Atari, Apple II, ZX Spectrum, MSX, CP/M, NES, Game Boy и MS-DOS

  1. #41

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    131
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Ну шо, таки допилил Онимацию, теперь почти настоящий боудер получился



    Как обычно сырки:

    boulder.mfk:
    Код:
    import stdio
    
    
    import sprites
    
    
    array titleStr = "Boulder Dash ]["
    
    
    array(byte) heroSpr0a = [0,$24,$3c,$5a,$5a,$3c,$18,$3c,$42,$18,0,$18,0]
    array(byte) heroSpr0b = [0,$24,$3c,$7e,$5a,$3c,$18,$3c,$42,$18,0,$18,0]
    array(byte) heroSpr0c = [0,$24,$3c,$7e,$7e,$3c,$18,$3c,$42,$18,0,$18,0]
    array(byte) heroSpr1a = [0,$18,$42,$18,0,$18,0,0,$66,0]
    array(byte) heroSpr1b = [0,$18,$24,$18,0,$18,0,0,$66,0]
    array(byte) heroSpr1c = [0,$18,$24,$18,0,$18,0,$60,$06,0]
    array(byte) heroSpr2a = [0,$24,$24,$24,0]
    array(byte) heroSpr2b = [0,$24,$24,$04,0]
    
    
    array(pointer) aFrames0 = [
    	heroSpr0a, heroSpr0b, heroSpr0c,
    	heroSpr0a, heroSpr0b, heroSpr0c,
    	heroSpr0a, heroSpr0b, heroSpr0c,
    	heroSpr0a, heroSpr0a, heroSpr0a, heroSpr0a,
    	heroSpr0a, heroSpr0a, heroSpr0a, heroSpr0a,
    	heroSpr0a, heroSpr0a, heroSpr0a, heroSpr0a
    ]
    array(pointer) aFrames1 = [
    	heroSpr1a, heroSpr1a, heroSpr1a,
    	heroSpr1a, heroSpr1a, heroSpr1a,
    	heroSpr1a, heroSpr1a, heroSpr1a,
    	heroSpr1b, heroSpr1c, heroSpr1b, heroSpr1c,
    	heroSpr1b, heroSpr1c, heroSpr1b, heroSpr1c,
    	heroSpr1b, heroSpr1c, heroSpr1b, heroSpr1c
    ]
    array(pointer) aFrames2 = [
    	heroSpr2a, heroSpr2a, heroSpr2a,
    	heroSpr2a, heroSpr2a, heroSpr2a,
    	heroSpr2a, heroSpr2a, heroSpr2a,
    	heroSpr2a, heroSpr2b, heroSpr2a, heroSpr2b,
    	heroSpr2a, heroSpr2b, heroSpr2a, heroSpr2b,
    	heroSpr2a, heroSpr2b, heroSpr2a, heroSpr2b
    ]
    array(byte)    aTime  = [
    	150, 3,  3,
    	150, 3,  3,
    	150, 3,  3,
    	10,  10, 10, 10,
    	10,  10, 10, 10,
    	10,  10, 10, 10
    ]
    
    
    byte color0 = $56
    byte color1 = $0e
    byte color2 = $c6
    
    
    noinline asm void wait(byte register(a) f) {
      clc
      adc os_RTCLOK.b2
      .rt_check:
      cmp os_RTCLOK.b2
      bne .rt_check
      rts
    }
    
    
    void printAt(byte x, byte y, byte i) {
    	poke(84, y)
    	poke(85, x)
    
    
    	putword(i)
    	putstrz("   "z)
    }
    
    
    void main() {
    	byte pX
    	byte pY
    	byte joy
    
    
    	byte posFrame
    	byte curTime
    
    
    	word curFrame0
    	word curFrame1
    	word curFrame2
    	
    	sprInit()
    
    
    	putstr(titleStr , titleStr.length)
    	new_line()
    	putstrz("Use JoyStick, LOOK!"z)
    	new_line()
    
    
    	pX = 120
    	pY = 116
    	putstrz("PosX: "z)
    	putword(pX)
    	new_line()
            putstrz("PosY: "z)
    	putword(pY)
    	new_line()
    	joy = peek(632)
    	putstrz("JoyStick: "z)
    	putword(joy)
    
    
    	posFrame = 0
    	curTime = aTime[posFrame]
    	curFrame0 = aFrames0[posFrame]
    	curFrame1 = aFrames1[posFrame]
    	curFrame2 = aFrames2[posFrame]
    
    
    	sprShow(0, curFrame0, heroSpr0a.length, color0, pX, pY)
    	sprShow(1, curFrame1, heroSpr1a.length, color1, pX, pY+7)
    	sprShow(2, curFrame2, heroSpr2a.length, color2, pX, pY+11)
    
    
    	while (true) {
    		wait(1)
    		joy = peek(632)
    
    
    		if (joy == 11 || joy == 10 || joy == 9) {
    			pX -= 1
    		} else if (joy == 7 || joy == 6 || joy == 5) {
    			pX += 1
    		}
    		if (joy == 14 || joy == 10 || joy == 6) {
    			pY -= 1
    		} else if (joy == 13 || joy == 9 || joy == 5) {
    			pY += 1
    		}
    		if (joy != 15) {
    			sprShow(0, curFrame0, heroSpr0a.length, color0, pX, pY)
    			sprShow(1, curFrame1, heroSpr1a.length, color1, pX, pY+7)
    			sprShow(2, curFrame2, heroSpr2a.length, color2, pX, pY+11)
    			printAt(8, 2, pX)
    			printAt(8, 3, pY)
    			printAt(12, 4, joy)
    		} else {
    			printAt(12, 4, joy)
    		}
    
    
    		curTime -= 1
    		if (curTime == 0) {
    			posFrame += 1
    			if (posFrame == aTime.length) {
    				posFrame = 0
    			}
    			curTime = aTime[posFrame]
    			curFrame0 = aFrames0[posFrame]
    			curFrame1 = aFrames1[posFrame]
    			curFrame2 = aFrames2[posFrame]
    			
    			sprShow(0, curFrame0, heroSpr0a.length, color0, pX, pY)
    			sprShow(1, curFrame1, heroSpr1a.length, color1, pX, pY+7)
    			sprShow(2, curFrame2, heroSpr2a.length, color2, pX, pY+11)
                    }
    
    
    	}
    
    
    
    
    }
    блок спрайтов без изменений
    Вложения Вложения
    • Тип файла: zip anima.zip (3.3 Кб, Просмотров: 76)

    Эти 2 пользователя(ей) поблагодарили breeze за это полезное сообщение:

    andrews(26.10.2024), Oleg N. Cher(07.09.2024)

  2. #42

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    131
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я конечно знатно прифигел, пока разбирался со спрайтами на атари и как ими рулить. Но я честно не подозревал какая ещё большая Ж с «ракетами». Это какой-то ппц:

    Каждый спрайт имеет ширину 8 пикселей и всего 2 цвета (1 + прозрачный)
    есть 4 «нормальных» спрайта шириной 8 пикселей... и 4 спрайта ракет шириной всего 2(!) пикселя...
    но мы можем расположить их вместе, чтобы получить 5 спрайтов.
    В смысле 2 пикселя? o_O Нахрена оно мне такое надо это недопаделие?
    Я честно думал, что у меня будет 4 спрайта игроков и 4 спрайта противников (ракет) и сталкиваясь будет срабатывать коллизия.
    А тут получается всего 4 спрайта и какие-то 4 каличных пульки.

    Я в печали. Вообще тогда какой-либо смысл юзания спрайтов сваливается в 0. Смысл? Если даже сделать например 2 спрайта игрока и 2 спрайта противника, то как я понял коллизии между ними нет?
    @Shiny тебе слово.

  3. #43

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,454
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    120 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    А тут получается всего 4 спрайта и какие-то 4 каличных пульки.

    Я в печали. Вообще тогда какой-либо смысл юзания спрайтов сваливается в 0. Смысл? Если даже сделать например 2 спрайта игрока и 2 спрайта противника, то как я понял коллизии между ними нет?
    @Shiny тебе слово.
    Нормальные там пульки. Насчет столкновений не интересовался, но в Mapping есть описание по адресам $D000 и дальше.

    - - - Добавлено - - -

    Вот книга по pmg.

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

    breeze(07.09.2024)

  4. #44

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    131
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb

    Цитата Сообщение от Shiny Посмотреть сообщение
    Вот книга по pmg.
    О! ну хоть что-то стало понятнее. Спасибо буду копать.

    Collisions

    53248 - Missile 0 to playfield collision
    53249 - Missile 1 to playfield collision
    53250 - Missile 2 to playfield collision
    53251 - Missile 3 to playfield collision

    53256 - Missile 0 to player collision
    53257 - Missile 1 to player collision
    53258 - Missile 2 to player collision
    53259 - Missile 3 to player collision

    53260 - Player 0 to player collisions
    53261 - Player 1 to player collisions
    53262 - Player 2 to player collisions
    53263 - Player 3 to player collisions

    53252 - Player 0 to playfield
    53253 - Player 1 to playfield
    53254 - Player 2 to playfield
    53255 - Player 3 to playfield
    Осталось понять что есть «playfield»? Что-то типа тайлсета?

  5. #45

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,454
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    120 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Грубо говоря в GR.3 точки, поставленные цветом 1,2,3 это и есть playfield

    https://www.atariarchives.org/agagd/chapter1.php

  6. #46

    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,877
    Спасибо Благодарностей отдано 
    128
    Спасибо Благодарностей получено 
    131
    Поблагодарили
    81 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Если долго мучаться, что-нибудь получится
    В результате «мучений» родился AirWolf на минималках XD



    Player 0 и Player 1 это анимация вертолёта с лопостями

    Player2 - противник (в данном случае анимированный пульсирующий шарег)

    Если они сталкиваются то +1 к смерти и вертолёт кидает на середину экрана (в оригинале конечно же должен быть тыдыщь)

    Если нажать «огонь» на жопстике то вылетает 1 ракета (пока) и летил либо до края экрана, либо до противника.

    При столкновении начисляются очки, а противника рандомит по оси Y.

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

    - - - Добавлено - - -

    Цитата Сообщение от Shiny Посмотреть сообщение
    Грубо говоря в GR.3 точки, поставленные цветом 1,2,3 это и есть playfield

    https://www.atariarchives.org/agagd/chapter1.php
    Спасибо гляну, надо пейзаж уже рисовать
    Вложения Вложения

    Эти 2 пользователя(ей) поблагодарили breeze за это полезное сообщение:

    andrews(08.09.2024), Oleg N. Cher(08.09.2024)

  7. #46
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #47

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,454
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    120 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    Спасибо гляну, надо пейзаж уже рисовать
    Я просто нарисовал в Atari Tools для примера.

  9. #48

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,870
    Спасибо Благодарностей отдано 
    522
    Спасибо Благодарностей получено 
    251
    Поблагодарили
    225 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    надо пейзаж уже рисовать
    1)вертолет при движении вправо не разворачивается на экране. 2)Какая кнопка fire на клавиатуре в Altirra?
    Последний раз редактировалось andrews; 08.09.2024 в 09:03.

  10. #49

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,454
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    120 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andrews Посмотреть сообщение
    1)вертолет при движении вправо не разворачивается на экране. 2)Какая кнопка fire на клавиатуре в Altirra?
    вангую, что Ctrl

    - - - Добавлено - - -

    Вообще это годный пример, но было б неплохо добавить несколько снарядов, как в SuperCobra

  11. #50

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,870
    Спасибо Благодарностей отдано 
    522
    Спасибо Благодарностей получено 
    251
    Поблагодарили
    225 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну даже без фона вполне себе миниGame. Только пару-тройку звуков добавить( при попадании во врага и при гибели вертолетика и звук вращающихся лопастей). Как там с поддержкой звуков в этом софте? Хорошо бы конечно и чтобы "рожа" периодически отпулькивалась. Ну и текст сделать размером поменьше никак нельзя?

Страница 5 из 16 ПерваяПервая 123456789 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 11
    Последнее: 08.12.2023, 17:18
  2. Bad Apple для MSX/MSX2
    от Pyhesty в разделе MSX
    Ответов: 4
    Последнее: 31.05.2021, 21:45
  3. Перенос игр с Game Boy на ZX Spectrum
    от CityAceE в разделе Программирование
    Ответов: 104
    Последнее: 14.02.2019, 10:56
  4. Game Boy Advance
    от megabyte в разделе Nintendo
    Ответов: 8
    Последнее: 22.05.2006, 14:48
  5. Game Boy Advance в Питере.
    от Surfin_Bird в разделе Nintendo
    Ответов: 10
    Последнее: 21.08.2005, 09:50

Ваши права

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