Jump to content

rossum

Members
  • Posts

    62
  • Joined

  • Last visited

Posts posted by rossum

  1. On 6/24/2022 at 8:12 AM, Chris Crawford said:

    One more thing: I discovered that somebody already uploaded the entire Eastern Front Source Code package. It's the scans of the document, but it's entirely readable:

     

    https://seriouscomputerist.atariverse.com/media/pdf/source/Eastern Front 1941 - Source.pdf

     

    Thanks Chris for all the countless delightful hours I spent with Eastern Front, SCRAM, BoP and De Re Atari.

    My Father was inspired to buy me my first computer - a 400 - when he saw a SCRAM demo in a Sydney department store.

    That event led directly to a lifelong love of programming and technology.

    I am eternally grateful.

     

    • Like 3
  2. On 3/22/2022 at 12:40 AM, JetSetIlly said:

     

    In addition, how are you receiving keyboard input? Is it from an Atari2600 peripheral, like the keypad, or is it directly to the ESP32?

     

    edit: Reading back I can see you have a regular keyboard attached to the ESP32? I like it but it would be interesting to see if you can transmit keypad input from the 2600 to the ESP32.

    Connection is bi-directional, joystick/keyboard data from devices plugged into the Atari can be seen by the ESP32. ESP32 also transmits data alongside graphics.

    • Like 1
  3. On 3/21/2022 at 1:46 AM, Al_Nafuur said:

    Awesome project !

     

    I would be interested to build one myself. Is the schematics and source code available?

     

    Cool a GPU for the 2600

    Would be awesome to feed the internet connection to the 2600 too!

     

     

    Will be making schematics and source available soon.

    The internet stuff can be plumbed directly to the 2600 for loading urls, multiplayer games etc.

    • Like 1
  4. 2 hours ago, JetSetIlly said:

    Smart work.

     

    So in the text adventure example, the ZMachine is running on the ESP32? What is actually being sent from the ESP32? Is it text information (ie. ASCII or similar) or is it graphical information? Can you transmit a page of text from the ESP32 in one frame?

    Yup, ZMachine is running on the ESP32 and graphics are transmitted to the 2600 for display. The fonts are rendered into pixels on the ESP32 and transmitted as two 60hz venetian blind frames.

    • Like 2
  5. 5 hours ago, rbairos said:


    So you have the retrovox in a joystick port, that supplies the co-processing and memory,
    then a custom Cart in the mainslot that basically runs a dumb-terminal type interface?


     

    In the demos pictured above the cart just listens to the ESP32 and displays what is asked.

    You can also just use it like a Atarivox and stream audio/voice commands from the 2600.

     

  6. 14 hours ago, rbairos said:

    That's incredible. I thought atarivox was mainly a speech synthesizer?
    How does the TinyBasic or C interpreter fit into it all?

    Once you have a keyboard and a way of displaying text, little retro languages seemed like the next step.

    It also allows tinybasic or C source to be stored on the cart: you could write an adventure game in basic etc.

     

    • Like 2
  7. retrovox.thumb.JPG.533df5db73c30489a806315a37c0b083.JPGIMG_8517.thumb.JPG.3074827e113958cb2fd613a0c0acb11b.JPG

     

    Retrovox is an homage to the Atarivox based on an ESP32. LMK if there is interest and I will figure out how to get some of these made.

     

    It can play midi, mod or mp3 files from flash, carts or from the internet. It emulates the Yamaha YMF262/YM3812 FM synthesis music chips, as well as the General Instrument SP0256 speech synthesizer, and has a port of the Software Automatic Mouth (SAM) voice synth. Its supports keyboards, wireless controllers and other peripherals.

     

    The hardware can be used stand alone as a Atari800 emulator or a https://rossumblog.com/2020/08/08/espflix-a-free-video-streaming-service-that-runs-on-an-esp32/.

     

    The hardware can also yeet graphics through the joystick port to a kernel on the 2600.

    A 32*192*4 mode supports a 3D engine with texture mapping and room-over room non-orthogonal geometry.

    A 96*96*1 mode supports wireframes. game of life etc.

     

    A few ugly photos of output from Atari2600+CRT+Retrovox:

    retrovox_doomed2.thumb.JPG.4d4f0e742574e0725456a3344fb3a2ae.JPGretrovox_doomed3.thumb.JPG.12cdae9263e8632fa17ca9efe398c88d.JPG

    retrovox_doomed1.thumb.JPG.cae3d2ead29fe4bb41b851704c4e39e0.JPGretrovox_doomed_wireframe.thumb.JPG.3df6a659c60c2896ab6a06c08c48b0a4.JPG

     

    Also includes a text mode that supports proportional fonts, ideal for the great underground empire.

    retrovox_zork.thumb.png.b64b8c1070d8946f4b62711a57f695fd.png

     

    There is a TinyBasic and a wee C interpreter/compiler.

    retrovox_teenybasic.thumb.png.1ae8989387f232f3310d07be60d10d9a.png

     

     

    • Like 11
  8. 4 hours ago, boson said:

    I checked it with thew newest version, the effect is still the same. Load it with the ATARI itself and put it in your tool.

     

    For those who want to try the code, a short tutorial even if it is off-topic:

    The program also runs on an ATARI 400 if it has 48k. I wrote this program in the 80s. Text is in German. It draws any function of the form X=... Y=...
    To see something you enter the following in the inputs:
    10
    -10
    0
    Q
    SIN(X)*5
    1
    1
    0
    The 1st input defines the coordinate grid
    Then how far the Y-axis is shifted: - 10
    Then the same for the X axis : 0
    Then follows a the value for Y. Here you should simply enter Q for simple functions.
    Now follows the formula of the form X=SIN(X)*5. Only Enter SIN...
    Then a costant, we don't need it here. Enter or 0
    Then the delta of the counter thus the value with X which is counted upwards: 1
    Then the starting point for X, here : 0
    You get a nice sine drawn.
    This also works with "higher" functions: X=COS(Q) Y=SIN(3*Q) etc.

    Today this is done by a pocket calculator ;-)

     

    Greeting Boson!

    should be fixed now at: https://rossumur.github.io/esp_8_bit/atr_image_explorer.htm

    cheers

     

    • Like 3
  9. On 3/8/2022 at 4:49 AM, scottinNH said:

    Good call.

    "When" (date) did the editing feature appear?

    What I want is the direct Git link to the commit, which I can find if you have the date.

     

    I am happy enough with accurate read-only access and I'm sure a few others would appreciate seeing that link

    (I can find the pre-regression version link,  if you can give me a date of the feature change)

    Looks like i introduced a bug when synthesizing missing variable names. will look at it over the weekend.

    Adding direct link to latest version: https://rossumur.github.io/esp_8_bit/atr_image_explorer.htm
    • Like 1
    • Thanks 4
  10. 13 minutes ago, tschak909 said:

     

    Indeed, I am one of the guys behind FujiNet. http://fujinet.online/ :)

     

    It should be possible to do a nice trimmed down firmware with disk slots being replaced by a single cartridge slot, removing the printer emulator (dunno what would actually use it), removing the wifi modem, and having the network adapter device.

    I have developed a severe allergic reaction to the Bluetooth stack, as it is exceedingly memory hungry (lots of static allocation), so wouldn't add the bluetooth support, just use the WiFi.

     

    One of the things that _really_ helped us, was using the WROVER-E module, with its large chunk of PSRAM, it is giving #FujiNet enough breathing room for just about anything that anyon wants to do with it, and would like to keep using it for new targets.

     

    -Thom 

     

    Agree that the BT stack is a mess. That said ESP_8_BIT includes a minimal HCI/L2CAP/HID stack implemented directly on top of the VHCI api. This hid_server implementation is designed to support EDR Keyboards, WiiMotes and other peripherals. The implementation is bare bones but supports paring/reconnections and is easily separable to be used in other projects. Might be useful for Fujinet if you reconsider: https://github.com/rossumur/esp_8_bit/tree/master/src/hid_server

     

    Would also love a Fujinet in this form factor: https://hackaday.com/2015/11/03/minituarizing-the-atari-disk-drive/

    cheers

     

  11. 1 hour ago, DirtyHairy said:

    Using the ESP32 for driving the bus has the advantage that code running on the core not serving the bus could prepare data for the VCS without any communication overhead; once it is ready it can notify the other thread, which then can present the newly generated data to the VCS. This is similar to what CDF and DPC+ games do on the harmony, but the game logic on the ESP could run even while the VCS kernel is busy rendering, while the harmony has to put NOP on the bus while the game logic runs

     

    . If an additional MCU is used this would require communication between both processors, while the secondary MCU is also busy serving the VCS.

     

    A custom bootloader is your friend, should get you to < 100ms boot times. A nice step by step on how to setup bootloader/bare metal/GDB here:

    https://vivonomicon.com/2019/03/30/getting-started-with-bare-metal-esp32-programming/

     

    Agree that using the ESP32 alone would be really cool. I built an Atari 800 / NES / SMS on one of those that generated composite audio/video entirely in software and still had plenty of time for a full emulation with bluetooth peripherals: https://rossumblog.com/2020/05/10/130/

     

    One core will need to be pretty locked down to meet timing and some faffing will be needed if you still want wifi and bluetooth to keep working. If you wanted a single core version (ESP32S) you would probably need a modal strategy to be either running wifi or 2600 but not both simultaneously.

     

    Jeroen Domburg is the right guy to ask about any ESP32 challenges / opportunities. Has built STM32F411 carts and is the heart and soul of ESP32 software.
    https://spritesmods.com/?art=veccart&page=1

     

    I really love these parts. A ESP32 dual core module with 4M of flash built can be had for $2.50 unit 1:

    https://www.mouser.com/datasheet/2/891/esp32_wroom_32e_esp32_wroom_32ue_datasheet_en-1855879.pdf

    The schematic for a cart would be preposterously simple: just the module and a voltage regulator.

     

     

  12. 40 minutes ago, Omegamatrix said:

    I took a brief look and in couple of places I think sbx could be used:

     

    
    Old:
            txa     ; 128 bytes vs 16 cycles / chunk of code
            clc
            adc #$40
            tax
    
    
    New:
            txa
            sbx #-$40    ; X holds correct value

     

     

    
    Old:
            clc
    .pos_s  sta s           ;
    
            ; 8 bit unsigned cos
            txa
            adc #$40
            tax
    
    
    New:
    			; no CLC needed
    .pos_s  sta s           ;
    
            ; 8 bit unsigned cos
            txa
            sbx #-$40	; X holds correct value

     

    nice. thx much

  13. 7 hours ago, Thomas Jentzsch said:

    Attached is  the very slightly optimized code.

     

    These are only peephole optimizations, I am not sure if the general math can be optimized. 16 bit math is really costly, maybe there are places where 8 bit would be sufficient?

    doomed_01.asm 57.21 kB · 3 downloads

    Thanks! Every little bit helps.

     

    It would be great to find some formulation where I could keep everything in 8 bit logs or minifloats but much of the math needs a linear representation.

     

  14. 22 minutes ago, Thomas Jentzsch said:

    No worries, most of my code looks much worse. :) 

     

    Which parts should I look for? E.g. m16x8 looks like it can be optimized.

    nearly all of the time is spent in the point loader / polar transformation routine next_point and in the log math: delta_ln,ln,ln_pos,ex

    m16x8 gets called at most a few times per frame

     

    • Like 1
  15. 16 minutes ago, Thomas Jentzsch said:

    Impressive, but I am not sure what the difference to R.O.M. is? Was R.O.M. done using BSP? Where does the new demo show its benfits?

     

    Also, how do I read the map graphics? What's the meaning of the little arrows?

    R.O.M is a raycasting engine - like Wolfenstein - everything needs to be made out of blocks. Frame rate is proportional to the horizontal resolution and how far away the walls are.

     

    The Doomed demo is a real 3D engine. You can make huge worlds with non-orthogonal walls that can be dynamically moved. Frame rate is dependent on how much geometry is in the field of view. The little arrows indicate the 'direction' of the wall as well as its color. Walls are drawn in this anti-clockwise order. Sectors are draw recursively, with 'portals' into adjacent sectors used to clip subsequent drawing.

     

    It isn't clear the Doomed is a better engine for games on the 2600 than R.O.M. Doomed could be great on the A800 - it runs at a solid 30fps at fullscreen at full resolution.

     

    • Like 4
  16. Since getting the Runes of Moria raycasting engine in reasonable shape I have been fixated on the idea of a more capable 3D engine for the 2600. The resulted is the "Doomed" 3D portal engine test. It can render modest amounts of non-euclidian geometry at reasonable (12-30FPS) frame rates. The math is necessarily janky and far from complete, the walls are wiggly and it is easy to get stuck in them, and none of the code is really optimal, but I think it shows promise given the modest capabilities of the platform. Like R.O.M, it is 4K vanilla.

     

    Portal Renderers are fantastic and ideal of you have no memory, compute etc. You still have to deal with a 3D pipeline (doomed uses polar coordinates for speeding up transformations as logs for math) but you don't need any of the complexity of the binary space partitioning stuff that DOOM used.  

     

    Will it run DOOM? Nope. But it can allow you to build maps that look a little like the Hangar E1M1 from the original.

     

    If anyone wants to make a game out of it I would be happy to share the source.

     

    doomed_ntsc.rom

    doomed_pal.rom

    image.png.836c99be3fcfea34c4a8522b45084c2d.pngimage.thumb.png.a495212c44c0828305937af694931b59.png

    • Like 11
×
×
  • Create New...