Diary of an inept yaroze programmer logo

[BACK TO HOME PAGE]

It seems that it's the done thing to put some details down about myself so here's mine. My name is Scott Ward and I'm twenty years old, this may shock some as my ineptness at coding probably leads you to believe I'm about twelve. I live near Wakefield in West Yorkshire and, for a living, I stand in a queue every two weeks and sign a piece of paper. This should tide me over until I go to Leeds Metropolitan University in September to study Software Engineering. You already know that I'm pap at Yaroze programming so there's no more to tell. That's all folks.

Any comments? E-mail me at scott.ward6@virgin.net

 

13/6/99

Not too much to moan about this week. Things are looking up for my helicopter game, I re-wrote most of the code over the last week so nothing much has changed but my programming in general is getting better. I'm still having a bit of bother with the lines intersection function but it's looking promising due to me creating a whole new section of code which is much better. Also I finally got some help, a very nice fellow Yaroze member has provided me with some much needed assistance. He sent me a formula that calculates intersection points which, although I've not got it working right for some reason, should be the break I've been looking for. Hats off to helpful Yaroze members! :o) (kick in the nuts to unhelpful Yaroze members). So, that said, progress is slow but my helicopter game should finally start taking some shape. I'll try to get some screenshots for anyone who's bothered but for someone with my coding talents it may take a while. While I'm on the subject of my helicopter game I was wondering where everyone gets there sound effects from. Ideally, there'll be a big website somewhere that has many samples to download (well, you never know). I guess I'll need to start building a catelogue of sound effects for future projects so if anyone can help me with this please let me know. The only bad thing with my helicopter game is the development time, I was hoping it would be finished in a few weeks but I soon learned how much work goes into these things. Especially when I'm hitting problems with everything I try. I really want to crack on now and get something finished so I can prove to people that I didn't waste shit loads of cash buying a Net Yaroze. Unfortunately, it's getting into summer and most of my pals from University are coming home so it's a toss up between spending all day getting eye strain or going out and partaking in some much needed socialising. Hmmmm....tough choice. But like all the best development houses the release date for my game just keeps getting pushed back, you see, I am just the professionals after all. Speaking of which, does anyone know when 'Driver' is coming out?

6/6/99

As usual I've come across a number of problems over the last week but there's one that's really got me puzzled. I seem to be having some bother with a pointer or two. To start with, if anyone's ever had any bother when declaring pointers to the GsSPRITE structure let me know. When initialising a sprite I send a GsSPRITE pointer to a function which initialises the structure elements with the arguments that are sent to the function. As far as I can tell everything is set up right and in the beginning it all works fine. However, whenever I try to add another pointer it appears to be over-writing the values.
For example, say I declare a sprite pointer as so - GsSPRITE *picture;
I then send it to a function which recieves the structure values and then initialises the GsSPRITE structure with said values.
Like so - void InitSprite(GsSPRITE *picture,0,320,256.........and so on)
As far as I know if you pass the pointer address to a function then the values can be changed and will remain so even when the program exits from the function. Is this wrong?! At first I thought that something might be wrong with the function but it even happens if I try to initiate a pointer to a GsBG structure. As soon as I start to use another pointer then the graphics of the first sprite pointer get all messed up. Am I missing something to do with pointers to structures? This is really confusing me so if anyone can help me with this I'd be most grateful. Oh well, we live and learn. I know this weeks diary has been crap but it's getting late and I want a cup of tea so I'm keeping it brief. See ya.

30/5/99

