diff --git a/data/Tupfile.lua b/data/Tupfile.lua index 7519c1a536..d3448815c0 100644 --- a/data/Tupfile.lua +++ b/data/Tupfile.lua @@ -246,6 +246,7 @@ extra_files = { {"kolibrios/res/skins/", "../skins/authors.txt"}, {"kolibrios/res/templates/", "common/templates/*"}, {"kolibrios/res/templates/", PROGS .. "/emulator/e80/trunk/games/*"}, + {"kolibrios/res/templates/NES", "common/templates/NES/*"}, {"kolibrios/res/wallpapers/", "common/wallpapers/*"}, } if build_type == "rus" then tup.append_table(extra_files, { diff --git a/data/common/templates/NES/AlterEgo.txt b/data/common/templates/NES/AlterEgo.txt new file mode 100644 index 0000000000..6d1c53dee0 --- /dev/null +++ b/data/common/templates/NES/AlterEgo.txt @@ -0,0 +1,61 @@ + ____ _ ___ ____ ____ + |__| | | |___ |__/ + | | |___ | |___ | \ + ____ ____ ____ + |___ | __ | | + |___ |__] |__| + + + Freeware 2011 by Shiru, Kulor, Denis Grachev + + +How to play: You control a hero who has a phantom twin, his alter ego. + When the hero moves, the alter ego moves too in a mirrored + fashion. In some levels the movements are mirrored + horizontally, in other ones they are mirrored vertically. + You can switch between the hero and his alter ego limited + number of times in a level. + To complete a level, you need to collect all the jumping + pixels. Usually you can take them only with the hero, but + on some levels there are pixels of another color, these + can only be collected by the alter ego. + There are evil skulls around, don't touch them and do not + fall into the water or outside of the level, or you'll lose + an attempt. At the start you have 5 attempts, and one extra + attempt is added after beating every 5 levels. You also can + restart a level using pause menu, it also takes an attempt. + There are 25 levels total in the game. + +Об игре: Игрок управляет героем, у которого есть призрачный двойник, + его второе "я". Двойник зеркально повторяет движения героя. + На некоторых уровнях движение двойника отражено по + горизонтали, на других - по вертикали. + Игрок может переключаться между героем и двойником + ограниченное число раз за один уровень. + Для прохождения уровня игрок должен собрать все + подпрыгивающие точки. Обычно их может брать только герой, + но на некоторых уровнях встречаются точки другого цвета, + которые может брать только двойник. + На уровнях присутствуют противники, злые черепа. Если + докоснуться до черепа, упасть в воду или за пределы уровня, + отнимается одна попытка. + В начале игры даётся пять попыток, каждые пять пройденных + уровней добавляется ещё одна. Любой уровень можно начать + заново через меню паузы, но это отнимает попытку. + Всего в игре 25 уровней. + +Credits: Original ZX Spectrum game, levels, design: Denis Grachev + NES code, graphics, sounds, redesign: Shiru + NES original music: Richard "Kulor" Armijo + Testing: Alone Coder, Pinball Wizzard, James Lothridge + +Website: www.shiru.untergrund.net + +The game is not licensed or endorsed by Nintendo company in any way. It is free +of charge, released into Public Domain, and provided "as is", without warranty +or responsibility of any kind. + +If you like it and think you would pay for it, please consider to visit Donate +link at http://shiru.untergrund.net and make a donation. Donations will be +redirected to a charity, providing a little bit of help for those in need, and +encourangement for the author to further work on projects like this. \ No newline at end of file diff --git a/data/common/templates/NES/Alter_Ego.nes b/data/common/templates/NES/Alter_Ego.nes new file mode 100644 index 0000000000..ba3c13f367 Binary files /dev/null and b/data/common/templates/NES/Alter_Ego.nes differ diff --git a/data/common/templates/NES/Chase.nes b/data/common/templates/NES/Chase.nes new file mode 100644 index 0000000000..eb7c0dc1d9 Binary files /dev/null and b/data/common/templates/NES/Chase.nes differ diff --git a/data/common/templates/NES/Chase.txt b/data/common/templates/NES/Chase.txt new file mode 100644 index 0000000000..1efe143cd1 --- /dev/null +++ b/data/common/templates/NES/Chase.txt @@ -0,0 +1,8 @@ +This is an example game that is developed for my article Programming NES games in C. The article itself is located at my website in the Articles section, to make things simpler in case of possible updates. + +Programming NES Article: +http://shiru.untergrund.net/articles/programming_nes_games_in_c.htm + + +http://shiru.untergrund.net +mailto:shiru@mail.ru \ No newline at end of file diff --git a/data/common/templates/NES/LanMaster.nes b/data/common/templates/NES/LanMaster.nes new file mode 100644 index 0000000000..15dd5ef1b4 Binary files /dev/null and b/data/common/templates/NES/LanMaster.nes differ diff --git a/data/common/templates/NES/LanMaster.txt b/data/common/templates/NES/LanMaster.txt new file mode 100644 index 0000000000..f4935f5776 --- /dev/null +++ b/data/common/templates/NES/LanMaster.txt @@ -0,0 +1,54 @@ + _______ __ _ + | |_____| | \ | + |_____ | | | \_| + _______ _______ _______ _______ _______ ______ + | | | |_____| |______ | |______ |_____/ + | | | | | ______| | |______ | \_ + + + PD 2011 Shiru + +How to play: On every level you have a set of computers and fragments + of wires. Your goal is to connect together all the computers + on a level. To do this, you should rotate wire fragments or + the computers themselves using A, B or Select buttons. Time + is limited. If you haven't made it in time, the game is over, + and you have to use pass code to try again. + Final levels of the game has more complex networks, more wire + types, unused wire segments, and the network starts to + degradate over the time. There are 50 levels in the game. + After completing a level, you receive a pass code, also + displayed in the pause menu. You can enter it in the main menu + using Code item to resume play later. It is also entered + automatically every new level, so you can easily continue + game when the game is over or interrupted. + +Об игре: На каждом уровне игры присутствует несколько компьютеров и + отрезков провода. Задачей игрока является соединение всех + компьютеров. Это делается путём отрезков провода и самих + компьютеров кнопками A, B и Select. На прохождение уровня + отводится ограниченное время. Когда оно кончается, игра + заканчивается проигрышем. Для повторной попытки может быть + использован ранее полученный код уровня. + На дальнейших уровнях игры сеть проводов усложняется, + появляются новые типы проводов и их неиспользуемые фрагменты, + а сеть начинает постепенно ломаться. В игре 50 уровней. + После прохождения уровня выдаётся код, также отображаемый в + меню паузы. Этот код может быть введён в главном меню для + продолжения игры с нужного уровня. Он также автоматически + вводится после достижения каждого нового уровня, что позволяет + легко продолжить игру после проигрыша или выхода в главное меню. + +Credits: Everything made by Shiru + Tested by Alone Coder, B00daW, Pinball Wizzard, MrFTBN + +Website: www.shiru.untergrund.net + +The game is not licensed or endorsed by Nintendo company in any way. It is free +of charge, released into Public Domain, and provided "as is", without warranty +or responsibility of any kind. + +If you like it and think you would pay for it, please consider to visit Donate +link at http://shiru.untergrund.net and make a donation. Donations will be +redirected to a charity, providing a little bit of help for those in need, and +encourangement for the author to further work on projects like this. \ No newline at end of file diff --git a/data/common/templates/NES/LawnMower.nes b/data/common/templates/NES/LawnMower.nes new file mode 100644 index 0000000000..713a02ce58 Binary files /dev/null and b/data/common/templates/NES/LawnMower.nes differ diff --git a/data/common/templates/NES/LawnMower.txt b/data/common/templates/NES/LawnMower.txt new file mode 100644 index 0000000000..5357853dce --- /dev/null +++ b/data/common/templates/NES/LawnMower.txt @@ -0,0 +1,44 @@ + _ ___ ___ _ + | | /_\ \ / / \| | + | |__ / _ \ \/\/ /| .` | + |____/_/ \_\_/\_/_|_|\_|_ + | \/ |/ _ \ \ / / __| _ \ + | |\/| | (_) \ V /| _|| / + |_| |_|\___/ \_/ |___|_|_\ + + PD 2011 Shiru + +Description: An arcade game, you control a lawn mower and cut lawns + A sort of remake of classic lawn mower game (from 1980s) + +How to play: You control a lawn mower. The goal of the game is to cut + ten lawns. The lawn mower always moves with low speed, you + can increase the speed by holding A or B button. + Amount of fuel is limited. When the fuel runs out, the game + is over, and you have to play the level again. + Sometimes a can appears on the cut lawn. If you touch it, + it refills fuel. Further in the game there are flowers and + stones on lawns, moving through them reduces amount of fuel. + +Об игре: Игрок управляет газонокосилкой и должен постричь десять + газонов. Косилка постоянно движется с небольшой скоростью и + может двигаться быстрее при удержании кнопок A или B. + Косилка имеет ограниченный запас топлива. Когда оно + израсходовано, игра заканчивается и уровень нужно проходить + заново. Иногда на постриженном газоне появляется канистра, + пополняющая запас топлива при касании. Далее в игре появляются + цветы и камни, движение по ним отнимает много топлива. + +Credits: Everything made by Shiru + Tested by Alone Coder, B00daW, Pinball Wizzard, MrFTBN + +Website: www.shiru.untergrund.net + +The game is not licensed or endorsed by Nintendo company in any way. It is free +of charge, released into Public Domain, and provided "as is", without warranty +or responsibility of any kind. + +If you like it and think you would pay for it, please consider to visit Donate +link at http://shiru.untergrund.net and make a donation. Donations will be +redirected to a charity, providing a little bit of help for those in need, and +encourangement for the author to further work on projects like this. \ No newline at end of file diff --git a/programs/emulator/fceu/FCEU_v0.2_src.7z b/programs/emulator/fceu/FCEU_v0.2_src.7z index 6e45139db3..873ecd6608 100644 Binary files a/programs/emulator/fceu/FCEU_v0.2_src.7z and b/programs/emulator/fceu/FCEU_v0.2_src.7z differ diff --git a/programs/emulator/fceu/History.txt b/programs/emulator/fceu/History.txt index 3a9c6b46be..412cca977b 100644 --- a/programs/emulator/fceu/History.txt +++ b/programs/emulator/fceu/History.txt @@ -31,3 +31,6 @@ - ёь. Їрщы "ChangeLog.txt" ўЄюс√ | - see file "ChangeLog.txt" for full list of changes яЁюёьюЄЁхЄ№ тхё№ ёяшёюъ шчьхэхэшщ | +27.04.19 == Port v0.21 == ╫хЁхч HEX ЁхфръЄюЁ +- шёяЁртыхэ яєЄ№ фы  ёюїЁрэхэшщ +- єтхышўхэр °шЁшэр юъэр эр 1 яшъёхы№ \ No newline at end of file diff --git a/programs/emulator/fceu/fceu b/programs/emulator/fceu/fceu index 5f19302803..13474f5878 100644 Binary files a/programs/emulator/fceu/fceu and b/programs/emulator/fceu/fceu differ diff --git a/programs/network/sntp/readme_ru.txt b/programs/network/sntp/readme_ru.txt index 4d996e7e6a..d23b5483cc 100644 --- a/programs/network/sntp/readme_ru.txt +++ b/programs/network/sntp/readme_ru.txt @@ -17,9 +17,18 @@ sntp 88.147.254.227 -tz 3 -ss ╚чтхёЄэ√х яЁюсыхь√: - ╧юър эх чрьхўхэ√ + ╧юър эх чрьхўхэ√. + +╬сЁрЄэр  ёт ч№: + ╬с ю°шсърї ш яюцхырэш ї ёююс∙рщЄх т Єюяшъх http://board.kolibrios.org/viewtopic.php?f=40&t=3864 ╚ёЄюЁш  тхЁёшщ: +0.5.4 ++ ╚ёяЁртыхэ√ ю°шсъш юЄюсЁрцхэш  ш фюЁрсюЄрэр ёшэїЁюэшчрЎш  ё ъы■ўюь -ss (эрщфхэю Leency) ++ ╚ёяЁртыхэю: эх яюърч√трхЄё  юъэю (ётхЁэєЄю т ярэхы№ чрфрў) яЁш ъюьрэфэющ ёЄЁюъх host -s[t|s], + яЁюсыхьр эх яЁю ты хЄё , хёыш фюсртшЄ№ ъы■ў -tz шыш схч ъы■ўхщ. ++ ╚ёяЁртыхэю: ╧Ёш ъы■ўх -tz 0 ёююс∙хэшх ю ёшэїЁюэшчрЎшш эх яхЁхэюёшЄё  эр эютє■ ёЄЁюъє. + 0.5.3 + ╚ёяЁртыхэр ю°шсър ъюэтхЁЄрЎшш тЁхьхэш, т ўрёЄэюёЄш, яЁюсыхьр яю ты ырё№ яЁш timestamp = 0x7fffffff + ─юЁрсюЄрэр ъюЁЁхъЄшЁютър ё єўхЄюь ўрёютюую яю ёр diff --git a/programs/network/sntp/sntp.asm b/programs/network/sntp/sntp.asm index 7fce62394f..75ff89ea62 100644 --- a/programs/network/sntp/sntp.asm +++ b/programs/network/sntp/sntp.asm @@ -61,10 +61,9 @@ START: ; fatal error(console error) ;jnz exit - ; setup params call parse_params - + ;clear eax call tz_validate ; is TZ correct? cmp ebx,0 @@ -189,6 +188,9 @@ START: jne @f cmp [tz_m],0 jne @f + mov eax, str_tz + add eax, 9 + cinvoke con_printf, eax ; \n\0 jmp .no_bias @@: @@ -212,24 +214,23 @@ START: cinvoke con_printf, str_tz, eax, ebx .no_bias: - cmp [sync],0 je exit cmp [sync], SYNC_S jne @f mov eax, str_s jmp .sync_ok - @@: +@@: cmp [sync], SYNC_ST jne @f mov eax, str_st jmp .sync_ok @@: - cmp [sync], SYNC_ST - jne .sync_ok + cmp [sync], SYNC_SS + jne exit ; Fixed (24.04.2019): incorrect display with -ss mov eax, str_ss - .sync_ok: +.sync_ok: cinvoke con_printf, str_sync, eax jmp exit @@ -315,7 +316,8 @@ SYNC_ST = 3 parse_params: mov esi, params - mov ebx, esi + mov ebx, esi + clear ecx ; 26.04.2018 Fixed .f00: lodsb cmp al, 0 @@ -329,6 +331,8 @@ parse_params: ret .exit: + cmp ecx,0 ; 26.04.2018 Fixed + je @f ; mark end of TZ mov byte [ecx+1], 0 ; now esi = start of TZ @@ -393,6 +397,7 @@ parse_params: ; jz .invalid ; mov [port], bx ; jmp .param_loop +jmp .invalid .tz: ; tz setup @@ -443,6 +448,7 @@ parse_params: .invalid: mov eax, 10 ret + ; Helper to convert char to number ; Input: @@ -498,7 +504,7 @@ c2n: ; Sync worker ; Input: -; eax - in_addr (IPv4) +; setuped sockaddr1 ; Output: ; eax - error_code ; ebx - error_string @@ -510,8 +516,22 @@ c2n: ;mov edx, eax sntp_query_time: -; jmp .test - + ; if -ss & 59:59 => waiting for new hour + cmp [sync], SYNC_SS + jne @f +.new_hour?: + ; Query system time + mcall 3 + cmp ah, 59h ; 59 min. ? + jne @f + shr eax, 16 + cmp al, 59h ; 59 sec. ? + jne @f + ;DEBUGF 1, "SNTP: Waiting for new hour.\n" + ; Wait 100 msec. + mcall 5,10 + jmp .new_hour? +@@: ; Create socket mcall socket, AF_INET4, SOCK_DGRAM, IPPROTO_IP cmp eax, -1 @@ -533,11 +553,7 @@ sntp_query_time: jmp .error ; Connection error (2) ;DEBUGF 1, "Socket connected.\n" -@@: - ; Query system time - ;mcall 3 - ;mov [SystemTime], eax - +@@: mcall send, ebp, sntp_packet, SIZEOF_SNTP_PACKET, 0 cmp eax, -1 jne @f @@ -636,9 +652,9 @@ sntp_query_time: @@: .tz_h: ; correct hour - cmp [sync], SYNC_SS +; cmp [sync], SYNC_SS ; if -ss ignore timezone for hour - je .tz_done +; je .tz_done clear eax mov al, [tz_h] add al, cl @@ -681,7 +697,6 @@ sntp_query_time: ; FIXED: do sync before display!!! ; It's need to do sync fast ASAP ; Take out any printf from sntp_query_time! - ; sync > 0 ? cmp [sync], 0 je .nosync @@ -691,6 +706,8 @@ sntp_query_time: ; FIXME: Go it from sntp_query_time! ;}} + + ; Convert time to BCD clear eax, edx mov al, [esi + DateTime.sec] @@ -698,10 +715,19 @@ sntp_query_time: mov ecx, eax shl ecx, 16 mov al, [esi + DateTime.min] - b2bcd - mov ch, al + b2bcd + mov ch, al + + cmp [sync], SYNC_SS + jne @f + ; if -ss ignore timezone for hour + ; Query system time + mcall 3 + jmp .ss_done +@@: mov al, [esi + DateTime.hour] b2bcd +.ss_done: mov cl, al ; Display BCD time @@ -815,7 +841,7 @@ str_port db ' :%i',10,0 str_dt db 'Date & time: %i.%02i.%02i %i:%02i:%02i GMT',0 ; ' UTC %%i:%02i' str_tz db ' +%i:%02i',10,0 ;Time zone: GMT +%i:%02i ;str_d db 'BCD date - 0x%08X',10,0 -;str_t db 'BCD time - 0x%08X',10,0 +;str_t db 'BCD time - 0x%08X',10,0 str_err db 'Error: #%i, %s => %s',0 str_err10 db 'Bad command line, type ',39,'sntp',39,' for help.',10,0 str_err11 db 'Incorrect time zone! Visit https://www.timeanddate.com/time/map for details.',10,0 @@ -851,7 +877,7 @@ sockaddr1: rb 10 SIZEOF_SNTP_PACKET = 48 -sntp_packet db 0x23 ; Li = 0 Vn = 4 Mode = 3 (client) FIX: Why 0x0b? +sntp_packet db 0x23 ; Li = 0 Vn = 4 Mode = 3 (client) .Stratum db 0 .Pool db 0 .Precision db 0 @@ -868,7 +894,6 @@ align 4 @IMPORT: library network, 'network.obj', console, 'console.obj' -;library network, 'network.obj', console, 'console.obj' import network, \ inet_addr, 'inet_addr', \ getaddrinfo, 'getaddrinfo', \