- 74
- 504 939
NCOT Technology
United Kingdom
เข้าร่วมเมื่อ 22 ส.ค. 2013
Welcome! You'll find me writing C or assembly on various old and obsolete systems, letting the magic smoke out of electronics and working on retro computers.
All opinions belong to me, or the other voices in my head.
Here’s some hashtag soup…
#programming #gamedev #linux #retrocomputing #smarthome #homeassistant
If you want to find me online, I can be found on Mastodon @james@social.ncot.uk and on the web at ncot.uk
All opinions belong to me, or the other voices in my head.
Here’s some hashtag soup…
#programming #gamedev #linux #retrocomputing #smarthome #homeassistant
If you want to find me online, I can be found on Mastodon @james@social.ncot.uk and on the web at ncot.uk
Tilemap Game Engine Development - Agon Light C Programming
In this video, I took the next step in my game development for the Agon Light by building a tilemap system and integrating it with the existing physics engine from the previous video. The tilemap, a classic way to structure game levels, includes solid tiles that interact with game sprites. While detecting collisions with tiles is usually straightforward, incorporating a physics engine made things more complex.
I decided to let the sprite system handle everything-deciding when to call the physics code or resolve collisions with the tilemap. After a few false starts and bugs, I managed to get everything working smoothly. To speed up the process, I used Tiled for map creation and wrote custom Python code to convert its output into a format my game engine could use.
Testing on hardware revealed some critical bugs and performance issues, which I tackled by implementing dirty rectangle optimization. In the end, I had a functional, efficient sprite system with physics and tilemap integration, setting the foundation for designing and building the actual game. There's still plenty of work ahead, but the core of the engine is now in place.
Find me Online
==============
ncot.uk
Support The Channel!
====================
Thanks a lot for watching this video! If you're not a subscriber, consider becoming one!
If you want to support what I do, consider the links below.
paypal.me/NCOTTechnology
ko-fi.com/ncot_tech
liberapay.com/NCOT_Technology/donate
patreon.com/ncot_tech
Hashtag Soup
============
#programming #agonlight #cprogramming #retrocomputer #linux #gamedev #c
I decided to let the sprite system handle everything-deciding when to call the physics code or resolve collisions with the tilemap. After a few false starts and bugs, I managed to get everything working smoothly. To speed up the process, I used Tiled for map creation and wrote custom Python code to convert its output into a format my game engine could use.
Testing on hardware revealed some critical bugs and performance issues, which I tackled by implementing dirty rectangle optimization. In the end, I had a functional, efficient sprite system with physics and tilemap integration, setting the foundation for designing and building the actual game. There's still plenty of work ahead, but the core of the engine is now in place.
Find me Online
==============
ncot.uk
Support The Channel!
====================
Thanks a lot for watching this video! If you're not a subscriber, consider becoming one!
If you want to support what I do, consider the links below.
paypal.me/NCOTTechnology
ko-fi.com/ncot_tech
liberapay.com/NCOT_Technology/donate
patreon.com/ncot_tech
Hashtag Soup
============
#programming #agonlight #cprogramming #retrocomputer #linux #gamedev #c
มุมมอง: 5 504
วีดีโอ
2D physics game programming in C, retro style | Gamedev the hard way #2
มุมมอง 7K2 หลายเดือนก่อน
Join me on a journey as I attempt to write a game for my Agon Light using nothing but raw C programming. In this second episode I figure out how to make a very basic 2D rigid body physics system work. It doesn't matter if you don't have an Agon Light, I'm bringing you along for the ride. We'll be looking at how games deal with the objects they manipulate, and how to detect and resolve collision...
Writing a game the hard way - from scratch using C. #1
มุมมอง 177K3 หลายเดือนก่อน
Join me on a journey as I attempt to write a game for my Agon Light using nothing but raw C programming. In this first episode I figure out what kind of game to make, look at some shareware games of the past and get a basic game engine working, using nothing but C code - no external game engines or modern development tools. It doesn't matter if you don't have an Agon Light, I'm bringing you alo...
Stealing the secrets of the NES - Agon Light Tilemaps in C
มุมมอง 2.5K5 หลายเดือนก่อน
Support the channel: ncot.uk/support Github: github.com/ncot-tech/agon-graphics In this video, I explore how early computers used clever tricks to create moving graphics, focusing on how Nintendo developed tile-based games on the NES. Using these techniques, I built a scrolling tilemap system for the Agon Light using C. We start with a quick look at the evolution of game graphics, from text-bas...
Programming Bitmap Graphics - Agon Light using C
มุมมอง 2.1K6 หลายเดือนก่อน
Get the code: github.com/ncot-tech/agon-graphics Support the channel: ncot.uk/support Visit the website: ncot.uk In this video I look at how you can program the Agon Light to display bitmap images using C. I go through how to convert a PNG image into an RGB2222 format bitmap image, and then use the C library functions to load that into the Agon Light, and the VPD commands necessary to display t...
Programming Windows Screensavers - Agon Light Graphics Programming
มุมมอง 7K6 หลายเดือนก่อน
Support the Channel - ncot.uk/support Get the code for this episode - github.com/ncot-tech/agon-graphics I'm learning how to program the Agon Light, and as a project thought it'd be fun to try and program two of the classic Windows 3.11 screensavers - Mystify and Starfield Simulation. My aim is not to simply program the Agon Light by cloning the Windows 3.11 screensavers, but to learn how to pr...
Programming Language Easter Eggs
มุมมอง 1.5K7 หลายเดือนก่อน
Easter eggs are usually hidden inside our games and software, but did you know there are some hidden inside the tools and languages used to make that software? Come with me on a fun Easter diversion while we eat our bodyweight in chocolate, and look at six programming Easter Eggs. Some of these are from the Python programming language. It seems they had a lot of fun making the language itself a...
Calculating Pi using Python - Gauss-Legendre and Monte Carlo methods - #piday 2024
มุมมอง 6518 หลายเดือนก่อน
Let's celebrate #piday in this appropriately short video by writing some #python programs to calculate Pi. The first method uses something called the Gauss-Legendre method. It works by iteratively refining an approximation of Pi, generating the answer digit by digit. When writing code to calculate Pi we run into issues trying to store the calculated value. A floating point or double precision f...
Agon Light 2 - C Programming, Better Keyboard Routines, Joystick Ports
มุมมอง 3.2K8 หลายเดือนก่อน
Dive into the exciting world of DIY hardware hacking. Join in as I explore joystick integration, keyboard inputs, and serial debugging using the versatile Agon Light platform. Delve into the technical intricacies of GPIO pins, assembly language programming, and C compiler usage for low-level development. Discover the power of computational thinking, boolean logic, and UART serial communication ...
Cellular Automata - Simulate life from chaos and code
มุมมอง 1.2K9 หลายเดือนก่อน
Today, we're diving into the world of cellular automata. A digital playground of sorts where simple rules lead to astonishing complexity. where order can arise from chaos and collapse back into chaos just as quickly. First we have a look at One Dimensional Cellular Automata which were originally conceived by John Von Neumann in the 1950s. These cellular automata operate on a grid of cells, usin...
Agon Light C Programming - An Introduction
มุมมอง 4.2K10 หลายเดือนก่อน
Instead of bashing away in BASIC, it's possible to do some coding in C on the Agon Light. Let's find out how in this introduction to an ongoing series where I figure out the Agon hardware and work on a game. I have no idea what game I want to make, and I'm not entirely sure how to achieve some of the necessary functions, but it'll be fun figuring it out and I hope you come along for the ride! T...
The Dark Art of Programming - Writing Cursed Code
มุมมอง 2.6Kปีที่แล้ว
It's Halloween, programming is an art form and there's a darker side to it. Come with me in this fun video as I explore several languages that hate you and are trying to make your life difficult, before we go off down the rabbit hole and find some truly horrific examples of real programming. There's languages that are hard to read, languages that are deliberately hard to understand with nonsens...
FORTH - Better than BASIC?
มุมมอง 41Kปีที่แล้ว
Let's look at FORTH, the obscure stack based programming language that nobody seems to use. Or do they? After getting an Agon Light Z80 computer and discovering it can do things other than run BBC BASIC I went looking at other programs to run on it. I came across Agon-Forth and that got me thinking. What's the point of FORTH, why's it barely used and is it really as awkward and strange as it ap...
Sinclair BASIC vs BBC BASIC - How to fit an entire devkit inside 64K
มุมมอง 13Kปีที่แล้ว
Sinclair BASIC vs BBC BASIC - How to fit an entire devkit inside 64K
The Computer Timeline: Calculators, Maths and Reverse Polish Notation
มุมมอง 1.3Kปีที่แล้ว
The Computer Timeline: Calculators, Maths and Reverse Polish Notation
How the 1880 Census Led to the Invention of the Computer
มุมมอง 497ปีที่แล้ว
How the 1880 Census Led to the Invention of the Computer
DIY Solar PV Installation - Can it save me money?
มุมมอง 520ปีที่แล้ว
DIY Solar PV Installation - Can it save me money?
Hacking Your Way to a Smarter Home: Integrating Smart Sockets with Home Assistant
มุมมอง 2.5Kปีที่แล้ว
Hacking Your Way to a Smarter Home: Integrating Smart Sockets with Home Assistant
BBC BASIC in RiscOS on a Raspberry Pi is really cool!
มุมมอง 15Kปีที่แล้ว
BBC BASIC in RiscOS on a Raspberry Pi is really cool!
Samsung SDP-860 Document Presenter Thing [VLOG 1]
มุมมอง 566ปีที่แล้ว
Samsung SDP-860 Document Presenter Thing [VLOG 1]
The £3,000 brick phone - mobile phones in the 1980s
มุมมอง 9852 ปีที่แล้ว
The £3,000 brick phone - mobile phones in the 1980s
DMA - Direct Memory Access on the ZX Spectrum Next
มุมมอง 1.3K2 ปีที่แล้ว
DMA - Direct Memory Access on the ZX Spectrum Next
Clever engineering on a budget - ZX Spectrum Interrupts
มุมมอง 10K2 ปีที่แล้ว
Clever engineering on a budget - ZX Spectrum Interrupts
Breaking the 64k barrier - Spectrum Memory Banking
มุมมอง 7K2 ปีที่แล้ว
Breaking the 64k barrier - Spectrum Memory Banking
How 8bit computers work - interrupts, memory and DMA | Computing Fundamentals
มุมมอง 5K2 ปีที่แล้ว
How 8bit computers work - interrupts, memory and DMA | Computing Fundamentals
Programming Vlog 0x04 - Reinventing the wheel
มุมมอง 5722 ปีที่แล้ว
Programming Vlog 0x04 - Reinventing the wheel
QUESTION: can you demonstrate the process of this game’s game design doc, prior to writing code? You do deliver it verbally but I have noticed the most missing piece of almost every tutorial- throughout TH-cam, is showing how to first walk through steps, of writing the program design - the so called rough draft.
I missed out on LOGO... I'd dismissed it as "just for kids"... I've head people talking recently about how it's a pure functional language... I could have been "2020 cutting edge" all the way back in the 1980s. The weird characters are ONLY in `MODE 7` - Teletext doesn't use quite the same ASCII as everybody else's ASCII. Programming was a bit weird for me. Back, just before The Beeb came out, we had a computer studies class and most things were done on the blackboard and copying out chunks of textbooks and it was AS BORING AS HELL. Then I got hold of our school computer's manual and started to stay late at school just "mucking around with BASIC" and, almost like magic, I just "got it" and, overnight, became the 1980's kids equivalent of a "leet hacker"... This is quite a stereotypical tale of a dyslexic kid not fitting in to the educational system - even though I didn't know I was dyslexic back then. I've spent most of the intervening 40+ years permanently glued to a computer keyboard. Other kids would want to know what games each computer had, I wanted to know if it had any interesting programming languages... I loved my Jupiter Ace!
As a massive BBC Micro fan back in the day, I always regret never even using an Archimedes. Ooooh... we didn't have all this `RECTANGLE` and `RECTANGLE FILL` milarkey on The Beeb... we had `MOVE` and `DRAW` for lines and `PLOT 85` for filled triangles and that was about it. The BBC BASIC assembler was (and still is, I think) the best assembler I've ever used. I'm working on an assembler for AVR at the moment that I'm trying to make as fab and groovy (will, it be? ... who knows)... ... ... But, anyway, It did leave me with a pang of nostalgia (even at such a young age) for hand-assembling Z80 assembly language with a pencil and paper and typing the hex into our school's Research Machines 380Z.
In 1986 we used FORTH in our University Electronic Music class. We used 'Words' to control VCAs & VCOs to create sequencers / recorders for: Moog, Arp and Buchla synths, that we stored on 8" floppies. - THANK YOU FOR THE VIDEO !
Those screen savers were so ugly but when I was a kid, the 2000's, they were mesmerizing, those pipes went go on and on, but they went nowhere
Seeing the llamatron splash screen triggered some locked childhood memory lmao
20:10 I came to watch some C code, stayed for the shirt
not from scratch , you use an initial project / template
@@munha666 yes, that I made myself.
where can i buy your shirt?
@@dziuaftermidnight I think they came from somewhere like Shein.
Great video series, I've been playing around with something similar. If it helps, you mentioned the delta time and not being able to figure that out - here's the code I use for that, assuming you have access to <time.h> for your Acon board then there is a clock() function that returns the number of clock ticks since the program started, on GNU it returns the milliseconds as a long. You need 3 global variables: time_this_frame, time_last_frame, and delta_time. Then in the game loop, set time_last_frame to time_this_frame, time_this_frame to clock(), and delta_time to time_this_frame - time_last_frame. That's the simplest way I've been able to figure out how to deal with timing each frame. Hope it helps, cheers!
Great videos, if you also include bare metal raspberry pi programming I’m watching that too.
Inspiring stuff, must get my Agon Light 2 setup again and try some of this stuff. Many Thanks
being as old as I am, i remember having to go to the library and find books on coding tricks and things when I was like 10. When I was a wee lad, probably about the same age, I coded a rudimentary pac-man clone in C++ and every step strengthened my skill as a coder because I had to actually work out every bit myself, for the most part. Nowadays I've bumped into quite a few gamedev folks who simply cannot work out a problem if there's not a tutorial on youtube to help out. So I look at my hardcore no-internet up-bringing as a blessing. That said, I do love having an actual game engine built by others these days.
Love it! A few minutes in, I was thinking "Yep, I'll join you coding!" ;) What is the background music?
I adored Perl! I am missing MUMPS, that was a scary language too :)
Just last week I wrote a partial forth interpreter in a few 100 lines in Zig on my c h a n n e l. With some nice demoes of print colours, a resistor calculator and a 16 bit on screen knightrider scanner. So the ultimate primer for programmers wanting to learn Forth My interpreter being stuck on a modern OS doesn’t actually compile to jmp statements to other immediate words it just reinterprets them. Doing self modifying code on protected operating systems is a bit of a faf these days especially since it’s also all virtual addressing too. It’s definitely possible but not trivial like it was on systems without an OS. And for the purpose of embedded controlling system even the reinterpretation is fast enough. And WASM is a stack based system very much akin to forth as is BitCoin back end.
Nice shirt, bro! Love your tutorials!
On my channel there’s tons of old programming stuff and also new lowlevel stuff (ARM64) and zig. And gems like Forth.
Watching because - overall process is interesting, good fun facts here and there, and; oh - I saw something shiny and got distracted.
Open Firmware is a Forth.
"We don't call these problems, we call them design constraints" That cracked me up.
Heh, i made port of my Mega65 game to C64 with C. It was fun excercise.
The link to your website in the video description is down, do you have a different link for the same post or info?
You can just check if player is colliding with a wall type tile just before the physics runs and if so disable physics?
This is an amazing effort. Well done. Use the right tool for the right job, I agree with you completely. This is not the project to do in assembler. Adding python in where it makes sense is a perfect choice. Python is well equipped for handling data and XML is data. I love 6502 assembler by the way, was my first language. This is quite the labor of love. Good for you. Don't listen to any naysayers 👍🏼
Just a thought. Make your rooms different sizes.
Great to see the game coming along, but sadly I've no Agon light (yet) to follow along with. Looking forward to some x86 / vga assembly stuff that i can play with in Virtual Box :) Thanks for the videos!
A great video! Questions I have: - You did notice that your tilemap was slow, but how did you know "Why" it was slow? I find the investigation of such things interesting - You did mention that you're using dimensions as a physics, while it does work, why haven't you for example baked the collisions into convex shapes and just load them with your engine, now I know doing it with the console real-time is slow, but your levels are static, so why not writing a python script for it? it seems way more robust to me as even with bullets and such, these won't be an issue
SOO you asked why we are here. I have no interest in the Agon; except it's an interesting platform to see you work on. I am here for the C, although I use C# as my go to language. (Didn't even know how to spell Agon.) Although some Pi and other things MIGHT be fun to mess around with personally. I love your style and comments very umm nice explanations a lot of the time. I imagine, and NOT sure I would do it, but I made a Zelda clone on basic, back in the day. Maybe I should revisit that. IF I had the time, money to do it. I always wanted to do a Text based game again. I have a small one in C# core, should revisit that. Then you got to build all the tools to even make a game hehe. I would suggest next time you're doing the Agon hardware. If you could show your debug screen. I imagine it still refreshes weird as it clears the screen each frame. You might put in a second or two of delay to let your eyes adjust while it goes to a low flicker. Some tinkering might get it to a reasonable state. I would be interested in a one-off tutorial, for your basic setup, for python, agon and c setup. Getting a working platform is always the REAL challenge for me. I mean a step-by-step guide. You explained your sprite and tools, but missing some of the connection bits. (AND if you take on a new challenge, seeing a tutorial for that would rock.) SUCH as I have an arcade machine that does blah. I need to take the C to a rom module and install it in the cabinet like this. (As an outrageous example.) Keep up the great work. I am not suggesting PI but would be interested in whatever you had in mind.
I hug from Brazil!
Coding with hardware limitations is fun! I have a version of asteroids running on an 32x24 LED matrix, Red ONLY and it looks terrible! Terribly fun to code though. Written in python. Also, TILED is a great tool for game dev. I've used it on other projects
I like watching for aspirational reasons.
I like the z88dk dev kit :)
I watch these videos, because I’m a nerd who collects old tech, and I want to make it more fun
I found your videos when i was looking at the rc2014; really liked your presentation style so I stuck around. Have you considered a neo6502 for when you are ready to jump into asm; similar product to the agon but has a real 6502 instead of a ez80 microcontroller larping as a cpu
Thank you for not making "One of those videos" ! And I have to agree, I've been messing with C strings for a while on my current project, it's ... something.
I watch these videos because I like to pretend I understand what low level programming is. Or programming in general, really. I'd like to see you doing that DOS 3D thing you were talking about. It would give me nostalgia, I think
I like the idea of you writing DOS based gaming stuff, and having people shouting at you to fix things..is also engagement!. Also doing stuff on the Raspberry PI, expecially if it's unusual stuff on the Rasberry PI rather than the usual turning on a LED etc. I think I spotted your deliberate mistake in the code. I'll send you my internet driving licence so you can endorse it with my 100 internet points and you can advise me on the monetary fines that have to be paid and what mandated video punishment I need to sit though to atone for my careless observation that allowed me to fall into your trap there ...! ;)
I enjoy watching programming videos ("low" as venizz5112 said, I hate webdev), and specifically for yours, what hurdles you hit and how you circumvent them.
"For the shits and giggles" no better reason to give anything a crack
I'm watching this kinds of video's to see how other developers work and think. And dreaming of creating a big game one day. But I'm guessing, that that will take another 20 years :)
I love low level programming. I was working on a megadrive game a while ago. Also, you are very entertaining to watch. Half the time I don't know if you have an amazing dead pan humor or you're just unintentionally funny. Regardless, it's a lot of fun!
I'm watching your video because I'm interested in how you are making this game on a limited system. I'm building my own limited system so this is very interesting for me.
I'm just here for the shits and giggles, learning something new comes second but is certainly part of the experience. Really though, I'm here because its not a typical "gamedev" series and the way you're willing and able to talk to me like I'm there pair programming with you, bouncing ideas off each other and coming up with a solution. Since I can't speak back realtime, I suppose I'm the rubber ducky in this relationship. 🦆🦆
About your flash drive. Does the Agon support network drives for booting or loading an HDD? You should then be able to connect via eth between the two (crossovers are usually not needed anymore these days) if you want to keep it off the main network. You may also have some luck connecting via USB-C if the Agon supports thunderbolt 3 or some other protocol that allows for USB-C negotiation.
Low level coding, game programming, fashion influencer, and very funny. What's not to love?
LOVE this idea! 🎉
I love your fashion sense sir.
Youre cool man
Nice to see your code examples, it may help the viewers if you add in some extra comments to explain what small blocks of code do, you know what the code does but viewers may not find it easy to decipher. I have been programming since I was at school and I'm now 65! My first experience of assembler programming was on a Science of Cambridge Mk 14. It was a small single board computer with a small led display and a hex input keyboard. Programs had to be loaded into memory, by hand, each time you switched it on! You had two work out the assembler you needed on sheets of paper and then allocate the appropriate hex values to match the assembler mnemonics. Then type them in through the hex keyboard and finally run the program. A very small program could take hours to hand assemble and enter. Pure torture! But back in those days very exciting. Your game task is very interesting so I am looking forward to the next installment.
I'm watching your videos because I love "low" level programming languages and game dev. I've tried to get into game dev multiple times with Unity and failed. I think it was because I felt like I was learning Unity too much, and not feeling like I could get much coding done. I saw your first episode of this series, and it 100% made me realize I could just code a game in C++. Huge props for your videos for inspiring me to attempt game dev in C++.