If you've noticed a touch of cynicism about this weeks updates it's probably because I've had an absolute mare of a week. As most of you will know I've been working on a helicopter game, a very adventurous project as far as my programming skills go. Anyway, I've spent the last two weeks working on a function that detects the intersection co-ordinates between two lines of differing length's and gradients. If it sounds easy to you I suggest you go try it. At first I got a working version but the accuracy was shite so I rearranged it using different methods and techniques. I worked my balls off getting it ready only to find that even though the accuracy was much better (thanks to Harvey Cotton by the way) it wasn't good enough to do what I intended it to do. I won't go into details but to put it lightly I worked at something for two weeks breaking many personal coding boundaries only to find that I may aswell have shit in a bucket for all the good it did. Much swearing ensued, I can tell you. It took a while but I've managed to suppress my anger and slowly begin a working relationship with my Yaroze again. Over the weekend I took a break from it all, bought some CD's, got some new bits for my drum kit and got very drunk in the evening. Needless to say it made me feel much better and work resumes on my helicopter game. It took all today just to clear up my code and re-do most of the basic stuff but I'm up and running again. Although I'm not ready to start work on the major collision detection yet I thought now would be a good time to beg for help on this subject. On the Sony FAQ it mentions a technique of collision detection where you load graphics into memory and then test using bitwise operators. Sounds good to me but I'd love for someone to give me a few pointers on how to do this. So if you know how this is done please give me a break and get in touch. The faster you all provide support the faster I'll get this damned game finished. There are some good things that come from my coding misery. As mentioned before, I have pushed back many personal coding boundaries over the last week or so which has left me a much better programmer if nothing else. The second good thing is that it has forced me to simplify the game so progress should be much more rapid now. The finished game won't be as good as intended but I'll just have to put that down to my own coding naivety. I'm off now to eat. Bye.

23/5/99

The reason why nothing new's appeared on the website for a while is the fact that I've been dedicating much of my time to my helicopter game. Unfortunately, the results of my time spent programming are quite pathetic. For instance, the helicopter in the game boasts an adjustable gun which can shoot at different angles, couple this with a complex ground surface made of differing levels and trees, walls, etc and it requires some nifty formulas to calculate where the bullets are actually hitting. I wouldn't recommend trying to do this but if anyone is struggling with this method I now have a host of ideas. Anyway, after some serious study, much working out on paper and general exaustion of the brain cells I came up with a rather clever solution. At least I thought it was a clever solution until I put it into practise. It 'kind of' works, in the way that females can 'kind of' play football, to be honest the results are that inaccurate that they appear not to work half of the time. Why? Floating points, that's why! I can always remember reading somewhere that the Playstation doesn't support floating points, I can't remember where or who it was that said it but this has always stuck in the back of my mind. Hell, I don't even know if it's true! When I set up header files of sin[] values for example I tend to multiply by say a hundred, this is then stored in an integer variable. This works aslong you remember to divide the answer by a hundred when used in a formula. However, when applied to large scaled formulas it's about as accurate as a blind archer. Never mind, hope is still at hand. I've been messing round with more formulas to improve accuracy but today I've been looking through the library reference guide and I've seen structures containing 'double' variables. Could this be true! They may take up shit loads of memory but they're extremely accurate, hopefully, I'll be able to utilise 'doubles' to realise my wonderful dream. I know, I should have checked all this out before but it just wouldn't be my style unless I was screwing up all over the place. So, even though I'm completely useless I'm still in good spirits. Let's face it, you can only be angry with your ineptness for so long before it just gets plain amusing. Isn't programming great! Bye...

16/5/99

Damn and blast this collision detection nonsense! Just as I was getting some joy from my helicopter game I had to dabble in the ways of collision detection. I understand how it's done, that's not the problem. If you're dealing with boxes then it's quick and easy but as soon as you try to use oddly shaped sprites and stuff things get a bit stupid. I've been looking in the Sony FAQ trying to find some clues on good collision detection but I came up with nothing solid. Sure, they tell you what methods can be used but they don't tell you how to do it. C'mon fellas, if I knew how to do it already I wouldn't be looking on the Sony FAQ would I? I think I'll have a go at drawing in the main memory and using bitwise operators to check for collisions, sounds clever to me but how is it done? I know how to use the StoreImage functions and I know how to use bitwise operators but how exactly do you use this for collision detection? If anyone can give me any help on this I'd be MOST grateful. We've all got to learn somewhere. Apart from the collision detection stuff the helicopter game was starting to take a bit of shape, however, for this project I think I may have bitten off a little more than I can chew. I'm gonna keep on battling with it for now but I think I'll start a new project to work on aswell as my helicopter game. Seen as I'm only a beginner to this programming business I'll set my sights much lower and knock out a quick cheesy space invader game or something, anything with easier collision detection just so I can get a taste for the different aspects of a video game. Despite my problems with collision detection my appetite for creating games has only strengthened so hopefully it won't be too long before I create something with a bit of quality. Oh yeah, I found that screenshot program on the Sony site so if I can be arsed I'll see about popping some screenshots on my projects page. They won't look any good but it'll brighten the website up a little. My main objective now is to get my learning curve going again, I'll probably work on a few smaller programs to test a few things out. Don't be scared if I start 'e-mail stalking' a few of you, it'll just be me on the everlasting quest of programming knowledge.

