From 75d7d1fbbff92344539ef22c7ad0b8b571609e4e Mon Sep 17 00:00:00 2001 From: infval <38145742+infval@users.noreply.github.com> Date: Sun, 29 Apr 2018 15:50:59 +0300 Subject: [PATCH] Fix warnings --- collision.c | 8 +- defs.h | 2 +- game.c | 10 ++- game.h | 2 +- gamelogic.c | 24 +++--- gamelogic.h | 2 + gameover.c | 1 - history.txt | 242 ++++++++++++++++++++++++++-------------------------- main.c | 3 +- map.h | 1 + mutator.c | 4 - option.c | 4 - sprite.c | 25 ++++-- 13 files changed, 169 insertions(+), 159 deletions(-) diff --git a/collision.c b/collision.c index cb90b45..7548b2c 100644 --- a/collision.c +++ b/collision.c @@ -8,6 +8,8 @@ #include "resources.h" //#include "audio.h" +void tileReaction(_bullet* bull, s16* after_hit, u8* kill_bull, s16* x0, s16* y0, u8 xShift, u8 yShift); + u8 moveAvailableInUnits(_tank *tank) { @@ -268,18 +270,18 @@ void detectBulletToUnitsCollision(_bullet *bull) { s16 delta_y; _tank *player1 = &game_player[0]; _tank *player2 = &game_player[1]; - s16 gamer_bull_flag = 0; + //s16 gamer_bull_flag = 0; if ((config.en_friend_fire == KILL) || (config.en_friend_fire == BULLETS_STOP)){ i = 0; end = config.units_on_map; - gamer_bull_flag = 1; + //gamer_bull_flag = 1; } else { if (bull->maker == player1 || bull->maker == player2) { i = 0; end = config.units_on_map; - gamer_bull_flag = 1; + //gamer_bull_flag = 1; } } for (; i < end; i++) { diff --git a/defs.h b/defs.h index 2a3b417..97ec364 100644 --- a/defs.h +++ b/defs.h @@ -76,7 +76,7 @@ typedef struct { - u8* maps_data; + const u8* maps_data; u8 game_mode; u8 difficulty; u8 pl_friend_fire; diff --git a/game.c b/game.c index 2015e66..d5cf159 100644 --- a/game.c +++ b/game.c @@ -14,6 +14,8 @@ #include "defs.h" //#include "audio.h" #include "resources.h" +#include "option.h" +#include "mutator.h" @@ -36,7 +38,7 @@ void joyEventGame(u16 joy, u16 changed, u16 state); void vblankCB(); volatile u16 vb_counter = 0; void updateAudio(); -void sleepFrames(int i); +void soundPlayEngine(); void sleepFrames(int i){ int a; @@ -56,7 +58,10 @@ u8 kills_2[4]; u32 top_scor; u16 level_timer; - +// main.c +extern void battlecity_init(); +extern void tank1990_init(); +extern void mods_mode_init(); void setGameMode() { switch (config.game_mode) { @@ -121,7 +126,6 @@ void startGame() { void selectLevel() { - u16 i; u16 joy = 0; s16 stage_ctr = 0; u8 init_logic = 0; diff --git a/game.h b/game.h index 63be3a8..f163013 100644 --- a/game.h +++ b/game.h @@ -10,7 +10,7 @@ - +void sleepFrames(int i); void startGame(); extern s16 selected_stage; diff --git a/gamelogic.c b/gamelogic.c index 4be8f19..725de0a 100644 --- a/gamelogic.c +++ b/gamelogic.c @@ -606,9 +606,9 @@ void GLog_initGamer(u8 player_idx) { } victory_timer = 0; - if (config.debug & BONUS_GOD == BONUS_GOD) { + if ((config.debug & BONUS_GOD) == BONUS_GOD) { // game_player[player_idx].bonus = BONUS_GOD; - game_player[0].god = 1024*100; +// game_player[0].god = 1024*100; } } @@ -966,19 +966,19 @@ void setBonus(u8 player) { u16 i; switch (bonus.type) { - case BONUS_GOD://áåññìåðòèå type = 1; + case BONUS_GOD://беÑÑмертие type = 1; game_player[player].god = 1024; break; - case BONUS_TIME://âðåìÿ type = 2; + case BONUS_TIME://Ð²Ñ€ÐµÐ¼Ñ type = 2; if (player == 0 || player == 1) freeze = 1024; else freeze_players = 1024; break; - case BONUS_ARM_STAFF://ëîïàòà type = 3; + case BONUS_ARM_STAFF://лопата type = 3; if (player == 0 || player == 1) armor_staff = ARMOR_STAFF_TIME; else armor_staff = ARMOR_STAFF_TIME+1; break; - case BONUS_STAR://çâåçäà type = 4; + case BONUS_STAR://звезда type = 4; if ((player < 2 && !mods.pl_en_tank) || (player >= 2 && mods.en_pl_skin)) { game_player[player].type++; @@ -1017,15 +1017,15 @@ void setBonus(u8 player) { } else if(game_player[player].type == 7){ game_player[player].hitpoint += 2; - if(game_player[player].speed == TANK_SPEED_1)game_player[player].speed == TANK_SPEED_2; - else if(game_player[player].speed == TANK_SPEED_2)game_player[player].speed == TANK_SPEED_3; + if(game_player[player].speed == TANK_SPEED_1)game_player[player].speed = TANK_SPEED_2; + else if(game_player[player].speed == TANK_SPEED_2)game_player[player].speed = TANK_SPEED_3; if(game_player[player].bullet_limit == 1)game_player[player].bullet_limit = 2; if(game_player[player].bullet_speed == BULLET_SPEED_1)game_player[player].bullet_speed = BULLET_SPEED_2; } } break; - case BONUS_BOMB://áîìáà type = 5; + case BONUS_BOMB://бомба type = 5; if(player==0||player==1) for (i = 2; i < config.units_on_map; i++) { if (game_player[i].hitpoint) { @@ -1049,7 +1049,7 @@ void setBonus(u8 player) { } break; - case BONUS_LIFE://æèçíü type = 6; + case BONUS_LIFE://жизнь type = 6; if (player==0||player==1) { game_player[player].lives++; soundPlay(snd_live_got, sizeof (snd_live_got), SOUND_PCM_CH1, 0); @@ -1061,7 +1061,7 @@ void setBonus(u8 player) { } break; - case BONUS_GUN://ïèñòîëåò type = 7; + case BONUS_GUN://пиÑтолет type = 7; if(player==0||player==1){ game_player[player].type = 3; game_player[player].bullet_speed = BULLET_SPEED_2; @@ -1083,7 +1083,7 @@ void setBonus(u8 player) { } break; - case BONUS_SHIP://êîðàáëü type = 8; + case BONUS_SHIP://корабль type = 8; game_player[player].ship = 1; break; diff --git a/gamelogic.h b/gamelogic.h index dc08372..1d1acaf 100644 --- a/gamelogic.h +++ b/gamelogic.h @@ -103,7 +103,9 @@ void GLog_setVictory(); void GLog_removeEnemy(); extern u16 pause; +void setBonus(u8 player); void showScoreQuad(u16 val, u16 posx, u16 posy); +void soundPlay(const u8 *sample, const u32 len, const u16 channel, const u8 loop); extern _scor scor; diff --git a/gameover.c b/gameover.c index e53dc94..1734a55 100644 --- a/gameover.c +++ b/gameover.c @@ -78,7 +78,6 @@ void showScore() { score2[3] = 0; score2[4] = 0; - u16 i; u16 joy; u8 play_sound; diff --git a/history.txt b/history.txt index dc5c11a..457a6c8 100644 --- a/history.txt +++ b/history.txt @@ -1,139 +1,139 @@ -èäåè: - -âðàã àïãðåéäèòñÿ ñî âðåìåíåì - -ñìåíà óïðàâëåíèÿ ó èãðîêà (ñòðåëêè), ñìåíà êîíîïîê(èëè ñòðåëîê) ñòðåëüáû ìåæäó èãðîêàìè - -êèðïè÷è/áðîíÿ ìåíÿþòñÿ ñ áðîíåé âîäîé/êóñòàìè/ëåä ÷åðåç õõ ñåêóíä - -ïóëè âðàãà íåâîçìîæíî îòáèòü - -âðàã ñòðåëÿåò 2õ ïóëÿìè çàðàç - -ïåðåîäè÷åñêè âûêëþ÷àåòñÿ ñâåò - -âðàã òåëåïîðòèðóåòñÿ ñî âðåìåíåì - -áîíóñ â èãðîêå - -ïîðòàëû-òåëåïîðòû (ïðîèçâîëüíûå òî÷êè íà êàðòå ïåðåíîñÿò â äðóãóþ òî÷êó) - -áîíóñû åçäÿò ïî êàðòå - -èãðîê íå ìîæåò ðàçáèòü áðîíþ äàæå ïðîêà÷åííûé - -âðàã ëîìàåò 2 áëîêà çàðàç - -ñêîðîñòü èãðû óâåëè÷åíà â 2 ðàçà - -áîíóñû ïîÿâëÿþòñÿ ðÿäîì ñ âðàãîì - -âðàã âðàã âîçðàæäàåòñÿ â ïðîèçâîëüíîì ìåñòå - -âðàãà ìîæíî óáèíè÷òîæèòü òîëüêî âûñòðåëàìè èç îáîèõ òàíêîâ (òîëüêî íà äâîèõ) - -âðàãè áåñêîíå÷íû, íàéäè äâåðü äëÿ âûõîäà ñ óðîâíÿ - -âðàæåñêèé òàíê óíè÷òîæàåòñÿ òîëüêî òàðàíîì - -âðàæåñêèé òàíê óíè÷òîæàåòñÿ òîëüêî â ëîá, ðåêîøåòèò íàçàä ïóëÿ îò òîðöà - -íåêîòîðûå áîíóñû ôàëüøèâûå, íå áåðóòñÿ è ðàññòðåëèâàþòñÿ êàê êèðïè÷è - -íåêîòîðûå áîíóñû ôàëüøèâûå, òåëåïîðòèðóþò â ïðîèçâîëüíîå ìåñòî - -íåêîòîðûå áîíóñû ôàëüøèâûå, èìåþò îáðàòíûé ýôôåêò (êàê áóä òî âçÿë âðàã) - -íåêîòîðûå áîíóñû ôàëüøèâûå, ìåíÿþò òàéëû - -ïðè âçðûâå ìèãàþùåãî âðàãà, ïîÿâëÿåòñÿ íå áîíóñ, à áðîíåâèê â ïðîèçâîëüíîì ìåñòå - -ïðè âçðûâå ìèãàþùåãî âðàãà, èãðîêà ïîðòèðóåò â ïðîèçâîëüíîå ìåñòî - -èãðîê íà ìåñòå âðàãà, öåëü óíè÷òîæèòü îðëà(áðîíèðîâàí âîêðóã+10 ïîïàäàíèé), ëèáî âñå òàíêè - -íå âèäíî òàéëû íî îíè åñòü - -ïóëè èãðîêà ëåòÿò íå äîêîíöà ýêðàíà +идеи: + -враг апгрейдитÑÑ Ñо временем + -Ñмена ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñƒ игрока (Ñтрелки), Ñмена конопок(или Ñтрелок) Ñтрельбы между игроками + -кирпичи/Ð±Ñ€Ð¾Ð½Ñ Ð¼ÐµÐ½ÑÑŽÑ‚ÑÑ Ñ Ð±Ñ€Ð¾Ð½ÐµÐ¹ водой/куÑтами/лед через Ñ…Ñ… Ñекунд + -пули врага невозможно отбить + -враг ÑтрелÑет 2Ñ… пулÑми зараз + -переодичеÑки выключаетÑÑ Ñвет + -враг телепортируетÑÑ Ñо временем + -Ð±Ð¾Ð½ÑƒÑ Ð² игроке + -порталы-телепорты (произвольные точки на карте переноÑÑÑ‚ в другую точку) + -бонуÑÑ‹ ездÑÑ‚ по карте + -игрок не может разбить броню даже прокаченный + -враг ломает 2 блока зараз + -ÑкороÑть игры увеличена в 2 раза + -бонуÑÑ‹ поÑвлÑÑŽÑ‚ÑÑ Ñ€Ñдом Ñ Ð²Ñ€Ð°Ð³Ð¾Ð¼ + -враг враг возраждаетÑÑ Ð² произвольном меÑте + -врага можно убиничтожить только выÑтрелами из обоих танков (только на двоих) + -враги беÑконечны, найди дверь Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ñ ÑƒÑ€Ð¾Ð²Ð½Ñ + -вражеÑкий танк уничтожаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ тараном + -вражеÑкий танк уничтожаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в лоб, рекошетит назад Ð¿ÑƒÐ»Ñ Ð¾Ñ‚ торца + -некоторые бонуÑÑ‹ фальшивые, не берутÑÑ Ð¸ раÑÑтреливаютÑÑ ÐºÐ°Ðº кирпичи + -некоторые бонуÑÑ‹ фальшивые, телепортируют в произвольное меÑто + -некоторые бонуÑÑ‹ фальшивые, имеют обратный Ñффект (как буд то взÑл враг) + -некоторые бонуÑÑ‹ фальшивые, менÑÑŽÑ‚ тайлы + -при взрыве мигающего врага, поÑвлÑетÑÑ Ð½Ðµ бонуÑ, а броневик в произвольном меÑте + -при взрыве мигающего врага, игрока портирует в произвольное меÑто + -игрок на меÑте врага, цель уничтожить орла(бронирован вокруг+10 попаданий), либо вÑе танки + -не видно тайлы но они еÑть + -пули игрока летÑÑ‚ не доконца Ñкрана -äîáàâèòü: - -äîáàâëåíèå áîíóñà ïðè èãðå â äâîåì ïðè ïîäñ÷åòå î÷êîâ - -äîáàâèòü ïîêàç - -ðåæèìû ñëîæíîñòè (ñêîðîñòü ðåñïàóíà, êîë-âî íà êàðòå) +добавить: + -добавление бонуÑа при игре в двоем при подÑчете очков + -добавить показ + -режимы ÑложноÑти (ÑкороÑть реÑпауна, кол-во на карте) -èçâåñòíûå áàãè: - -îòðåãóëèðîâàòü ñêîðîñòü ñòðåëüáû â ðàçíûõ íàïðàâëåíèÿõ - -ðåäêèé áàã, 1 ïóëÿ ïðîáèâàåò 2 ñòåíêè çàðàç - -íå ñòðåëÿåòñÿ ïðè çàìîðîçêå - -çâóê ïîïàäàíèÿ êàê â êèðïè÷ ïðè ïîïàäàíèè â âåðòèêàëüíóþ áðîíþ (2 êóáèêà), ñíèçó è ñâåõó ñïðàâà (âîîáùå ãëþêè ñî çâóêîì) - -èíîãäà ïðîïàäàåò çâóê ñòàðòîâîé ìóçûêè - -íå ðàçðóøàåòñÿ îäèíî÷íàÿ ñòåíêà ó ïðàâîãî êðàÿ ïîëÿ - -óìåíüøèòü õèòáîêñ òàíêîâ - -ðåäêèé áàã ñî ñòðåëüáîé ó ïðîêà÷åííîãî òàíêà(çâóê åñòü íî ïóëÿ íå ëåòèò) - -Ðàçðûâ ñíàðÿäà ó áåëîé ñòåíû ñìåù¸í ñëåâà è ñâåðõó (ïåðâûé ñêðèíøîò, ïîéìàë îáå ñòîðîíû), ýòî êàñàåòñÿ è óçêèõ áëîêîâ. Íà äðóãèõ áëîêàõ íå çàìå÷àë, íóæíî ïðîâåðèòü. Ýòî ïîõîæå ñâÿçàíî ñ äðóãèõ áàãîì: íàåçäîì òàíêà íà ïðàâóþ è íèæíþþ ãðàíèöû ïîëÿ. - -Ñíàðÿä ïîÿâëÿåòñÿ ïîâåðõ òàíêà áëèæå ê öåíòðó (âòîðîé ñêðèíøîò).  îðèãèíàëå ñíàðÿäû ëåòÿò ïîâåðõ òàíêîâ, ýòî âèäíî ïî âðàãàì è ïîÿâëÿþòñÿ íàä ïóøêîé, íî íå òàê áëèçêî îò öåíòðà (ïðîâåðüòå ñàìè íà âñÿêèé ñëó÷àé). - - îðèãèíàëå àíèìàöèÿ âçðûâîâ ìåäëåííåå. - -Âçðûâû î ãðàíèöû ïîëÿ â îðèãèíàëå ïîÿâëÿþòñÿ ÷óòü äàëüøå è ýòî âàðüèðóåòñÿ (ñðàâíåíèå íà ïîñëåäíèõ äâóõ ñêðèíøîòàõ). Ýòî åñëè âû ñîáèðàåòåñü â òî÷íîñòè ïåðåíîñèòü. - -Game Over íà ïîëå äîëæíî ðèñîâàòüñÿ ïðèìåðíî íà 16 ïèêñåëåé âûøå. Êîëè÷åñòâî æèçíåé òàêæå ñìåùåíî. +извеÑтные баги: + -отрегулировать ÑкороÑть Ñтрельбы в разных направлениÑÑ… + -редкий баг, 1 Ð¿ÑƒÐ»Ñ Ð¿Ñ€Ð¾Ð±Ð¸Ð²Ð°ÐµÑ‚ 2 Ñтенки зараз + -не ÑтрелÑетÑÑ Ð¿Ñ€Ð¸ заморозке + -звук Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸Ñ ÐºÐ°Ðº в кирпич при попадании в вертикальную броню (2 кубика), Ñнизу и Ñвеху Ñправа (вообще глюки Ñо звуком) + -иногда пропадает звук Ñтартовой музыки + -не разрушаетÑÑ Ð¾Ð´Ð¸Ð½Ð¾Ñ‡Ð½Ð°Ñ Ñтенка у правого ÐºÑ€Ð°Ñ Ð¿Ð¾Ð»Ñ + -уменьшить Ñ…Ð¸Ñ‚Ð±Ð¾ÐºÑ Ñ‚Ð°Ð½ÐºÐ¾Ð² + -редкий баг Ñо Ñтрельбой у прокаченного танка(звук еÑть но Ð¿ÑƒÐ»Ñ Ð½Ðµ летит) + -Разрыв ÑнарÑда у белой Ñтены Ñмещён Ñлева и Ñверху (первый Ñкриншот, поймал обе Ñтороны), Ñто каÑаетÑÑ Ð¸ узких блоков. Ðа других блоках не замечал, нужно проверить. Это похоже ÑвÑзано Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… багом: наездом танка на правую и нижнюю границы полÑ. + -СнарÑд поÑвлÑетÑÑ Ð¿Ð¾Ð²ÐµÑ€Ñ… танка ближе к центру (второй Ñкриншот). Ð’ оригинале ÑнарÑды летÑÑ‚ поверх танков, Ñто видно по врагам и поÑвлÑÑŽÑ‚ÑÑ Ð½Ð°Ð´ пушкой, но не так близко от центра (проверьте Ñами на вÑÑкий Ñлучай). + -Ð’ оригинале Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð²Ð·Ñ€Ñ‹Ð²Ð¾Ð² медленнее. + -Взрывы о границы Ð¿Ð¾Ð»Ñ Ð² оригинале поÑвлÑÑŽÑ‚ÑÑ Ñ‡ÑƒÑ‚ÑŒ дальше и Ñто варьируетÑÑ (Ñравнение на поÑледних двух Ñкриншотах). Это еÑли вы ÑобираетеÑÑŒ в точноÑти переноÑить. + -Game Over на поле должно риÑоватьÑÑ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ð½Ð¾ на 16 пикÑелей выше. КоличеÑтво жизней также Ñмещено. -èñòîðèÿ: +иÑториÑ: -===== âåðñèÿ 1.08 ===== --äîáàâëåíû íîâûé ðåæèì èãðû - Mad Mode, àêòèâèðóþùèé ñëó÷àéíûì îáðàçîì ðàçëè÷íûå ìîäèôèêàòîðû, - âíîñÿùèå èçìåíåíèå â ìåõàíèêó èãðû (êîëè÷åñòâî àêòèâíûõ ìîäèôèêàòîðîâ óâåëè÷èâàåòñÿ êàæäûå 3 óðîâíÿ, ìàêñèìàëüíîå 6) --äîáàâëåíû ñëåäóþùèå ìîäèôèêàòîðû: - "enemy's armor increased" -áðîíÿ âðàãà óâåëè÷èâàåòñÿ - "enemy's speed increased" -ñêîðîñòü âðàãà âîçðàñòàåò - "enemy crushes concrete walls" -ñíàðÿäû âðàãà ïðîáèâàþò áåòîí - "enemy's shells speed increased" -ñêîðîñòü ñíàðÿäà âðàãà óâåëè÷èâàåòñÿ - "player's speed decrease" -èãðîê çàìåäëÿåòñÿ - "rubber concrete walls" -ñíàðÿäû ðèêîøåòÿò îò áåòîíà è ãðàíèöû ïîëÿ - "enemy goes through walls" -âðàã åçäèò ñêâîçü ñòåíû - "enemy's spawn speed increased" -âðàã ðåñïàóíèòñÿ áûñòðåå - "number of enemies increased" -êîëè÷åñòâî âðàãîâ õ2 - "player used enemy skin" -èãðîê åçäèò íà âðàæåñêèõ òàíêàõ - "enemy used player skin" -âðàãè åçäÿò íà òàíêàõ èãðîêà - "player kills player" -èãðîêè óáèâàþò äðóã äðóãà - "no bonuses" -íåò áîíóñîâ - "enemies on map increased" -êîëè÷åñòâî âðàãîâ íà êàðòå óâåëè÷åíî - "enemies start with shield" -âðàã ñòàðòóåò ñ ùèòîì - "player start without shield" -èãðîê ñòàðòóåò áåç ùèòà - "player is ass killer" -âðàãà âîçìîæíî óíè÷òîæèòü òîëüêî ñçàäè - "the enemy is invulnerable" -âðàãà âîçìîæíî óíè÷òîæèòü òîëüêî ãðàíàòîé --äîáàâëåíû ïðåäóñòàíîâëåííûå ðåæèìû: Battle City, Tank1990 è Custome Mode (áîëüøèíñòâî íàñòðîåê ïåðåíåñåíû èç îïöèé) --äîáàâëåíû â Custome Mode íàñòðîéêè: number of mods - êîëè÷åñòâî ìîäèôèêàòîðîâ íà ñòàðòå, - inc mods each lvl - ÷èñëî óðîâíåé, ÷åðåç êîòîðîå áóäåò âîçðàñòàòü êîëè÷åñòâî àêòèâíûõ ìîäèôèêàòîðîâ --äîáàâëåíî ñðåçàíèå êóñòîâ ñíàðÿäîì ïðè âçÿòèè ïèñòîëåòà (â ðåæèìå Tank1990) --èñïðàâëåíî êðèâîé ýôôåêò "øòîðêè" ïðè ñòàðòå óðîâíÿ --èñïðàâëåíî ìèãàíèå ýêðàíà ïðè ñòàðòå óðîâíÿ --èñïðàâëåíî íàäïèñü ïàóçà ðèñîâàëàñü ïîçàäè òàíêîâ --èñïðàâëåíî çâóê äâèãàòåëÿ èãðàë âî âðåìÿ ïàóçû --èñïðàâëåíî íå ñáðàñûâàëàñü çàìîðîçêà èãðîêà ïîñëå åãî óíè÷òîæåíèÿ --èñïðàâëåíî ïðè âçðûâå ïðîòèâíèêà ãðàíàòîé, âçÿâøåãî êàñêó, ñëåäóþùèé ïîÿâëÿëñÿ óæå ñ êàñêîé --èñïðàâëåíî ñíèæåíèå ñêîðîñòè áûñòðûõ òàíêîâ ïîñëå çàìîðîçêè ÷àñàìè --óäàëåíû ëèøíèå íàñòðîéêè â îïöèÿõ +===== верÑÐ¸Ñ 1.08 ===== +-добавлены новый режим игры - Mad Mode, активирующий Ñлучайным образом различные модификаторы, + вноÑÑщие изменение в механику игры (количеÑтво активных модификаторов увеличиваетÑÑ ÐºÐ°Ð¶Ð´Ñ‹Ðµ 3 уровнÑ, макÑимальное 6) +-добавлены Ñледующие модификаторы: + "enemy's armor increased" -Ð±Ñ€Ð¾Ð½Ñ Ð²Ñ€Ð°Ð³Ð° увеличиваетÑÑ + "enemy's speed increased" -ÑкороÑть врага возраÑтает + "enemy crushes concrete walls" -ÑнарÑды врага пробивают бетон + "enemy's shells speed increased" -ÑкороÑть ÑнарÑда врага увеличиваетÑÑ + "player's speed decrease" -игрок замедлÑетÑÑ + "rubber concrete walls" -ÑнарÑды рикошетÑÑ‚ от бетона и границы Ð¿Ð¾Ð»Ñ + "enemy goes through walls" -враг ездит Ñквозь Ñтены + "enemy's spawn speed increased" -враг реÑпаунитÑÑ Ð±Ñ‹Ñтрее + "number of enemies increased" -количеÑтво врагов Ñ…2 + "player used enemy skin" -игрок ездит на вражеÑких танках + "enemy used player skin" -враги ездÑÑ‚ на танках игрока + "player kills player" -игроки убивают друг друга + "no bonuses" -нет бонуÑов + "enemies on map increased" -количеÑтво врагов на карте увеличено + "enemies start with shield" -враг Ñтартует Ñ Ñ‰Ð¸Ñ‚Ð¾Ð¼ + "player start without shield" -игрок Ñтартует без щита + "player is ass killer" -врага возможно уничтожить только Ñзади + "the enemy is invulnerable" -врага возможно уничтожить только гранатой +-добавлены предуÑтановленные режимы: Battle City, Tank1990 и Custome Mode (большинÑтво наÑтроек перенеÑены из опций) +-добавлены в Custome Mode наÑтройки: number of mods - количеÑтво модификаторов на Ñтарте, + inc mods each lvl - чиÑло уровней, через которое будет возраÑтать количеÑтво активных модификаторов +-добавлено Ñрезание куÑтов ÑнарÑдом при взÑтии пиÑтолета (в режиме Tank1990) +-иÑправлено кривой Ñффект "шторки" при Ñтарте ÑƒÑ€Ð¾Ð²Ð½Ñ +-иÑправлено мигание Ñкрана при Ñтарте ÑƒÑ€Ð¾Ð²Ð½Ñ +-иÑправлено надпиÑÑŒ пауза риÑовалаÑÑŒ позади танков +-иÑправлено звук Ð´Ð²Ð¸Ð³Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð³Ñ€Ð°Ð» во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°ÑƒÐ·Ñ‹ +-иÑправлено не ÑбраÑывалаÑÑŒ заморозка игрока поÑле его ÑƒÐ½Ð¸Ñ‡Ñ‚Ð¾Ð¶ÐµÐ½Ð¸Ñ +-иÑправлено при взрыве противника гранатой, взÑвшего каÑку, Ñледующий поÑвлÑлÑÑ ÑƒÐ¶Ðµ Ñ ÐºÐ°Ñкой +-иÑправлено Ñнижение ÑкороÑти быÑтрых танков поÑле заморозки чаÑами +-удалены лишние наÑтройки в опциÑÑ… -===== âåðñèÿ 1.07b ===== --èñïðàâëåíî íåâîçìîæíîñòü ñòðåëüáû ó âòîðîãî èãðîêà --èñïðàâëåíî ïðîïàäàíèå áîíóñà êîðàáëÿ ó èãðîêà ïðè ñìåíå óðîâíÿ --èñïðàâëåíî îòñóòñâèå çâóêà ñêîëüæåíèÿ ïî ëüäó ó âòîðîãî èãðîêà --èñïðàâëåíî î÷êè íå ñóììèðîâàëèñü â êîíöå óðîâíÿ --èñïðàâëåíî îòâàë îïöèè ñáîðà áîíóñîâ âðàãîì +===== верÑÐ¸Ñ 1.07b ===== +-иÑправлено невозможноÑть Ñтрельбы у второго игрока +-иÑправлено пропадание бонуÑа ÐºÐ¾Ñ€Ð°Ð±Ð»Ñ Ñƒ игрока при Ñмене ÑƒÑ€Ð¾Ð²Ð½Ñ +-иÑправлено отÑутÑвие звука ÑÐºÐ¾Ð»ÑŒÐ¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ льду у второго игрока +-иÑправлено очки не ÑуммировалиÑÑŒ в конце ÑƒÑ€Ð¾Ð²Ð½Ñ +-иÑправлено отвал опции Ñбора бонуÑов врагом -===== âåðñèÿ 1.07 ===== --4õ êàíàëüíûé çâóê âìåñòî îäíîêàíàëüíîãî --óëó÷øåíî êà÷åñòâî ñýìïëîâ (ðàçìåð ðîìà óâåëè÷èëñÿ â 2 ðàçà) --äîáàâëåíû çâóêè ïîäñ÷åòà î÷êîâ, âçÿòèÿ æèçíè --äîáàâëåíû áîíóñû Ïèñòîëåò è Êîðàáëü èç Tank 1990(ñïàñèáî SPOT'ó çà êîä) è îïöèè ïî èõ îòêëþ÷åíèþ --èñïðàâëåí ïðèîðèòåò çâóêîâ --èñïðàâëåíî âðàãè ïîñëå âçðûâà îðëà îñòàíàâëèâàëèñü --èñïðàâëåíû ìåëêèå áàãè óïðàâëåíèÿ â ìåíþ îïöèé --óñòðàíåí áàã âîçìîæíîñòè íàåçäà íà ìàëåíüêèé êèðïè÷(îïÿòü ñïàñèáî SPOT'ó çà êîä) --äîáàâëåí ÷èò A+START ïðè çàõîäå â OPTIONS (äàåò âîçìîæíîñòü âûñòàâèòü 9 æèçíåé, ñòàðûé ÷èò íà 7 æèçíåé óáðàí) --äîáàâëåí ÷èò A+START ïðè çàõîäå â OPTIONS, çàòåì â èãðå ïîñòàâèòü ïàóçó, çàòåì A+START - ïðèìåíèòü ãðàíàòó, B+START - âçÿòü ïèñòîëåò, C+START - ïðîïóñòèòü óðîâåíü. +===== верÑÐ¸Ñ 1.07 ===== +-4Ñ… канальный звук вмеÑто одноканального +-улучшено качеÑтво ÑÑмплов (размер рома увеличилÑÑ Ð² 2 раза) +-добавлены звуки подÑчета очков, взÑÑ‚Ð¸Ñ Ð¶Ð¸Ð·Ð½Ð¸ +-добавлены бонуÑÑ‹ ПиÑтолет и Корабль из Tank 1990(ÑпаÑибо SPOT'у за код) и опции по их отключению +-иÑправлен приоритет звуков +-иÑправлено враги поÑле взрыва орла оÑтанавливалиÑÑŒ +-иÑправлены мелкие баги ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² меню опций +-уÑтранен баг возможноÑти наезда на маленький кирпич(опÑть ÑпаÑибо SPOT'у за код) +-добавлен чит A+START при заходе в OPTIONS (дает возможноÑть выÑтавить 9 жизней, Ñтарый чит на 7 жизней убран) +-добавлен чит A+START при заходе в OPTIONS, затем в игре поÑтавить паузу, затем A+START - применить гранату, B+START - взÑть пиÑтолет, C+START - пропуÑтить уровень. -===== âåðñèÿ 1.05à ===== --èñïðàâëåí íåâåðíûé ïîäñ÷åò î÷êîâ ïîñëå óðîâíÿ +===== верÑÐ¸Ñ 1.05а ===== +-иÑправлен неверный подÑчет очков поÑле ÑƒÑ€Ð¾Ð²Ð½Ñ -===== âåðñèÿ 1.05 ===== --óñòðàíåí áàã ñ ïðîïàäàíèåì êóðñîðà ïðè âûõîäå èç îïöèé --äîáàâëåíû óðîâíè èç TANK 1990 è îïöèè ïî èõ âûáîðó --äîáàâëåíà îïöèÿ âûáîðà êîëè÷åñòâà æèçíåé --äîáàâëåíà îïöèÿ âûáîðà ðåæèìà èãðû Battle City, Tank 1990 èëè Custom (åùå íå âñå ôè÷è Tank 1990 ðåàëèçîâàíû) --óäàëåí ïóíêò îïöèé îòêëþ÷åíèÿ "âûáîð óðîâíÿ" çà íåíàäîáíîñòüþ +===== верÑÐ¸Ñ 1.05 ===== +-уÑтранен баг Ñ Ð¿Ñ€Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸ÐµÐ¼ курÑора при выходе из опций +-добавлены уровни из TANK 1990 и опции по их выбору +-добавлена Ð¾Ð¿Ñ†Ð¸Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° количеÑтва жизней +-добавлена Ð¾Ð¿Ñ†Ð¸Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° режима игры Battle City, Tank 1990 или Custom (еще не вÑе фичи Tank 1990 реализованы) +-удален пункт опций Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ "выбор уровнÑ" за ненадобноÑтью -===== âåðñèÿ 1.04 ===== --äîáàâëåí ýôôåêò ðàñêðûòèÿ ýêðàíà ïðè ñòàðòå óðîâíÿ êàê â îðèãèíàëå --äîáàâëåíà àíèìàöèÿ íà÷èñëåíèå î÷êîâ ïîñëå óðîâíÿ êàê â îðèãèíàëå (ïîêà áåç çâóêà) --äîáàâëåíà îïöèÿ "òóðáî Â" --äîáàâëåíà îïöèÿ îòêëþ÷åíèÿ "âûáîð óðîâíÿ" --äîáàâëåíà îïöèÿ "èãðîê- îãîíü ïî ñâîèì" (4 âàðèàíòà: îòêë, áëîê, ïîãëîùåíèå ïóëü, óíè÷òîæåíèå) --äîáàâëåíà îïöèÿ "âðàãè- îãîíü ïî ñâîèì" (3 âàðèàíòà: îòêë, ïîãëîùåíèå ïóëü, óíè÷òîæåíèå) --äîáàâëåíà îïöèÿ "âðàã ñîáèðàòåëü" (çâåçäà ïðîêà÷èâàåò äî áðîíåâèêà ñ 8 õèòïîèíòàìè, æèçíü äîáàâëÿåò åùå 4 òàíêà, îñòàëüíîå èíâåðòíî) --äîáàâëåí ÷èò íà START+A, äàþùèé 7 æèçíåé âìåñòî òðåõ íà ñòàðòå --èñïðàâëåí çâóê ïðè âçÿòèè ãðàíàòû --èñïðàâëåíî î÷êè ïðè âçðûâå âðàãà è ïîäíÿòèÿ áîíóñà îòîáðàæàëèñü çà ñïðàéòîì òàíêà --èñïðàâëåíî áàã ñâåðõáûñòðîé ñòðåëüáû --èçìåíåíà âåðîÿòíîñòü âûïàäåíèÿ áîíóñîâ íà îðèãèíàëüíóþ (1/4 äëÿ çâåçäû è ãðàíàòû, 1/8 äëÿ îñòàëüíûõ) --âîçìîæíîñòü ïðîïóñêàòü ëîãîòèïû +===== верÑÐ¸Ñ 1.04 ===== +-добавлен Ñффект раÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñкрана при Ñтарте ÑƒÑ€Ð¾Ð²Ð½Ñ ÐºÐ°Ðº в оригинале +-добавлена Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð°Ñ‡Ð¸Ñление очков поÑле ÑƒÑ€Ð¾Ð²Ð½Ñ ÐºÐ°Ðº в оригинале (пока без звука) +-добавлена Ð¾Ð¿Ñ†Ð¸Ñ "турбо Ð’" +-добавлена Ð¾Ð¿Ñ†Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ "выбор уровнÑ" +-добавлена Ð¾Ð¿Ñ†Ð¸Ñ "игрок- огонь по Ñвоим" (4 варианта: откл, блок, поглощение пуль, уничтожение) +-добавлена Ð¾Ð¿Ñ†Ð¸Ñ "враги- огонь по Ñвоим" (3 варианта: откл, поглощение пуль, уничтожение) +-добавлена Ð¾Ð¿Ñ†Ð¸Ñ "враг Ñобиратель" (звезда прокачивает до броневика Ñ 8 хитпоинтами, жизнь добавлÑет еще 4 танка, оÑтальное инвертно) +-добавлен чит на START+A, дающий 7 жизней вмеÑто трех на Ñтарте +-иÑправлен звук при взÑтии гранаты +-иÑправлено очки при взрыве врага и поднÑÑ‚Ð¸Ñ Ð±Ð¾Ð½ÑƒÑа отображалиÑÑŒ за Ñпрайтом танка +-иÑправлено баг ÑверхбыÑтрой Ñтрельбы +-изменена вероÑтноÑть Ð²Ñ‹Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð±Ð¾Ð½ÑƒÑов на оригинальную (1/4 Ð´Ð»Ñ Ð·Ð²ÐµÐ·Ð´Ñ‹ и гранаты, 1/8 Ð´Ð»Ñ Ð¾Ñтальных) +-возможноÑть пропуÑкать логотипы diff --git a/main.c b/main.c index 545988f..939efa9 100644 --- a/main.c +++ b/main.c @@ -9,6 +9,7 @@ #include "sprite.h" #include "resources.h" #include "gamelogic.h" +#include "option.h" void init(); @@ -21,7 +22,7 @@ s8 do_scroll = TRUE; extern _mods mods; -int main(int argc, char** argv) { +int main() { init(); diff --git a/map.h b/map.h index 8055665..d7e78dc 100644 --- a/map.h +++ b/map.h @@ -38,6 +38,7 @@ extern u16 current_map[]; void setMap(VDPPlan plan, const u8 *map, u8 game_mode); void setMapEx(VDPPlan plan, const u8 *map, u8 game_mode, u8 fake); void setFakeMap(const u8 *map, u8 game_mode); +void setMapLevel(u8 lvl); void setFakeMapLevel(u8 lvl); void setMenuMap(); void setEmptyEditorMap(); diff --git a/mutator.c b/mutator.c index 5b31e3b..7fe436f 100644 --- a/mutator.c +++ b/mutator.c @@ -19,11 +19,7 @@ void showModText() { // u16 mods[MODS_COUNT]; u16 pos[] = {0, 0, 0, 0, 0, 0, 0}; u16 nums = 0; - u16 p; - s16 rnd = 0; - s16 old_rnd = 0; // char *txt[] = {"", "", "", "", "", "", "", "", "", ""}; - u8 i; // int16ToStr(rnd, txt, 10); diff --git a/option.c b/option.c index 3affd0d..24b23b1 100644 --- a/option.c +++ b/option.c @@ -47,8 +47,6 @@ void startOption() { opt_selected_item = -1; selector = 0; - u16 joy1; - VDP_resetSprites(); @@ -411,8 +409,6 @@ void customGameOption() { opt_selected_item = -1; selector = 0; - u16 joy1; - VDP_resetSprites(); diff --git a/sprite.c b/sprite.c index d4a7ea2..70dd650 100644 --- a/sprite.c +++ b/sprite.c @@ -26,32 +26,37 @@ void spriteInit() { void drawSprite2x2(u16 sprite_atr, s16 x, s16 y) { - VDP_setSpriteFull(sprite_counter++, x + MAP_PIXEL_X, y + MAP_PIXEL_Y, SPRITE_SIZE(2, 2), sprite_atr, sprite_counter+1); + VDP_setSpriteFull(sprite_counter, x + MAP_PIXEL_X, y + MAP_PIXEL_Y, SPRITE_SIZE(2, 2), sprite_atr, sprite_counter+1); + sprite_counter++; } void drawSprite8x8(u16 sprite_atr, s16 x, s16 y) { - VDP_setSpriteFull(sprite_counter++, x + MAP_PIXEL_X, y + MAP_PIXEL_Y, SPRITE_SIZE(8, 8), sprite_atr, sprite_counter+1); + VDP_setSpriteFull(sprite_counter, x + MAP_PIXEL_X, y + MAP_PIXEL_Y, SPRITE_SIZE(8, 8), sprite_atr, sprite_counter+1); + sprite_counter++; } void drawSprite1x2(u16 sprite_atr, s16 x, s16 y) { - VDP_setSpriteFull(sprite_counter++, x + MAP_PIXEL_X, y + MAP_PIXEL_Y, SPRITE_SIZE(1, 2), sprite_atr, sprite_counter+1); + VDP_setSpriteFull(sprite_counter, x + MAP_PIXEL_X, y + MAP_PIXEL_Y, SPRITE_SIZE(1, 2), sprite_atr, sprite_counter+1); + sprite_counter++; } void drawSprite4x1(u16 sprite_atr, s16 x, s16 y) { - VDP_setSpriteFull(sprite_counter++, x + MAP_PIXEL_X, y + MAP_PIXEL_Y, SPRITE_SIZE(4, 1), sprite_atr | TILE_ATTR(0, 1, 0, 0), sprite_counter+1); + VDP_setSpriteFull(sprite_counter, x + MAP_PIXEL_X, y + MAP_PIXEL_Y, SPRITE_SIZE(4, 1), sprite_atr | TILE_ATTR(0, 1, 0, 0), sprite_counter+1); + sprite_counter++; } void drawSpritePixel(u16 sprite_atr, s16 x, s16 y) { - VDP_setSpriteFull(sprite_counter++, x + MAP_PIXEL_X, y + MAP_PIXEL_Y, 0, sprite_atr, sprite_counter+1); + VDP_setSpriteFull(sprite_counter, x + MAP_PIXEL_X, y + MAP_PIXEL_Y, 0, sprite_atr, sprite_counter+1); + sprite_counter++; } @@ -60,13 +65,17 @@ void updateSprite() { ani_counter++; color_strobe++; - VDP_setSpriteFull(sprite_counter++, -8, -8, SPRITE_SIZE(1, 1), 0, sprite_counter+1); + VDP_setSpriteFull(sprite_counter, -8, -8, SPRITE_SIZE(1, 1), 0, sprite_counter+1); + sprite_counter++; if (sprite_counterspr_kl) spr_kl = sprite_counter; - u16 num_index = VDP_refreshHighestAllocatedSpriteIndex(); + VDP_refreshHighestAllocatedSpriteIndex(); VDP_updateSprites(sprite_counter, 1);