- 183
- 77 139
RetroNick's Programming Channel
Canada
เข้าร่วมเมื่อ 11 ต.ค. 2018
Make my day - just sub to the channel - that's all it takes! Help me reach 1000 subscribers - the more subscribers the more videos! I code in old programming languages like AmigaBASIC, QBasic\\QB64, Turbo Pascal, and some C.
I also use some modern programming compilers like Lazarus/freepascal. I have also released my old program Raster Master as open source software. This is a sprite editor that generates code. It has been updated to work on modern Windows/Linux but still supports the older DOS formats. Please subscribe to my channel and hit me up with some programming questions if you are interested in the same things.
I also use some modern programming compilers like Lazarus/freepascal. I have also released my old program Raster Master as open source software. This is a sprite editor that generates code. It has been updated to work on modern Windows/Linux but still supports the older DOS formats. Please subscribe to my channel and hit me up with some programming questions if you are interested in the same things.
Lazarus v4RC1 New Single Window Docked and Undocked Mode
Lazarus v4RC1 New Single Window Docked and Undocked Mode
มุมมอง: 166
วีดีโอ
Lazarus Transparent Bitmaps
มุมมอง 1862 หลายเดือนก่อน
Lazarus Transparent Bitmaps github example code github.com/RetroNick2020/Channel-Code/tree/master/lazarus/Transparent Bitmap Raster Master Sprite Editor github.com/RetroNick2020/raster-master
Raylib Platformer Game Created with Lazarus and Raster Master
มุมมอง 2942 หลายเดือนก่อน
Here is an emscripten compilation that runs in your browser retronick2020.itch.io/raster-master-platformer-demo Simple Platformer game created with raylib and freepascal/lazarus compilerCode Example github.com/RetroNick2020/raster-master/tree/main/Examples/freepascal/Raylib_Simple_Platformer Raster Master Sprite and Map Editor github.com/RetroNick2020/raster-master/releases/tag/v4.7R114
Lazarus Drag and Drop between TListView Controls
มุมมอง 1543 หลายเดือนก่อน
Lazarus drag and drop example
Raster Master Sprite Animation
มุมมอง 1073 หลายเดือนก่อน
download fomr github github.com/RetroNick2020/raster-master/releases/tag/v4.3R110
Raster Master Sprite Sheet Export and SFXR
มุมมอง 824 หลายเดือนก่อน
Download Raster Master from Github github.com/RetroNick2020/raster-master
Lazarus Importing Froms from Other projects to current Project
มุมมอง 1764 หลายเดือนก่อน
Easy way to use existing forms from other projects without having to manually re-create them
sfxr for Lazarus and freepascal
มุมมอง 2464 หลายเดือนก่อน
SFXR for Lazarus github.com/RetroNick2020/mini_projects/tree/main/miniprojects/SFXR BASS Audio Library/DLL www.un4seen.com/ Raster Master github.com/RetroNick2020/raster-master
Raster Master 3 7 Compiled with Lazarus 3 4 I'm back
มุมมอง 2305 หลายเดือนก่อน
Just testing my new mic and little update to Raster Master github.com/RetroNick2020/raster-master/releases
#QBJS Is a #QBasic Like Interpreter For the Web
มุมมอง 55611 หลายเดือนก่อน
Just a little intro to QBJS more detailed QBJS video @grymmjack th-cam.com/video/Nb8f8NTbQfQ/w-d-xo.html QBJS main site qbjs.org github github.com/boxgaming/qbjs
#Galaga In #QB64 Phoenix Edition
มุมมอง 67211 หลายเดือนก่อน
Just pure QB64 code- no assembler or special tricks Galaga on Github github.com/rokcoder-qb64
#TMT #Pascal Lite Testing
มุมมอง 28111 หลายเดือนก่อน
A Windows and DOS 32 bit pascal compiler compatible with Borland Turbo Pascal. The free version compiles to 32bit DOS. I am testing here is an older version but looks fully functional. Download link - scroll all the way down www.frameworkpascal.com/download.htm Link to Raster Master (Sprite/Map Editor) github.com/RetroNick2020/raster-master Link to RtBinObj (Compatible TMT BinObj32.exe program)...
#QB64 $embed And Embedded$ Commands to include your Assets to EXE
มุมมอง 384ปีที่แล้ว
QB64 Phoenix Edition solves the packaging and distribution problem for your assets by allowing you to easily include them to your EXE file.
#Lazarus 3.0 Install on Low end Windows 10 PC
มุมมอง 274ปีที่แล้ว
I found the slowest Windows 10 PC in my basement and installed Lazarus 3.0 on it.
#QB64 Phoenix Edition C++ Compilation Error (and fix)
มุมมอง 704ปีที่แล้ว
#QB64 Phoenix Edition C Compilation Error (and fix)
#GIF file importing in BASIC ANYWHERE MACHINE (#QBasic like language)
มุมมอง 166ปีที่แล้ว
#GIF file importing in BASIC ANYWHERE MACHINE (#QBasic like language)
Basic Anywhere Machine #BAM - #QBasic style language in a web browser!
มุมมอง 185ปีที่แล้ว
Basic Anywhere Machine #BAM - #QBasic style language in a web browser!
Raster Master Sprite Editor with Map Editor + Sprite Importer working side by side
มุมมอง 298ปีที่แล้ว
Raster Master Sprite Editor with Map Editor Sprite Importer working side by side
Open Watcom And Rtbinobj Example - Day 152
มุมมอง 392ปีที่แล้ว
Open Watcom And Rtbinobj Example - Day 152
PyDPainter - Deluxe Paint Clone in Python - Day 151
มุมมอง 996ปีที่แล้ว
PyDPainter - Deluxe Paint Clone in Python - Day 151
Turbo Pascal BINOBJ with Freepascal 8086 - Day 147
มุมมอง 417ปีที่แล้ว
Turbo Pascal BINOBJ with Freepascal 8086 - Day 147
Raster Master Sprite & Map Editor R78 - Day 146
มุมมอง 686ปีที่แล้ว
Raster Master Sprite & Map Editor R78 - Day 146
#pas2js for simple games? or microStudio? or both? - Day 145
มุมมอง 343ปีที่แล้ว
#pas2js for simple games? or microStudio? or both? - Day 145
pretty much straight forward - appreciate it !
Awesome video :)
I think the funniest thing about RIPSCRIP is they could've just done a color version of Hypercard and make it possible to network and it would've not only easier for everyone (Sysops and users), but it was already street tested to work as intended. I'm a firm believer of steal stuff that works.
Great guide, thanks 😀 The only thing missing was information about TPairSpliter.
Very impressive they can achieve such complexity under dos
Always hard to watch technical shorts of people that cant use a proper screen recording Software.
Dark Seed (Dos) used this, but I didn't have any idea back in the day, I had come from Amiga AGA graphics chipset and so had no idea the game was using VGA colour settings through EGA higher res! Fantastic example, not even half way through but on work break so will watch the rest later, thank you!
Hello! I like classic view of Lazarus IDE, like classic GIMP UI.
Hi my friend from ericksystem
Thanks for the video, Nick! But the sound still too low.
Nice work! Did it take a frustratingly long time or did it go pretty smooth?
do you mean converting the code? I can between basic/pascal pretty easy.
But where to download it and can it be use today.
winworldpc.com/product/quickpascal/1x
This is very useful if using sprite assets for games where that pink color should be ignored. Thanks Nick!
Hmm. I didn't even recognize it. The haircut has been beneficial for + 20 years
Amazing!!! I will attach a link to this video in the readme for a examples from other developers in ray4laz
that's great! thank you
Awesome! Just the sound was too low in this video.
hey thanks for that. I upgraded the firmware on the wireless mic and it changed recording options. instead of recording equally for left/right audio track it was using one track.
Is there way to export game to web?
The only option for raylib on web is to use empscten. Raster Master can export c image/map code. if you want to use strictly pascal then you need to use pas2js without raylib.
Are the Lazarus executables still slow and big as hell? Tried Lazarus years ago and the exes were very slow, I went back to Delphi. Besides Delphi is free now and you can make commercial apps with it
for my needs Lazarus is an excellent compiler. I don't know how it compares to Delphi but the speed and exe sizes are acceptable to me. I think if you try a simple hello world program, yes the exe's are big. Lazarus has a big runtime. Once the line numbers increase in your applications the exe size becomes normal. Unless things have changed Delphi is not exactly free. You get a license for 1 year that is renewed. At any time this license can be revoked or not renewed. I think in a few years we will see this free license disappear. Many will be forced to actually purchase Delphi because they have invested so much time into building their apps and there is no other option to migrate them to something else (not even Lazarus). Similar to what Unity did with their license, but probably to a better strategy.
Cool, Nick! And you are looking a lot healthy since the first videos!
You can also open the Project Inspector and add the form's unit to the project. The form will then be available in Lazarus designer automatically.
what happens with forms that have the default name?
Very good, Nick! Do you plan to have a full set of gamedev tools?
These tools were part of the plan already. Sprite Sheet Export and Animation support will be added soon. After that i will keep enhancing everything.
Welcome back!
How about to make a web version of Raster Master using pas2js?
OOOH! That's a thing that's possible?
When Lazarus has some kind of gui control support for pas2js compiler
And... You are back!!! Awesome! Wish all the best to you!
This is a very late comment, but I think the difference between the class and the record issue you run into with the cc variable is that the Dictionary actually carries a record variable in it, whereas the class is a pointer in both the code outside the dictionary entry, and inside the dictionary entry. All the cc references refer to the same memory location when it is a class. The record creates a new memory location to store the Dictionary value so each cc value is transferred into the dictionary entry.
wish there were some examples to show various usage.
Bro I'm so frustrated with Lazarus. Its impossible for me to do a list of string array, which is super easy in python...
yes, but there are different types of strings in Lazarus/freepascal. the easiest is to use shortstrings
Thanks for this video! I've been trying to import images into basic using BLOAD from PCpaint and other contemporary software. I could always display these files in fullscreen, but never manipulate them with PUT. I think it must be due to pc-paints file structure not agreeing with the PUT indexing from arrays? Anyway I had no idea something like Raster Master existed! : )
you can still bload the images into an array and display them with put. check out rtbinobj from my github
RetroNick, you are a sage. You deserve respect.
What version of QBasic is it?
usually qbasic 1.1 or QuickBasic 4.5 - that what I use normally
Add a "0" to the number of bullets that are allowed - way more fun!
unfortunatelly can,t game runing game Outrunner error syntax
probably the language syntax changed. contact microstudio support.
Hi, RetroNick. Do you know any reliable way of compiling Pascal units into 16-bit DOS relocatable object files? FPC only able to create 32-bit OBJ and vanilla TP/BP uses TPU/TPL format (undocumented and non-compatible between versions) which is not familiar to any DOS linkers I know...
Stoney brook pascal+ vetusware.com/download/Stony%20Brook%20Pascal%20Plus/?id=4195
@@retronicksprogrammingchann2337 interesting, although the installation just hangs w/o any message (in DOSBox)
I think you need to create an A: (drive) and copy the files there. then run setup program from there.
@@retronicksprogrammingchann2337 thanks, I'll try that
@@retronicksprogrammingchann2337 Do you know where I can get Compiler Reference manual ? It is mentioned many times in the Readme.
I think there's something wrong with your monitor, it is way to saturated, way too much into the blues... it should look gray! :P
Workbench 1.3 uses different colors than Workbench 2.0 and above. colors are normal
@@retronicksprogrammingchann2337 I know, I was just poking some fun. Hope you didn't take it bad
I got hooked on MMBasic. Some library crap didn't suit me at all. Been working on 8 Pico's really doing something of what I wanted and I have a pile of code of my own now. Making a GPS Pico at the moment which can update several times per second. I'm looking into ESP32 stuff on the side, but it's not helping me yet.
I need to get back into the pico. its an excellent piece of hardware
Great video!!! Good message as well.
This is kind of nuts for fitting inside 50K and having virtual memory management built-in. I wonder whatever happened to the author. Happened upon the TEGL version of Mille Bornes and wanted to know more about it. How unfortunate that it seemingly went mostly unnoticed.
i don't know exactly how things ended with TEGL. I know for a short time TEGL seemed like a good option for DOS graphical programs. I think as Windows 3.1 got more popular developers just gave up on DOS graphics app and strictly went Windows.
HI RetroNick's Programming Channel :) I SEE THAT IT IS NOT ADVANCED LASERCHESS . IT IS PLAIN OLDER LASER CHESS (THE PREDECESSOR). LINK IS NOT WORK, WHEN CHOOSE THE LINK IT SAYS ""404 - page not foundThe master branch of Channel-Code does not contain the path amiga."" PLEASE GIVE THE FIXED ROM IN AN ADF OR LHA TO THE AMIGA COMMUNITY (ANYWHERE- AMINET EAB ABIME ETC) BECAUSE IT HAD NOT BEEN EXISTED BEEN ""WIDE PUBLISHED"" IN REAL DATA UNTIL NOW. THANKS IN ADVANCE
try github.com/RetroNick2020/Channel-Code/blob/master/AmigaBASIC/LaserChess.bas
@@retronicksprogrammingchann2337 :) THANK YOU VERY MUCH. PLEASE, IF YOU DONT MIND, UPLOAD IT IN A PLACE LIKE AMINET OR EAB ABIME OR ANYTHING SO THE GAME IS BEEN WIDE PUBLISHED. I AM NEARLY A 40 YEARS AMIGA USER (BORN IN 1967) BUT NEVER JOINED EAB ABIME OR AMINET ETC. THANK YOU IN ADVANCE
Just checked, and this works in PB 640x480x256 and mode 13: www.petesqbsite.com/sections/tutorials/tutorials/tutor1.htm OUT &H3C8, 0 (0 is color number) OUT &H3C9, red OUT &H3C9, green OUT &H3C9, blue If you set color number to 0 with 1st command, you can loop trough the entire color table with OUT &H3C9. Mode 13: ! mov ax, &h13 ! INT &h10 Vesa mode 101 (this mode requires paging of video mem): !mov ax, &H4F02 !mov bx, &H101 !int &H10
should work in modes 13 and up no problem. its the lower modes that require the extra step. there is a link in the video description with the code to my github with all the code
Can you show how to do sound like .mp3's
this shouldn't be any different for sound files. just include the mp3 the same way i concluded the png.
@@retronicksprogrammingchann2337 I tried and the part where you put the _EMBEDDED$ DOES NOT WORK.
I'll take a look.maybe its a bug
Hey Nick! So I think paintBox is much better for 2D ganes too as it seems.
yes if you are going to use only windows api. opengl would be better.
@@retronicksprogrammingchann2337 I'm thinking to use the LCL classes for it, pas2js for web and LCL to compile for native OSes. What do you think? Still better to go for OpenGL? I'll just make 2D games.
if the graphics render fast enough it should be fine. I think there is also a way to package a browser from lazarus and distribute your apps. this way you develop with pas2js and deploy to all web/native using same code.
@@retronicksprogrammingchann2337 yeah, there is but I'm thinking on extending my engine to use the LCL if building for standalone programs.
Вы настоящий энтузиаст! Используете систему программирования, которая вообще непопулярная. Никто на ней сейчас не программирует.
Its much easier to do things you like in life. programming for me is just a hobby at this stage. qb64/freepascal/lazarus are great languages to play around with even if they are not that popular.
Hi Nick. Thank you for taking us through QBjs. You did well in showing how it works. > I was looking at this after your previous QB64 post. I was wondering if it showed (Gave access to) the actual JavaScript for "Running" this in the web context and there it is at 3:48 :) From a retro perspective there is DoJs for DOS which is a pure JavaScript interpreter for DOS (32-bit protected mode). I have only tried a few of the examples with it (DoJs) so far and it seams to work well. A little heavy for DOS being 32-bit so you need at least a 486 compatible DOS for it. DoJs renders to the screen in it's own graphics context and doesn't use any HTML. I am going to be curious now as to what JS libraries they are using for the browser rendering (running) :) aka is there any remote chance that the JS output here is compatible with with a little correction with DoJs. No doubt the Graphics libraries will be too incompatible, but I am curious just the same :)
I think the IDE(Editor) requires a modern browser but I think as long as DoJs can provide a CANVAS context the transpiled code may work. I am not the best person to ask this. You can ask dbox (the author). He hangs out on discord.
@@retronicksprogrammingchann2337 I will try and have a peek at it somewhere in the coming weeks. DoJs (Jsh) is the last dev environment in the list on my current 2 DOS books. So when I hit the Win95 MS-DOS DoJs chapter I will Jump into QBjs and do some comparisons on W95. Just started my next Tertiary intake as of about 1/2 hour ago, so I have to jump all over that and put the books and other interest in the "when I have time" slot for a little bit :) > My lecturer is a 20 years industry experienced software engineer. Good man and helpful mentor who likes to challenge me to improve. Hes an absolute Linux guru so I have learned a lot on that front. Have good day/evening Nick :) P.S. 10:00am AU EST time here (+10)
Thanks for the breakdown of my Galaga project - I thoroughly enjoyed watching that! I spent a few months last year playing around with QB64pe to see what could be done with a BASIC variant these days (compared to when I learned to program in BASIC so many years ago). I have to say that it was a lot of fun and, despite some limitations, is capable of very complex projects. It'd be nice to be able to split source files up in a better way but most hurdles I came across weren't insurmountable. Hopefully you found the section of code for creating the window in the centre of the screen. Also, I hope you made it to the challenge stages eventually - that's much easier to do once you double up your own ship after letting it be captured. I did try to stay as faithful to the original as possible but have no idea whether the bullets and missiles are upside down or not! The paths are created with splines which I'm sure wasn't the way they were originally done but it seems effective enough. If you enjoyed this you might want to have a dabble with my Scramble conversion which can be found in the GitHub alongside the Galaga source code. Enough rambling for now - thanks again for digging into the source code. I'm always happy to answer any related questions. It was by pure chance that I stumbled on this video - quite made my day :)
you are very talented. And yes I did find the code where you centre the window. I also managed to reach the first challenge stage but not much further. I ended up firing up MAME and playing the Galaga (midway ROM) and the bullets show correctly in MAME. Also the midway rom of Galaga plays slower. I think your version plays a little too fast. From what I remember in the arcades was when Galaga became popular there were knock off roms that played faster. These were installed in generic cabinets and did not display namco/midway info. Its also possible that those ROMS had slightly different artwork and the bullets could of been upside down. I am getting old so memory is not my friend. In any case its a great rendition and I am glad you released the source code. I will be creating my own shooter at some point and will definitely study your code more closely. I will also take a look at scramble. Was not one of my favourites at the arcade but I played cosmic avenger on my colecovision which was very similar.
Hi Nick. Just seen this video and got all excited. Classic game :) (Used to be one of my favourites in the arcades as a youngster) > 1:09 Centering on screen I believe is just a matter of getting the screen xy dimension from the OS, divide by 2 to get the center and then divide the applications xy window size by 2, and subtract that from the monitor (xy/2) to get the x,y 0,0 for the top left corner of the window. Appwindowx = sreenW\2 - appWindowW/2 NOTE: The function commands to get the current screen dimensions/resolution may be different from traditional BASIC. > 3:00 Not sure if I could see the traditional "rapid fire" in that screen? Seem to get multiple fire at 3:20. > 3:23 lol, I had this same bug come up when I did the Batleship Gatica demo. The bullet sprite gets deleted (or not rendered), but the bullet x,y coordinates remain alive and are tested if in the bounds of the hero ship. (It was just a matter of making sure that the bullet xy gets deleted (zero/inactive) when the enemy ship becomes inactive. Good luck finding the missed line. > Don't feel bad. I used to ACE this game. At 57 I likely wouldn't do as well as you did lol > 7:06 I have never "formally" done any game programming. When doing Gatica I was looking for the best way to create the sprite structures. I had some ad-hock ideas for my next attempt at it, but this offers some sound ideas to work from. Most modern examples that I have seen tend to be wrapped up in abstract classes. Nice to see an example laid out using an imperative orientation. > 9:24 the variable should be in the line that creates the Window from what ever graphics library is being used. If you look for the start x, y in CreateWin(x, y, W, H) and trace the x, y variable back you should find the line or call to a Sub with it. > Thank you very much for posting this. I have spent a lot of time looking around to find an example like this :) This will relate well to the concept of the Battleship Gatica I did and I will likely learn quite a bit from this source code. I can't wait to translate it to C or FreeBASIC; Most likely C though. > Been a long day, so I need to lay down and take a break for a bit (Chronic Heart failure). After that I am going to have a look at that code and pull it apart. I haven't got QB64 installed at the moment but I will compile it in FreeBASIC and see how it comes out before witting in C. P.S. If I spot that hidden bomb/bullet code I will give you a heads up. P.S.S. Like I need to take on more tasks, but this one is worth throwing a few hours of my time at :)
So, the source is full copyright protected, so that blew me out of the water. No C Versions of this :( Best I can do is look at it as an example.
You will find the screen centering in line 558 SUB PrepareGalaga. QB64 MACROS: Screen width _DESKTOPWIDTH Screen Height _DESKTOPHEIGHT _SCREENMOVE _MIDDLE (_SCREENMOVE parameter) centers the program window on the desktop in any screen resolution. > You will find the entry point and main game loop at line 460 PrepareGalaga (Line 558) PrepareFrontendEvents DO: _LIMIT (game.fps%): ProcessEvents: LOOP > You will need to look into the QB64 Library headers to find the actual OS API calls for the screen dimensions and how the MACROS are constructed. In Windows API GetSystemMetrics() function (winuser.h) is one of the structures that holds the MACROs. Also I know you can use GetWindowRect() function (winuser.h) for the desktop window(wallpaper/background) dimensions which form memory is 0 or 1 in the Z order. Win API Structures are complex lol But the QB64 header with the above macros will work it out for each OS API. > I started writing a replacement desktop Shell in AutoIt years back, so working out all the screen metrics from the Windows API was a learning experience to put it mildly lol
P.S.S. FreeBASIC uses a different set of MACROs... SCREENINFO Retrieves information about current video mode or the desktop. So I would have a little bit of work converting this QB64 code to FreeBASIC, although 3000 lines wouldn't be that hard as there doesn't seem to be too many QB64 specific MACROS. > If I did it in C I would be able to do it with SDL_BGI or just drop the BGI wrapper and use SDL2 straight up :)
I bit the bullet and created a QB64 Dev directory lol I encountered the mysterious Blow up for no reason. Also had the game freeze once on me. > Compiling from the command line is faster. I am using Geany V2.0 for the IDE which calls the compiler from the command line. <- I am kind of used to the default keyword highlighting for BASIC in Geany :), Although the default QB64 IDE highlighting is not too bad, but too many years coding on Blue background screens. Interestingly, the -c switch fails when attempting to overwrite a pre-existing EXE and -x switch has no problems and replaces the EXE. > For Geany .BAS defaults to FreeBASIC. Just change the Build - > Set Build commands to [_Compile] [C:\QB64\qb64.exe -x "%f"] Or what ever the path is to your QB64.exe. %f is the source path ame.bas > I am going to take note of the structures used to hold the different resources, and maybe take a look at some of the logic loops used in the SUBs. The Dev seams to have some history in Scratch (Google Blockly) which tends to output some very neat JavaScript code, so am am guessing there is some influence in the code structure and neatness here. > Have a good day Nick, and thanks again for getting me excited on this game code :)
I don't know much about copyright. I don't see a license but i am guessing it wouldn't be valid. you can't rip off namco art work and sounds and then claim a copyright. saying that coder looks really talented. I did go and take a look at the scratch projects and I amazed at some of these scratch projects. I didn't even know it was possible to do things like that in scratch. When i tried scratch I could get barely get anything complex to work.
Thanks for sharing, Nick!
Pascal is addictive, you can't quit :) Nice video, thank you Nick!
Thank you for this! Currently trying to write a small preprocessor in Free Pascal. This has helped me get started with maps/dictionaries in the language. You're right about the documentation. It's definitely lacking in places.
that's great! always nice to hear something i did helped someone.
Hey! Thanks for the video. I added to the reddit video collection. Will do the same for all your videos you post to r/QB64pe - thanks sir.
that's great! thanks
this is great stuff, was looking into hershey fonts and bgi fonts and once again you have the best deep dives! thanks for the videos
no problem, glad you found them useful.