9/5/99

Unfortunately, I've noticed that over the last week or two my learning curve has flattened a great deal. When I first started on the Yaroze I was learning new stuff by the bucket load. Now, I seem to be learning more about my paint package than the Yaroze. The same is apparent with my website, at first I had support from the masses and now it's all slowed to a trickle. I guess I'll just have to settle into a routine of steady progress, working on my first game would help me a great deal if I could build up the enthuiasm to get cracking on it. The problem being that I'd love to work on an advanced project, maybe something in 3D, but this will never be a reality until I learn the basics. Also, I've been considering starting a joint project up but I don't think you're taken that seriously until you have some kind of finished project under your belt. This is fully understandable, if you're going to put the time and effort into a project you need to know that your partners have the ability to do the same. It seems that my next step is to get a rough project finished, of any calibre. Whether it's good or crap I need to prove to people, myself included, that I have the dedication to carry a project through to the end. Most of my problems now come from general coding inexperience, not from the Yaroze itself. I seem to use all the Yaroze functions okay, it's just getting them to do stuff in a certain way that troubles me. For example, in my helicopter game I've got the Yaroze to display the helicopter and a background, I can also read directions from the controllers but the problem lies in me working the code out so things react in a way that I want them to. Like getting the helicopter to move with some inertia. I guess these problems can only be solved through experience and building up a mental repertoire of routines that you can use over and over again. Another reason why I need to get this first game over and done with. Best get to work then...

2/5/99

I'm still plodding on with my helicopter game but unfortunately not much progress has been made, the times I've been arsed to do anything I've spent it on messing with stuff on my website. I've got a rough background done which consists of some sky and some scrolling grass....lovely. At the moment though my grass background has messed up slightly and there's bits where the wrong cells are displayed. As far as I know all info I've put in's right, if anyone else has had similar problems with backgrounds give us an e-mail or just sit at home laughing at my misfortune. Anyway, I'm currently trying to get the helicopter to move with some momentum and inertia instead of uniform speeds in eight directions. Again, I'm not really having much success, I've had rough versions working but it doesn't look as good as I'd like it to so I'll keep struggling on. I even went out and spent far too much money on a maths book, I'm going to be dealing with angles and stuff soon so I thought I'd best swat up on my trigonometry, it's got some stuff in about 3D vector maths aswell although I think it might be a while before I have to go into that. As yet, I've still not delved into the world of collision detection so I'm looking forward to that like a nail through a bollock. I've seen some sample code dealing with actual boxes that looks easy enough but to get accurate collision detection on detailed objects I've got a feeling it's going to be much harder, I would love for someone to tell me it's easy though. Feel free to set my mind at ease. Is it just me or does anyone else feel like they're facing a deadline with this whole Playstation 2 business? As a games player I'm thrilled at the prospect of the games that will become available from a machine with that much power but, as a member of the Yaroze scheme, things are a little different. I don't know why but I feel a little pressured now to learn faster so I don't get left behind in the ensuing surge of super games consoles. I'm barely getting the hang of the Yaroze, I can't imagine the skill level it'll take to fully utilise a machine of such power. I'm sure there's professional coders out there who are a little unnerved by the power that they will have at their fingertips. Lets hope that a Yaroze 2 is released to make the transgression easier. Well, that's my ranting over with now, saves money on a shrink. Bye for now.

