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:
Kirill Lipatov (Leency) 2019-04-27 12:16:26 +00:00
parent dc532976c9
commit 33fb3deeb1
14 changed files with 230 additions and 25 deletions

View File

@ -246,6 +246,7 @@ extra_files = {
{"kolibrios/res/skins/", "../skins/authors.txt"}, {"kolibrios/res/skins/", "../skins/authors.txt"},
{"kolibrios/res/templates/", "common/templates/*"}, {"kolibrios/res/templates/", "common/templates/*"},
{"kolibrios/res/templates/", PROGS .. "/emulator/e80/trunk/games/*"}, {"kolibrios/res/templates/", PROGS .. "/emulator/e80/trunk/games/*"},
{"kolibrios/res/templates/NES", "common/templates/NES/*"},
{"kolibrios/res/wallpapers/", "common/wallpapers/*"}, {"kolibrios/res/wallpapers/", "common/wallpapers/*"},
} }
if build_type == "rus" then tup.append_table(extra_files, { if build_type == "rus" then tup.append_table(extra_files, {

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.
Ž¡ ¨£à¥: ˆ£à®ª ã¯à ¢«ï¥â £¥à®¥¬, ã ª®â®à®£® ¥áâì ¯à¨§à ç­ë© ¤¢®©­¨ª,
¥£® ¢â®à®¥ "ï". „¢®©­¨ª §¥àª «ì­® ¯®¢â®àï¥â ¤¢¨¦¥­¨ï £¥à®ï.
<20>  ­¥ª®â®àëå ã஢­ïå ¤¢¨¦¥­¨¥ ¤¢®©­¨ª  ®âà ¦¥­® ¯®
£®à¨§®­â «¨, ­  ¤à㣨å - ¯® ¢¥à⨪ «¨.
ˆ£à®ª ¬®¦¥â ¯¥à¥ª«îç âìáï ¬¥¦¤ã £¥à®¥¬ ¨ ¤¢®©­¨ª®¬
®£à ­¨ç¥­­®¥ ç¨á«® à § §  ®¤¨­ ã஢¥­ì.
„«ï ¯à®å®¦¤¥­¨ï ã஢­ï ¨£à®ª ¤®«¦¥­ ᮡà âì ¢á¥
¯®¤¯à루¢ î騥 â®çª¨. Ž¡ëç­® ¨å ¬®¦¥â ¡à âì ⮫쪮 £¥à®©,
­® ­  ­¥ª®â®àëå ã஢­ïå ¢áâà¥ç îâáï â®çª¨ ¤à㣮£® 梥â ,
ª®â®àë¥ ¬®¦¥â ¡à âì ⮫쪮 ¤¢®©­¨ª.
<20>  ã஢­ïå ¯à¨áãâáâ¢ãîâ ¯à®â¨¢­¨ª¨, §«ë¥ ç¥à¥¯ . …᫨
¤®ª®á­ãâìáï ¤® ç¥à¥¯ , 㯠áâì ¢ ¢®¤ã ¨«¨ §  ¯à¥¤¥«ë ã஢­ï,
®â­¨¬ ¥âáï ®¤­  ¯®¯ë⪠.
­ ç «¥ ¨£àë ¤ ñâáï ¯ïâì ¯®¯ë⮪, ª ¦¤ë¥ ¯ïâì ¯à®©¤¥­­ëå
ã஢­¥© ¤®¡ ¢«ï¥âáï ¥éñ ®¤­ . ‹î¡®© ã஢¥­ì ¬®¦­® ­ ç âì
§ ­®¢® ç¥à¥§ ¬¥­î ¯ ã§ë, ­® íâ® ®â­¨¬ ¥â ¯®¯ëâªã.
‚ᥣ® ¢ ¨£à¥ 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.

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.

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.
Ž¡ ¨£à¥: <20>  ª ¦¤®¬ ã஢­¥ ¨£àë ¯à¨áãâáâ¢ã¥â ­¥áª®«ìª® ª®¬¯ìîâ¥à®¢ ¨
®â१ª®¢ ¯à®¢®¤ . ‡ ¤ ç¥© ¨£à®ª  ï¥âáï ᮥ¤¨­¥­¨¥ ¢á¥å
ª®¬¯ìîâ¥à®¢. <20>â® ¤¥« ¥âáï ¯ãâñ¬ ®â१ª®¢ ¯à®¢®¤  ¨ á ¬¨å
ª®¬¯ìîâ¥à®¢ ª­®¯ª ¬¨ A, B ¨ Select. <20>  ¯à®å®¦¤¥­¨¥ ã஢­ï
®â¢®¤¨âáï ®£à ­¨ç¥­­®¥ ¢à¥¬ï. Š®£¤  ®­® ª®­ç ¥âáï, ¨£à 
§ ª ­ç¨¢ ¥âáï ¯à®¨£àë襬. „«ï ¯®¢â®à­®© ¯®¯ë⪨ ¬®¦¥â ¡ëâì
¨á¯®«ì§®¢ ­ à ­¥¥ ¯®«ã祭­ë© ª®¤ ã஢­ï.
<20>  ¤ «ì­¥©è¨å ã஢­ïå ¨£àë á¥âì ¯à®¢®¤®¢ ãá«®¦­ï¥âáï,
¯®ï¢«ïîâáï ­®¢ë¥ â¨¯ë ¯à®¢®¤®¢ ¨ ¨å ­¥¨á¯®«ì§ã¥¬ë¥ äà £¬¥­âë,
  á¥âì ­ ç¨­ ¥â ¯®á⥯¥­­® «®¬ âìáï. ¨£à¥ 50 ã஢­¥©.
<20>®á«¥ ¯à®å®¦¤¥­¨ï ã஢­ï ¢ë¤ ñâáï ª®¤, â ª¦¥ ®â®¡à ¦ ¥¬ë© ¢
¬¥­î ¯ ã§ë. <20>â®â ª®¤ ¬®¦¥â ¡ëâì ¢¢¥¤ñ­ ¢ £« ¢­®¬ ¬¥­î ¤«ï
¯à®¤®«¦¥­¨ï ¨£àë á ­ã¦­®£® ã஢­ï. Ž­ â ª¦¥  ¢â®¬ â¨ç¥áª¨
¢¢®¤¨âáï ¯®á«¥ ¤®á⨦¥­¨ï ª ¦¤®£® ­®¢®£® ã஢­ï, çâ® ¯®§¢®«ï¥â
«¥£ª® ¯à®¤®«¦¨âì ¨£àã ¯®á«¥ ¯à®¨£àëè  ¨«¨ ¢ë室  ¢ £« ¢­®¥ ¬¥­î.
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.

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.

View File

@ -31,3 +31,6 @@
- ñì. ôàéë "ChangeLog.txt" ÷òîáû | - see file "ChangeLog.txt" for full list of changes - ñì. ôàéë "ChangeLog.txt" ÷òîáû | - see file "ChangeLog.txt" for full list of changes
ïðîñìîòðåòü âåñü ñïèñîê èçìåíåíèé | ïðîñìîòðåòü âåñü ñïèñîê èçìåíåíèé |
27.04.19 == Port v0.21 == Через HEX редактор
- исправлен путь для сохранений
- увеличена ширина окна на 1 пиксель

Binary file not shown.

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 0.5.3
+ Исправлена ошибка конвертации времени, в частности, проблема появлялась при timestamp = 0x7fffffff + Исправлена ошибка конвертации времени, в частности, проблема появлялась при timestamp = 0x7fffffff
+ Доработана корректировка с учетом часового пояса + Доработана корректировка с учетом часового пояса

View File

@ -61,10 +61,9 @@ START:
; fatal error(console error) ; fatal error(console error)
;jnz exit ;jnz exit
; setup params ; setup params
call parse_params call parse_params
;clear eax
call tz_validate call tz_validate
; is TZ correct? ; is TZ correct?
cmp ebx,0 cmp ebx,0
@ -189,6 +188,9 @@ START:
jne @f jne @f
cmp [tz_m],0 cmp [tz_m],0
jne @f jne @f
mov eax, str_tz
add eax, 9
cinvoke con_printf, eax ; \n\0
jmp .no_bias jmp .no_bias
@@: @@:
@ -212,7 +214,6 @@ START:
cinvoke con_printf, str_tz, eax, ebx cinvoke con_printf, str_tz, eax, ebx
.no_bias: .no_bias:
cmp [sync],0 cmp [sync],0
je exit je exit
cmp [sync], SYNC_S cmp [sync], SYNC_S
@ -225,8 +226,8 @@ START:
mov eax, str_st mov eax, str_st
jmp .sync_ok jmp .sync_ok
@@: @@:
cmp [sync], SYNC_ST cmp [sync], SYNC_SS
jne .sync_ok jne exit ; Fixed (24.04.2019): incorrect display with -ss
mov eax, str_ss mov eax, str_ss
.sync_ok: .sync_ok:
@ -316,6 +317,7 @@ SYNC_ST = 3
parse_params: parse_params:
mov esi, params mov esi, params
mov ebx, esi mov ebx, esi
clear ecx ; 26.04.2018 Fixed
.f00: .f00:
lodsb lodsb
cmp al, 0 cmp al, 0
@ -329,6 +331,8 @@ parse_params:
ret ret
.exit: .exit:
cmp ecx,0 ; 26.04.2018 Fixed
je @f
; mark end of TZ ; mark end of TZ
mov byte [ecx+1], 0 mov byte [ecx+1], 0
; now esi = start of TZ ; now esi = start of TZ
@ -393,6 +397,7 @@ parse_params:
; jz .invalid ; jz .invalid
; mov [port], bx ; mov [port], bx
; jmp .param_loop ; jmp .param_loop
jmp .invalid
.tz: .tz:
; tz setup ; tz setup
@ -444,6 +449,7 @@ parse_params:
mov eax, 10 mov eax, 10
ret ret
; Helper to convert char to number ; Helper to convert char to number
; Input: ; Input:
; esi - ptr to char of digit ; esi - ptr to char of digit
@ -498,7 +504,7 @@ c2n:
; Sync worker ; Sync worker
; Input: ; Input:
; eax - in_addr (IPv4) ; setuped sockaddr1
; Output: ; Output:
; eax - error_code ; eax - error_code
; ebx - error_string ; ebx - error_string
@ -510,8 +516,22 @@ c2n:
;mov edx, eax ;mov edx, eax
sntp_query_time: 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 ; Create socket
mcall socket, AF_INET4, SOCK_DGRAM, IPPROTO_IP mcall socket, AF_INET4, SOCK_DGRAM, IPPROTO_IP
cmp eax, -1 cmp eax, -1
@ -534,10 +554,6 @@ sntp_query_time:
;DEBUGF 1, "Socket connected.\n" ;DEBUGF 1, "Socket connected.\n"
@@: @@:
; Query system time
;mcall 3
;mov [SystemTime], eax
mcall send, ebp, sntp_packet, SIZEOF_SNTP_PACKET, 0 mcall send, ebp, sntp_packet, SIZEOF_SNTP_PACKET, 0
cmp eax, -1 cmp eax, -1
jne @f jne @f
@ -636,9 +652,9 @@ sntp_query_time:
@@: @@:
.tz_h: .tz_h:
; correct hour ; correct hour
cmp [sync], SYNC_SS ; cmp [sync], SYNC_SS
; if -ss ignore timezone for hour ; if -ss ignore timezone for hour
je .tz_done ; je .tz_done
clear eax clear eax
mov al, [tz_h] mov al, [tz_h]
add al, cl add al, cl
@ -681,7 +697,6 @@ sntp_query_time:
; FIXED: do sync before display!!! ; FIXED: do sync before display!!!
; It's need to do sync fast ASAP ; It's need to do sync fast ASAP
; Take out any printf from sntp_query_time! ; Take out any printf from sntp_query_time!
; sync > 0 ? ; sync > 0 ?
cmp [sync], 0 cmp [sync], 0
je .nosync je .nosync
@ -691,6 +706,8 @@ sntp_query_time:
; FIXME: Go it from sntp_query_time! ; FIXME: Go it from sntp_query_time!
;}} ;}}
; Convert time to BCD ; Convert time to BCD
clear eax, edx clear eax, edx
mov al, [esi + DateTime.sec] mov al, [esi + DateTime.sec]
@ -700,8 +717,17 @@ sntp_query_time:
mov al, [esi + DateTime.min] mov al, [esi + DateTime.min]
b2bcd b2bcd
mov ch, al 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] mov al, [esi + DateTime.hour]
b2bcd b2bcd
.ss_done:
mov cl, al mov cl, al
; Display BCD time ; Display BCD time
@ -851,7 +877,7 @@ sockaddr1:
rb 10 rb 10
SIZEOF_SNTP_PACKET = 48 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 .Stratum db 0
.Pool db 0 .Pool db 0
.Precision db 0 .Precision db 0
@ -868,7 +894,6 @@ align 4
@IMPORT: @IMPORT:
library network, 'network.obj', console, 'console.obj' library network, 'network.obj', console, 'console.obj'
;library network, 'network.obj', console, 'console.obj'
import network, \ import network, \
inet_addr, 'inet_addr', \ inet_addr, 'inet_addr', \
getaddrinfo, 'getaddrinfo', \ getaddrinfo, 'getaddrinfo', \