Fix FCEU save folder path and window width

Add 4 freeware NES games to Templates folder
Update SNTP by Coldy

git-svn-id: svn://kolibrios.org@7642 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Leency committed 2019-04-27 12:16:26 +00:00
1 parent dc532976c9
commit 33fb3deeb1
14 files changed
+230 -25

No files matched your search

+1
View File
@@ -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, {
+61
View File
@@ -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.
Binary file not shown.
Binary file not shown.
+8
View File
@@ -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
Binary file not shown.
+54
View File
@@ -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.
Binary file not shown.
+44
View File
@@ -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.
Binary file not shown.
+3
View File
@@ -31,3 +31,6 @@
- ёь. Їрщы "ChangeLog.txt" ўЄюс√ | - see file "ChangeLog.txt" for full list of changes
яЁюёьюЄЁхЄ№ тхё№ ёяшёюъ шчьхэхэшщ |
27.04.19 == Port v0.21 == ╫хЁхч HEX ЁхфръЄюЁ
- шёяЁртыхэ яєЄ№ фы  ёюїЁрэхэшщ
- єтхышўхэр °шЁшэр юъэр эр 1 яшъёхы№
Binary file not shown.
+10 -1
View File
@@ -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
+ ─юЁрсюЄрэр ъюЁЁхъЄшЁютър ё єўхЄюь ўрёютюую яю ёр
+49 -24
View File
@@ -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', \