Game Of Life

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Message
Author
T3RRY
Posts: 40
Joined: 06 May 2020 10:14

Re: Game Of Life

#16 Post by T3RRY » 08 Jun 2020 02:06

My method was estimation by comparing the time elapsed between generations using the following code within for loop iterations.

Code: Select all

@echo off
setlocal EnableDelayedExpansion
(For /F "Delims=" %%E in ('Where /R "%USERPROFILE%" cmdgfx_gdi.exe') Do CD "%%~dp$PATH:E") > Nul 2> Nul
cmdwiz showcursor 0
cmdwiz getdisplaydim w & set /a w=!errorlevel!/3+1
cmdwiz getdisplaydim h & set /a h=!errorlevel!/3+1
mode %w%,%h%
set /a density=10, col=12
if not defined _ set _=. & call %0 | cmdgfx_gdi.exe "fbox 0 0 db & block 0 0,0,%w%,%h% 0,0 -1 0 0 - random()*100/(101-%density%)" Sfc:0,0,%w%,%h%n
for /l %%a in () do (
	(Set /a Tk+=1 & Title %Time% !Tk! !Time!) & echo "cmdgfx: block 0 0,0,%w%,%h% 0,0 -1 0 0 - store(gtr(col(x-1,y-1),0)+gtr(col(x,y-1),0)+gtr(col(x+1,y-1),0)+gtr(col(x-1,y),0)+gtr(col(x+1,y),0)+gtr(col(x-1,y+1),0)+gtr(col(x,y+1),0)+gtr(col(x+1,y+1),0),0)+((1-(lss(s0,2)+gtr(s0,3)))*gtr(col(x,y),0)+eq(col(x,y)*10+s0,3))*(%col%+eq(s0,3)*3) & text e 0 0 [FRAMECOUNT] 2,2 6"
)
I was out by by 1 frame per second, However, that said, there's a discrepency between the generation count returned by cmdgfx_gdi compared to iterations of the For loop.

Fullscreen at 1360 * 768 pixels (Native resolution is 3840 * 2160, at which only approx 1/6th of the cmd window is occupied by cmdgfx_gdi's output)

https://drive.google.com/uc?export=down ... eZqb1btMPz

The frame differenceI mentioned was between the very first script you posted in this thread.

misol101
Posts: 448
Joined: 02 May 2016 18:20

Re: Game Of Life

#17 Post by misol101 » 08 Jun 2020 04:45

T3RRY wrote:
08 Jun 2020 02:06
Fullscreen at 1360 * 768 pixels (Native resolution is 3840 * 2160, at which only approx 1/6th of the cmd window is occupied by cmdgfx_gdi's output)
hmm, that’s a bit puzzling. 3840*2160 (8 million pixels) is admittedly a much larger screen than I ever tried cmdgfx with (max I tried is probably 1920*1080), but I don’t really see why cmdgfx would fail :| It might very well be failing, but it could also be ”cmdwiz getdisplaydim” failing.

Could you do me a favor and print the return values from ”cmdwiz getdisplaydim w” and ”h” when your resolution is 3840*2160? If it does return faulty values, what happens if you hardcode w=3840 and h=2160 in your script instead of calling getdisplaydim?

T3RRY
Posts: 40
Joined: 06 May 2020 10:14

Re: Game Of Life

#18 Post by T3RRY » 08 Jun 2020 06:27

Hmm... It's not just cmdwiz returning an incorrect value. wmic is also incorrect, however that is returning max res.

Code: Select all

C:\Users\tcdou\Desktop>setlocal EnableDelayedExpansion 
C:\Users\tcdou\Desktop>(For /F "Delims=" %E in ('Where /R "C:\Users\tcdou" cmdgfx_gdi.exe') Do CD "%~dp$PATH:E" ) 1>Nul 2>Nul 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>cmdwiz showcursor 0 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>cmdwiz getdisplaydim w   & set /a w=!errorlevel!/3+1 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>cmdwiz getdisplaydim h   & set /a h=!errorlevel!/3+1 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>For /F "delims=" %# in ('"wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution /format:value"') do (Set "%#" 1>nul ) 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>(Set "
" 1>nul ) 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>(Set "
" 1>nul ) 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>(Set "CurrentHorizontalResolution=4096
" 1>nul ) 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>(Set "CurrentVerticalResolution=2160
" 1>nul ) 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>(Set "
" 1>nul ) 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>(Set "
" 1>nul ) 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>(Set "
" 1>nul ) 
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>Set w 
w=427
windir=C:\Windows
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>Set h 
h=241
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>Set curr 
CurrentHorizontalResolution=4096
CurrentVerticalResolution=2160
C:\Users\tcdou\Desktop\batchTT\cmdgfx\games\shootem>Exit /b 
With the correct resolution hardcoded, it does display as expected.

misol101
Posts: 448
Joined: 02 May 2016 18:20

Re: Game Of Life

#19 Post by misol101 » 08 Jun 2020 07:46

Thanks. I'm willing to bet you have a scale setting (in your Windows Display settings) set to something larger than 100%. Apparently Cmwiz doesn't take this into account. I will add it to the list of Cmdwiz bugs to fix.

EDIT: now fixed in Cmdwiz 1.5
Last edited by misol101 on 11 Jun 2020 12:10, edited 1 time in total.

T3RRY
Posts: 40
Joined: 06 May 2020 10:14

Re: Game Of Life

#20 Post by T3RRY » 08 Jun 2020 08:19

Bet confirmed.

quickfix I'm using:

Code: Select all

Set SF=3
For /F "Tokens=3 Delims= " %%A in ('REG QUERY "HKCU\Control Panel\Desktop\WindowMetrics" /V AppliedDPI') Do Set/A SF-=%%A / 100 + 1
cmdwiz getdisplaydim w & set /a w=!Errorlevel!/(!SF!+1)
cmdwiz getdisplaydim h & set /a h=!Errorlevel!/(!SF!+1)
Accurate for scaling below 300%

misol101
Posts: 448
Joined: 02 May 2016 18:20

Re: Game Of Life

#21 Post by misol101 » 08 Jul 2020 09:19

Just before this topic disappears off the page, I just want to point to: viewtopic.php?f=3&t=9662

The archive there includes a very fast GameOfLife implementation, running fullscreen with a pixel font. My assumption that I would get 100+ FPS for 1920x1080 for a native C implementation (ran through Cmdgfx) turned out to be correct; it landed around 130 FPS.

Post Reply