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:
1 parent
dc532976c9
commit
33fb3deeb1
14 files changed
+230
-25
No files matched your search
@@ -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, {
|
||||
|
||||
@@ -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.
@@ -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.
@@ -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.
@@ -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.
@@ -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.
@@ -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
|
||||
+ ─юЁрсюЄрэр ъюЁЁхъЄшЁютър ё єўхЄюь ўрёютюую яю ёр
|
||||
|
||||
@@ -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', \
|
||||
|
||||
Reference in new issue
Block a user