25/4/99

It's been a busy week for me in the land of Yaroze. Success after success has left me feeling like child at christmas. Last week I was just getting my head round those padbuffers, hah!, a thing of the past. This week I've managed to fully get to grips with sprites, rotation, scaling, moving, transparency, the lot. I set about trying to do backgrounds and within a day I'd kicked it's arse, I even got a cool old skool parallex scrolling effect working. In fact, the only problems I have encountered was when I tried writing a program which used some basic physics. Instead of moving a sprite by adding and subtracting x and y variables I tried to move a sprite by rotating it with the joypad and then moving it in whichever direction it was facing. High school maths lessons came flooding back. To be honest though, when it comes to puzzle solving this is probably the area where I'm not actually that inept, I did manage to get a rough version working with some pretty good momentum. However, it wasn't as accurate as I'd like. There was always something in the back of my mind that was saying I should be using trigonometry, sine, cosine and all that business. Unfortunately, the day I left school, my brain seemed to blank my entire education from memory and I'll be damned if I can remember any of it. I'll just have to buy a 'Maths For Muppets...' book or wait about a year until my little brother covers it in school. I've finally decided to start my first Yaroze game, I've been writing that many little testing programs I'd have probably had a game by now if I could stick them all together. For my game I'll have to master collision detection, I was quite shocked to realise that the Yaroze doesn't have any dedicated hardware to deal with this. As a games machine you'd think that there'd be some kind of chip somewhere to give you pixel accurate collision detection at the touch of a button, wouldn't you. Wouldn't you? Oh, must just be me then....By the way, does anyone know where to get 'Space Dust' from nowadays? It's the stuff that you could used to buy that crackled and popped in your mouth, the last I'd heard it had been taken off the shelves for being a little too explosive in the mouth. I'm trying to track some down so if anyone knows of anywhere in the world that still sells it let me know. Cheers.

 

18/4/99

Last weeks desperate plea for help, with a cash prize as an incentive, worked a treat! I think everyone saw the funny side of it, all those who replied actually turned down the cash. How humble, it brought a tear to my eye. Anyway, after sifting through the replies I now fully understand how it all works, thanks to all involved. I spent all yesterday messing about with the Yaroze and came up with alot of stuff that actually works. I wrote my own peripheral header file so I no longer have to bother with the 'return (~(*(bb0+3) | ...blah blah' thing again, it's crap and it only deals with the standard controller in port 1 but it works so I couldn't give a toss. It'll give me something to work on in the future. But best of all was when I combined my wealth of knowledge (snigger) to create a program which displays a helicoper sprite and gives the user the ability to move it about the screen with the joypad. FANTASTIC!!!!! The trials and tribulations of Yaroze programming eh? Oh yeah, I sorted out my problem with the FntPrint() function aswell. Just a note to anybody else who's experiencing bother with displaying integer variables, use '%d' to declare an integer variable, not '%i'. As usual, I found out the hard way, the yaroze won't accept '%i'. Arse! I say. So, what's next for me? I'm not sure really, I was thinking about maybe messing about with the background handlers but I think my enthuiasm's getting the better of me. For now, I'm going to experiment a bit more with sprites, see how I can manipulate my helicopter and perhaps play about with momentum formula's. It's about time I found out how to show my sprites background as transparent aswell, at the moment the green helicopter floats around in a white box. I'll have to look into this. 'Til next time, see ya.

 

12/4/99

