Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

22 Excellent

About MLdB

  • Rank
    Star Raider

Profile Information

  • Gender
  • Location

Recent Profile Visitors

4,430 profile views
  1. Essentially it's doing a long division, shifting the most significant bits of the dividend through the carry into the accumulator until the latter is bigger than the divisor. The way 'we' do long divisions is the same: looking at the most significant digits of the dividend and dividing those by the divisor (binary systems have the advantage that the quotient of each step is always 1 or 0 (each digit of the solution) instead of 0-9 as in our decimal system, so there's no division involved only a single subtract) After subtracting the divisor from the accumulator the carry is 1, but if the subtract was skipped, the carry is 0. The carry is then rolled into the solution, which may even be the same variable that is used for the dividend, shifting the dividend out and the solution in. This is exactly what you do with long divisions: adding digits to the end of the solution, shifting the other digits into their eventual correct place (eg thousands, hundreds, tens, ones)
  2. I've been updating my solution over the past days, shaving off a couple of cycles every edit. I will test my solution to see if it works as it should and post some cycle counts to compare it to the other solutions. (These are cycle counts, obviously, not answers ) 0/1 = 243 128/8 = 161 128/128 = 49 255/2 = 229 255/4 = 199 255/8 = 169 255/16 = 139 255/32 = 109 255/64 = 79 255/128 = 49 255/1 = 259 255/3 = 223 255/7 = 191 255/15 = 163 255/31 = 133 255/63 = 105 255/127 = 77 255/255 = 49 Edit: I wanted to test the other solutions as well, but could not get them to execute properly (yet) on the emulator I used. I noticed however that Zack's solution probably has a small error in it:
  3. In the great tradition of posts by me: off the top of my head and completely untested But I am too curious about the other solutions to spend more time on mine. This is certainly not the fastest method for every division, but I wanted something that was better at solving the worst cases (255/1 for example).
  4. I agree with SpiceWare. The assembler should not care about how you write a value. $0013 is a zero page address. Maybe I like to write all my addresses as words, or, I don't know, $000000000013. I think the way DASM handles this makes perfect sense logically. Spice makes a good point about rare cases, DASM is not exclusively an Atari 2600 compiler. The fact that wasting a cycle on purpose is a common thing in Atari 2600 (kernel) programming, doesn't mean it's a logic thing to assume for any non Atari 2600 exclusive compiler.
  5. It's an amazing game I don't know your reason behind it, but I love that the platforms at the start of the game aren't random. After a few deaths (and, boy did I die a lot) the startup layout feels a bit like home. It's a detail, but it feels important. I do think however, that allowing the world to reverse just a tiny bit could improve the game and giving the player the option of making a leap of faith to a platform or spring that has just moved off screen. I think this would not necessarily make the game 'easier', just feel a little bit more foregiving or 'fair'. But maybe that's not the right word: I'm not saying I think it's 'unfair' now. It's just that I think it could improve the flow of the game without impacting the difficulty much. Anyway, great game! Haven't played the last of this.
  6. I did a complete rewrite of the controller input code, creating separate code paths for joysticks and (Genesis) gamepads. Obviously this wasn't a goal of its own, but I needed to restructure to (1) allow the next version of UT2600 to be played with a joystick in one port and a controller in the other (previously both ports had to be connected to a Genesis controller for them to be detected) and (2) make better use of the Genesis' second button: On advanced mode and with a Genesis controller... ...press D-pad to aim and press C to fire a single shot ...press and hold C to keep firing, use the D-pad to strafe while firing ...stand still, press and hold B to squat and use the D-pad to select a special action: LEFT = toggle weapon, UP = jump, RIGHT (hold) = show stats, DOWN = place translocator or teleport if already placed ...run and press B to repeat the last action you selected (by standing still and holding B). This allows you to quickly toggle your weapon, jump or teleport (showing stats is only possible while standing still). I want to complete a bit more of my todo list before posting a new binary, but I'll keep posting my progress.
  7. I really like this, it's not easy to put it down... I wonder how the indicator looks on a real system+CRT, it may be a bit hard to make out. I noticed that every step increases your score. This is just a minor point, but moving over previously 'dug-out' spaces (going left-right-left-right-left-right, for instance) on the first level could give a very patient player an easy high score Also I noticed some slowdown on the second level, when you pick up a diamond and the mine refills. I hope this gets completed!
  8. I'm sorry, you're right, I misread the assignment. I thought it said: if a single bit is set.
  9. And I second the motion for a weekly challenge
  10. What I meant was, you need to check for input value 0, as subtracting 1 results in 11111111, which can be viewed as 'wrapping around' or the result of subtracting 1 from 256, which does have a single bit set, albeit the imaginative (edit: "infinitive", pff autocorrect...) 9th. Therefore, in our solutions, it behaves the same as the other powers of 2 (single bits) and gives a false positive.
  11. That's great, please let me know if you find any problems or have suggestions. On UT2600.com there's an overview of the pickups, showing the in-game icons and explaining what each weapon and powerup does. On UT2600.com, Igorski has embedded the Javatari emulator which supports net play! You can host a game and share a 'join'-link to someone else so you can play UT2600 over the net! Reflecting on my own post, I realised I do not regularly comment on other developer's games either. I'll promise to do this from now on. If I want help/feedback from the community, I should also help others. I have given AI some thought over the past months. The problem is that the Atari simply does not have enough processing power and RAM to even do the required path finding. Fighting the CPU would require custom (simpler) maps. And there's so much planning/strategy involved, which to a human player comes naturally, that I don't think the Atari could counter. It would be no match for a human. But I have an entire 4k bank left to do something nice with. So who knows. Thanks for the replies! And I will start commenting on your stuff too, I promise!
  12. I want to carefully ask if anyone is (still) interested in ut2600... Apart from ZeroPage and some coverage we got because of the 'unreal tournament' name, I get no input or response from anyone. I want to stress that I am perfectly OK with that. I don't care if anyone likes (or dislikes) the game: I am working on this for myself (and Igorski as a thank-you for putting in so much effort on the music), but I cannot justify the time it takes to complete this asap when nobody gives a poop So please give me a thumbs up, report a bug, tell me what I could improve, upload a video of a tournament, tell me to shut up and get it done ...or just tell me you don't care it's ok, I just need to know.
  13. I don't think this is an optimal solution: 11/26 cycles, official opcodes only. Haven't tested it I feel like a fool: 11/13 cycles, untested... With unofficial opcodes: 11/12 cycles
  • Create New...