Just when I thought I was on a roll with this Yaroze business my progress has fallen flat on it's arse. Over the last week I've managed to display a sprite and mess around a bit more with the font functions. In fact, if I'd written this diary extract a couple of days ago it would have the air of giddiness and confidence about it that I was feeling at that time. HOWEVER, when it came to trying to understand these bleeding padbuffers I've hit another wall. I thought that the next step to take in my education of the Net Yaroze would be to understand how to read the joypads; I'm sure anyone can copy the header files and stick the right lines here and there but there seems to be a defect in my personality that drives me to want to understand how everything works. I just can't help it goddamn it. I know what to put in to get things to work but, like a four year child enquiring about 'making babies', I keep repeating the question 'yeah, but how?!'. I'm sorry but I need to know how and why this works - 'return (~(*(bb0+3) | *(bb0+2) <<8 | *(bb1+3) <<16 | *(bb1+2) <<24));' For the love of God, can anyone explain? In fact, if anyone can actually explain this to me in detail so I understand I'll send them five English pounds, that's a whole 5 pounds sterling!!!! I'm not joking neither, you answer the question and I'll send the cash. Oh yeah, but you'll have to trust me with your address. Anyone man enough to pick up the gauntlet? I beg anyone to help, my usual Net Yaroze session now consists of me scratching my head as I read through the manuals and Sony tutorials, spitting at the computer and then going outside for a game of footy, I'd really like to progress but I fear I can't do this until I receive some assistance.

 

3/4/99

April brings upon success for me on the Net Yaroze! Due to the problems I was facing on my Yaroze I decided to start from the beginning again and give myself an easy task to perform.This task being the most basic of all, getting the Yaroze to display a blank screen, that's it, a blank screen. Nothing else. You may laugh but to someone who doesn't 'get' the basic ordering tables, packets thing then a blank screen is no easier than a full game. I know, I was going to try and display a sprite on screen but what's the point in clogging my brain with other things when all I want to learn is the basic workings of the Yaroze. Slowly but surely I worked my way through the manuals, references and tutorials and, slowly but surely, it began to make a little sense to me. The results were the most basic 'skeleton' code but after finding 'GsSortClear()' it functioned as planned. I never thought a blank screen would bring so much pleasure. After making the screen go different colours by altering the r,g,b values in the 'GsSortClear()' function I realised that the program was working as it should. This may seem extremely trivial but unless you've experienced the helplessness of not having a clue about the Net Yaroze system then you won't understand the adulation of getting anything to work. Granted, there are still a few bits that puzzle me but for the sake of my sanity I'll just let them be for now. For my next trick, I'll try to put some text on my amazing blank screen and after that, I may just try putting a sprite there too. For now though I'll just sit here looking at my blank screen with a smug grin on my face. Mmmmmmm....Isn't life good.

 

27/3/99

Well, what can I say. Having only owned my Net Yaroze for the last few weeks I still struggle to grasp the fundamentals. I've had more fun learning HTML and building this website over the last few days. However, all is not lost. As I launch this website onto the members home page section I can feel a renewed enthuiasm to create something on my little black box. It's not that I'm a terrible programmer, I'm not the best by far but I absorbed C code pretty well, never had a problem with DOS and I did code a couple of tacky games on AMOS, for the Amiga, which kind of resembled BASIC. Nor do I have a problem understanding the Yaroze hardware, it took me a while to get my head around these bloody PACKETS but this is not what is giving me the problems. As a programmer I've never been happy with taking things for granted, I'm not happy moving on to the next stage if I don't fully grasp what it is I've just been typing into the keyboard. I've read tutorials on this and that and at some point they always reach a stage when they just require you to take something for granted. Take these ordering tables for example, in essence I fully understand how they work and what their purpose is. What I don't understand is the way in which they are set up, I'm not sure anybody else does either because every tutorial that is written tells you to take this part for granted. Does anyone know why in this line "GsOT_TAG..........OTTags[2][1<<OT_LENGTH]" does the bit value of OT_LENGTH shift to the left one place? Things like this drive me mad. However, I have finally decided to go with the flow and overlook such things in the hope that one day, when I become more experienced, it will just come to me like a flash of light. I doubt it. For now though, I have given myself a task to get the Yaroze to display a single sprite on the screen. You may laugh but to me this is quite a task as I hope to actually understand how I got it there.

 

[BACK TO TOP]